TLU : Threshold Logic Unit / TLU의 다른이름은 Perceptron, Threshold neuron 이라고 함.
input의 합(=weighted summation)이 Threshold 이상이면 1을 출력, 그렇지 않으면 0을 출력하는 유닛.
if(Sum(input) => Threshold) return 1;
if(Sum(input) < Threshold) return 0;
AND gate : threshold를 1.5로 잡으면
{0,0} -> 0
{0,1} -> 0
{1,0} -> 0
{1,1} -> 1
OR gate : threshold를 0.5로 잡으면
{0,0} -> 0
{0,1} -> 1
{1,0} -> 1
{1,1} -> 1
XOR gate : threshold를 어떻게 잡아도 구현할 수 없음.
{0,0} -> 0
{0,1} -> 1
{1,0} -> 1
{1,1} -> !?(0을 만들 수 없음)
그래서 XOR은 이 threshold(경계선)가 2개가 필요하다.
즉, {0,0},{0,1},{1,0},{1,1} 의 4개의 점을 찍었을때 XOR를 구현하기위해서는 1개의 직선(=threshold)이아니라 2개의 직선이 필요하다는 것.
결국 신경망모델의 기초가되는 이 TLU는 선형 분류기이다.
MLP도 선형 분류기를 여러번 중첩시킨 것이라고 볼 수 있을듯.
단일 layer를 갖는 신경망 모델은 threshold를 1개밖에 가질 수 없으므로, 절대로 XOR를 만들 수가 없다.
이것을 해결한 것이 MLP.
layer가 여러층이 될수록, 단순 선형 분류가 아니라 점점 세밀한 모양으로 영역을 구분할 수 있다는 것.
- XOR gate를 TLU로 구현하면 2 레이어로된 3개의 TLU가 필요하다.
첫번째 레이어에서는 threshold 0.5(OR gate) 와 threshold 1.5(And)에 Not을 붙인 유닛
두번째 레이어에서는 그 결과 아웃풋에 threshold 1.5(And) 유닛을 적용하면 된다.
- 첫번째 레이어
OR gate
{0,0} -> 0
{0,1} -> 1
{1,0} -> 1
{1,1} -> 1
~AND gate
{0,0} -> 1
{0,1} -> 1
{1,0} -> 1
{1,1} -> 0
- 두번째 레이어 (input X 는 각각 OR gate와 AND gate의 output이다)
AND gate
{0,1} -> 0
{1,1} -> 1
{1,1} -> 1
{1,0} -> 0
이렇게 2 레이어를 사용해야만 XOR gate가 구현된다.
Perceptron : TLU 를 학습하는데, delta 룰을 사용한 모델.
(기본 해비안 러닝을 발전시킨 delta 규칙을 통해 학습한 신경망 모델.)
앞서 배웠던 TLU(=Perceptron)이 기본적인 Artificial Neural Network 의 기본적인 unit이며, 이것의 적절한 weight(=threshold)를 학습하는 것이 목표이다.
1차원 Perceptron은 기본적인 boolean function 구현하는 것은 가능하지만, XOR는 구현이 불가능 했다. 그래서 최종적으로 Multi Layer Perceptron 을 향해 가야하는 것이나, 우선은 먼저 1개의 싱글 Perceptron 을 다뤄본다.
한 뉴런으로 들어오는 모든 input 을 x0, x1, x2 ... 이라고 한다면, 각각의 input에대한 weight를 w0, w1, w2 ... 라고 한다. 이때 x0는 항상 1로 정의하면, w0을 threshold로 사용할 수 있다. 그러면 결국 간단하게 다음과 같이 정리된다.(threshold인 w0는 자연히 음수로 설정 된다.)
이 값이 0보다 크면, 1을 출력하고 그렇지 않으면 0을 출력하는 것이 바로 뉴런 모델링
Machine Learning 은 3가지 영역으로 구성되어 있다.
1. 데이터
2. 모델
3. 모델의 학습 방법
모델은 MLP로 정했으니, 학습 방법에대해서 배워보자.
Perceptron 은 기본적인 신경세포를 모델링한 것이다. 신경세포로 들어온 자극의 합, 즉 weighted summation 이 일정 임계치(threshold)를 넘게되면 output을 내는 모델이다. 먼저, 각 perceptron 의 weight를 랜덤하게 설정한다음, training을 하면서 에러가날때마다 weight를 조절하는 것이다. 그래서 모든 학습이 끝나면, weight가 correct한 결과를 내도록 설정이 된다. 앞서 TLU파트에서 봤듯이 1개의 perceptron 의 weight는 결국 선형으로 데이터를 나누는 것이다. 즉 선형 분류기의 확장인 셈이다.
Weight 의 범위는 실수값 전체이다.(비율이 아니라, 계수라고 생각 할 것.)
[0~1] 이 아니라, 모든 실수값이 다 올 수 있다.
잘못된것 같다.
선형 activation 함수를 아무리 많이 쓴 레이어도, 결국 최종 계산 결과는 선형 함수이다.
따라서 비선형 문제를 풀 수 없다.
'Research > Deep Learning & Application' 카테고리의 다른 글
CNN, Spectrogram 을 CNN으로 학습 (0) | 2015.04.22 |
---|---|
TDNN, RNN, LSTM, ESN (0) | 2015.04.15 |
RNN 학습 알고리즘, BPTT (2) | 2014.07.08 |
Neural Network의 학습 방법, Gradient Descent, Back-Propagation (2) | 2014.06.17 |
Activation Function (2) | 2014.06.12 |
댓글