본문 바로가기

컴퓨터 과학/인공지능

Perceptron

반응형

 

퍼셉트론

퍼셉트론이란 다수의 신호를 입력받아 하나의 신호를 출력하는 것이다.

 

예를 들어 논리회로에 AND, OR게이트가 있다.

 

x1, x2 가 있다고 해보자

 

여기에 입력하는 신호는 보통 0아니면 1이다. 그렇다면 x1,x2에 따라서 결과 값 y의 경우는 어떻게 나올까?

 

AND게이트의 경우

(1,1) => 1

(1,0) => 0

(0,1) => 0

(0,0) => 0

 

OR게이트의 경우

(1,1) => 1

(1,0) => 1

(0,1) => 1

(0,0) => 0

 

위의 경우는 2개의 신호에 따라 y의 신호를 출력하는 게이트이다.

 

이렇게 다수의 신호를 입력받아 하나의 신호를 출력하는 것을 퍼셉트론 이라고 한다.

 

(신호가 단순히 0,1뿐 아니라 실수가 될 수도 있다. 위의 게이트는 단순히 하나의 예시일 뿐이다.)

자 그렇다면 이런 위의 게이트를 ‘수식’으로 표현하게 된다면 어떻게 될까?

 

잠시 아래의 표현을 살펴보자

 

 

여기서 x1,x2 의 경우는 여전히 입력 신호이다. 그렇다면 갑자기 등장한 w1,w2, theta 는 대체 뭐란 말인가?

 

우린 여기서 w1,w2 를 ‘가중치(weight)’라고 theta 를 ‘임계값’이라고 부르기로 했다.

 

여기서 가중치와 임계값이 변화함에 따라 x1,x2가 입력신호가 같더라도 y(출력신호)가 다르게 나올수도 있다.

예를 들어 위에서 이야기한 AND게이트와 OR게이트를 수식으로 표현해보자.

 

앞으로의 기호생략을 위해 (w1,w2,theta)로 표현하겠다.

 

만약 (0.5, 0.5, 0.8)을 생각해보면 위의 수식은 AND게이트가 된다.

 

x1,x2 모두 1이 들어가는 게 아니면 항상 임계값(0.8)보다 작아서 0이 나올테니 말이다.

 

위의 값들은 하나의 예시일 뿐 AND게이트를 만들 수 있는 조합은 무수히 많다.

 

그럼 예제를 두개를 줘보겠다.

 

1. 본인이 OR게이트가 될 수 있도록 가중치와 임계값을 정해보자. (답은 무수히 많다.)

 

2. NAND게이트라는 것이 있다. 이는 AND게이트의 값들이 뒤집어진 것

 

(0,0) => 1

(0,1) => 1

(1,0) => 1

(1,1) => 0

이 되는 것이다. 위의 게이트를 만드는 가중치와 임계값을 정해보자.

 

이를 통해 파이썬으로 직접 게이트를 구현해보는 것도 좋은 실습이 될 것이다.

 

참고로 여기서 임계값은 나중에 ‘편향’이라는 단어로 치환될 수 있다 그리고 theta 라는 기호대신에b를 사용할 것이다.

보통은 ‘편향’이라는 말을 더 많이 쓰므로 알아두는 것이 좋다.

이런 게이트를 하나의 그림으로 표현하자면 다음같이 표현할 수 있다.

 

 

위의 그림은 AND게이트를 좌표평면 위에 나타낸 것이다. 파란색을 True, 빨간색을 False라 생각하자 (컴퓨터에서 0은 False로 1 또는 그 외의 숫자는 True로 판단한다.)

 

여기서 AND나 OR 혹은 NAND게이트의 문제점은 굉장히 단순한 분류밖에 하지 못한다는 것이다. 단순히 하나의 직선을 그어서만 영역을 나눌 수 있기 때문이다.

(그 이유는 표현식이 선형적이기 때문이다.)

 

그럼 여기서 문제점이 생긴다.

 

 

개와 고양이를 분류한다고 생각해보자. 그런데 여기서 분류하는 기준을

 

개 같이 생긴 고양이, 개같이 생긴 개, 고양이같이 생긴 고양이, 고양이 같이 생긴 개를 분류하려 한다.

 

이를 그림으로 표현하면 아래와 같이 나올 것인데 여기서 개같이 생긴 개와 고양이 같이 생긴 고양이를 ‘참’이라고 판단하고 고양이 같은 개와 개 같은 고양이는 ‘거짓’으로 분류하는 모델을 만들 수 있을까?

 

 

단순한 퍼셉트론으로는 불가능하다. 선형적이기 때문이다. 이를 해결하기위해 등장한것이

‘다층 퍼셉트론’이다.

 

기존의 퍼셉트론으로는 서로 크로스되어 있는 두 지점을 분류할 수 없다.

이것을 해결하는 것이 다층 퍼셉트론이다.

다층퍼셉트론은 입력신호의 개수가 늘거나 출력신호의 개수가 늘어나는 것이 아니라 ‘노드’의 개수가 늘어나는 것이다. 그림으로 보자

 

 

현재 우리가 원하는 것은 서로 크로스 되는 점들이 같은 것으로 분류되어야한다.

 

ex) 예를 들어

 

(1,1) => 1

(0,1) => 0

(1,0) => 0

(0,0) => 1

이되는 논리회로를 구성해야 한다는 것이다.

 

이것을 구성하기위해 그렇다면 수식을 어떻게 구성해야하는지 생각해보자.

(좀 난이도있는 문제라고 생각됨)

 

 

위의 예제와 그림을 통해서 우린 ‘다층 퍼셉트론’을 이용하여 비선형적인 표현을 할 수 있음을 보였다. 그렇다면 ‘다층 퍼셉트론’으로 비선형적인 ‘표현’을 할 수 있다는 사실을 뇌리에 밖아 놓고 ‘신경망’에 대해서 알아보도록 하자

참고:

1. 밑바닥부터 시작하는 딥러닝 (사이토 고키)

2. SKKU 인공지능(AI)특강 (기계학습) (이지형)

3. SKKU 인공지능(AI)특강 (딥러닝) (김광수)

 

 

 

 

 

 

반응형

'컴퓨터 과학 > 인공지능' 카테고리의 다른 글

Numerical computation  (0) 2023.07.02
Information Theory  (0) 2023.07.02
Bayes' Rule  (0) 2023.07.02
Probability  (0) 2023.07.02
선형대수학  (0) 2023.06.29