박사과정의 선배님께 좋은 말씀을 들어서 이렇게 글을 올린다.


인공신경망도 종류가 여러가지인데 우리는 이것을 main이 되는 비선형 제어기 또는 main을 보조하는 보조제어기로써 사용할 수 있다. 이 비선형 제어기를 사용하여 비선형성이 강한 시스템을 학습을 통하여 제어를 가능하게 할 수 있다. 그런데 우리가 이를 사용하면서 주의하고 상기해야 할 점이 있다.


'인공신경망은 만능이 아니고 최선이 아니라 차선이다.'


무슨말인가 하면 인공신경망이라는 녀석은 무분별하게 쓸만한 기술이 아니라는 것이다. 무슨 문제가 해결이 안되면 '인공신경망을 쓰면 되지' 라는 안이한 판단을 내려서는 안될것이다. 이녀석을 쓰는것이 최선인 경우가 있고, 또는 어쩔 수 없이 차선책으로써 쓰는 경우가 있다는 것이다.


예를 들자면 패턴인식의 경우, 시간은 걸릴지 모르나 최초의 학습과정을 완료하면 이후의 패턴인식에서 다시 학습할 필요가 없거나 새로운 패턴을 입력시킬 때만 다시 학습해주면 된다. offline학습을 하여도 별 문제가 없다.


그렇다면 제어의 경우는 어떤가?

RBF를 실시간 보조제어기로 사용할 경우, 그냥 LMS의 역전파 알고리즘 보다는 빠르다고 하여도 역시 제어에 사용하기에는 연산량이 많을 수 밖에 없다. 필연적으로 고성능의 MCU가 필요하게 된다. 제어주기는 빠를수록  좋기 때문에 주기당 연산시간을 많이 차지하는 인공신경망은 그다지 제어에 알맞다고 할 수 없겠다. 기껏해야 뉴로퍼지 정도일까?


럼, 나름 장점은 있지만 연산량이라는 치명적인 단점을 가지는 인공신경망을 왜 쓰게될까?

굳이 답을 제시하자면 안써도 될것을 쓰게 만들었기 때문이라고 하고싶다. 무슨 말이냐면 선형화를 하면 충분할 시스템을 비선형성을 심하게 내포하게 설계하기 때문이다.

두바퀴 밸런싱 로봇을 예로 들어보자. 또는 역진자를 예로 들어보자. 이녀석들을 넘어지지 않게 제어하려면 시스템을 높이가 길게, 가로 세로폭을 좁게 만들고 무게중심을 시스템 상단에 위치시켜 최대한 단순하게, 선형화 모델에 적합하게 만들어야 한다. 이 때 선형화 식을 적용하기 쉽고 제어하기도 쉽다(실제 시스템이 이론을 따라갈 수 있다는 것이다) 그런데 이러한 설계를 간과하고 무게중심을 최하단에(모터가 굉장히 무겁고 프레임이 하단에 집중되어 있을 경우 이렇게 된다) 놓아버리면 어떻게 될까? 예를 들어 바퀴 중심 5센티 위에 무게중심이 있을경우 말이다. 선형화된 모델이 상상이 가는가? 이런 시스템은 설사 선형화를 하고 제어gain을 찾는다 하더라도 제대로 동작하기 힘들다. 결국 제어를 위해 필요한 요소들이 부적절하게 되고 안정성이 떨어지게 되어 억지로 인공신경망을 이용하여 제어를 하게 되는것이다.


결론을 들자면, 인공신경망이라는 녀석은 선형화된 설계를 잘 하면 굳이 필요하지는 않다는 것이다. 인공신경망 없이 제대로 제어할 수 없다면 그 시스템은 설계를 제대로 하지 않았다는 것이 된다. 그런고로 제어에 인공신경망을 썼다는 것은 결코 자랑할 만한 일이 아니다.

'지능제어' 카테고리의 다른 글

[잡담] 왜 인공신경망을 쓰는가/착각하는것  (0) 2014.12.29
RBF  (0) 2014.12.07
RBFN 링크  (0) 2014.12.04
RBF(Radial Basis Function) 신경망  (0) 2014.10.27
확률가우시안  (0) 2014.10.27
역전파 알고리즘(BackPropagation)  (0) 2014.10.27

저번에 참고한 URL을 기반으로 RBFN을 설명하자.

자세히 들어가기 전에, 우선 MLP를 학습할 것을 권장하며, 설명도중 언급되지는 않겠지만 '학습과정'과 '학습 후 분류과정'을 함께 설명하고 있기 때문에, 이해도중 헷갈릴 경우 과연 어떤 과정중을 설명하는지를 잘 생각해 보자.


