본문 바로가기

[ 프로그래밍 ]/신경망(Neural Network)

BP(Backpropagation)를 이용한 XOR 학습

선형 분리가 불가능한 문제를 해결하기 위한 다층 신경망 모델 중
델타 학습법의 일종인 오류 역전파 학습법 즉, BP 알고리즘을 이용하여 XOR 문제 학습.

첨부한 소스는 벡터 크기, 은닉층 뉴런 수, 출력층의 개수를 조절하기 위해
현재 버전에서는 조금 복잡한(지저분한) 형태로 구성되어 있음.

본 학습에서, 학습률은 1, 최대 출력오차는 0.01로 설정

은닉층 뉴런의 수 p는 1989년 G. Mirchandini와 W. Cao가 제안한 방법을 일반적으로 사용하며,
p = log2M 을 이용하여 구함
이때 M은 선형 분리 가능한 영역의 최대 수를 의미

활성화 함수는 단극성 시그모이드 함수 사용

초기 연결 강도를 설정하는 것이 중요한데,
이를 잘못 설정하면 학습이 제대로 이루어지지 않은 상태에서 Local Minima에 빠져 학습이 진행이 안될 수 있음
(첨부한 소스에서 // 임의값 설정 을 하지 않으면 그런 경우가 발생)
1990년 D. Nguyen과 B. Widrow에 따르면,
은닉층과 출력층간 연결 강도는 -0.5 ~ 0.5 사이,
입력층과 은닉층간 연결 강도는 일단 이 범위의 값으로 초기화 하되
학습을 시작하기 전에 입력층과 은닉층의 뉴런 수 등을 이용, 응용 방법에 따라 변형하여 사용 

또한 학습률을 너무 크거나 작게 설정하면,
학습이 너~무 느리거나, 학습결과가 수렴하지 않는 결과가 발생할 수 있음.

학습 결과,

6059 번째 학습에서,

v =  [ -8.41 -8.49 2.04 ]
      [ -3.52 -3.51 4.98 ]

w = [ -7.90 7.07 -3.05 ] 이 되어 최대 출력 오차의 합이 0.01 이하가 되었다.


이후,
BP 알고리즘 자체를 변형한 모멘텀 BP 알고리즘과
적응식 학습률 BP 알고리즘(delta-bar-delta)에 대해서도 구현해 볼 것.



Reference
[1] 오창석, "뉴로컴퓨터", 내하출판사
[2] Chapter 7 The backpropagation algorithm of Neural Networks - A Systematic Introduction by Raúl Rojas