nathan_H

Deep Learning intro - Perceptron 본문

Big Data/ML

Deep Learning intro - Perceptron

nathan_H 2019. 4. 16. 21:13

보통 딥러닝을 처음 배울때

Perceptron을 건너뛰고 

ANN을 바로 들어가는 경우가 많다.

 

하지만 Perceptron을

제대로 알고 이해한 상태에서

ANN을 들어가는 것이 순서와 개념상 적합하다.

 

 

Perceptron

 

 

Perceptron은 인공 신경망 모형의 하나이고

1957년 Rosenblatt라는 사람에 의해 처음 고안된 알고리즘이다.

 

그리고 Perceptron은

인간의 뇌에 있는 Neuron을 본따

표현한 모델이다.

 

 

출처 - http://sanghyukchun.github.io/40/

 

위 그림처럼 Perceptron은

입력층, 중간층, 출력층으로 구성되어 있거

 

층간에 Net input function과 Activation function이

실행이 되며 출력값이 도출이 된다.

 

 

Net input function

 

입력값 x의 n+1개의 feature들이 

n+1개의 weight와 곱하여 summation 되어
하나의 신호로 통합 

-> 왜 n+1개 인가? 마지막 1개는 bias

 

 

Activation function

 

순입력함수의 결과값을 임의의 임계값(threshold)과 

비교하여 -1 또는 1의 결과값 생성

 

 

입력층

 

참고 블로그 -https://needjarvis.tistory.com/178

 

퍼셉트론(Perceptron) - 1 딥러닝(Deep Learning)과 인공신경망(Neural Network)의 시작

1. 인공신경망과 딥러닝의 시작 "인공지능의 시작은 퍼셉트론(Perceptron)이 처음이다!"라고 말하기에는 힘들지만, "인공신경망(Neural Network)과 딥러닝(Deep Learning)은 퍼셉트론이 처음이다!"라고 말할 수 있..

needjarvis.tistory.com

신경망의 왼쪽 X1 ~ Xn은 무엇을 뜻할까?

우리가 지나가다가 고양이를 봤을 때,

고양이라고 어떻게 인지를 했을까?

그건 바로 수많은 학습을 통해서 고양이를 알아갔을 것이다.

다리가 4개 달려 있고, 약 5kg 정도의 몸무게를 가졌으며,

살금살금 걷고, 짧은 털 등등

 

고양이를 묘사하는 이러한 특징(Feature)들을

바로 왼쪽의 노드값(Input값이라고 한다)라고 볼 수 있고,

이러한 특징들의 값들을 계산해서 고양이 일지 아닐지를

판단하는 것이 인공신경망인데 퍼셉트론은

바로 인공신경망을 구현하기 위한 최초의 모델이다.

 

퍼셉트론의 개념도를 보면, x1에 w1부터 xn에 wn까지의 값이 있는데

w(Weight)라는 값은 가중치라고 보면 된다.

컴퓨터의 판단 없이 있는 그대로의 Data 자체를 넣는 것을 X값이며,

X값과 연산되는 W값은 가중치 혹은 보정치가 되는 값이라고 보면 된다.


출처: https://needjarvis.tistory.com/178 [자비스가 필요해]

 

 

Perceptron 학습 알고리즘

 

출처 - anleydukor/neural-representation-of-and-or-not-xor-and-xnor-logic-gates-perceptron-algorithm-b0275375fea1

Weight 0을 Bias라고 하고,
Wight 1~n을 feature에 대한 weight들이라고 가정한다. 
 W = [w0, w1, w2, …wn] 라고 표현 가능하다.

 

Forward passing


 입력층의 값들을 하나의 신호로 통합한 후,
이를 바탕으로 출력 값을 생성하는 것
(화살표 방향대로 값들을 계산해나감)

즉 한쪽 방향으로 통합이 된다.

 

결과값은 -1 또는 1이라고 가정

 

 학습 과정
(1) W 초기화 (예: -0.5 ~ 0.5)
x0의 값은 임의의 값(예:1)로 설정한다.

 

 (2) 학습 데이터 x = [x1, …, xn] 을 perceptron에 Forward passing 적용하여,