Architecture_Simple




RBFN은 training set에 대한 input의 유사도를 측정한다. 각 RBF Neuron은 prototype를 저장하고있다.

새로운 입력이 들어오면 입력값과 prototype간의 유클리디안 거리를 계산한다.


위 RBFN의 구성은 아래와 같다.

1.input vector

2.RBF Neurons

3.output nodes


1. input vector

우리가 분류하길 원하는 n차 벡터를 의미한다. 모든 입력벡터들이 RBF뉴런에 반영된다.

(그림상 왼쪽의 푸른 n차 사각형을 의미)


2. RBF Neurons

각 RBF neuron마다 별개의 prototype벡터를 가지고 있다. 각 RBF neuron은 입력된 벡터와 해당 뉴런의 prototype간의 유사도를 비교한다. 따라서 출력은 0에서 1 사이의 값으로 이 값이 유사도를 의미한다. 입력값이 prototype과 같을경우 출력은 1이고 유클리디안 거리로 계산한 유사도가 멀 경우 출력은 0에 가까워 진다. RBF neuron의 출력은 bell curve(정규분포)를 따른다.


뉴런의 응답값은 활성화값이라 불린다.


또한 prototype벡터는 해당 뉴런의 center(중앙값)이라 불리운다. 즉, 이 center value는 bell curve의 중앙값임을 나타낸다.


3. Output Nodes

위의 category(범주)라는 단어 때문에 헷갈릴 수 있지만, 출력(output)은 우리가 원하는 총 m개의 출력범주로 이루어져 있다.

i개의 input을 넣고 m개의 서로 다른, 우리가 판단해야할 출력으로 이루어져 있는 것이다.


output node의 값은 연관된 카테고리(출력값)에 대한 score(점수)를 계산한다. 패턴인식에서 보자면 가장 높은 score를 가진 출력값이 '정답, 참값'등이 된다.


MLP를 했다면 당연히 알겠지만 해당 카테고리는 뉴런의 갯수(k)만큼의 활성화 값과 가중치의 곱으로 계산되어지며 각 카테고리마다 뉴런 대 output node를 이어주는 가중치 값이 다르다.


물론 카테고리마다 연관성이 강한 뉴런에는 positive한 가중치를, 그렇지 않은 뉴런에는 negative한 가중치로 이어져 있을 것이다.


RBF Neuron Activation Function

]


RBF 의 각 뉴런은 입력과 training set에서 뽑은 prototype벡터간의 유사도를 측정한다고 앞서 언급하였다.

당연히 prototype과 유사한 input 벡터일수록 뉴런에서 1에 가까운 값을 출력할 것이다. 앞뒤가 바뀌게 설명했는데, 입력값과 prototype이 유사할 수록 해당 뉴런은 1에 가까운 값을 출력하는 것이다. 여러가지 유사도 함수가 존재하는데 가장 자주 사용되고 기본으로 사용되는 것이 가우시안 함수이다. 아래가 1차 입력에 대한 가우시안 함수이다.

gaussian

x가 입력이고 mu가 평균값이다. 시그마가 표준편차이다. 여기서 통계를 배운 사람들이 잘 아는 bell curve(정규분포)를 구할 수 있다. 아래 정규분포에서 중앙값이 평균값 5이며 sigma는 1이다.

bell_curve


 RBFN의 전형적인 활성화 함수는 아래와 같다.

Activation_Equation


가우시안 분포에서 mu는 분포의 평균을 의미하며 여기에서는 위 bell curve(정규분포)의 중앙을 가리키는 prototype vector를 의미한다.


우리가 사용할 활성화 함수는 beta값이 1/(2*sigma^2)값이 된다. 

위의 활성화 함수는 가우시안 함수에서 1/(sigma*sqrt(2*pi))가 제거되었는데 이 outer coefficent는 Gaussian함수의 높이를 조절하는 term이다. 이는 output 노드에 적용되는 가중치에 필요없는 부분이다. 위 outer coefficient를 제거하고, 학습과정에서 output노드는 정확한 계수(가중치)를 학습해갈 것이다.


beta값은 bell curve(정규분포)의 width를 조절한다.

[여기에서는 sigma를 신경쓰지 않고 beta로 간략화 시켜서 다루고 있다. beta에 따른 bell curve의 예시를 아래에서 확인할 수 있다.]

Diff_Variances_Plot


Activation_Equation

