Practice makes perfect

[MachineLearning] 학습 관련 기술 본문

Anaconda/MachineLearning

[MachineLearning] 학습 관련 기술

kerpect 2020. 8. 19. 13:20

매개변수 갱신
신경망 학습의 목적 : 손실 함수의 값을 가능한 한 낮추는 매개변수를 찾는 것입니다. 

 

- 확률적 경사 하강법(SGD : Stochastic Gradient descent)
: 최적의 매개변수 값을 찾는 단서로 매개변수의 기울기(미분)를 이용합니다. 

SGD 단점

: 방향성이 위에서 아래로 내려올 때는 빠를게 학습하면서 찾아가지만 평면적인 면으로 가게 되면 더이상 오차가 줄어들지 않는 문제점이 생길 수 있습니다. 

 

위의 그림과 같은 모습으로 나타나게 됩니다. 

 

SGD에 의한 최적화 갱신 경로 : 최소값인 (0, 0)까지 지그재그로 이동하니 비효율적이며 퍼포먼스의 문제를 야기합니다. 

 

 

① SGD 단점의 개선책 - 모멘텀(Momentum)

- V : 속도(Velocity)
- 기울기 방향으로 힘을 받아 물체가 가속된다는 물리 법칙

- 올바르게 최소값을 찾아가는 장점을 가집니다. 

 

 

 

- 모멘텀에 의한 최적화 갱신 경로

 

② AdaGrad :  : 각각의 매개변수에 맞춤형 값을 만들어 주는 방식

 

- 신경망 학습에서는 학습률 값이 중요한데, 학습률 값이 너무 작으면 학습 시간이 너무 길어지고, 반대로 너무 크면

  발산하여 학습이 제대로 이뤄지지 않습니다. 효율적으로 빠르게 최소값을 찾아가도록 하는 것입니다. 


- 학습률 감소(learning rate decay) :
    학습률을 정하는 효과적 기술
    처음에는 크게 학습하다가 학습률을 점차 줄여가면서 조금씩 작게 학습시키는 방법
    학습률을 서서히 낮추는 가장 간단한 방법은 매개변수 전체의 학습률 값을 일괄적으로 낮추는 것

 

- 최소값을 향해 효율적으로 이동
- y축 방향은 기울기가 커서 처음에는 크게 움직이지만, 그 큰 움직임에 비례해 갱신 정도도 큰 폭으로 작아지도록 조정
- 따라서 y축 방향으로 갱신 강도가 빠르게 약해지고, 지그재그 움직임이 줄어듬

 

 

③ Adam

: 모멘텀과 AdaGrad를 융합한 듯한 방법으로 2015년에 제안된 새로운 방법으로 두가지의 특징을 같이 점목하여 효율적으로 처리 할 수 있도록 만들어진 것이다. 

무조건 이상적인 최적의 값이 나온다고 할 수 없습니다. 그렇기 때문에 입력으로 전달되는 데이터에 따라서 최적인 알고리즘을 골라서 사용하는 것이 중요합니다. 

 

1) 경사하강법을 적용

2) 결과를 확인 - 데이터에 따라서 값이 오차가 클 때

3) 새로운 알고리즘을 적용

 

가장 중요한 것은!!! data 입니다!!! 절대적이라고 해도 과언은 아니라고 할 수 있습니다. 

data에 맞는 최적의 모델을 설계하는 것이 포인트 입니다!!

 

 

MNIST 데이터셋으로 본 갱신 방법 비교

가장 크게 효과를 발휘하는 AdaGrad인것을 확인 할 수 있습니다. 가장 안좋은 포퍼먼스를 보여주는 알고리즘은 SGD(경사하강법)인 것을 확인 할 수 있으며, 가장 손실함수의 값이 크다는 사실까지 확인됩니다.

 

 

 

가중치 초기값

 