출력값 o 얻음


(3) 정답 y와 출력 o를 비교하여 다를 경우(에러),
- y가 1인 경우, W += x
- y가 -1인 경우, W -= x


 (4) 모든 데이터에 대하여 에러가 없으면 종료하고, 그렇지 않으면 (2)로
돌아가서 모든 데이터에 대하여 반복한다.

 

출처 - https://en.wikipedia.org/wiki/Perceptron

 

 

가중치와 편향.

참고 블로그 - https://sacko.tistory.com/10

 

문과생도 이해하는 딥러닝 (1) - 퍼셉트론 Perceptron

딥러닝 기본 개념 - 밑바닥부터 시작하는 딥러닝 中 ※본 포스팅은 딥러닝의 기본 개념을 이해하기 위해 '밑바닥부터 시작하는 딥러닝' 책과 기타 자료들을 보면서 관련 내용들을 정리하였습니다. 퍼셉트론 Percep..

sacko.tistory.com

위 학습 알고리즘에서 편향(bias)과 가중치에 대해 

자세히 들여다 보자.

 

. 기계학습 분야에서는 모델이 학습 데이터에

overfitting되는 것을 방지하는 것이 중요하다. 

 

그래서 편향은 학습 데이터(Input)이 가중치와

계산되어 넘어야 하는 임계점으로

이 값이 높으면 높을 수록 그만큼

분류의 기준이 엄격하다는 것을 의미한다.

 

그래서 편향이 높을 수록 모델이 간단해지는 경향이 있으며

(변수가 적고 더 일반화 되는 경우) 오히려 과소적합(underfitting)의 위험이 발생하게 된다.

반대로 편향이 낮을수록 한계점이 낮아 데이터의 허용범위가

넓어지는 만큼 학습 데이터에만 잘 들어맞는 모델이 만들어질 수 있으며

모델이 더욱 복잡해질 것이다.

 

허용범위가 넓어지는 만큼 필요 없는

노이즈가 포함될 가능성도 높다.

 

이를 편향과 분산의 트레이드오프 관계라고 보통 부른다.

 

가중치(weight)는 입력신호가 결과 출력에 주는

영향도를 조절하는 매개변수이고, 

편향(bias)은 뉴런(또는 노드; x를 의미)이 얼마나

쉽게 활성화되느냐를 조정하는 매개변수가 되는 것이다.

 

Perceptron 학습 알고리즘 variation

기본 퍼셉트론 학습 알고리즘은 학습이 진행될 때,
데이터의 ‘오차 정도’를 고려하지 않고 무조건 빼거나 더하므로,
최적의 w(파라메터)를 찾지 못할수도 있다.

 

그래서 학습률과 오차 정도 등을 고려하도록 개선 해야 한다.

 

(1) W 초기화 (예: -0.5 ~ 0.5)
x0의 값은 임의의 값(예:1)
학습률(learning rate) 설정(예:0.05)
출력값 생성을 위한 threshold 설정(예:0)

 

(2) 학습 데이터 d = [d1, …, dn] 을 

perceptron에 Forward passing 적용하여,
출력값 threshold에 기반하여 출력값 o 얻음
* n: 데이터의 feature dimension

 

(3) 정답 y와 출력 o를 비교하여 다를 경우(에러),
W += 학습률 * 데이터d * (threshold – o)

 

(4) 모든 데이터에 대하여 에러가 없으면 종료하고, 

그렇지 않으면 (2)로  돌아가서 모든 데이터에 대하여 반복한다.

 

 

Perceptron 한계.

 

- 퍼셉트론 학습 알고리즘은 기본적으로
supervised learning 방식이고
단층 퍼셉트론은 선형 패턴밖에 인지하지 못한다.

 

 

'Big Data > ML' 카테고리의 다른 글

Support Vector Machine .  (0) 2019.05.11
Artificial Neural Networks  (0) 2019.04.16
Supervised Learning - Regression, Classification  (0) 2019.04.16
Linear Regression, Classification  (0) 2019.04.12
Bayesian network.  (0) 2019.04.10
Comments