Head vs breakz
[인공지능] - Gradient Clipping 본문
Gradient Clipping는 깊은 신경망에서 발생하는 gradient exploding를 막기 위해 사용한다. 깊은 신경망에서 역전파 과정에서 기울기가 점차 작아지거나 비 정상적으로 큰 값이 되면서 기울기에 대한 문제가 발생하는데, Gradient Clipping는 깊은 신경망에서 발생하는 gradient exploding를 줄이기 위해 사용한다.
Gradient Clipping는 말 그대로, 기울기 값을 잘라내는 방법으로, 특정 임계값을 설정하여 그 값을 넘지 못하도록 잘라내는 방법이다.
Tensorflow에서는 Optimizer의 compute_gradients 를 먼저 호출하고, 그 다음 clip_by_value() 함수를 사용하여 Clipping하는 연산을 생성한다. 그리고 apply_gradients() 를 사용하여 잘라낸 gradient를 적용한다.
#임계값
thershold = 1.0
optimizer = tf.train.GradientDescentOptimizer(learning_rate)
#계산
grads_and_vars = optimizer.compute_gradients(loss)
#Clipping
capped_gvs = [(tf.clip_by_value(grad, -threshold,threshod),var)
for grad, var in grads_and_vars]
#적용
training_op = optimizer.apply_gradients(capped_gvs)
참고 & 도움
사이킷런과 텐서플로를 활용한 머신러닝, 딥러닝 실무 - p366
'Head > 인공지능' 카테고리의 다른 글
[인공지능] - Coco dataest (0) | 2020.05.04 |
---|---|
[인공지능] - Focal Loss for Dense Object Detection (0) | 2020.05.04 |
[인공지능]- One shot learning with Siamese Networks using keras - Harshall lamba - 3 (0) | 2020.02.29 |
[인공지능]- One shot learning with Siamese Networks using keras - Harshall lamba - 2 (0) | 2020.02.28 |
[인공지능] - One shot learning with Siamese Networks using keras - Harshall lamba - 1 (0) | 2020.02.27 |
Comments