이 식에서 ||로 표기한것은 x와 mu사이의 유클라디안 거리를 계산하고 제곱함을 의미한다. 1차 가우시안에서 간략화된 식은 (x-mu)^2이다.

input이 prototype vector과 같을경우. ||  ||안의 값은 0이 되고 따라서 phi의 값은 최대인 1이 될것이다. 즉, 이를 통한 유클리디안 거리의 측정으로 우리가 input과 prototype간의 유사도 측정을 할 수 있음을 다시한번 상기하자.


prototype vector 으로부터 멀어질수록 그 응답은 지수적으로 감소한다. RBFN 구조를 다시한번 확인하면, 각 카테고리의 output node가 가중치를 거친 RBF neuron값의 합으로 이루어져 있으며, 따라서 모든 뉴런은 input에 대한 분류에 영향을 미침을 알 수 있다.

그러나, input vector와 prototype간의 거리가 멀 경우, 활성화 함수에 의해 지수적으로 그 값이 감소할 것인데, 결국 이는 해당 뉴런이 output의 결과에 거의 기여하는 바가 없음을 의미한다.(거의 반영되지 않는다는 뜻)



RBF Training.


prototype과 그 분포(분산)을 정하는 방법은 다양하다. 아래 논문에서는 RBFN의 학습을 위한 일반적인 방법을 제시하고 있다.

10.1.1.109.312.pdf



Selecting the Prototypes.

What it really comes down to is a question of efficiency–more RBF neurons means more compute time, so it’s ideal if we can achieve good accuracy using as few RBF neurons as possible.

중요한 언급을 하고있기 때문에 그대로 끌어왔다. 여기서 언급하는 것은 RBF의 뉴런의 갯수가 늘어날 수록 연산시간이 길어질 것이며 따라서 우리는 최대한 적은 갯수의 뉴런을 사용하여 최대한의 정확성을 끌어내야 한다는 것이다.


블로그의 글쓴이는 이를 위해서 K-Means clustering을 통한  cluster center 결정 및 이를 prototype으로 사용할 것을 언급한다. 이는 RBF를 사용하는 다른 여러 이들도 사용하는 방법이다. 그러나 지금까지 찾아본 몇몇 알고리즘은 대부분이 많은 연산시간을 요구하였기 때문에 그 활용성에 의문이 갔었으나 해당 저자가 업로드한 알고리즘은 그 속도가 준수하였기 때문에 다음 글에서 이를 분석해보고자 한다. 이 글에서는 소개만 하도록 한다.


k-means 알고리즘을 사용하여, training example을 카테고리별로 중복없이 분류시켜야 한다.


Approx_Decision_Boundary

위 데이터시트를 보면 수많은 데이터들을 두 개의 클래스(카테고리)로 분류하였고 각 클래스마다 10개씩 총 20개의 뉴런에 대한 prototype을 선정하였다.(검은 별표가 prototype이다)

(위의 데이터시트는 기술적으로는 옳지 않다고 한다)


클래스로부터 얼마나 많은 클러스터를 선정할 수 있는지는 조건에 따르는데, 좋고 많은 결과를 얻기 위해서는 더 복잡한 조건의 설정이 필요하며 이에 따라 네트워크에서 더 많은 연선을 요구하게 된다.


Selecting Beta Values

k-means clustering을 통해 prototypes를 선정하였으면, 각 클러스터의 모든 pointer와 cluster center간의 거리에 대한 평균으로 sigma값을 구하고 이를 통해 beta값을 구하게 된다. 즉, 각 카테고리별로 해당 뉴런에 대응하는 클러스터 내의 중앙값 mu와 x값들간의 거리를 통해 아래와 같이 해당 뉴런의 sigma와 beta를 구하는 것이다.

Variance_Eq

Beta_Eq


Output Weight

마지막으로 output에 대한 weight를 설정해야 한다. 이는 LMS(least mean square)의 gradient descent로 구하게 된다.

이와 관련해서는 다음 시간에 더 자세히 다루도록 한다.

'지능제어' 카테고리의 다른 글

[잡담] 왜 인공신경망을 쓰는가/착각하는것  (0) 2014.12.29
RBF  (0) 2014.12.07
RBFN 링크  (0) 2014.12.04
RBF(Radial Basis Function) 신경망  (0) 2014.10.27
확률가우시안  (0) 2014.10.27
역전파 알고리즘(BackPropagation)  (0) 2014.10.27

https://chrisjmccormick.wordpress.com/2013/08/15/radial-basis-function-network-rbfn-tutorial/

