* LFF(Layered Feed-Forward neural network) : 다층 피드 포워드 신경망
- 퍼셉트론은 선형분리가 불가능한 문제에 대해서 해결을 해지 못했다.
- 이러한 문제를 해결 하기 위해서 나타난 것이 LFF이다.
- LFF는 선형분리가 불가능한 문제를 나누기 위해서 여러개의 직선으로 층을 나눠서 문제해결을 시도한다.
ex) 퍼셉트론으로 풀지 못한 XOR문제를 LFF, 2개의 층으로 이뤄진 신경망을 이용하여 해결이 가능하다.
- LFF는 하나의 입력층과 하나 이상의 은닉층, 하나의 출력층으로 이뤄져 있다.
- 이름에서 나타 났듯이 입력층, 은닉층, 출력층 등으로 층이 나눠져 있으며, 앞으로만 전진이 가능한 단방향 뉴런 네트워크다.
> 입력층 : 계산과정 없이 외부로 부터 신호를 받아들이는 지점
> 은닉층 : 계산 뉴런들로 이뤄져 있다. 이론적으로는 하나의 은닉층만 있어도 모든 함수가 표시 된다.
문제의 특성 및 원하는 결과 등에 따라 여러개의 은닉층이 존재 할 수 있다. 이는 반복되는 실험으로 밝혀야 한다.
> 출력층 : 계산 뉴론들리 이뤄져 있으며, 최종 계산 결과를 출력 신호로 내보낸다.
- 활성화 함수로는 sigmoid함수를 사용한다.
* LFF의 학습 방법
- LFF 학습은 BP algorithm을 통해서 실시된다.
ⓐ Step 1 : 초기화 단계
- 각 가중치와 각 뉴런에서의 임계값을 ( -2.4/뉴런의 총개수 , 2.4/뉴런의 총개수 ) 범위에서 모두 지정해준다.
ⓑ Step 2 : 활성화
1) 입력층에서 은닉층으로 가는 값을 계산한다.
2) 은닉층에서 출력층으로 가는 값을 계산한다.
ⓒ Step 3 : 가중치 학습
※ 오차 기울기 : 활성화 함수의 미분값에 뉴련 출력의 오차를 곱한 것. 기호 : δ
1) 출력층에서 출력층 이전 은닉층 사이에는 다음을 사용한다.
> 출력값과 기대값의 오차를 바로 사용할 수 있다.
2) 은닉층에서 은닉층 또는 입력층으로 가는 사이에는 다음을 사용한다.
> 오차를 바로 사용하지 못하므로, 이전 단계에서 자신에 의해 발생한 오차를 모두 더하여 사용한다.
ⓓ Step 4 : 반복
p값을 증가 시켜가며, 한 에폭이 모두 에러가 0이 나올때까지 ⓑ로 돌아간다.
- LFF에서 기대치는 각각에서 발생한 오차제곱의 합이 어느 특정 수치보다 작을 때까지 반복한다.
※ 오차 제곱의 합 : 신경망의 성능을 보여주는 지표, 오차 제곱의 합이 충분히 작으면 신경망이 완성됬다고 할 수 있다.
- ANN의 결과는 쓸만해 이기 때문에 유일하지 않다.(많은 실험을 통해서 최적화를 해나가야 한다.)
* LFF 가속학습
- LFF의 학습속도를 빠르게 하기 위해 다음을 사용한다.
ⓐ 쌍곡 탄젠트
- 시그모이드 함수를 사용하지 않고 쌍곡 탄젠트 함수를 사용한다.
- 쌍곡 탄젠트 함수는 a와 b값이 상수로 정해지지 않았기 때문에 잘 사용하는 방법은 아니다.
ⓑ 운동량 항
- 가중치를 보정할 때 이전 단계의 가중치 변화량에 운동량 상수를 곱하여 변화를 더욱 빠르게 해주는 방법이다.
- 파란색 글씨로 칠한 것은 이전 가중치 변화량이며, 베타는 운동량 상수이다.
- 이는 물리의 관성 법칙에 의거해서 나온 방법이다.
- 운동량 항을 적용하면 오차제곱의 합이 원하는 수치까지 가는데 필요한 계산 횟수가 줄어들게 된다.
ⓒ 학습률 알파값을 유동적으로 한다.
- 가중치 값을 학습할 때 가중치의 부호가 급변하는 것을 막기 위해서(변하는 폭을 줄이기 위해서) 적용한 것이 알파값이다.
- 만약, 가중치 값의 부호가 줄어들지 않으면, 점차 알파값을 증가시킨다.
- 만약, 가중치 값의 부호가 연속적으로 엇갈리면, 알파값을 줄여나간다.
- 학습률의 변화가 프로그램에 쇼크를 주지 않는 한에서 변화가 지속적으로 이뤄지기 때문에 필요 계산횟수이 줄어들게 된다.