학습 기술

Sirius·2024년 6월 30일

1. 매개변수 갱신

  • 신경망 최적화 : 손실함수의 값을 최대한 낮추는 매개변수를 찾는 것

    매개변수 공간은 매우 넒고 복잡해서 최적의 솔루션을 쉽게 찾기 힘들다.

1) 확률적 경사 하강법(SGD)

 wwηALAW\ w \leftarrow w - \eta\frac{A_L}{A_W}

SGD는 기울어진 방향으로 일정 거리만 가겠다는 단순한 방법이다.

SGD의 단점

f(x,y)=120x2+y2f(x,y) = \frac{1}{20}x^2 + y^2

위 함수의 기울기를 그려보면 대부분이 (0,0)의 방향을 기리키지 않는다.
따라서 만약 (x,y) = (-7.0, 2.0)에 적용하면

최솟값인 (0, 0)에 지그재그로 이동하니 매우 비효율적이다.
이렇게 지그재그로 탐색하는 근본 원인은 기울어진 방향이 본래의 최솟값과 다른 방향을 가리켜서 이다.

2) 모멘텀

  • 모멘텀 : 운동량

vαvηALAWv \leftarrow \alpha v - \eta \frac{A_L}{A_W}
ww+vw \leftarrow w + v

vv는 속도이다. 즉 기울기 방향으로 힘을 받아 물체가 가속된다는 것이다.
avav항은 물체가 아무런 힘을 받지 않을 때 서서히 하강시키는 역할을 한다.
aa는 물리에서의 마찰이나 공기저항에 해당한다.(상수값)
모멘텀은 공이 그릇의 바닥을 구르는 듯한 움직임을 보여준다.

SGD에 비해서 지그재그 정도가 덜하다.
x축(수평 방향)으로 가는 힘은 작지만 방향이 변하지 않아서 한 방향으로 계속 가속됩니다. 그래서 x축 방향으로는 일정하게 나아간다.
반대로, y축(수직 방향)으로 가는 힘은 크지만 위아래로 번갈아 받기 때문에 서로 상쇄되어 y축 방향의 속도는 안정적이지 않다.
결과적으로, 모멘텀을 사용하면 SGD보다 x축 방향으로 더 빨리 나아가고, 지그재그 움직임이 줄어든다.

3) AdaGrad

신경망 학습에서는 학습률 값이 중요하다. 이 학습률을 정하는 효과적 기술로 학습률감소가 있다.
이는 학습을 진행하면서 학습률을 점차 줄여가는 방법이다.
AdaGrad는 '각각의' 매개변수에 '맞춤형'값을 만들어준다.

hh+aLaW2h \leftarrow h + \frac{aL}{aW}^2

WWηhaLaWW \leftarrow W - \frac{\eta}{\sqrt{h}} \frac{aL}{aW}

hh는 기존 기울기 값을 제곱하여 계속 더해준다.(행렬의 원소별 곱셈)
또한 매개변수를 갱신할 때 1h\frac{1}{\sqrt{h}}을 곱해 학습률을 조정한다.
즉 매개변수의 원소 중에서 많이 움직인 원소는 학습률이 낮아진다.(원소마다 학습률 감소가 다르게 적용됨)

y축 방향은 기울기가 커서 처음에는 크게 움직이지만, 그 큰 움직임에 비해 갱신 정도는 큰 폭으로 작아지도록 조정된다.

4) Adam

Adam = AdaGrad + 모멘텀
하이퍼파라미터의 편향보정이 진행된다.
Adam은 하이퍼파라미터를 3개 설정한다.
1) 학습률
2) 일차 모멘텀용 계수(default: 0.9)
2) 이차 모멘텀용 계수(default: 0.999)

그릇바닥을 구르듯 움직인다. 또한 모멘텀보다 공의 좌우 흔들림이 적다.

2. 가중치의 초깃값

오버피팅을 억제해 범용성능을 높이기 위해서는 가중치 감소 기법을 사용해야한다.
가중치 감소는 가중치 매개변수의 값이 작아지도록 학습하는 방법이다.

1) 초깃값을 0으로?

  • Q: 가중치를 작게하려면 처음부터 작게 시작하는 0이 어떤가?
    A: 매우 안좋은 아이디어이다! 오차역전파 과정에서 모든 가중치 값들이 똑같이 갱신되기 때문이다.
    ex> 곱셈노드의 역전파상황에서 모든 가중치가 0

따라서 초깃값을 무작위로 설정하여야 한다.

2) 은닉층의 활성화값 분포

위는 가중치를 표준편차가 1인 정규분포로 초기화할 때의 각 층의 활성화값 분포이다. 각 층의 활성화 값이 0과 1에 치우쳐 분포되어 있다. 또한 시그모이드 함수의 출력은 0이나 1에 가까워지면 그 미분은 0에 다가간다. 그래서 데이터가 0과 1에 치우쳐 분포하게 되면 역전파의 기울기 값이 점점 작아지다가 사라진다. 이를 기울기 소실문제라고 한다.