'지능제어' 카테고리의 다른 글

[잡담] 왜 인공신경망을 쓰는가/착각하는것  (0) 2014.12.29
RBF  (0) 2014.12.07
RBFN 링크  (0) 2014.12.04
RBF(Radial Basis Function) 신경망  (0) 2014.10.27
확률가우시안  (0) 2014.10.27
역전파 알고리즘(BackPropagation)  (0) 2014.10.27

항상 그렇지만 방법론적으로 접근한다. 진정 자신의 것으로 하기 위해서는 이론과 원리, 그 의미를 이해하고 있어야함을 잊지말자. 이번장은 특히, 한참 잡아야할 내용을 수업 한시간으로 끝내버렸으니 이론적으로 파악이 되어있지 않다.


--------------------------------------------------------------------------

앞서 확률가우시안 글을 보고왔다는 전제하에 진행한다.


위는 RBF(Radial Basis Function)network 의 도식이다.

Radial : 방사상의.

즉, 방사형 구조를 기본으로 하는 네트워크이다. 1개의 은닉층에는 앞서 배워야 하는 확률가우시안이 적용되어 있다.

RBF는 다음과 같은 특징을 가진다.


1. 은닉층이 1개이다.

2. 유클리디안 거리를 사용한다.

3. 역전파 알고리즘을 사용한다.

4. 안정성 판별이 가능하다.




RBF 네트워크의 은닉층의 값은 아래의 식으로 정해진다.




이 값은 가우시안 확률분포의 확률함수에서 지수함수 부분이다.

이것이 어떤 의미를 갖는지는 통계관련해서 따로 공부하도록 하자(본인도 잘 기억나지 않는다.)

지수함수에 의한 


출력층의 값은 아래와 같다.




여기서 c는 가중치, Φ가 비선형함수로 위의 은닉층의 값이고 b가 bias이다.


훈련과정

훈련과정에서 역전파 알고리즘을 적용하고 있다.



출력과정에서 가중치 c와 bias b는 다음층에 대해서 1:1대응이다. 무슨의미냐 하면




가중치 C와 bias는 시냅스이다.

Cjk 는 j와 k의 조합에 의해 모두 다 독립된 값을 지닌다. 값은 같을수도 있지만 공유하는것 없는 독립객체인 것이다. b또한 마찬가지이다. j와는 관계없지만 k에 대해서 1:1관계를 지닌다.


이에반해 중간값 u와 표준편차 σ는 뉴런Φ안에 있다. 즉, 하나의 뉴런이 다음층의 모든 뉴런으로 공통되게 영향을 미친다.

이 차이는 역전파 알고리즘의 훈련과정에서 가중치 갱신에 차이를 만든다.


그럼 각 요소에 따른 학습식을 살펴보자





 

 

 



 



 

정규분포의 지수함수식에 의해 ∑가 들어간 결과가 나온다.


다음은 RBF와 MLP를 비교한 그래프이다. XOR에 대한 수렴속도를 측정한 것으로 압도적인 수렴속도를 보여준다.

단지 MLP와는 다르게 RBF는 Error가 증가하는 경우도 보이는데, 예상으로는 MLP는 가중치 w와 bias가 그저 줄어들도록 훈련하는데 반해 RBF의 경우 중간값 u와 표준편차 σ를 업데이트 하는 과정에서 Error가 증가하는 경우도 있는것으로 보인다.


아래는 RBF의 Class classification이다.



MLP와 RBF의 비교


 

MLP 

RBF 

Number of Hiddenlayer 

1 or more 

Nonlinear function 

Sigmoid 

Gaussian 

Data Comparison 

Vector product 

Euclidian distance 

 Mathematical analysis

Bad 

Good 

Output 

Linear or Sigmoid 

Linear 

Learning time 

Slow 

Fast 


'지능제어' 카테고리의 다른 글

RBF  (0) 2014.12.07
RBFN 링크  (0) 2014.12.04
RBF(Radial Basis Function) 신경망  (0) 2014.10.27
확률가우시안  (0) 2014.10.27
역전파 알고리즘(BackPropagation)  (0) 2014.10.27
다층신경망[개념]  (0) 2014.10.26

확률과 통계를 잘하시는분은 넘어가셔도 좋습니다.

실제 예시를 들어서 간단하게만 다루고자 합니다.


주사위를 예로 들어 보자. 하나의 주사위를 던지는 실험에서 샘플공간은 아래와 같다.

Sample space

각 이벤트의 확률은 1/6이다.


