CODEDRAGON ㆍDevelopment/AI
A Step by Step Backpropagation Example
빨간색 | 가중치나 바이어스의 초기값 |
파란색 | training data(훈련 데이터) |
입력으로 i1에 0.05를 넣고, i2에는 0.10을 넣은 후에 o1과 o2에서 각각 0.01과 0.99를 나오는지 실제 계산을 해봅니다.
이 예제에서는 뉴론의 활성화 함수로 sigmoid 함수를 사용했으며, 순차적으로 계산을 합니다.
실제 계산을 수행했더니 o1은 약 0.75가 나왔고 o2는 약 0.77이 나왔기 때문에 상당한 오차가 발생했음을 알 수 있습니다.
이 오차를 다시 반대 방향으로 전파를 시키면서 w1 ~ w6의 값을 갱신합니다.
이 때 학습의 속도를 고려하는 학습 진도율(η)이 등장하며, 이 예제에서는 0.5를 사용하였습니다.
이 방식으로 w1 ~ w6의 값을 모두 갱신을 하였다면, 다시 훈련 데이터를 i1과 i2에 넣고 위 과정을 반복합니다.
반복하다 보면, o1과 o2가 원래의 학습 목표였던 0.01과 0.99에 근사한 값이 도달 될 수 있을 것입니다.
이 때의 w1 ~ w6 는 훈련 데이터를 통해 최적화 된, 즉 학습이 된, 상태가 되는 것입니다.
이 예제는 총 10000회를 반복적으로 수행하면, 원하는 값에 도달하게 됩니다.
훈련 데이터가 많아지고 신경망에 있는 뉴런의 숫자가 많아질수록 학습 시간이 길어지고, 초기값이나 학습 진도율 변수가 학습에 상당한 영향을 끼칠 것이라는 것에 대한 감을 잡게 될 것으로 확신합니다.
[출처] [Part Ⅱ. Neural Networks] 4. Backpropagation [2] - 라온피플 머신러닝 아카데미 - |작성자 비전솔루션 전문기업
Github 사이트
source code까지 공개되어 있어 코드의 값을 바꿔보면 학습의 속도가 달라짐을 확인할 수 있습니다.
https://github.com/mattm/simple-neural-network
직접 다운로드
'Development > AI' 카테고리의 다른 글
Dropout: A Simple Way to Prevent Neural Networks from Overfitting (0) | 2022.03.21 |
---|---|
Overfitting 해결방법, 훈련 데이터양을 통한 Overfitting 해결시의 문제점 (1) | 2022.03.14 |
hadoop-mapreduce-examples-2.7.3-sources.jar, hadoop-1.2.1.sources.zip (0) | 2022.01.26 |
일반화 방법 - 속성 줄이기(Attribute Reduction) (0) | 2022.01.12 |
빅데이터 저장 관리시스템 (0) | 2021.12.18 |