위는 가중치를 표준편차가 0.01인 정규분포로 초기화할 때의 각 층의 활성화값 분포이다. 이번에는 0.5부근에 집중되어있다. 기울기 소실문제는 발생하지 않지만 다수의 뉴런이 같은 값을 출력하고 있다는 문제가 있다. 활성화 값이 치우치면 표현력을 제한한다는 관점에서 문제가 된다.

Xavier 초깃값은 앞 계층의 노드가 nn개 라면 표준편차가 1n\frac{1}{\sqrt{n}}인 분포를 사용한다.
즉 앞 층에 노드가 많을 수록 대상 노드의 초깃값으로 설정하는 가중치가 좁게 퍼진다.

위 그림은 Xavier 초깃값을 사용했을때의 결과이다.
결과를 보면 확실히 넓게 분포됨을 알 수 있다.
이러면 시그모이드 함수의 표현력도 제한받지 않고 학습이 효율적으로 이뤄질 수 있다.

3) ReLU를 사용할 때의 가중치 초깃값

Xavier 초깃값은 활성화 함수가 선형인 것을 전제로 이끈 결과이다. sigmoid함수와 tanh함수는 좌우 대칭이라 중앙부근이 선형인 함수이다. 반면 ReLU는 특화된 초깃값인 He 초깃값을 사용해야 한다.

He 초깃값은 앞 계층의 노드가 n개일 때, 표준편차가 2n\frac{2}{\sqrt{n}}인 정규분포를 사용한다.(ReLU는 음의 영역이 0이라서 더 넓게 분포시키기 위해 2배의 계수가 필요)

위 그림을 보면 ReLU를 활성화 함수로 사용한 경우, He 초깃값은 모든 층에서 균일하게 분포됨을 확인할 수있다.

3. 배치 정규화

  • 배치 정규화의 효과
    1) 학습을 빨리 진행할 수 있다.
    2) 초깃값에 크게 의존하지 않는다.
    3) 오버피팅을 억제한다.

배치 정규화의 기본 아이디어는 각 층에서의 활성화 값이 적당히 분포되도록 조정하는 것이다. 따라서 "배치 정규화 계층"을 활성화 함수 전에 삽입한다.

μ B 1 m i = 1 m x i σ B 2 1 m i m ( x i μ B ) 2 x i ^ x i μ B σ B 2 + ϵ

배치 정규화는 미니배치를 단위로 정규화를 수행한다.
구체적으로는 데이터 분포가 평균이 0, 분산이 1이 되도록 정규화한다.
배치 정규화 계층이 추가되면서 이 역시 역전파가 진행된다.(복잡하므로 생략)

4. 오버피팅

  • 오버피팅이 일어나는 경우
    1) 매개변수가 많고 표현력이 높은 모델
    2) 훈련데이터가 적음

1) 가중치 감소

학습과정에서 큰 가중치에 대해서는 그에 상응하는 큰 페널티를 부과하여 오버피팅을 억제하는 방법이다.
예를 들어 가중치의 제곰norm을 손실함수에 더한다. 가중치를 WW라고 하면 L2 norm에 따른 가중치 감소는 12λW2\frac{1}{2}{\lambda}W^2이 되고, 이를 손실함수에 더한다.(람다는 정규화의 세기를 조정하는 하이퍼파라미터)

1)L=L+12λW21) L ′ =L+ \frac{1}{2}λW ^2

2)L=L+λW2) ∇L ′ =∇L+λW

W(12λW2)=12λ2W=λW\frac{\partial}{\partial W} \left( \frac{1}{2} \lambda W^2 \right) = \frac{1}{2} \lambda \cdot 2W = \lambda W
이처럼 12\frac{1}{2}를 곱함으로써, 미분 결과가 λWλW로 단순화된다. 만약
12\frac{1}{2}가 없었다면, 미분 결과는 추가적인 상수를 고려해야 하는 불편함이 생긴다.(1/2는 의도된 상수)

1) 가중치 감소는 모든 가중치 각각의 손실 함수에 12λW2\frac{1}{2}{\lambda}W^2을 더한다.(가중치가 커질수록 손실함수가 더 커지도록 함)
2) 따라서 가중치의 기울기를 구하는 계산에서는 그동안의 오차역전파법에 따른 결과에 정규화 항을 미분한 λW\lambda W를 더한다.

2) 드롭아웃

신경망 모델이 복잡해지면 가중치 감소만으로는 대응하기 어렵다.

  • 드롭아웃: 뉴런을 임의로 삭제하면서 학습하는 방법(은닉층의 뉴런을 무작위로 골라 삭제함

삭제된 뉴런은 신호를 전달하지 않는다.
1) 학습 때 데이터를 흘릴 때마다 꺼버릴 뉴런을 임의로 선택하고 학습시킨다.(부분집합)
2) 예측 단계에서는 모든 뉴런을 활성화 한다.

드롭아웃은 매번 학습할 때마다 무작위로 뉴런의 부분집합을 선택하여 작동한다. 즉, 매번 학습 배치(batch)가 입력될 때마다 서로 다른 부분집합의 뉴런이 선택된다.

드롭아웃은 앙상블 학습과 같은 효과를 하나의 네트워크로 구현했다.

0개의 댓글