두개의 주사위를 던졌을 때의 샘플공간은 아래와 같다.


확률(Probability)

하나의 주사위를 던졌을 때 짝수가 나오는 경우(Event)는 아래와 같다.

확률 P(E)=0.5 이다.


두개의 주사위를 던졌을 때, 그 합이 10인 경우는 아래와 같다.

확률 P(V)=3/36=1/12 이다.


어떤 이벤트 A에 대하여 그 이벤트가 일어날 확률은

P(A) 로 표현할 수 있다.

0<=P(A)<=1

(0은 일어나지 않음, 1은 항상 일어남)


교집합 확률(the joint probability)

1.

짝수 이벤트A와 홀수 이벤트 B


두 집합의 교집합


교집합의 확률


2.

'주사위1을 던졌을 때 5가 나올' 확률

이벤트 : 주사위 1을 던졌을 때 5가 나온다.


'주사위 2를 던졌을 때 5가 나올' 확률


두 주사위 모두 5가 나올 확률


3.독립된 두 이벤트의 교집합의 확률



합집합(Union)


서로 독립된(independent), 배타인(exclusive) 두 집합간의 합집합

서로 의존(dependent)인 두 집합간의 합집합


주사위 1또는 주사위 2에서 숫자 5가 나올 확률


두 주사위의 합이 10이 될 확률


조건부 확률(Conditional Probability)

P(B)≠0 일 때, 이벤트 B가 일어났을 때 이벤트 A가 일어날 확률 P(A|B)


ex1)

상자 안에 흰공 2개, 검은공 2개가 들어있고 이 안에서 한개의 공을 뽑을 때

P(W)=1/2

P(W1)=1/4

P(B)=1/2

P(B1)=1/4


P(W1|W)=(1/4)/(1/2)=1/2

P(B1|W)=0/(1/2)=0


ex2)

상자 안에 흰공 2개, 검은공 2개가 들어있고 차례로 1개씩 총 2개의 공을 꺼낼 때

처음에 흰공을 뽑았을 때, 다음에 흰공을 뽑을 확률은?


W1을 뽑은 후 W2를 뽑을 확률과 W2를 뽑고 W1을 뽑을 확률



Bayes' rule

두 사건 A와 B에 대해서 다음 식이 성립하며


두 사건이 서로 독립일때 아래 식이 성립한다.


이산 확률변수

샘플공간Ω에서 확률변수 X는 각각의 유일한 변수값에 대응한다.

예를들어 주사위 실험에서, 확률변수 X는 아래와 같은 이산값들을 가진다.


확률밀도함수는 확률변수 X에 대하여 아래와 같이 정의된다.


기대값

.확률변수 X에 대한 기대값은 아래와 같이 정의된다.



주의할 것은 평균과는 개념이 약간 다르다는 것이다.

주사위를 12번 던졌을 때 평균값은 12을 던져봐야 알 수 있다. 그러나 각 주사위의 숫자가 나올 확률은 1/6이기 때문에 12번을 던졌을 때 그 값의 평균이 21/6이 될것임을 기대할 수 있다. 이는 각각의 변수값에 확률을 곱한 값이다.


분산과 표준편차

확률변수 X에 대한 분산은 표준편차σ 의 제곱이며 아래식과 같다.


연속확률변수

앞선 이산확률변수와는 다르게 함수적으로 표현될 수 있는 연속된확률변수로 아래와 같은 식으로 표현된다.


Y=f(X)



연속된 값으로 이루어진 x에 대한 기대값은 모든 x에 대한 x와 확률p의 곱의 적분으로 표현될 수 있을 것이다.

확률변수 x에 대한 확률p의 분포그래프 이다.여기서 중요한것은 저 그래프의 넓이가 확률의 총 합으로 그 값이 1이라는 것이다.


표준편차는 아래 과정을 통해서 간략하게 계산할 수 있다.



probability density function:PDF, 확률밀도함수

앞서 설명한 확률분포는 아래와 같이 균일분포로 표현할 수 있으며


다음과 같은 정규분포로 표현할 수 있다.



정규분포 및 표준정규분포와 관련된 심층적인 개별학습이 필요하다.


'지능제어' 카테고리의 다른 글

RBFN 링크  (0) 2014.12.04
RBF(Radial Basis Function) 신경망  (0) 2014.10.27
확률가우시안  (0) 2014.10.27
역전파 알고리즘(BackPropagation)  (0) 2014.10.27
다층신경망[개념]  (0) 2014.10.26
퍼셉트론[개념]  (0) 2014.10.26

