본문 바로가기
IT/머신러닝

[section_9] ReLU and 초기값 정하기(1) (2006/2007 breakthrough)

by 빨강자몽 2018. 6. 1.

Sigmoid 보다 좋은 ReLU

  • 쉽게 이해하기에 앞서 머신러닝의 지나온 과정에서 가장 큰 2가지 문제가 있었다.
        - 첫 번째 : XOR 문제 - > Neural Network
        - 두 번째 : Backprogation의 문제 -> ReLU
  • Backprogation을 할때 많은 Layer에 거치게 되면 좋지 않은 결과가 나오게 된다.


  • 이유는 간단하다 Backprogation의 경우 나온 결과 값으로 이전 레이어의 w, b를 조절 해 줘야하는데 sigmoid의경우 0~1사이의 값만을 가지므로 곱하면 곱할 수록 0에 가까워지게 된다.
  • 따라서 많은 레이어를 거칠수록 w, b에 주는 영향은 줄어 들게된다.

  • 이를 해결 해주는 방법은 생각 보다 간단하다.
  • 기존에 쓰는 sigmoid(0~1)이 아닌 ReLU(0~∽)를 사용하여 인풋레이어에 가까워 질 수록 주는 영향을 크게 한다.
  • 좋은 결과 값을 도출 하게 된다.

  • 기본적인 ReLU이외에도 Leaky ReLU와 같이 0으로 만드는 것이 아니라 작은 값을 주는 방법도 있다.




초기 Weights 설정하기

  • 위의 ReLU를 사용하여 그래프를 그렸을 때 한 그래프는 금방 낮은 Cost를 찾지만 다른 그래프는 아니다.
  • 차이는 어떤 Weights로 시작했냐의 차이다.


  • 이를 해결 하기 위해서 적절한 weight 설정 학습법, Restricted Boatman Machine(RBM)를 발표하였다.
  • 방법은 현재 Layer와 다음 Layer을 연결시키고, 값을 도출하여 Backward시켜 x와 x_hat(결과 값)을 비교하여 초기 값(w,b)를 설정한다.
  • 이 후 이를 반복한다.


  • 이런 RBM은 복잡하다는 문제점이 있었는데.
  • Xavier이 발표한 'Xavier initialization'으로 인해 더 쉽고 성능좋은 학습법을 사용 할 수 있게되었다. 
  • 이를 간단한 변형을 통해 더 좋은 성능 Xavier을 만들어 졌다.('He's initalization')


Overfitting

  • 오버피팅이란 내가 학습시킨 데이터에 너무 최적으로 맞추다 보니 다른 테스트 케이스에서 오류가 심하게 나는 경우이다.
  • 오버피팅의 여부는 데이터 셋과 테스트 셋의 정확도의 차이로 알 수 있다.(정확도 차이가 크면 오버피팅)


  • 해결 방법은 크게 3가지가 있다.
  • 해결 1 : 더 많은 데이터를 추가한다.
  • 해결 2 : 정규화 한다. -> 너무 큰 weight를 주지 않는다.

  • 해결 3 : Dropout 방식을 사용한다. -> 학습시 일부로 몇개의 노드를 0으로 만든다.(너무 최적화 하지 않기위해 오차를 만들어주는 것 같다.) 



NN LEGO PLAY : NN의 구성

  • 이어서 NN을 레고에 빗대어 설명했다.
  • 일직선, 쪼개고, 합치고, 자유로은 방식으로 NN을 구성할 수 있다.
  • "모델을 학습시키는데에 한계점은 너의 상상력이다"