
343
8
협업 필터링 깊게 알아보기
즉 모델이 높은 값의 파라미터를 학습하게 내버려 두면, 변화가 매우 심하며 너무 복잡한 함수
로 학습용 데이터셋의 모든 데이터에 적합되게 됩니다. 결국 과적합으로 이어지겠죠.
가중치가 너무 커지지 않도록 제한하는 일은 모델의 학습을 방해하지만, 일반화가 더 잘 되는
상태를 만들어냅니다. 잠시 이론으로 돌아가서, 가중치 감쇠 (또는
wd
)는 손실에 더한 제곱의
합을 제어하는 파라미터입니다(다음 코드에서
parameters
는 모델의 모든 파라미터를 표현하
는 단일 텐서라고 가정합니다 ).
loss_with_wd = loss + wd * (parameters**2).sum()
그러나 현실적으로 수많은 파라미터의 모든 합을 구하고 손실에 더하는 일은 매우 비효율적입
니다 (수적으로 불안정할 수도 있습니다 ). 고등 수학을 떠올려보면,
p
에 대한
p
**
2
의 미분은
2
*
p
이므로 손실에 그렇게나 큰 합을 더하는 일은 다음과 같습니다.
parameters.grad += wd * 2 * parameters
또한
wd
는 우리가 선택할 수 있는 값이므로, 두 배 크게 만들면
*
2
도 필요 없습니다.
fastai
에
서 가중치 감쇠를 사용하려면
fit
또는
fit
_
one
_
cycle
메서드 호출 시
wd
인자를 사용하면
됩니다.