수업에서 배운 내용으로 인공지능개론(한빛미디어)와 차이가 있다.

LMS알고리즘 역시 수업에서 배운 내용이었으므로 미리 읽어봄이 좋겠다.

또한 어느정도 공부를 한 사람을 전제로 하기 때문에 모르는 단어가 나올경우 찾아보길 바란다.


수업자료 pdf를 첨부한다.

지능(5)_역전파.pdf


퍼셉트론을 다룰 때, 그 한계에 대해서 언급하였으며 MLP는 xor같은 비선형적인 문제를 해결할 수 있다.

아래는 역전파 알고리즘을 적용시킨 다층신경망(MultiLayerPerceptron)이다

신경망 : 입력층, 1층의 은닉층, 출력층으로 이루어진 1-1-1 MLP 

학습방법 : 역전파 알고리즘(Back Propagation)


중요한 컨셉은 아래와 같다.



역전파 신경망의 학습 알고리즘은 두 단계로 이루어진다.

첫째로 훈련 입력 패턴을 신경망의 입력층에 전달하고 신경망은 출력층에서 출력 패턴이 생성될 때까지 층에서 층으로 입력 패턴을 전파한다.(이 전파과정에서 활성화 함수, 가중치 등이 적용된다.)

출력 패턴이 목표 패턴과 다를 경우 그 오차를 계산하고 출력층에서 입력층까지 신경망을 따라 거꾸로 전파한다. 이 오차의 전파과정에서 가중치가 수정된다.


제일 위의 1-1-1 MLP모델을 예로 설명해 보자. 각 층의 유닛(Unit)에 대해 i,j,k의 number를 사용하기로 한다.

입력층의 각 뉴런의 값을 X11,X12...X1i로 표현한다.

은닉층의 뉴런의 값은 가중치와 bias를 반영하여 아래와 같이 표현된다.


위에서 언급하는 각 은닉층의 각 뉴런을 S21...S2j로 표현하고 이 뉴런에 활성화 함수를 적용시킨 값이 Yj(Xj)이다.

이는 출력층에서도 똑같이 적용되어 출력층의 각 뉴런의 값은 아래와 같다.


활성화 함수를 f()로 표현했을 때 각 뉴런의 출력은 아래와 같다.


역전파 알고리즘에서 가중치 갱신의 방법은 다양하게 존재한다. 여기에서 소개하는 방법은 오차 기울기(error gradient)를 다루는 Gradient descent 알고리즘이다. 개념적인 부분은 스스로 찾아보기 바란다.


Gradient descent알고리즘에서 가중치 정정 규칙은 아래와 같다.

왜 E를 위와같은 식으로 했는지는 아래의 과정을 거쳐나가면 알게된다. 우선 ek를 제곱한 이유는 오차가 +,- 어느 방향으로 확장해 나가는가와 상관없이 오차폭 자체를 줄여나가는 것이 목적이기 때문이다.


가중치의 개념을 제대로 이해하고 있다면 위의 식이 별 문제는 아닐것이다. 굳이 나의 짧은 지식으로 설명하자면, i층의 뉴런으로 부터 j층의 뉴런으로 값을 전파하면서, j의 각 뉴런에 따라 i의 각 뉴런이 미치는 영향의 정도가 다를 것이다. 학습이 반복되는 과정에서 오차를 줄여나가는데 영향력이 큰 가중치관계 wij의 값은 그 절대값의 크기가 커질것이고 그렇지 않은 wij는 0에 수렴하게 될 것이다. 아래 그림을 참고하자



입력층(input)과 hidden1층간의 관계의 가중치 wij에서

오차 e를 줄이는데 기여가 큰 가중치 관계는 빨간선으로, 기여가 작은 가중치 관계는 파란선으로 표시하였다. 빨간선의 가중치는 그 절대값이 클것이며 파란선의 가중치는 절대값이 0에 가까울 것이다.

가중치의 델타값의 E와 W간의 편미분이 이 기여도를 의미한다.


chain-rule을 적용하여 가중치 및 bias의 학습은 결과적으로 아래와 같다.


활성화 함수 및 가중치의 chain rule 적용 예시는 첨부된 pdf파일을 참고하길 바란다.


'지능제어' 카테고리의 다른 글

RBF(Radial Basis Function) 신경망  (0) 2014.10.27
확률가우시안  (0) 2014.10.27
역전파 알고리즘(BackPropagation)  (0) 2014.10.27
다층신경망[개념]  (0) 2014.10.26
퍼셉트론[개념]  (0) 2014.10.26
LMS(Linear Mean Square) Algorithm  (0) 2014.10.26

