Category: Etc.
 / Author:  / Link:
역전파 알고리즘
[ 순 서 ]
          1. 역전파 신경망을 공식화하기
          2. 역전파 신경망 객체들의 구현
          3. 역전파 신경망 객체 사용하기
          4. 역전파 신경망 노드
          5. 역전파 신경망 응용
          6. 역전파 신경망을 이용한 Epoch Training
          7. 일반적인 역전파 신경망 클래스
          8. 역전파 신경망 예제들
          9. 역전파 신경망 객체들의 요약
 
Werbos(1974)에 의해서 최초로, 그리고 후에 Parker(1985)와 Rumelhart 및 McClelland(1986)에 의해서 공식화된 역전파 신경망은 본래적으로 ADALINE의 확장이다.  하나의 처리 노드를 가지는 대신에 역전파 신경망은 상호 연결된 층들로 조직화된 노드들의 집합(각 노드는 ADALINE과 유사이다. 역전파 신경망의 층으로 이루어진 구조는 ADALINE의 선형 분리성 제한(linear separability limitation)을 피할 수 있도록 하기 때문에 역전파 신경망을 훨씬 더 강력한 도구로 만든다. 또한 역전파 신경망은 하나의 이진 출력(binary outut)으로 제한되지 않는다; 그것은 연속적인 범위 내에 속하는 값들을 가지는 어떤 수의 출력들을 가질 수 있다. 역전파 신경망은 분류(classification), 투영(projection), 해석(interpretation) 그리고 일반화(generalization)을 포함하는 문제들에 이상적이다.
ADALINE 네트워크가 입출력 층을 가지는 것처럼 역전파 신경망도 이러한 입출력 층들 뿐만 아니라 하나 이상의 중간(은닉, hidden)층들을 가진다. 그림 5.1에 있는 예제는 하나의 중간층, 두 개의 입력층 노드들 그리고 두 개의 출력층 노드들을 갖는 샘플 역전파 신경망을 보여준다. 역전파 신경망에 있는 노드들은 가중된 연결들(weighted links)을 매개로 하여 서로 연결되며, 그래서 한 층에 있는 각 노드는 일반적으로 네트워크를 위하여 출력을 제공하는 출력층을 제외하고 연속하는 층에 있는 각 노드에 연결된다. 입력패턴이 역전파 신경망에 표현될 때 각 입력층 노드는 입력패턴 성분값들 중 하나로 할당된다. 다음 층에 있는 노드들은 링크들을 통해서 입력노드값들을 받고 다음 층으로 전달하기 위해서 그 자신의 출력값들을 계산한다. 이 과정은 각 출력층 노드가 네트워크를 위하여 출력을 산출할 때까지 계속된다.
 
그림 1. 역전파 신경망
입력패턴들은 그것들이 대개 0.0에서 1.0 사이 값으로 크기가 조정되는 것을 예외하고 ADALINE을 위하여 사용되는 것들과 동일하다. 역전파 신경망에 있는 출력층은 어떤 수의 노드들을 가질 수 있기 때문에, 원하는 출력패턴은 출력층에 있는 각 노드를 위한 성분값을 포함한다. 또한 출력층 노드들은 ADALINE처럼 이진 출력으로 제한되지 않는다; 이들 노드들(역전파 신경망에 있는 나머지 노드들 뿐만 아니라)은 0.0과 1.0 사이의 값들을 산출한다.
ADALINE에서 볼 수 있는 최소 에러학습(minimum error learning)의 교사훈련방법(supervised learning method) 또한 역전파 신경망에 의해서 사용된다. 네트워크 링크 값들은 임의 값들(대개 -1.0에서 1.0 사이의 값들)로 초기화된다. 입력패턴이 역전파 신경망에 표현된 후에 값들은 출력층에 도달될 때까지 층들을 통해서 전방으로 전파한다. 입력패턴을 위한 기대되는 출력은 출력층에 있는 각 노드를 위하여 에러값을 계산하기 위해서 사용된다. 이들 에러값들은 델타규칙(delta rule)이 원하는 출력을 더 잘 산출하기 위해서 링크값들을 조정하기 위해서 사용될 때 네트워크를 통해서 역전파된다. 네트워크 훈련의 목표는 훈련집합에 있는 패턴들에 의해서 산출되는 에러를 감소시키는 것이다. 훈련집합은 전체 에러가 주어진 tolerance 이하가 될 때 까지 반복적으로 제시된다. 일단 훈련이 완료되면 역전파 신경망에 새로운 입력 패턴들이 제시되고 학습과정으로부터 얻어진 경험에 기초하여 출력을 산출한다.
간단한 paraboloidal 에러표면을 가졌던 ADALINE과는 다르게 역전파 신경망은 비선형이며 더 복잡한 표면을 산출한다. 델타규칙이 에러표면 downhill을 움직이기 때문에 역전파 신경망의 에러표면에서의 비규칙성들은 문제들을 야기할 것이다. 만일 국소 최소값들이 델타규칙에 의해서 취해진 에러표면의 경로를 따른다면 네트워크는 그림 5.2에서 보여지는 것처럼 국소 최소값에 고정되어 전역최소값에 결코 도달하지 않는다. 모멘텀 항의 사용은 어느 정도 국소 최소값들을 보상할 수 있다;그것은 링크 값의 이전 변화(change)의 퍼센트를 현재 변화에 추가하기 위해서 사용되며 종종 국소 최소값들을 빠져나오도록 한다.
 
그림 2. 국소 최고값들 및 역전파 신경망
1. 역전파 신경망을 공식화하기
NN=(S,P,N)으로 시작하여 공식화된 역전파 신경망 아키텍처는 다음과 같다:
        Backpropagation Network      NN = (S,P,T)
        Pattern Set                             s = {I, O} 
여기에서 I는 입력패턴들의 집합이고 O는 대응하는 원하는 출력패턴들의 집합이다;
        Input Set                       I = {p_k,j} 
여기에서 k는 입력패턴 수이고 j는 입력패턴 성분이다;
        Output Set                      O = {o_k,j} 
k는 원하는 출력패턴 수이며 j는 출력패턴 성분이다.
역전파 네트워크를 위한 파라미터 집합은 두 개의 값들을 포함한다: 모멘텀 항(α)과 학습율(β). 이들 값들은 보통 상수들이다; 그러나 그것들은 시간의 함수들, 네트워크 성분 등이 될 수 있다.
        Parameter Set                   P = {α, β} 
역전파 신경망의 토폴로지는 3장에서 설명되었다; 그러나, 나는 이 장에서 그것을 제시하고 그것의 노드들과 링크들의 기능을 정의할 것이다.
         Topology                        T = (F, L)
         Framework                     F = {c_0, c_1, ..., c_(LN_1)}
LN은 층들의 수이고, c_0은 입력층을 나타내고 c_(LN-1)은 출력층을 나타내고 c_1에서 c_(LN-2)까지는 중간층들을 나타낸다.
         Input Layer                     c_0 = {n_0,i}   여기에서 0≤i≤∥p∥
        Input Nodes                     n_{1,i} (t+1) = I_{(t mod ∥I∥),i}
                                                 여기에서 0≤i≤∥p∥
역전파 신경망에서 발견되는 입력 노드들은 ADALINE 네트워크에 있는 입력노드들과 등가이다; 훈련집합에 있는 입력패턴들은 시간이 증가할 때 반복된다. 어떻게 Input_Node 클래스가 어떤 수정들 없이 역전파 신경망에서 사용되는지를 보이는 것은 쉬운 일이다.
역전파 신경망의 중간 및 출력층들에 있는 노드들은 ADALINE 노드와 유사한 방법으로 그러한 값들을 계산한다.
Middle and Output Layer Nodes   
 
Transfer Function       
 
여기에서 1 ≤i < LN, 0 ≤ j < ∥c_i∥
이렇게 공식화된 노드와 ADALINE 노드 사이의 유일한 차이는 곱들의 합을 어떤 관리가능한 범위(대개 0.0과 1.0 사이)로 제한하는 시그모이드(sigmoid) 전달함수에 있다. 시그모이드 전달함수는 0.0과 1.0에서 근사적으로 위치하는 두 개의 수평선을 가진다; 곱들의 합이 얼마나 높은지 또는 낮은지와 무관하게 시그모이드 함수의 출력은 항상 0.0과 1.0 사이에 있게 되는데 이것이 그림 5.3에서 보여진다. 역전파 네트워크에서 학습과정을 용이하게 하기 위해서 전달함수는 또한 어떤 특성들을 가져야만 한다: 그것은 비선형이어야 하고 모든 곳에서 정의되어야만 하며 미분가능해야만 한다.
역전파 신경망에 있는 링크들은 초기에 그것의 값들을 임의 값들로 설정한다:
Link Values(initial)            

뒤에 오는 모든 링크 값들은 이전 변화의 비율(percentage)(모멘텀 항(α))과 함께 이전 링크에 대한 변화(△)를 더함으로써 계산된다:
Link Values     

초기 변화는 훈련이 아직 시작되지 않았기 때문에 0이다.
Delta(initial)  
 
이어지는 모든 변화들(△)은 델타 규칙을 사용하여 계산된다. ADALINE 네트워크에서 한 것처럼 델타규칙은 그것의 링크들의 값들을 조정하기 위해서 노드에 의해 만들어진 에러를 사용하며 그래서 네트워크는 주어진 입력의 더 정확한 출력을 산출할 것이다.
Delta(initial)  

ADALINE 네트워크에서 오직 ADALINE 노드만이 출력(과 에러)을 산출하였다. 네트워크에 있는 모든 링크들은 ADALINE 노드에 연결되었으며 그래서 링크 값들 전부는 입력패턴과 ADALINE 노드의 에러를 사용하여 조정될 수 있었다. 역전파 신경망에서 이 과정은 더 복잡해진다.
출력층 노드들을 위한 에러들은 노드의 출력과 패턴집합으로부터 그것의 희망하는 출력값을 사용하여 계산된다. 링크값 변화의 크기는 음의 기울기(negative gradient)에 비례하게 될 것이다; 그래서 시그모이드 전달함수의 미분은 에러값을 적절하게 스케일하기 위해서 사용된다. 각 출력층 노드는 그것의 출력으로부터 원하는 출력패턴성분을 뺄셈하고 이 값을 전달함수의 미분을 통해서 결과하는 노드의 출력과 곱함으로써 그것의 에러값을 계산한다.
Output Layer Error:     
 
비록 출력층 노드를 위하여 에러를 계산하기 위해서 희망하는 출력패턴을 사용하는 방법이 직접적이더라도 은닉층 노드들을 위한 희망하는 출력값들은 존재하지 않으며 이것은 그러한 에러 계산을 더 미묘하게 만든다. 이 어려움은 Rumelhart와 McClelland(1986)이 출력층 노드들에 의해서 산출된 에러로부터 중간층 노드들을 위한 에러를 계산하는 방법을 고안할 때 까지 수년 동안 역전파 신경망의 개발을 방해하였다. 그들의 방법 이면에 있는 아이디어는 만일 중간층에 있는 노드가 높은 에러를 산출한 출력층 노드의 출력에 매우 기여한다면 그것 또한 높은 에러를 가져야만 한다. 중간층 노드와 출력층 노드들을 연결하는 링크 값들과 그것들에 대응하는 출력노드 에러의 곱들을 합하고 이 합을 전달함수의 미분을 통하여 작동하는 중간층 노드의 출력에 곱함으로써 중간층 노드를 위한 에러가 추정될 수 있다.
Middle Layer Error:
                   
이러한 방식으로 에러를 계산하는 것은 어떤 수의 중간 층들을 통해서 거꾸로 전개될 수 있으며 출력층 노드들로부터의 에러를 네트워크를 통해 거꾸로 전파하는 이러한 과정은 역전파 신경망이 그것의 이름을 획득한 이유이다.
[출처] 기초신경망알고리즘 - 역전파 신경망 (1)|작성자 니네브