본문 바로가기
프로그래밍 놀이터/머신러닝, AI, 딥러닝

[머신러닝] #2 퍼셉트론

by 돼지왕왕돼지 2018. 7. 2.
반응형

[머신러닝] #2 퍼셉트론


"Deep Learning from Scratch” 책을 보고 제가 필요한 내용만 정리한 내용입니다.

자세한 내용은 책을 구매해서 보세요~

and gate, BIAS, erceptron, multi-layer perceptron, nand gate, or gate, single-layer perceptron, Theta, WEIGHT, 가중치, 가중치 곱, 가중치 영향력, 가중치 중요도, 가중치와 편향, 노드, 뉴런, 뉴런이 활성화한다, 다층 퍼셉트론, 단층 퍼셉트론, 딥러닝, 매개변수 학습, 비선형 영역, 선형 영역, 선형과 비선형, 세타, 시그모이드 함수, 신경망, 신호, 임깝, 택 ㅎㅁㅅㄷ, 퍼셉트론, 퍼셉트론 구현하기, 퍼셉트론 동작 원리, 퍼셉트론의 한계, 편향, 학습, 활성화 매개변수, 활성화 함수


-

퍼셉트론(perceptron) 은 프랑크 로젠블라트라는 사람이 1957년에 고안한 알고리즘이다.

고대 화석 같은 녀석인데 퍼셉트론이 신경망(딥러닝)의 기원이 되는 알고리즘이다.

그래서 알아두어야 한다.





2.1. 퍼셉트론이란?


-

퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다.

여기서 신호란 전류나 강물처럼 흐름이 있는 것을 상상하면 좋다.

실제 전류와 달리 퍼셉트론 신호는 0, 1 값만 갖는다.



-

and gate, BIAS, erceptron, multi-layer perceptron, nand gate, or gate, single-layer perceptron, Theta, WEIGHT, 가중치, 가중치 곱, 가중치 영향력, 가중치 중요도, 가중치와 편향, 노드, 뉴런, 뉴런이 활성화한다, 다층 퍼셉트론, 단층 퍼셉트론, 딥러닝, 매개변수 학습, 비선형 영역, 선형 영역, 선형과 비선형, 세타, 시그모이드 함수, 신경망, 신호, 임깝, 택 ㅎㅁㅅㄷ, 퍼셉트론, 퍼셉트론 구현하기, 퍼셉트론 동작 원리, 퍼셉트론의 한계, 편향, 학습, 활성화 매개변수, 활성화 함수



x1, x2 는 입력 신호

y 는 출력 신호

w1, w2 는 가중치를 말한다. (w 는 weight 의 머릿글자)


그림의 원을 뉴런 혹은 노드라고 부른다.

입력 신호가 뉴런에 보내질 때 각각 고유한 가중치가 곱해진다. ( w1x1, w2x2)

뉴런에서 보내온 신호의 총합이 정해진 한계, 임계값 Θ(theta, 세타) 를 넘어서면 1을 출력하고 그렇지 않으면 0을 출력한다.

1을 출력할 때 “뉴런이 활성화한다” 라고 표현하기도 한다.



-

퍼셉트론의 동작 원리는 아래와 같다.

y = 0 if (w1x1 + w2x2 <= Θ )

   = 1 if (w1x1 + w2x2 > Θ)



-

퍼셉트론은 복수의 입력 신호 각각에 고유한 가중치를 부여한다.

가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작동한다.

가중치가 클수록 해당 신호가 그만큼 더 중요함을 뜻한다.



-

가중치는 전류에서 말하는 저항에 해당된다.

저항은 전류의 흐름을 억제하는 매개변수로 저항이 낮을수록 큰 전류가 흐른다.

한편 퍼셉트론의 가중치는 그 값이 클수록 강한 신호를 흘려보낸다.

이처럼 서로 작용하는 방향은 반대지만 신호가 얼마나 잘(혹은 어렵게) 흐르는가를 통제한다는 점에서 저항과 가중치는 같은 기능을 한다.





2.2. 단순한 논리 회로


2.2.1. AND 게이트


-

AND 게이트는 입력이 둘이고 출력은 하나.

입력 신호와 출력 신호의 대응 표를 진리표라고 한다.



-

AND 게이트 진리표를 퍼셉트론으로 표현하는 경우에는 이를 만족시키는 조합이 무한히 많다.

(w1, w2, Θ) 가 (0.5, 0.5, 0.7)일 때, (0.5, 0.5, 0.8), (1.0, 1.0, 1.0) 때 모두 AND 게이트의 조건을 만족한다.




2.2.2. NAND 게이트와 OR 게이트


-

NAND 는 Not AND 를 의미하며, 그 동작은 AND 게이트의 출력을 뒤집은 것

NAND 는 AND 게이트의 매개변수 부호를 모두 반전하면 된다.



-

위의 방식은 퍼셉트론의 매개변수 값을 정하는 것은 컴퓨터가 아니라 인간이다.

인간이 직접 진리표라는 학습 데이터를 보면서 매개변수의 값을 생각한다.

기계학습 문제는 이 매개변수의 값을 정하는 작업을 컴퓨터가 자동으로 하도록 한다.

“학습”이란 적절한 매개변수 값을 정하는 작업이며, 사람은 퍼셉트론의 구조(모델)을 고민하고 컴퓨터에 학습할 데이터를 주는 일을 한다.



-

AND, NAND, OR 논리 회로에서 중요한 것은 퍼셉트론의 구조는 세개의 게이트에서 모두 같다는 것.

세 가지 게이트에서 다른 것은 매개변수(가중치와 임계값)의 값 뿐이다.






2.3. 퍼셉트론 구현하기


2.3.1. 간단한 구현부터


-

AND 게이트를 구현해보자