다층신경망(Multi layer neural Network)은 하나 혹은 그 이상의 '은닉층'이 있는 feedforward neural network이다.

이는 하나의 입력층과 출력층, 그리고 하나 이상의 은닉층으로 이루어져 있다.



출력층은 은닉층의 출력신호(자극 패턴)을 받아들이고 전체 신경망의 출력 패턴을 정한다.

은닉층의 뉴런은 신호의 특성을 파악한다. 가중치를 통해 입력패턴에 숨겨져 있는 특성을 알 수 있다. 출력층은 이 특성을 사용하여 출력패턴을 결정하는 것이다.


하나의 은닉층으로 모든 연속함수를 표현할 수 있으며 두 개의 은닉층으로 불연속 함수의 표현이 가능하다. 즉, 그저 연속함수를 표현할 것이면 하나의 은닉층이면 충분하다는 것이다.


은닉층의 연산부담

-은닉층 하나를 추가할 때마다 계산 부담은 지수적으로 늘어난다. 따라서 실제 응용 사례에서는 보통 3개 층 정도만 사용한다.


다층 신경망의 학습

다양한 학습 알고리즘이 존재하지만 가장 인기있고 잘 알려진 방법은 '역전파 방식'이다.


다층신경망과 퍼셉트론의 차이

-다층 신경망의 학습은 퍼셉트론과 유사한데, 입력패턴에 대한 훈련 집합을 신경망에 제시하면 신경망은 출력 패턴과 목표 출력 간의 오차가 줄어들도록 가중치를 조정해간다.

-퍼셉트론은 입력 하나당 가중치와 출력이 각각 하나뿐이지만 다층 신경망에서는 가중치가 여럿이며 각각의 가중치는 두 개 이상의 출력에 영향을 미친다.

'지능제어' 카테고리의 다른 글

확률가우시안  (0) 2014.10.27
역전파 알고리즘(BackPropagation)  (0) 2014.10.27
다층신경망[개념]  (0) 2014.10.26
퍼셉트론[개념]  (0) 2014.10.26
LMS(Linear Mean Square) Algorithm  (0) 2014.10.26
신경회로망 간단개요  (0) 2014.10.26

LMS에서 간단히 언급만 되었던 퍼셉트론을 다루겠다.[인공지능 개론(한빛 미디어) 참조)



퍼셉트론은 신경망의 가장 간단한 형태로 위의 단층 퍼셉트론은 아래와 같은 식으로 표현할 수 있다.

○퍼셉트론의 목적

-입력의 분류(임계값을 넘는가 아닌가)

퍼셉트론을 이용하여 외부자극 x1,x2,...,xn을 두 개의 클래스 A1과 A2로 분류한다.

기본적인 퍼셉트론은 초평명(hyperplane)으로 n차원 공간을 두 개의 결정 영역으로 나눈다.

즉, 아래 식을 선형 분리함수로 정의할 수 있다.



아래의 그림을 보자

오른쪽 그림을 보면 초평명이 무엇을 의미하는지 직관적으로 알 수 있다. 왼쪽의 그림에서는 두 클래스를 나누는 선이 초평면이 된다. 초평면에 대한 식도 함께 게재되어 있다.


단층퍼셉트론의 분류 작업의 학습순서는 아래와 같다.

1.

목표값과 입력에 대한 출력값의 오차


2.

퍼셉트론의 학습 규칙(perceptron learning rule)


4.초기화

초기 가중치 w1~wn과 임계값 θ를 [-0.5,0.5]구간의 임의의 값으로 설정


5.활성화

입력에 대한 출력을 적용한 퍼셉트론의 활성화 함수


5.가중치 학습

매 반복마다의 가중치 갱신 rule


○퍼셉트론의 한계

에폭(epoch)을 반복한 학습 및 연산을 하여 AND, OR에 대한 수렴된 가중치를 구할 수 있다. 그러나 Exclusive-OR(XOR)연산자는 단층 퍼셉트론으로 학습할 수 없다. 단층 퍼셉트론은 어디까지나 선형 분리(linearly separable)만 가능하다. And, Or은 선형분리 이지만 비선형분리인 XOR은 학습할 수 없는 것이다.



'지능제어' 카테고리의 다른 글

