Gradient가 말썽일 때
Gradient가 항상 얌전하진 않아. Exploding gradient는 training 중 무한정 자라 (긴 시퀀스의 RNN, Transformer에서 특히), 무한대 크기의 weight update 일으켜. Vanishing gradient는 0으로 줄어들어서 초기 layer 학습을 막아.
Gradient clipping이 폭발의 표준 처방. 두 전략:
- Global norm clip (
clipnorm=1.0): 모든 gradient를 합산 L2 norm이max_norm이하가 되도록 scale. RNN, Transformer 권장. - Value clip (
clipvalue=0.5): 각 gradient 원소를 독립적으로[-clipvalue, +clipvalue]로 잘라냄.
tf.stop_gradient는 computation graph의 일부에서 gradient 흐름 막아. 감싸진 tensor가 gradient 계산엔 constant처럼 보여. 흔한 용도: DQN의 target network, contrastive learning의 momentum encoder, 값을 계산은 하지만 backprop으로 업데이트되면 안 되는 모든 경우.