일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 파이썬 데이터분석
- 스칼라 동시성
- Actor
- 파이썬 강좌
- 이더리움
- Play2
- 엔터프라이즈 블록체인
- Hyperledger fabric gossip protocol
- hyperledger fabric
- 하이브리드앱
- 하이퍼레저 패브릭
- Play2 로 웹 개발
- 스위프트
- 블록체인
- Akka
- CORDA
- 스칼라
- 파이썬
- play 강좌
- Adapter 패턴
- 안드로이드 웹뷰
- 그라파나
- Golang
- 파이썬 머신러닝
- akka 강좌
- 플레이프레임워크
- 주키퍼
- 스칼라 강좌
- 파이썬 동시성
- play2 강좌
- Today
- Total
HAMA 블로그
인공신경망 - (다층 피드 포워드 신경망) 본문
* 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값이 상수로 정해지지 않았기 때문에 잘 사용하는 방법은 아니다.
ⓑ 운동량 항
- 가중치를 보정할 때 이전 단계의 가중치 변화량에 운동량 상수를 곱하여 변화를 더욱 빠르게 해주는 방법이다.
- 파란색 글씨로 칠한 것은 이전 가중치 변화량이며, 베타는 운동량 상수이다.
- 이는 물리의 관성 법칙에 의거해서 나온 방법이다.
- 운동량 항을 적용하면 오차제곱의 합이 원하는 수치까지 가는데 필요한 계산 횟수가 줄어들게 된다.
ⓒ 학습률 알파값을 유동적으로 한다.
- 가중치 값을 학습할 때 가중치의 부호가 급변하는 것을 막기 위해서(변하는 폭을 줄이기 위해서) 적용한 것이 알파값이다.
- 만약, 가중치 값의 부호가 줄어들지 않으면, 점차 알파값을 증가시킨다.
- 만약, 가중치 값의 부호가 연속적으로 엇갈리면, 알파값을 줄여나간다.
- 학습률의 변화가 프로그램에 쇼크를 주지 않는 한에서 변화가 지속적으로 이뤄지기 때문에 필요 계산횟수이 줄어들게 된다.
Posted by 구름여행 Cloud Trave
'통계 & 머신러닝 & 딥러닝 ' 카테고리의 다른 글
사람인식 HOG, Python , OpenCV (0) | 2016.03.02 |
---|---|
제프리 힌톤은 그냥 더 좋은 사다리를 만들었을뿐.. (0) | 2015.12.26 |
인공신경망 - (퍼셉트론) (0) | 2015.10.04 |
인공신경망 - (소개) (0) | 2015.10.04 |
ICA (Independent Components Analysis) 란? (0) | 2015.10.04 |