가중치 감소(weight decay) 기법
 - 오버피팅을 억제해 범용 성능을 높이는 테크닉
 - 가중치 매개변수의 값이 작아지도록 학습하는 방법
 - 즉, 가중치 값을 작게 하여 오버피팅이 일어나지 않게 하는 것


지금까지의 가중치 초기값은 0.01 * np.random.randn(10,100) 처럼 정규분포에서 생성되는 값을 0.01배 한 작은 값(표준편차가 0.01인 정규분포)을 사용.

가중치를 표준편차가 0.01인 정규분포로 초기화할 때의 각 층의 활성화값 분포

 

 

- 가중치의 초기값으로 Xavier 초기값을 이용할 때의 각 층의 활성화값 분포

- 각 층의 활성화 값들을 광범위하게 분포시킬 목적으로 가중치의 적절한 분포를 찾고자 함.

- 앞 계층의 노드가 n개라면 표준편차가 sqrt(1/n)인 분포를 사용하면 된다는 결론.

- He 초기값 : sqrt(2/n)

 

 

ReLU를 사용할 때의 가중치 초기값

 

- 활성화 함수로 ReLU를 사용한 경우의 가중치 초기값에 따른

  활성화값 분포변화

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MNIST 데이터셋으로 본 가중치 초기값 비교

 

배치 정규화
- 배치 정규화를 사용한 신경망의 예

 

 

 

- 배치 정규화는 데이터 분포가 평균이 0, 분산이 1이

  되도록 정규화함

 

 

 

 

 

 

 

- 배치 정규화 계산 그래프

 

 

- 배치 정규화의 효과 : 배치 정규화가 학습 속도를 높인다.

 

 

 

 

 

 

 

 

 

 

 

오버피팅
: 신경망이 훈련 데이터에만 지나치게 적응되어 그 외의 데이터에는 제대로 대응하지 못하는 상태

 

오버피팅 발생 주요 원인
 - 매개변수가 많고 표현력이 높은 모델
 - 훈련 데이터가 적음

 

오버피팅 억제용 : 가중치 감소(weight decay)
 - 학습 과정에서 큰 가중치에 대해서는 그에 상응하는 큰 페널티를 부과하여 오버피팅 억제하는 방법
 - 원래 오버피팅은 가중치 매개변수의 값이 커서 발생하는 경우가 많음.

 

 

 

드롭아웃
 - 신경망 모델이 복잡해지면 가중치 감소만으로는 대응하기 어려울 때 이용할 수 있는 기법
 - 뉴런을 임의로 삭제하면서 학습하는 방법으로 초적의 파라미터를 찾는 것 
 - 훈련때는 데이터를 흘릴 때마다 삭제할 뉴런을 무작위로 선택하고, 시험 때는 모든 뉴런에 신호를 전달하되

   각 뉴런의 출력에 훈련 때 삭제한 비율을 곱하여 출력(완전연결형). 

 

 

 

하이퍼파라미터 

  - 각 층의 뉴런 수
  - 배치 크기
  - 매개변수 갱신 시의 학습률
  - 가중치 감소 등의 매개변수

 

데이터 셋의 구별

  - 훈련 데이터 : 매개변수 학습
  - 검증 데이터 : 하이퍼파라미터 성능 평가(훈련 데이터 중 20% 정도 분리)
  - 시험 데이터 : 신경망의 범용 성능 평가

 

하이퍼파라미터 최적화

 - 0단계 : 하이퍼파라미터 값의 범위를 설정
 - 1단계 : 설정된 범위에서 하이퍼파라미터의 값을 무작위로 추출
 - 2단계 : 1단계에서 샘플링한 하이퍼파라미터 값을 사용하여 학습하고, 검증 데이터로 정확도를 평가

             (단, 에폭은 작게 설정)
 - 3단계 : 1단계와 2단계를 특정 횟수(100회 등) 반복하여, 그 정확도의 결과를 보고 하이퍼파라미터의 범위를 좁힘

 

 

 

- 실선은 검증 데이터에 대한 정확도

- 점선은 훈련 데이터에 대한 정확도