목표: Regularization의 의미와 기법들에 대한 이해
train error가 증가할 수 있다.
왜? → 머신러닝의 목적은 트레이닝 데이터 뿐만 아니라 새로운 입력에서도 성능을 향상시키는 것이기 때문이다.
머신 러닝 모델에 추가적인 제약을 가한다.
객체 함수에 extra term 추가
학습 데이터를 설명하는 여러 가설 결합
정규화는 딥러닝이 등장하기 수십 년 전부터 사용되어 왔다.
linear regression 과 logistic regression과 같은 선형 모델은 효과적인 정규화 전략이다.
모델 용량 제한
객체 함수 J에 매개변수 놈 패널티 Ω(θ) 추가 (e.g. 파라미터 값 안커지게, 개수 제한..)
가중치에만 패널티를 부여한다. (weight가 안커지도록 하는 패널티)
편향(bias)은 일반적으로 가중치보다 정확히 맞추기 위해 더 적은 데이터가 필요하다.
Norm?
Parameter Norm Penalty → weight가 안커지도록 하는 패널티
weight를 업데이트할 때 새로운 weight는 이전 weight에 1보다 작은 값이 곱해져 절댓값이 줄어들고 loss값이 새로 업데이트 된다.
validation accuracy가 제일 좋은 것을 고르면 된다.
작업을 과적합하기에 충분한 표현 능력을 가진 대형 모델을 트레이닝할 때, training error는 시간이 지남에 따라 꾸준히 감소하지만 validation set 오류는 다시 증가하기 시작한다.
early stopping: 가장 낮은 validation set error에 트레이닝 중지 → hope better test set error
validation set error가 개선될 때마다, 모델 파라미터의 복사본을 저장한다.
딥 러닝에서 가장 일반적으로 사용되는 정규화 형식이다.
효율적이고 간단하다.
단독으로 또는 다른 정규화 전략과 함께 사용 (섞어서 씀(e.g. norm penalty와 함께 사용, flexible)
훈련 절차의 계산 비용을 줄인다. (early stopping으로 인해 뒤의 쓸데없는 계산을 할 필요가 x)
구성(constitutent) 학습 알고리즘만으로 얻을 수 있는 것보다 더 나은 예측 성능을 얻기 위해 여러 학습 알고리즘을 사용한다.
Bagging (boostrap aggregating의 약자)은 여러 모델을 결합하여 일반화 오류(generalization error)를 줄이는 기술이다.
아이디어는 여러 다른 모델을 개별적으로 train한 다음, 모든 모델이 테스트 예제의 output에 투표하도록 하는 것이다.
앙상블의 일종
통계 및 기계 학습에서 부트스트래핑은 종종 모집단 매개변수를 추정하기 위해 소스 데이터에서 복원 추출하는 리샘플링 기술이다.
개별 모델보다 높은 용량으로 앙상블 구성
여러 week learner를 순차적으로(sequentially) 훈련하여 strong learner를 얻는다.
신경망의 부스팅 예제
앙상블에 신경망을 점진적으로 추가
앙상블에 hidden units을 점진적으로 추가
신경망은 모든 모델이 동일한 데이터 셋에서 훈련된 경우에도 종종 모델 평균화의 이점을 얻을 수 있는 충분히 다양한 솔루션 포인트에 도달한다.
모델 차이점
random initialization
random selection of minibatches
differences in hyperparameter
모델 평균화는 일반화 오류를 줄이는 매우 강력하고 신뢰할 수 있는 방법이다.
모델 앙상블: 일반화 오류를 줄이기 위해 매우 강력하고 신뢰할 수 있음
여러 독립 모델 훈련
테스트 시간에: 결과의 평균을 낸다.
일반적으로 약 2%의 추가 성능을 제공한다.
ML contest:
수십 개의 모델에 대한 모델 평균을 사용하는 방법으로 승리했다.
참조 과학 논문: 앙상블은 알고리즘을 벤치마킹할 때 권장되지 않는다.
AdaBoost
Gradient Boosting
XGBoost
드롭아웃은 계산 비용이 저렴하지만 광범위한 모델군을 정규화하는 강력한 방법을 제공한다.
Bagging에는 여러 모델을 트레이닝하고, 각 테스트 예제에서 여러 모델을 평가하는 작업을 포함된다.
드롭아웃은 기하급수적으로 많은 신경망의 배깅된 앙상블을 트레이닝하고 평가하는 저렴한 근사치를 제공한다.
출력 값에 0을 곱해서 네트워크에서 unit을 제거한다.
하나의 마스크 값을 샘플링할 확률은 하이퍼파라미터이다.
드롭아웃은 모든 서브 네트워크의 앙상블을 훈련시킨다.
트레이닝
minibatch example 로드
input / hidden unit을 제거하기 위해 이진 마스크를 무작위로 샘플링
순전파 → 역전파 → 매개변수 업데이트
Bagging 예측
Dropout 예측
기하급수적 항
다루기 힘든
10-20 마스크만 사용
근사치를 낸다.
가중치 대체: W → pW
테스트
모든 뉴런은 항상 활성 상태이다.
p를 곱하여 활성화 스케일링
테스트 시간의 출력 = 학습시간의 예상 출력
반전된 dropout
Training: 포함 확률이 p인 드롭아웃 및 활성화에 1/p 곱하기
Test: 변화 없음
dropout은 다른 표준 계산 비용이 저렴한 regularizer보다 더 효과적이다.
계산적으로 매우 저렴하다.
업데이트 의 예제 당 O(n) 계산만 필요하다.
역전파 단계까지 이러한 이진 수를 저장하려면 O(n) 메모리가 필요하다.
모델 또는 훈련 절차의 유형을 크게 제한하지 않는다.
Feedforward
RNN
RBN
머신 러닝 모델을 더 잘 일반화 시키는 가장 좋은 방법은 더 많은 데이터로 모델을 훈련시키는 것이다.
이 문제를 해결하는 한 가지 방법은 가짜 데이터를 만들어 훈련 세트에 추가하는 것이다.
transformation (변환)
generative model
올바른 클래스를 변경하는 변환을 적용하지 않도록 주의해야 한다.
클래스 불변 가정
‘b’ and ‘d’ / 6 and 8
가짜 데이터를 생성하는 것은 어렵다.
특정 ML 작업에 따라 다름
사물 인식, 음성 인식 성공
ResNet 예시
Training: sample random crops / scales
[256, 480] 범위 내의 무작위 L 선택
훈련 이미지 크기 조정, short side = L
무작위 224 x 224 패치 샘플
Test: average a fix set of crops
5 가지 크기로 이미지 크기 조정: {224, 256, 384, 480, 640}
각 크기에 대해 10개의 224x224 크롭 사용: 4개의 모서리 + 중앙, + 뒤집기
Covariate (공변량)
Covariate shift
입력 분포를 학습 시스템으로 변경한다.
e.g., training: web image → test: mobile phone images
internal covariate shift (내부 공변량 이동)
내부 공변량 이동으로 NN training이 복잡해진다.
낮은 학습률
신중한 매개변수 초기화
포화 비선형으로 모델을 훈련하기 어렵게 만든다.
해결책? → 상호작용 제거
How?
whitening(백색화): 정규화 (zero mean, unit variance(단위 분산)) + 상관 관계
입력이 백색화된 경우 네트워크 트레이닝이 더 빠르게 수렴한다. (Lecun et al., 1998)
각 층의 입력을 화이트닝하는 것은 어떨까?
분포: 항상 고정됨 (평균 0, 단위 분산 가우시안)
계산 비용이 많이 들고 (covariance matrix / inverse) 미분할 수 없다.
간소화된 대안 → 배치 정규화: 계층 입력의 미니배치 방식 정규화.
Idea: 네트워크 전체에서 활성화를 명시적으로 강제한다.
트레이닝 시작 시 단위 가우시안 분포
정규화는 단순 미분 연산이다.
Implementation: BN layer 생성 및 삽입
FC layer → BN layer → 비선형 layer
BN layer → 네트워크의 모든 레이어에서 전처리
각 기능을 독립적으로 정규화 (공동으로 기능을 백색화 하지 않음)
레이어의 각 입력에 대한 간단한 정규화: 문제가 있음
레이어가 표현할 수 있는 것이 변경될 수 있다.
hidden unit은 항상 평균과 단위 분산이 0이다.
→ layer의 각 뉴런의 범위가 (평균 0, 분산 1)로 다 똑같아져서
representation power가 감소한다.
⇒ nonlinearity를 주려고 한건데 normalization 때문에 ↔ 에서 y=x 가 되어 nonlinearity가 의미 없어진다.
각 활성화 에 대해 두 개의 매개변수 를 도입한다.
는 hyper parameter가 아니고 model parameter 이므로 gradient descent로 찾을 수 있다.
sgd에 의해 원래의 모델 파라미터와 함께 학습한다.
신경망의 표현력을 복원한다.
요약
정규화: 각 레이어에 대한 입력 분포를 수정한다.
서로 다른 레이어 간의 고차 상호작용(high-order interactions)을 제거한다.
학습 역학을 단순화한다. → 교육속도를 높인다.
선형 변환
⇒ layer 간 영향 최소화. interaction을 끊음
→ training이 빨라짐, 하지만 표현력 감소 → scaling (minibatch + linear transform)
테스팅 시간
평균 / 표준편차 값은 배치를 기반으로 계산되지 않는다.
단일 고정 경험적 평균 (a single fixed empircal mean) / 훈련 시간동안 활성화의 표준편차
각 테스트 예제에 대한 결정적 결과를 얻는다.
평균 / 표준편차는 이동 평균으로 훈련 중에 추정할 수 있다.
장점
더 높은 학습률 허용 → 가속화된 training
정규화 효과
포화 비선형성 (sigmoid, tanh) 으로 훈련 가능
초기화에 대한 종속성을 줄인다.
정리가 잘 되어 있네요! 잘 보고 갑니다.