여러가지 regularization 기법
1. regularization
generalization이 잘 되게하고자 학습을 방해하는 요소를 추가하여 학습뿐만 아니라 test에도 잘 동작하는 모형을 만드는 방법
여러가지 방법들 모두 시도해보면서 잘 되면 좋고 아님 말고…
2. Early stopping
Early stopping은 iteration이 증가할 수록 test error는 증가하니 증가하기 전에 멈추자는 원리
특히 test data는 학습 과정에서 사용하면 안되니까 train data의 일부인 validation set으로 평가했다는 점이 주목할만 하다.
3. Parameter norm penalty
Parameter norm penalty는 네트워크의 parameter가 크기면에서 너무 커지지 않았으면 하는 바람에서 나온 것
L1, L2 regularization 기법이 대표적
모든 parameter의 제곱합을 cost에 더함
parameter의 항이 많아질수록 함수가 부드러워지며(고차함수가 되니까)
함수가 부드러울수록 generalization이 더 높을 것이라고 가정함
4. Data augmentation
data augmentation은 데이터가 무한하면 언제나 좋다는 생각에서 나왔다.
전통적으로 small set인 시대에는 전통적인 머신러닝이 딥러닝보다 성능이 좋다
실제로 데이터 셋이 적으면 딥러닝 성능이 좋지않다
그러나 이제 데이터가 많아지면서 데이터가 많을수록 딥러닝 성능이 좋다는 사실이 알려졌다.
그런데 문제는 데이터는 한정적이다
어떤식으로든 데이터를 늘리고자하여 여러가지 방법이 등장했다.
4-1) label preserving augmentation
위와 같이 원래 라이언인 데이터는 45도 90도 30도 15도 돌려도
여전히 그 label은 라이언이지만 데이터가 약간 다르다고 말할 수 있다
image의 경우 label을 바꾸지 않은 선에서 회전변환으로 적절하게 데이터를 늘릴수 있다.
4-2) Noise Robustness
Noise Robustness는 왜 잘되는지는 모르겠지만
입력값이나 가중치에 noise를 주면 학습이 잘되더라
4-3) label smoothing
label smoothing은 이미지 데이터를 적절하게 섞어 label이 혼합된 이미지 데이터를 만드는 방식
5. dropout
dropout은 학습 중 일부 weight를 랜덤하게 0으로 바꾸면서 각각의 neuron이 robust하게 만든다.
수학적으로 좋다고 증명된 것은 아니지만 실험적으로 학습에 좋다고 증명되었나보다
6. Batch normalization
batch normalization은 적용하고자하는 모든 layer의 statistic을 정규화시키는 기법이다.
예를 들면 모든 layer의 batch의 평균을 0 분산을 1로 만든다.
도입하고자 했던 이유인 'covariate shift'에 대해 논란이 좀 있지만
확실한 부분은 보통 batch normalization을 쓰면 성능이 좋아지긴 한다고 한다
이것 이후로 layer normalization, group normalization 등이 나왔다.
'딥러닝 > 딥러닝 기초' 카테고리의 다른 글
미분계수에 대하여 (0) | 2021.12.29 |
---|---|
gradient descent method 핵심요약 (0) | 2021.12.29 |
softmax function에 대한 진정한 의미 (0) | 2021.12.26 |
모델의 일반화능력(generalization performance) (0) | 2021.12.24 |
L1(Lasso)과 L2 regularization(Ridge)에 대한 고찰 (0) | 2021.12.17 |