소품집

[ML/DL] Perceptron (퍼셉트론) 본문

AI

[ML/DL] Perceptron (퍼셉트론)

sodayeong 2020. 5. 11. 13:07

 Neuron


Motivated by studies of the Brain

 

 

 

 

Neuron

뇌 세포 Dendrite(가지돌기)에 여러 값들(입력)이 도착하면 나의 신호로 통합하고, 임의의 임계값을 넘게 되면 이 값이 Axon을 통해 전달된다는 개념으로 표현한 것! MCP 뉴런이라고도 불린다.

Net input function (순입력함수)

입력 값 x이 n+1개의 feature들이 n+1개의 weight와 곱한 값 즉, summation(=feature*weight) 되어 하나의 신호로 통합됨

→ 왜 n+1개인가? 마지막 1개는 bias(prior)가 된다!

Activation function (활성함수)

순입력함수의 결과값을 임의의 임계값(threshold)과 비교하여 -1 or 1의 결과값 생성

 

 

Perceptron


퍼셉트론의 구성요소

뉴런의 임계값과 비교하는 부분을 생략하여 간단하게 표현하여 세 가지의 층(입력층, 중간층, 출력층)을 가진다.

 

 

단층 퍼셉트론과 다층 퍼셉트론 (인공신경망)

퍼센트론 학습 알고리즘

  • 1957년 Frank Rosenblatt은 MCP 뉴런에 입력되는 값에 대한 weight들을 학습되는 알고리즘을 제안함

!! 위 사진에서 중간층을 노드 또는 뉴런이라 부르며, 입력층은 다른 노드의 출력값이 입력값으로 입력되는 것이고, 출력층은 이 출력값이 다른 노드로 전달되는 층이 된다.

이와 같이 중간층이 하나의 노드로 구성되어 중간층과 출력층의 구분 없는 구조를 단순 또는 단층 퍼셉트론이라 부르며, 중간층을 구성하는 노드가 여러 개이고, 이러한 중간층이 다수로 구성되어 있는 구조를 다층 퍼셉트론이라 한다.

즉, 단층과 다층의 차이는 중간층에 여러개의 노드개 존재하는가?로 구분 지을 수 있다.

 

왜 중간층을 은닉층이라 부를까?

우리가 맞추고자 하는 대상은 아웃풋이고, 인풋과 아웃풋 보여지는 값이다. → supervised learning

반면 중간층은 보여지지 않는 값이므로 은닉층이라 부르고, 이 은닉층을 깊게 쌓은 것을 딥러닝이라 한다.

 

 

 

 

 

Perceptron 학습 알고리즘 (가중치 update model)


: MCP 뉴런에 입력되는 값에 대한 가중치를 학습하는 알고리즘

**Weight 0을 Bias(Prior 역할)**라 하고, Weight 1~n을 feature에 대한 weight라 가정하면,

W=[w0,w1,w2 ...,wn]이라 표현 가능

Forward passing

  • 입력층의 값들을 하나의 신호로 통합한 후, 이를 바탕으로 출력값을 생성하는 것 (화살표 방향대로 값들을 계산해 나감)
  • 결과값은 -1 or 1이라고 가정해보자

학습과정

  1. W 초기화 (ex: -0.5~0.5) x0의 값은 임의의 값(ex: 1)로 설정
  2. 학습 데이터 x=[x1,x2...,xn]을 perceptron에 Forward passing에 적용하여, 출력값 o을 얻음 (n: 데이터 feature의 개수)
  3. 정답 y와 출력 o를 비교하여 다를 경우(에러),
    1. y(정답)가 1인 경우, W+=x
    2. y가 -1인 경우, W-=x
  4. 모든 데이터에 대하여 에러가 없으면 종료, 그렇지 않으면 2.로 돌아가서 모든 데이터에 대하여 반복수행함

회귀선을 y=2x+3 → 2x-y+3=0으로 변형하여, 퍼셉트론의 가중치를 뽑아낸다. W=[2,-1,3]

회귀선을 기준으로 d는 오답이 나온 상황이다. → 원래 답은 -1이다.

그래서 가중치를 업뎃하기 위해 W-d하여 나온 법선벡터로 선형식을 그려보면 더 이상의 에러는 없게 된다.

즉, W에 d이 값을 '더하고 빼는 것'의 의미는 데이터 d방향, 혹은 반대방향으로 기울기, Bias가 변화됨

 

 

 

Perceptron 학습 알고리즘 variation


앞에서 본 perceptron 학습 알고리즘은 학습이 진행될 때, 데이터의 '오차 정도'를 고려하지 않고 무조건 빼거나 더하므로, 최적의 W(파라메터)를 찾지 못 할 수도 있다.

개선방법 : 학습률(learning late), 오차 정도 등을 고려하도록 개선하자!

  1. W 초기화 (예: -0.5~0.5)학습률(learning rate) 설정 (ex:0.05)
  2. 출력값 생성을 위한 threshold (경계선) 설정 (ex: 0)
  3. bias x0의 값은 임의의 값 (ex: 1)
  4. 학습 데이터 d=[d1,d2,...dn]을 perceptron에 Forward passing 적용하여, 출력값 threshold에 기반하여 출력값 o를 얻음n: 데이터의 feature dimension
  5. 출력값 o : threshold 보다 크면 +1, 작으면 -1
  6. 정답 y와 출력 o를 비교하여 다를 (에러가 날)경우,
  7. W+=학습률데이터d(threshold-출력값)
  8. 모든 데이터에 대하여 에러가 없으면 종료, 그렇지 않으면 (2)로 돌아가 모든 데이터에 대하여 반복!

 

 

 

 

Perceptron 한계


질문

  1. 퍼셉트론 학습 알고리즘은 Supervised learning 방식인가?클래스 label(='정답')에 따라 학습이 이루어지기 때문이다!
  2. 그렇다. 퍼셉트론 학습알고리즘은 기본적으로 지도학습 방식으로 이루어진다.
  3. 단층 퍼셉트론은 선형 분류밖에 못할까?

그렇다. 단층 퍼셉트론은 선형 분류만 할 수 있어, 단층 퍼셉트론의 한계점이 된다.

시그모이드 활성함수를 사용하여 비선형의 결과가 나와도 결국 의사결정은 선형 부분의 결과에 대해 사용하기 때문이다!

 

Perceptron 학습과정


 

 

Perceptron 정리


728x90
Comments