역전파 알고리즘(BackPropagation)  (0) 2014.10.27
다층신경망[개념]  (0) 2014.10.26
퍼셉트론[개념]  (0) 2014.10.26
LMS(Linear Mean Square) Algorithm  (0) 2014.10.26
신경회로망 간단개요  (0) 2014.10.26
인공신경망(1)  (0) 2014.10.06




1.Alpha-LMS algorithm의 에러정정 규칙

-현재 입력패턴에 대한 네트워크 출력의 에러를 수정한다.

-Alpha-LMS algorithm : Alpha-Linear mean square


k step에서 x1~xn까지의 입력이 들어오고 각 입력에 대하여 Wik의 가중치가 적용된다. 이들의 합에 대하여 계단함수를 통과하기 전에 목표값인 desiredY(Yd)와의 차이로 k step에서의 오차값 ε을 구한다.


 

dk는 k스탭에서의 목표값 Yd이고 sk는 k스탭에서의 각 가중치 Wik와 입력 Xik의 곱의 합이다. 따라서 해당 스탭에서의 오차 εk를 좌측식과 같이 나타낼 수 있다.


가중보정치△Wk는 좌측 맨 아래의 식과 같다.여기서 Alpha는 학습률을 뜻한다.이 학습률이 높을수록 결과도출에 걸리는 반복수는 줄어들겠지만 수렴하지 못하고 발산하는 경우도 있기 때문에 적절한 학습률의 선정이 필요하다.


가중보정치식을 보면 학습률과 오차ε는 공통이지만 각 입력에 대하여 

만큼 차등적용하고 있음을 알 수 있다.



2.Perceptron rule



 

 앞선 LMS와 다른것은

1.가중치보정식

2.가중치 보정식에 들어가는 sk가 yk가 되었다.

이 yk는 sk가 계단함수를 통과하면서 산출된다.


3. u-LMS Algorithm/ gradient descent algorithm

steepest descent algorithm이라고도 불리우는 이것은 함수 최적화 방법 중 하나이다. 미분의 개념을 최적화 문제에 적용한 방법중 하나로 함수의 local minimum을 찾는 방법중 하나이다.


네이버 백과사전을 찾아보면 아래와 같이 설명해준다.

gradient descent : 기울기 하강

현재의 위치에서 기울기(또는 근사 기울기)에 비례하여 단계적으로 함수의 최소 또는 최대값에 접근하는 점근적인 언덕 오르기(hill climbing)알고리즘


다른 블로그의 설명을 빌려보자

울창한 밀림에서 산 정상으로 가려면 어떻게 해야할까? 현재 위치에서 가장 경사가 가파른 방향으로 산을 오르다 보면 도달하게 되어있다. 반대로 깊은 골짜기로 가려면 가장 가파른 내리막 방향으로 내려가면 될것이다.

이처럼 어떤 함수의 극대점을 찾기 위해 현재 위치에서의 gradient 방향으로 이동해 가능 방법을 의미한다.




local minimum, local maximum을 찾아가는 알고리즘이며 에러가 최소가 되는 값을 찾아 가지만 최적을 해를 찾는다고는 보장할 수 없다.


u-LMS adaptation/ 기울기 적응

u-LMS 알고리즘은 미분의 개념과 통계의 기대값을 사용하므로, Alpha와는 다르게 오차제곱인 e^2가 0으로 수렴하는 것에 대한 모델식을 세워 해결해 나갈 수 있다.




우리는 이 오차제곱이 0으로 수렴하기를 기대하며 통계적으로 표현하면 아래와 같이 된다.


여기서 dk는 목표값으로 미리 알고있는 값이며 Xk역시 시간에 따른 함수의 형태를 나타낼 때 그 기대값을 추정할 수 있다. 우리가 모르며 알아내야 하는 값은 W가 되겠지.

오차제곱의 기대값을 J라고 하자.

u-LMS에서 가중치 W에 따른 기울기의 극소값을 찾아야 한다.

미소시간의 오차제곱의 기대값 J는 0인것이 이상적이고 그때의 가중치를 W*라 하자. 그때의 W*식은 위와 같다.


예시)






결과 가중치 W*를 적용시킨 그래프와 목표값의 그래프가 일치함을 알 수 있다.


'지능제어' 카테고리의 다른 글

역전파 알고리즘(BackPropagation)  (0) 2014.10.27
다층신경망[개념]  (0) 2014.10.26
퍼셉트론[개념]  (0) 2014.10.26
LMS(Linear Mean Square) Algorithm  (0) 2014.10.26
신경회로망 간단개요  (0) 2014.10.26
인공신경망(1)  (0) 2014.10.06

+ Recent posts