Head vs breakz

[인공지능] - Gradient Clipping 본문

Head/인공지능

[인공지능] - Gradient Clipping

headbreakz 2020. 3. 24. 18:05

 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

Comments