def AND(x1, x2):

    w1, w2, theta = 0.5, 0.5, 0.7

    tmp = x1*w1 + x2*w2

    if tmp <= theta:

        return 0

    elif tmp > theta:

        return 1




2.3.2. 가중치와 편향 도입


-

Θ 를 -b 로 치환하면 퍼셉트론의 동작이 아래와 같이 변경된다.

y = 0 if b + w1x1 + w2x2 <= 0

   = 1 if b + w1x1 + w2x2 > 0

여기서 b 를 편향(bias)라고 한다.


이를 해석하면.. 퍼셉트론은 입력신호에 가중치를 곱한 값과 편향을 합하여, 그 값이 0을 넘으면 1, 그렇지 않으면 0을 출력한다.




2.3.3. 가중치와 편향 구현하기


-

w1, w2 는 각 입력 신호가 결과에 주는 영향력(중요도)를 조절하는 매개변수이고,

편향은 뉴런이 얼마나 쉽게 활성화(결과로 1을 출력)하느냐를 조정하는 매개변수이다.


예를 들어 b 가 -0.1 이면, 각 입력 신호에 가중치를 곱한 값들의 합이 0.1을 초과할 때만 뉴런이 활성화한다.

반면 b가 -20.0 이면 각 입력 신호에 가중치를 곱한 값들의 합이 20.0을 넘지 않으면 뉴런은 활성화하지 않는다.

이처럼 편향은 뉴런이 얼마나 쉽게 활성화되는지를 결정한다.



-

편향이라는 용어는 한쪽으로 치우쳐 균형을 깬다라는 의미를 담고 있다.

실제로 두 입력이 모두 0이어도 결과로 0이 아닌 편향 값을 출력한다.





2.4. 퍼셉트론의 한계


2.4.1. 도전! XOR 게이트


-

XOR 게이트는 베타적 논리합으로, x1, x2 중 한쪽이 1일 때만 1을 출력한다.

XOR 게이트는 현재까지 본 퍼셉트론으로 구현할 수 없다.



-

AND, OR, NAND 는 직선으로 input 값에 대한 구분선을 그릴 수 있었다.

그러나 XOR 은 직선으로 input 값에 대한 구분선을 그릴 수 없다.  ( 그래프는 책 참고 )


직선인 이유는 지금까지 배운 퍼셉트론이 직선에 대한 식이기 때문.




2.4.2. 선형과 비선형


-

직선으로는 XOR 를 표현할 수 없다.

(단층)퍼셉트론은 직선 하나로 나눈 영역만 표현할 수 있다는 한계가 있다.

곡선으로 표현한 영역을 비선형 영역이라 부르고, 직선의 영역을 선형 영역이라 부른다.


단층 퍼셉트론은 single-layer perceptron 이라 부른다.

단층 퍼셉트론으로는 비선형 영역을 분리할 수 없다.





2.5. 다층 퍼셉트론이 출동한다면


-

퍼셉트론의 아름다움(?) 은 ‘층을 쌓아’ 다층 퍼셉트론(multi-layer perceptron)을 만들 수 있다는 데 있다.




2.5.1. 기존 게이트 조합하기


-

XOR 은 OR, NAND, AND GATE 의 조합으로 만들 수 있다.

x1 ->

         NAND -> 

x2 ->

                            AND -> y

x1 -> 

        OR ->

x2 -> 




2.5.2. XOR 게이트 구현하기


-

and gate, BIAS, erceptron, multi-layer perceptron, nand gate, or gate, single-layer perceptron, Theta, WEIGHT, 가중치, 가중치 곱, 가중치 영향력, 가중치 중요도, 가중치와 편향, 노드, 뉴런, 뉴런이 활성화한다, 다층 퍼셉트론, 단층 퍼셉트론, 딥러닝, 매개변수 학습, 비선형 영역, 선형 영역, 선형과 비선형, 세타, 시그모이드 함수, 신경망, 신호, 임깝, 택 ㅎㅁㅅㄷ, 퍼셉트론, 퍼셉트론 구현하기, 퍼셉트론 동작 원리, 퍼셉트론의 한계, 편향, 학습, 활성화 매개변수, 활성화 함수

이 책에서는multilayer perceptron 에서 왼쪽부터 0층, 1층, 2층.. 라고 부른다.



-

단층 퍼셉트론으로는 표현하지 못한 것을 층을 하나 늘려 구현 할 수 있었다.

퍼셉트론은 층을 쌓아(깊게 하여) 더 다양한 것을 표현할 수 있다.





2.6. NAND 에서 컴퓨터까지


-

NAND 게이트의 조합만으로 컴퓨터를 만들 수 있다.

즉 퍼셉트론으로 컴퓨터를 표현할 수 있다.


이론상 2층 퍼셉트론이면 컴퓨터를 만들 수 있다. ( 실제로는 어렵다. )



-

비선형인 시그모이드 함수를 활성화 함수로 이용하면 임의의 함수를 표현할 수 있다는 사실이 증명되었다.





2.7. 정리


-

퍼셉트론은 입출력을 갖춘 알고리즘이다. 입력을 주면 정해진 규칙에 따른 값을 출력한다.

퍼셉트론에서는 “가중치”와 “편향”을 매개변수로 설정한다.

퍼셉트론으로 AND, OR 게이트 등의 논리 회로를 표현할 수 있다.

XOR 게이트는 단층 퍼셉트론으로는 표현할 수 없다.

2층 퍼셉트론을 이용하면 XOR 게이트를 표현할 수 있다.

단층 퍼셉트론은 직선형 영역만 표현할 수 있고, 다층 퍼셉트론은 비선형 영역도 표현할 수 있다.

다층 퍼셉트론은 (이론상) 컴퓨터를 표현할 수 있다.




반응형

댓글0