본문 바로가기
Research/Deep Learning & Application

Perceptron, TLU

by IMCOMKING 2014. 6. 17.


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 함수를 아무리 많이 쓴 레이어도, 결국 최종 계산 결과는 선형 함수이다.

따라서 비선형 문제를 풀 수 없다.



댓글