
427
11
장
심층 신경망 훈련하기
11.1.4
그레이디언트 클리핑
그레이디언트 폭주 문제를 완화하는 인기 있는 다른 방법은 역전파될 때 일정 임곗값을 넘어서
지 못하게 그레이디언트를 잘라내는 것입니다. 이를
그레이디언트 클리핑
gradient
clipping
20
이라고
합니다.
15
장에서 볼 순환 신경망은 배치 정규화를 적용하기 어려워서 이 방법을 많이 사용합
니다. 다른 종류의 네트워크는 배치 정규화면 충분합니다.
케라스에서 그레이디언트 클리핑을 구현하려면 다음과 같이 옵티마이저를 만들 때
clipvalue
와
clipnorm
매개변수를 지정하면 됩니다.
optimizer = keras.optimizers.SGD(clipvalue=1.0)
model.compile(loss="mse", optimizer=optimizer)
이 옵티마이저는 그레이디언트 벡터의 모든 원소를 -
1
.
0
과
1
.
0
사이로 클리핑합니다. 즉 (훈
련되는 각 파라미터에 대한) 손실의 모든 편미분 값을 -
1
.
0
에서
1
.
0
으로 잘라냅니다. 임곗값
은 하이퍼파라미터로 튜닝할 수 있습니다. 이 기능은 그레이디언트 벡터의 방향을 바꿀 수 있
습니다. 예를 들어 원래 그레이디언트 벡터가 [
0
.
9
,
100
.
0
]라면 대부분 두 번째 축 방향을 향합
니다. 하지만 값을 기준으로 이를 클리핑을 하면 [
0
.
9
,
1
.