[밑바닥부터 시작하는 딥러닝1] 03. 신경망 학습 관련 기술

권유진·2022년 1월 1일
0

최적화

매개변수의 최적값 찾는 문제

  1. 확률적 경사하강법(Stochastic Gradient Descending)
    WWηLWW \larr W - \eta \cfrac{\partial L}{\partial W}
  • 기울어진 방향으로 일정 거리만 이동
  • 단순하지만 비효율적(특히 비등방성 함수에서 비효율적)
  1. 모멘텀(Momentum)
    vαvηLW        (속도)WW+v\begin{aligned} v &\larr \alpha v - \eta \cfrac{\partial L}{\partial W}\;\;\;\; (속도)\\ W &\larr W + v \end{aligned}
  • 운동량, 물리법칙을 응용한 방법
  • 내려 오던 관성 방향으로 또 가자
  1. NAG(Nestrov Accelrated Gradient)
    vαvηL(Wαv)WW+vv \larr \alpha v - \eta \cfrac{\partial L}{\partial (W-\alpha v)}\\ W \larr W + v
  • 모멘텀은 update과정에서 관성에 의해 최적점을 지나칠 수 있다.
  • NAG는 모멘텀으로 이동된 지점에서 기울기를 활용하여 update를 수행하기 때문에 이러한 문제 해소(멈춰야하는 곳에서 제동)
  1. AdaGrad(Adaptive Gradient)
    hh+LW@LWWWη1hLWh \larr h + \cfrac{\partial L}{\partial W} @\cfrac{\partial L}{\partial W}\\ W \larr W - \eta \cfrac{1}{\sqrt{h}} \cfrac{\partial L}{\partial W}
  • 학습률 감소기법 사용
  • 처음에는 크게 학습하다가 점점 작게 학습
  • 학습률 감소가 매개변수의 원소마다 다르게 적용
  • 학습할수록 갱신량이 0에 수렴
  1. RMSProp
    Gt=γGt1+(1γ)(LW)2Wt+1=WtηGt+ϵLWG_t = \gamma G_{t-1} + (1-\gamma)(\cfrac{\partial L}{\partial W})^2\\ W_{t+1} = W_t - \cfrac{\eta}{\sqrt{G_t+\epsilon}}\cfrac{\partial L}{\partial W}
  • AdaGrad를 지수이동평균을 이용하여 개선
  • 먼 과거의 기울기는 잊고, 새로운 기울기를 크게 반영한다.
  1. Adam(Adaptive Moment Estimation)
    mt=β1mt1+(1β1)LWvt=β2mt1+(1β2)(LW)2wt+1=wtmtηvt+ϵm_t = \beta_1m_{t-1} + (1-\beta_1)\cfrac{\partial L}{\partial W}\\ v_t = \beta_2m_{t-1} + (1-\beta_2)(\cfrac{\partial L}{\partial W})^2\\ w_{t+1} = w_t - m_t \cfrac{\eta}{\sqrt{v_t+\epsilon}}
  • RMSprop과 Momentum을 합친 기법
  • 초기 몇 번의 update에서 0으로 편향되어 있어 하이퍼파라미터 편향 보정 진행
  • 하이퍼파라미터 3개 설정 (η\eta-학습률, β1\beta_1-1차 모멘텀용 계수, β2\beta_2-2차 모멘텀용 계수)
  • ϵ=0.18\epsilon = 0.1^{-8}, β1=0.9\beta_1 = 0.9, β2=0.999\beta_2 = 0.999 추천
  1. Nadam
    mt=β1mt1+(1β1)LWtmt^=mt1β1tθt+1=θtηvt^+ϵmt^θt+1=θtηvt^+ϵ(β1mt11β1t+(1β1)LWt1β1t)θt+1=θtηvt^+ϵ(β1mt1^+(1β1)LWt1β1t)θt+1=θtηvt^+ϵ(β1mt^+(1β1)LWt1β1t)m_t = \beta_1 m_{t-1} + (1 - \beta_1)\cfrac{\partial L}{\partial W_t}\\ \hat{m_t} = \cfrac{m_t}{1-\beta_1^t}\\ \theta_{t+1} = \theta_t - \cfrac{\eta}{\sqrt{\hat{v_t}}+\epsilon}\hat{m_t}\\ \theta_{t+1} = \theta_t - \cfrac{\eta}{\sqrt{\hat{v_t}}+\epsilon}(\cfrac{\beta_1m_{t-1}}{1-\beta_1^t}+\cfrac{(1-\beta_1)\cfrac{\partial L}{\partial W_t}}{1-\beta_1^t})\\ \theta_{t+1} = \theta_t - \cfrac{\eta}{\sqrt{\hat{v_t}}+\epsilon}(\beta_1\hat{m_{t-1}}+\cfrac{(1-\beta_1)\cfrac{\partial L}{\partial W_t}}{1-\beta_1^t})\\ \therefore \theta_{t+1} = \theta_t - \cfrac{\eta}{\sqrt{\hat{v_t}}+\epsilon}(\beta_1\hat{m_{t}}+\cfrac{(1-\beta_1)\cfrac{\partial L}{\partial W_t}}{1-\beta_1^t})
  • Adam은 RMSprop과 Momentum을 합친 기법이지만, Nadam은 RMSprop과 NAG를 합친 방법
  • NAG는 변형하여 사용
    • mt1m_{t-1}을 gradient를 업데이트 할 때와, ww를 업데이트할 때 2번 사용
    • mt1m_{t-1} 대신 mtm_t 사용

