MLPNN(다층퍼셉트론신경망)은 퍼셉트론이 여러층으로 이루어져 있는 형태로써, 초창기 신경망의 XOR문제를 해결하는데 중요한 자리를 차지했다.

* Backpropagation : 단층 퍼셉트론이 복잡하게 얽혀있는 다층 퍼셉트론 네트워크 구조로 되어있으며 이는 크게 입력층, 중간(은닉)층, 출력층으로 나누어진다. 입력층에 들어간 입력 signal은 각 연결강도(weight)와 곱해지고 각 노드(node)에서 더해진다. 출력층에서는 결과값과 실제값을 비교하여 오차가 작은 방향으로 노드간의 연결강도를 조절하는(delta rule)을 사용하여 학습이 이루어 진다.

 

하나의 퍼셉트론은 XOR 문제를 해결할 수 있는 결정 경계를 만들어 낼 수 없지만, 아래 그림과 같이 퍼셉트론을 3개 사용하면 XOR문제를 해결 할 수 있다. 아래 a에서 f1(x) 는 (0,0)에 대해서는 -1을 그리고 나머지에 대해서 +1에서 출력하는 퍼셉트론이고, f2(x)는 (1,1)에 대해서만 -1을 출력하고 나머지에 대해서는 +1을 출력하는 퍼셉트론이다. 그림 b는 이러한 결정 경계에 해당하는 가중치를 보여준다. 최종적으로 (1,0)과 (0,1)에 대해서 +1을 출력하려면, f3(x)와 같은 가중치를 부여하면 된다.

                                  [XOR 문제의 결정 경계]                                             [3개 퍼셉트론으로 구성된 2층의 퍼셉트론]

 

초창기 단일 퍼셉트론의 가중치를 결정하는 학습 알고리즘은 개발되었지만, (b)와 같이 여러개의 퍼셉트론이 층을 구성하는 경우에 대한 학습 알고리즘이 개발되지 못했다. 여러 개의 퍼셉트론을 층 구조로 구성한 신경망 모델을 다층 퍼셉트론(MLP)이라고 한다. XOR문제도 다층 퍼셉트론을 사용하면 해결할 수 있다는 것을 알고 있었지만, 가중치를 결정하는 학습 방법을 찾지 못해 1970년대부터 1980년대 초반까지는 신경망에 대한 연구가 침체된 시기이다. 다층 퍼셉트론을 학습시키지 못한 이유는 퍼셉트론의 전달 함수가 계단함수이기 때문에, 미분이 불가능하여 최대 경사볍과 같은 최적화 방법을 사용할 수 없었기 때문에, 미분이 불가능하여 최대 경사법과 같은 최적화 방법을 사용할 수 없었기 때문이다. 1980년대에 들어오면서 연구자들이 다층 퍼셉트론 학습에 대한 발상을 전환하였다. 미분 불가능한 계단 함수 대신, 이와 비슷하지만 미분 가능한 함수를 사용하는 간단한 아이디어를 도입한 것이다. 이러한 함수로 시그모이드함수와 쌍곡 탄젠트가 있다. 시그모이드 함수 Y(s)는 아래 1과 같이 정의되는 출력 구간(0,1)인 함수이고, 쌍곡 탄젠트 h(s)는 아래 2와 같이 정의 되는 출력 구간 (-1,1)인 함수이다.

아래 그림은 쌍곡 탄젠트 함수의 형태를 보여주는데, (b)와 같이 a값이 커지면 경사가 급해지고, 작아지면 경사가 완만해지는 특성이 있다. 시그모이드 함수와 쌍곡 탄젠트 함수를 미분하면, 아래 식과 같이 미분 함수가 원래 함수로 표현될 수 있다

 

1) 다층 퍼셉트론의 구성

입력이 주어지는 층을 입력층이라 하는데, 주어진입력을 다음 층으로 전달하는 역할을 한다. 여기에서 입력값들을 벡터(X1,X2, · · · ·,Xd)로 나타내고, 입력층의 노드를 나타내는 첨자로  i를 사용하고 다음층으로 연결되는 선의 가중치를 로 나타낸다. 출력을 내는 마지막 층을 출력층이라 하는데, 이노드들은 퍼셉트론이다. 출력값을 벡터(h0, h1, · · · · · · ·hm)으로 나타내고 첨자는 k를 사용한다.

