관리 메뉴

HAMA 블로그

인공신경망 - (다층 피드 포워드 신경망) 본문

통계 & 머신러닝 & 딥러닝

인공신경망 - (다층 피드 포워드 신경망)

[하마] 이승현 (wowlsh93@gmail.com) 2015. 10. 4. 22:34

* LFF(Layered Feed-Forward neural network) : 다층 피드 포워드 신경망

 - 퍼셉트론은 선형분리가 불가능한 문제에 대해서 해결을 해지 못했다.

 - 이러한 문제를 해결 하기 위해서 나타난 것이 LFF이다.

 - LFF는 선형분리가 불가능한 문제를 나누기 위해서 여러개의 직선으로 층을 나눠서 문제해결을 시도한다.

  ex) 퍼셉트론으로 풀지 못한 XOR문제를 LFF, 2개의 층으로 이뤄진 신경망을 이용하여 해결이 가능하다. 

   LFF0.png 

 - LFF는 하나의 입력층과 하나 이상의 은닉층, 하나의 출력층으로 이뤄져 있다. 

 - 이름에서 나타 났듯이 입력층, 은닉층, 출력층 등으로 층이 나눠져 있으며, 앞으로만 전진이 가능한 단방향 뉴런 네트워크다.

   lff_2hidden1.png 

  > 입력층 : 계산과정 없이 외부로 부터 신호를 받아들이는 지점

  > 은닉층 : 계산 뉴런들로 이뤄져 있다. 이론적으로는 하나의 은닉층만 있어도 모든 함수가 표시 된다.

                 문제의 특성 및 원하는 결과 등에 따라 여러개의 은닉층이 존재 할 수 있다. 이는 반복되는 실험으로 밝혀야 한다.

  > 출력층 : 계산 뉴론들리 이뤄져 있으며, 최종 계산 결과를 출력 신호로 내보낸다.

 - 활성화 함수로는 sigmoid함수를 사용한다.


* LFF의 학습 방법

 - LFF 학습은 BP algorithm을 통해서 실시된다.

  lff_info2.png 


ⓐ Step 1 : 초기화 단계

 - 각 가중치와 각 뉴런에서의 임계값을 ( -2.4/뉴런의 총개수 , 2.4/뉴런의 총개수 ) 범위에서 모두 지정해준다.


ⓑ Step 2 : 활성화

 1) 입력층에서 은닉층으로 가는 값을 계산한다.

 yjp3.png 

 2) 은닉층에서 출력층으로 가는 값을 계산한다.

 yjk4.png 

ⓒ Step 3 : 가중치 학습

  ※ 오차 기울기 : 활성화 함수의 미분값에 뉴련 출력의 오차를 곱한 것. 기호 : δ

  1) 출력층에서 출력층 이전 은닉층 사이에는 다음을 사용한다.

   > 출력값과 기대값의 오차를 바로 사용할 수 있다.

   ele5.png 

  2) 은닉층에서 은닉층 또는 입력층으로 가는 사이에는 다음을 사용한다.

   > 오차를 바로 사용하지 못하므로, 이전 단계에서 자신에 의해 발생한 오차를 모두 더하여 사용한다.

             ele6.png 

ⓓ Step 4 : 반복

  p값을 증가 시켜가며, 한 에폭이 모두 에러가 0이 나올때까지 ⓑ로 돌아간다.

  

 - LFF에서 기대치는 각각에서 발생한 오차제곱의 합이 어느 특정 수치보다 작을 때까지 반복한다.

 ※ 오차 제곱의 합 : 신경망의 성능을 보여주는 지표, 오차 제곱의 합이 충분히 작으면 신경망이 완성됬다고 할 수 있다.

 - ANN의 결과는 쓸만해 이기 때문에 유일하지 않다.(많은 실험을 통해서 최적화를 해나가야 한다.)


* LFF 가속학습

 - LFF의 학습속도를 빠르게 하기 위해 다음을 사용한다.

 ⓐ 쌍곡 탄젠트

   - 시그모이드 함수를 사용하지 않고 쌍곡 탄젠트 함수를 사용한다. 

      tan6.png 

  - 쌍곡 탄젠트 함수는 a와 b값이 상수로 정해지지 않았기 때문에 잘 사용하는 방법은 아니다.

 ⓑ 운동량 항

  - 가중치를 보정할 때 이전 단계의 가중치 변화량에 운동량 상수를 곱하여 변화를 더욱 빠르게 해주는 방법이다.

    ele7.png 

  - 파란색 글씨로 칠한 것은 이전 가중치 변화량이며, 베타는 운동량 상수이다.

  - 이는 물리의 관성 법칙에 의거해서 나온 방법이다. 

  - 운동량 항을 적용하면 오차제곱의 합이 원하는 수치까지 가는데 필요한 계산 횟수가 줄어들게 된다.

 ⓒ 학습률 알파값을 유동적으로 한다.

  - 가중치 값을 학습할 때 가중치의 부호가 급변하는 것을 막기 위해서(변하는 폭을 줄이기 위해서) 적용한 것이 알파값이다.

  - 만약, 가중치 값의 부호가 줄어들지 않으면, 점차 알파값을 증가시킨다.

  - 만약, 가중치 값의 부호가 연속적으로 엇갈리면, 알파값을 줄여나간다.

  - 학습률의 변화가 프로그램에 쇼크를 주지 않는 한에서 변화가 지속적으로 이뤄지기 때문에 필요 계산횟수이 줄어들게 된다.


저작자 표시 비영리 변경 금지

Posted by 구름여행 Cloud Trave

http://destiny738.tistory.com/456

Comments