5.1가중치 초기화
신경망을 학습할 때 손실함수에서 출발위치를 결정하는 방법이 모델 초기화이다.
ⓐ가중치를 0으로 초기화한다면?
z = w^Tx+b = 0
a = activation(z) ∈ {0,0.5}
가중치가 0이라면 가중합산결과가 항상 0이 되고 활성함수는 가중합산결과인 0을 입력받아서 늘 같은 값을 출력한다. 활성함수가 ReLU나 하이퍼볼릭 탄젠트면 출력은 0이되고 시그모이드라면 출력이 0.5가 된다. 결과적으로 의미없는 출력이 만들어지며 가중치가 0이면 학습도 진행되지 않는다
ⓑ가중치를 0이 아닌 상수로 초기화한다면?
가중치를 모두 같은 상수로 초기화하면 신경망에 대칭성이 생겨 같은계층의 모든 뉴런이 똑같이 작동하므로 여러 뉴런을 사용하는 효과가 사라지고 하나의 뉴런만 있는 것과 같아진다.
ⓒ가우시안 분포 초기화
대칭성을 피하기 위해 가중치를 균등분포나 가우시안 분포를 따르는 난수를 이용해 초기화한다. 이때 가중치를 아주 작은 난수로 초기화한다면 계층이 깊어질수록 0으로 변하는 현상을 볼 수 있다. 가중치를 큰 난수로 초기화한다면 각 계층을 지나며 1이나 -1로 변하는 현상을 볼 수 있다. 이를 피하기 위해 적당한 가중치로 초기화해야하는 필요성이 생긴다
Xavier초기화
시그모이드 계열의 활성함수를 사용할 때 가중치를 초기화하는 방법으로 입력 데이터의 분산이 출력데이터에서 유지되도록 가중치를 초기화한다.
이를 이용해 신경망을 초기화하면 계층을 여러번 통과해도 분산이 잘 유지된다.
He 초기화
활성함수가 ReLU일때 Xavier초기화를 사용하면 데이터 크기가 점점 작아진다. 음수구간에서 입력 데이터가 0으로 변해 50%가량 데이터가 0이된다면 분산이 절반으로 줄어들기 때문이다.
He 초기화는 가중치의 분산을 2/n으로 한다. He 초기화를 적용하면 입력데이터가 계층을 통과하면서 데이터의 분산이 잘 유지됨을 확인할 수 있다.
5.2 정규화
신경망을 학습할 때 최적화에 좋은 위치에서 출발하도록 초기화를 잘하는것에 더불어 최적해로 가는 길을 잘 찾을 수 있도록 정규화하는 것이 중요하다. 정규화는 최적화과정에서 최적해를 잘 찾도록 정보를 추가하는 기법으로 최적화 과정에서 성능을 개선할 수 있는 포괄적인 기법들을 포함한다.
일반화란 훈련데이터가 아닌 새로운 데이터에 대해 모델이 얼마나 예측을 잘하는지 가리킨다. 훈련 성능과 검증/테스트 성능의 차가 일반화인것이다.
정규화의 기본적인 접근방식
- 모델을 최대한 단순하게 만든다 - 파라미터 수 적게
- 사전 지식을 표현해 최적해를 빠르게 찾도록한다. -가중치 크기 조절
- 확률적 성질을 추가한다. -다양한 상황에서 학습하는 효과
- 여러 가설을 고려해 예측한다. ex)배깅
5.3 배치 정규화
데이터 분포에 보이지 않는 요인에 의해 왜곡되는 현상을 내부 공변량 변화라 한다. 배치 정규화는 계층을 지날때마다 매번 정규화해 이를 없애는 방법이다.
배치 정규화 알고리즘
미니배치b의 평균과 분산을 구해 표준 가우시안 분포로 정규화를 수행한다. 그리고 다시 학습된 평균과 표준편차를 이용해 원래분포로 복구한다
배치 정규화는 뉴런의 가중합산과 활성함수사이에서 수행하는 것이 좋을 것으로 제안한다.
이미지 정규화를 사용할때는 RNN을 사용한다. 배치 정규화는 채널 단위로 정규화를 수행하지만 RNN은 계층 정규화를 사용한다. 미니배치크기와 무관하다는 특징이 있다. 스타일변환, GAN에서는 샘플 채널별로 정규화하는 인스턴스 정규화를 사용하고 미니배치 크기가 작을때는 샘플의 채널 그룹을 나눠서 정규화하는 그룹 정규화를 사용하기도 한다.
5.4 가중치감소
최적화할때 다루는 숫자의 크기가 작을수록 오차의 변동성이 낮아지므로 파라미터 공간이 원점 근처에 있을 때 정확한 해를 빠르게 찾을 수 있다. 따라서 직선의 방정식을 표현할때 가중치와 편향이 작은 게 좋다. 가중치 감소는 학습과정에서 작은 크기의 가중치를 찾게 만드는 정규화 기법이다.
~J(w) = J(w) + λR(w) λ:정규화 상수
~J(w)는 확장된 손실함수이다. 정규화 상수는 가중치 크기를 조절하는 역할을 한다.λ가 작을수록 정규화 항의 비중이 작아지면서 가중치 크기는 커진다. 따라서 모델의 복잡도를 조정하는 역할을 한다고 볼 수 있다.
L2정규화의 경우 손실함수가 어떤 방향에 있든 손실함수가 붉은 동그라미에 닿을 확률은 같기 때문에 최적해는 원점 주변에 존재하고 L1정규화의 경우 최적해가 특정차원의 축 위에 있을 가능성이 높다. 이 과정의 경우 일부 가중치가 0이되어 유효한 특징을 선택하는 과정으로도 볼 수 있다.
5.5 조기종료
조기종료는 과적합이 일어나기 전에 훈련을 멈춤으로써 과적합을 피하는 정규화기법이다.
일시적인 성능변동이 아닌 지속적인 성능 정체 또는 하락이 판단되면 그때 종료하는 것이 바람직하다 조기종료는 파라미터 공간을 작게 만드는 효과가 있다. 조기종료로 파라미터 공간의 크기가 제약되면 L2정규화와 동일한 효과가 있다.
5.6데이터 증강
모델은 복잡한데 그만큼 충분한 훈련데이터가 제공되지 않으면 모델이 데이터를 암기해 과적합이 생긴다.
이를 해결하기 위해 데이터 증강기법을 사용하는데 훈련데이터를 조금씩 변형해 새로운데이터를 만드는 방법이다. 이때 클래스 불변가정을 따라야한다. 데이터를 증강할 때 클래스가 변경되면 안된다는 것이다. 데이터를 증강할 땐 이미지 이동, 회전, 늘리기 등 다양한 이미지 변경 방법을 사용한다. 증강 방식을 자동으로 찾아주는 자동 데이터 증강 기법들이 최근 연구되고 있다.
5.7배깅
앙상블 기법 중 하나로 독립된 여러 모델을 동시에 실행해 개별 모델의 예측을 이용해 최종으로 예측하는 방법이다. 배깅할 땐 모델간의 독립을 보장해야하는데 훈련데이터를 부트스트랩하여 모델별로 부트스트랩 데이터를 생성한다. 훈련데이터를 복원 추출해서 훈련데이터와 같은 크기로 만든다.
추론 단계에서 개별모델의 결과를 집계해서 예측하는데 회귀 모델의 경우 모델의 결과를 평균해 예측하는데 때에 따라 모델의 비중을 다르게 두고 가중합산을 하기도 한다. 분류 모델의 경우 가장 많이 나온 값으로 예측하는 다수결투표방식을 사용하기도 한다.
5.8드롭아웃
미니배치를 실행할때마다 뉴런을 랜덤하게 잘라내서 새로운 모델을 생성하는 정규화 방법이다. 무한히 많은 모델을 생성할 수 있는데 파라미터를 공유하기 때문에 모델간 상관성이 생겨 배깅보다 더 좋은 성능을 갖긴 어렵다.
뉴럽을 드롭아웃할때 50%이상은 유지되어야 한다. 입력계층, 은닉계층에 적용하고 보통 입력은 0.8, 은닉은 0.5정도로 지정한다.
5.9 잡음주입
잡음을 추가하면 모델에 확률적 성질을 부여할 수 있다. 현재 상태를 평균으로 보고 잡음으로 변형된 데이터를 생성해서 특정한 분포를 따르도록 만든다.
입력 데이터에 잡음을 주입하면 데이터 증강기법에 해당하고 특징에 잡음을 주입하면 데이터가 추상화된 상태에서 데이터를 증강하는 것이다. 모델 가중치에 잡음을 주입하는 것은 대표적인 드롭아웃이다. 가중치에 잡음을 더하면 그레디언트 크기를 작게 만드는 정규화효과가 있다.
분류 문제에서 훈련데이터의 레이블에 오차가 있다고 할 때 ε만큼의 오차가 있다고 가정한다
타깃 클래스 (1-ε), 다른 클래스(ε/(k-1)) 이런방식을 소프트 레이블링이라고 하고 이는 80년대부터 사용하고 있는 정규화 기법이다.
'Deep learning' 카테고리의 다른 글
Do it!딥러닝 교과서 chapter 7 : 컨볼루션 신경망 모델 (0) | 2022.05.17 |
---|---|
Do it!딥러닝 교과서 chapter 6. 콘벌루션 신경망 (0) | 2022.05.11 |
Do it!딥러닝 교과서 chapter4: 최적화 (0) | 2022.04.09 |
Do it!딥러닝 교과서 chapter3 :신경망 학습 (0) | 2022.04.08 |
Do it! 딥러닝 교과서 chapter 2 순방향 신경망 (0) | 2022.04.05 |