입력층과 출력층 사이에 있는 층을 은닉층이라고 한다. 다층 퍼셉트론은 여러개의 은닉층을 가질 수도 있다. 여기에서 편의상 은닉층이 하나인 것을 대상으로 설명한다. 은닉층의 노드를 가리키는 첨자로 j를 사용하고 은닉층과 출력층 간의 가중치를 로 나타난다. 다중 퍼셉트론에서 연결선은 인접한 층 사이에서만 만들어진다. 다층 퍼셉트론은 (입력, 출력)쌍의 학습 데이터를 사용하여 학습한다. 입력이 주어질때 어떤 값이 출력되어야 하는지에 대한 정보가 있다. 출력층은 입력에 대한 기대하는 출력값에 대한 정보가 있는 반면에, 은닉층에 대해서는 어떤 값이 나와야 하는지에 대한 정보가 없다. 중간에 있는 층에는 어떤 값이 나와야 하는지에 대한 정보가 없기(숨겨져 있기)때문에 은닉층이라고 부른다

 

다층 퍼셉트론은 입력이 주어지면 전방향으로 계산해가면서 출력값을 만들어 낸다. 먼저 은닉층의 각 노드 J의 퍼셉트론은 다음과 같이 Zj를 출력한다

출력층의 각 노드 k의 퍼셉트론은 은닉층의 출력층을 사용하여 다음과 같이 ok를 출력한다

여기에서 퍼셉트론에 대한 전달 함수 f는 시그모이드 함수이다.

 

2) 다층 퍼셉트론의 학습

다층 퍼셉트론에서 학습은 학습 데이터 입력 (x1,x2,------xd)에 대응하는 학습 데이터 출력(t1,t2,----tm)이 나오도록 입력층과 은닉층 사이의 가중치 벡터 u와 은닉층과 출력층 사이의 가중치 벡터 v를 결정하는 것이다. 가중치를 결정할 때, 아래와 같은 제곱오차 E를 최소화하도록 가중치를 찾는다.

오차 함수 E를 최소화하는 가중치를 찾기 위해 일반적으로 다음과 같이 최대경사법(Gradient descent)을 사용한다. 여기에서 는 1보다 작은 양수값의 학습율(learning rate)이다

다층 퍼셉트론에서 오차 함수에 대한 편미분은 다음과 같이 계산된다.

위 식에서 마지막 부분은 모두 로 정리되는 항을 포함하고 있는데, 이 항은 오차와 관련이 있다. 학습할 때 각 학습 데이터의 입력을 다층 퍼셉트론에 집어넣어 출력을 계산하고, 출력값의 오차를 줄이도록 먼저 은닉층과 출력층 사이의 가중치 벡터 v를 수정한 다음, 입력층과 은닉층 사이의 가중치 벡터 u를 수정한다. 편미분식에 있는 오차 관련 항인 가 출력층에서부터 뒤로 전달되어가면서 가중치를 수정하기 때문에, 다층 퍼셉트론의 학습 알고리즘을 오차역전파(error backpropagation)알고리즘이라 한다. 최대 경사법을 사용할 때 학습 도중에 오차 함수의 모양이 평평한 부분을 만나게 되면 그레디언트가 영벡터가 되어 학습이 이루어지지 않는다. 또한 잡음 등으로 오차 함수에 지역적으로 잘못된 부분이 있을 수 있다. 이러한 상황에서는 직전 시점의 그레디언트를 어느 정도 고려하는 것이 바람직할 수 있다. 이때 가중치를 수정하는 식은 다음 식과 같이 되는데, 직전 시점의 이동 벡터에 대응하는 를 모멘텀항이라고 한다

위 식에서 는 모멘텀율(momentum rate)이라 하는데, 1보다 작은 양의 값이다.

 

3) 오차 함수

신경망 모델의 학습은 오차 함수를 최소화하도록 가중치를 결정하는 것이다. 오차 함수를 최소화 하기 위해 기본적으로 최대 경사법을 사용한다. 출력값이 실수값인 경우에는 오차 함수가 아래와같이 오차제곱합의 평균으로 정의된다. 이진 분류기의 경우에는 아래와 같이 하나의 출력 노드 t만 만들고, 이 노드가 특정 부류에 속할 활률 을 출력하도록 학습시킬 수 있다. 이때 출력 노드의 값 t는 다음과 같은 로지스틱 시그모이드를 활성함수로 사용한다.

 

 

여기에서 x는 입력 벡터를 나타내고, w는 가중치 벡터를 나타낸다.