가중치 초기값 설정

가중치 감소기법(weight decay)

  • 오버피팅을 억제해 범용 성능 높이는 테크닉
  • 가중치 매개변수의 값이 작아지도록 학습
  • 그렇게 하기 위해 초깃값도 최대한 작은 값에서 시작
    • 그렇다고 하여 초기값을 0으로 설정할 시, 학습이 올바르게 시행되지 않음
    • 오차역전파법에서 모든 가중치의 값이 똑같이 갱신되기 때문

\therefore 초기값을 무작위로 설정해야 함.

  • 가중치를 표준편차(σ\sigma)가 1인 정규분포로 초기화
    • 0과 1에 치우쳐 분포(= 기울기 소실)
  • 가중치를 표준편차(σ\sigma)가 0.01인 정규분포로 초기화
    • 0.5 부근에 집중됨 \rarr 다수의 뉴런이 거의 같은 값 출력, 표현력이 제한됨

\therefore 이 사이의 적당한 표준편차 값 지정하여 sampling해야 함!

Xavier 초기값

σ=1n\sigma = \cfrac{1}{\sqrt n}
  • n은 앞 계층의 노드 개수이다.
  • S자형 함수(Sigmoid, tanh)에 적합.

He 초기값

σ=2n\sigma = \sqrt{\cfrac{2}{n}}
  • n은 앞 계층의 노드 개수이다.
  • ReLU에 특화된 초기값
  • 음이 영역이 0이라서 더 넓게 분포시키기 위해 2배의 계수가 필요

배치 정규화(Batch Normalization)

활성화 값이 적당히 분포되도록 조정

  • 이점
    • 학습 속도 개선
    • 초기값에 크게 의존하지 않는다.
    • 오버피팅 억제
  • 미니배치 단위로 평균이 0, 표준편차가 1이 되도록 정규화
    x^xμσ+ϵ\hat{x} \larr \cfrac{x-\mu}{\sqrt{\sigma+\epsilon}}
  • 활성화 함수의 앞 또는 뒤에 위치함으로써 분포가 덜 치우치게 함
  • 정규화된 데이터에 고유한 확대(scale)와 이동(shift) 변환 수행
    yγx^+βy \larr \gamma \hat{x} + \beta
    • γ\gamma가 확대, β\beta가 이동을 담당
    • γ=1\gamma = 1, β=0\beta = 0(원본 그대로)부터 시작하여 학습하면서 적합한 값으로 조정
  • Batch Normalization의 단점 극복한 Layer Normalization 기법 등장

오버피팅

  • 발생하는 경우
    • 매개변수가 많고 표현력이 높은 모델 사용
    • 훈련 데이터가 적음
  1. 가중치 감소
    학습 과정에서 큰 가중치에 대해서는 그에 상응하는 큰 penalty 부여
  • L2normL_2\, norm 활용한 예시
    • 모든 가중치 각각의 손실 함수에 12λW2\cfrac{1}{2}\lambda W^2을 더함(λ\lambda: 정규화 정도 정함)
    • 기울기를 구하는 계산에서는 오차역전파법의 결과에 λW\lambda W(정규화항 미분값) 곱함

L1normL_1\,norm: w1+w2+...+wn|w_1| + |w_2| + ... + |w_n|
L2normL_2\,norm: w12+w22+...+wn2\sqrt{w_1^2 + w_2^2 + ... + w_n^2}
LinfnormL_{\inf}\,norm: 각 원소의 절대값 중 가장 큰 값

  1. 드롭아웃(Dropout)
  • 학습 시마다 은닉층의 뉴런을 무작위 삭제
  • 시험 때는 모든 뉴런 사용 후, 각 뉴런의 출력에 훈련 때 삭제안한 비율 곱
  • 뉴런을 무작위로 삭제하는 행위는 매번 다른 모델을 학습하는 것과 같은 효과(\sim 앙상블 학습)

적절한 하이퍼파라미터 값 찾기

  1. 검증 데이터 사용
  • 하이퍼파라미터 성능 검증 시 시험 데이터를 사용하면 안됨(\because 오버피팅)
  • 훈련데이터는 매개변수 학습, 검증데이터는 하이퍼파라미터 성능 평가, 시험데이터는 신경망의 범용 성능 평가에 사용
  1. 하이퍼파라미터 최적화
  • 그리드 서치(Grid Search)
  • 랜덤 서치(Randomized Search)
  • 베이지안 최적화(Bayesian Optimization)

참고
밑바닥부터 시작하는 딥러닝 (사이토 고키)
https://onevision.tistory.com/entry/Optimizer-%EC%9D%98-%EC%A2%85%EB%A5%98%EC%99%80-%ED%8A%B9%EC%84%B1-Momentum-RMSProp-Adam
https://hiddenbeginner.github.io/deeplearning/2019/09/22/optimization_algorithms_in_deep_learning.html#NAdam

profile
데이터사이언스를 공부하는 권유진입니다.

0개의 댓글