매개변수 갱신
신경망 학습의 목적은 손실함수의 값을 가능한 한 낮추는 매개변수를 찾는 것입니다. 지금까지 확률적 경사 하강법(SGD)를 통해 가중치를 업데이트하는 법을 알아보았는데, SGD 외 다른 매개변수 최적화 기법을 소개합니다.
1. 모멘텀 Momentum
모멘텀은 운동량을 뜻하며, 가중치 업데이트 수식은 다음과 같습니다.
여기서 v라는 변수는 물리에서 말하는 속도에 해당합니다. αv항은 기울기 방향으로 힘을 받아 가중치가 가속되어 업데이트하는 형상을 띄게 됩니다.(α는 보통 0.9 등의 값으로 설정합니다.)
2. AdaGrad
학습률을 효과적으로 정하는 기술로 학습률 감소 learning rate decay가 있습니다. 또한 학습률을 서서히 낮추는 간단한 방법은 매개변수 "전체"의 학습률 값을 일괄적으로 낮추는 것입니다. 이것을 발전시킨 것이 AdaGrad입니다.
여기서 h는 학습률을 감소시키는 역할을 합니다. h의 갱신을 보면 특정 가중치 w에 대해 편미분한 값이 양수로 들어가게 되는데, 크게 갱신된 가중치에 대해서 개별적으로 학습률을 낮춘다는 것을 알 수 있습니다.
3. Adam
Adam은 다소 복잡해 보이지만 직관적으로는 모멘텀과 AdaGrad를 융합한 듯한 방법입니다. 큰 특징은 하이퍼파라미터의 "편향 보정"이 진행된다는 것입니다.
가중치의 초깃값
신경망 학습에서 가중치의 초깃값은 중요합니다. 가령 모든 가중치를 같은 값으로 설정한다면, 오차역전파법에서 모든 가중치의 값이 똑같이 갱신되어 올바른 학습이 이루어질 수 없을 것입니다. "곱셈 노드의 역전파"를 떠올리면 이해가 될 것입니다. 따라서 가중치의 초깃값을 무작위로 설정해야함을 알 수 있습니다.
1. 은닉층의 활성화 함수의 출력 값 분포
1) 시그모이드 함수
가중치 초깃값을 표준편차가 1인 정규분포로 초기화하고, 은닉층을 5개 만들어 각 층의 활성화 함수로 시그모이드 함수를 만들었을 때 활성화값 분포는 다음과 같습니다.
각 층의 값들이 0과 1에 치우쳐 분포되어있습니다. 여기서 사용한 시그모이드 함수는 출력이 0또는 1에 가까워지면, 그 미분은 0에 가까워집니다. 따라서 역전파의 기울기 값이 점점 작아지다가 사라지는데, 이것을 기울기 소실gradient vanishing문제라고 합니다. 층을 깊게 하는 딥러닝에서는 기울기 소실이 심각한 문제가 될 수 있습니다.
이번에는 표준편차가 0.01인 정규분포로 초기화했을 때입니다. 앞의 에처럼 0과 1에 치우치진 않았으나, 다수의 뉴런이 거의 같은 값을 출력하고 있어 뉴런을 여러 개 둔 의미가 없어집니다. 그래서 활성화값들이 치우치면 표현력을 제한한다는 관점에서 문제가 됩니다.
Xavier 초깃값은 가중치의 초깃값으로 표준편차가 1/√n이 되도록 설정합니다. 여기서 n은 앞 계층의 노드 개수를 의미합니다. 앞에서 본 두 예에 비해 확실히 값들이 넓게 분포됨을 알 수 있습니다.
2) ReLu함수
He 함수는 가중치의 초깃값이 √(2/n)가 되게 설정합니다. ReLu함수는 음의 영역이 0이라서 더 넓게 분포시키기 위해 Xavier 초깃값에서 2배의 계수가 필요하다고 직감적으로 해석할 수 있습니다.
위 분포도를 보면, ReLu함수에서는 Xavier초깃값보다 He초깃값이 더 특화되어 있다는 것을 알 수 있습니다.
3) 실제 데이터셋을 통한 비교
위 예제는 MNIST 데이터셋을 5층 신경망에서 ReLu함수를 활성화 함수로 학습을 진행한 것입니다. 확실히 ReLu함수에 특화된 He 초깃값을 사용했을 때 학습 속도가 더 빠른 것을 알 수 있습니다.
배치 정규화
배치 정규화는 쉽게 말해, 각 층에서 들어온 미니 배치 입력 데이터를 평균이 , 분산이 1인 데이터로 정규화하는 것입니다. 이 처리를 각 계층마다 활성화 함수의 앞 또는 뒤에 삽입함으로서 데이터 분포가 덜 치우치게 할 수 있습니다.
또한 배치 정규화 계층마다 이 정규화된 데이터에 고유한 확대와 이동 변환을 수행합니다. 수식으로는 다음과 같습니다.
배치 정규화를 사용할 때 대체로 다음과 같은 장점이 있습니다.
- 학습 속도가 빨라진다
- 초깃값에 크게 의존하지 않는다
- 오버피팅을 억제한다
오버피팅 억제
오버피팅은 주로 다음의 두 경우에 일어납니다.
- 매개변수가 많고 표현력이 높은 모델
- 훈련 데이터가 적을 경우
훈련 데이터의 정확도는 100 에폭을 지나는 무렵부터 거의 100%이지만, 시험 데이터에 대해서는 큰 차이를 보입니다. 따라서 오버피팅을 줄일 방법들을 사용해야합니다.
1. 가중치 감소
가중치 감소는 학습 과정에서 큰 가중치에 대해서 그에 상응하는 큰 페널티를 부과하여 오버피팅을 억제하는 방법입니다. 오버피팅은 가중치 매개변수의 값이 커서 발생하는 경우가 많기 때문입니다.
활용해 가중치 감소를 통해 오버피팅을 억제한 예시입니다. 위 예에서는 모든 가중치 각각의 손실 함수에 1/2*을 더합니다. 여기서 λ는 정규화 세기를 정하는 하이퍼파라미터이고, 1/2는 미분결과를 조정하는 역할의 상수입니다.
2. 드롭아웃 Dropout
드롭아웃은 뉴런을 임의로 삭제하면서 학습하는 방법입니다. 훈련할 때는 삭제할 뉴런을 무작위로 선택하고, 시험 떄는 각 뉴런의 출력에 훈련 때 삭제한 비율을 곱하여 출력합니다.
'AI_basic > Deeplearning' 카테고리의 다른 글
[Deeplearning Part.7-1] 자연어 처리와 Word Embedding (0) | 2022.01.22 |
---|---|
[Deeplearning Part .6-1] CNN (0) | 2022.01.09 |
[Deeplearning Part.4] 오차역전파법 (0) | 2022.01.06 |
[Deeplearning Part.3] 신경망 학습 (0) | 2022.01.06 |
[Deeplearning Part.2] 신경망 (0) | 2022.01.05 |