두 개의 부류를 각각 C1과 C2라고 할 때, 출력 값 y(x,w)는 조건부 확률 에 해당하고, 1-y(x, w)는 조건부 확률 에 해당한다. 목표 출력 t값이 부류 c1일때는 1이고, 부류 c2일 때는 0으로 나타낸다고 하자. 이때 입력 x에 대한 목표 출력 t의 조건부 확률 는 다음과 같이 표현할 수 있다.

학습 데이터 집합이 로 주어질 경우, 학습의 목표는 신경망이 각 학습 데이터에 대한 확률 값을 크게 만들어 주도록 가중치를 결정하는 것이다. 가중치 벡터 w인 신경망이 주어진 학습 데이터 집합 D와 같은 결과를 만들어 낼 확률, 즉 가능도는 다음과 같이 표현할 수 있다.

이때 오차함수는 아래의 가능도에 로그함수를 적용한 후 -1을 곱한 음의 로그 가능도로 다음과 같이 정의한다.

 

                              [이진 분류기의 출력]                                                            [다중 분류기의 출력]

 

3개 이상의 부류가 있는 다중 분류기의 출력 노드의 값들이 각 부류별 확률이 되도록 만들 수 있다. 다중 분류 문제의 학습 데이터  집합은 입력 벡터 Xi와 출력 벡터 Ti의 쌍으로 구성된 학습 데이터들로 구성된다. 학습 데이터는 k개의 부류 중 하나에만 속한다. 만약 k번째 부류에 속하는 데이터라면 출력 벡터는 k번째만 1이고 나머지는 모두 0으로 표현한다. 이러한 표현 방식을 one-hot vector 또는 on-hot encoding 이라고 한다.

출력 노드의 값이 해당 부류에 속할 확률값인 분류기를 신경망으로 구현하려면 신경망의 출력 노드의 출력값이 0이상이면서 전체 출력값의 합은 1이 되도록 만들어 주어야 한다. 이를 위해 위의 그림 b와 같은 형태로 구성되는 softmax 층을 구성하는데, 각 노드 yk의 값은 다음과 같이 계산된다.

 

다중 분류 문제에서 학습 데이터 (xi, ti)의 조건부 확률은 위 식 (8)과 유사하게 다음과 같이 표현할 수 있다.

따라서 전체 데이터 D에 대한 가능도는 다음과 같이 표현할 수 있다.

확률값 출력을 하는 다중 분류기의 오차 함수 E(w)는 윗 식에 대한 음의 로그 가능도 함수로 다음과 같이 정의된다

위 식의 오차 함수는 전체 학습 데이터에 대해서 정의된 것인데, 하나의 학습 데이터(xi. ti)에 대한 오차 함수는 식 (9)에 대한 음의 로그 함수 가능도 함수로 다음과 같이 정의된다.

 

위 식은 확률 분포 에 대한 교차 엔트로피의 식과 같기 때문에 위 식의 오차 함수를 목표 분포 와 신경망 출력 분포 의 교차 엔트로피라고 부르기도 한다

 

다층 퍼셉트론은 대표적인 신경망 모델로서 패턴 인식, 컴퓨터 비전, 영상처리, 비즈니스 인텔리전스(BI:기업의 비즈니스 의사 결정을 위해 사용하는 데이터의 접근, 수집, 보관, 분석 애플리케이션과 기술) 분야에서 이용되고 있다. 다층 퍼셉트론 이외에도 SOM(Self-organizing feature map), 홈필드망, ART(Adaptive resonance theory), RBF(radial basis function) 망, 재귀신경망(recurrent network)과 같은 여러 신경망 모델이 있다.

학습된 다층 퍼셉트론은 새로운 데이터에 대한 예측이나 추정을 위해 사용된다. 학습된 다층 퍼셉트론은 학습데이터의 입력과 출력 관계를 나타내는 함수를 모델링한 것이다.

분류문제라면 입력된 데이터에 대해서 출력층의 어떤 노드가 가장 큰값을 가졌는지에 따라 부류가 결정된다. 회귀 문제라면 출력 노드의 값이 입력된 데이터에 대한 예측값이 된다. 새로운 입력에 대해서 출력을 계산하는 것은 앞에서 설명한 다층 퍼셉트론 동작 방법을 따른다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'2. 인공지능 > 2-3. 기계학습' 카테고리의 다른 글

2-3-15. 신경망(RBF)  (0) 2018.03.03
2-3-13. 신경망(서포트 벡터 머신)  (0) 2018.02.25
2-3-10. 신경망(퍼셉트론)  (0) 2018.02.15
2-3-9. 군집화 알고리즘  (0) 2018.02.14
2-3-8. k-근접이웃 알고리즘  (0) 2018.01.24

+ Recent posts