[Neural Network] Perceptron?

Perceptron의 개념은 1957년 Frank Rosenblatt가 제안하였다. Perceptron은 neural network를 구성할 수 있는 가장 작은 단위이다. 기본적으로 Perceptron은 여러 개의 input을 받아서 특정 연산(processor)을 수행 후 결과를 출력하는 형태이다. 그림 1은 Perceptron을 묘사한 그림이다. 그림 1과 같이 Perceptron은 2개의 input과 하나의 processor을 가지고 있다. 그리고 각 input에 해당하는 weight 값이 존재한다. Weight 값과 input을 사용하여 processor은 output을 만들어 낸다.

ch10_05

그림 1: Perceptron 그림 (동그라미가 Processor을 의미함) (출처)

ch10_04

그림 2: 점을 분류하는 예제 그림 (출처)

Neural Network는 다양한 분야에서 사용된다. 간단하게 하나의 Perceptron으로 two-dimensional space에서 점을 분류하는 방식을 설명할 계획이다. 그림 2는 점을 분류하는 예를 보여준다. 본 예제에서는 sign activation function을 사용하여 output은 -1 또는 1 값만 가능하도록 한다. 본 예제를 풀기 위해서는 그림 1의 weight 값들을 1로만 설정하여도 간단하게 문제가 해결된다. 하지만 하나의 문제가 있다. 만약 (0, 0) 값이 input으로 들어오게 되면 본 예제의 output은 -1 또는 1 값을 output으로 출력할 수 없다. Weight 값을 변경하게 되어서 어떠한 특정 값 한 개 이상은 그림 2에 보이는 라인에 겹쳐지게 된다. 이러한 문제를 해결하기 위해서 bias라는 값을 input으로 넣게 된다. 그림 3은 bias input을 추가한 perceptron을 보여준다. 입력으로 bias 값을 1로 설정하면 (0, 0)의 output은 1이 되고, 반대로 -1을 넣게 되면 (0, 0)의 output 값은 -1이 된다. 아래와 같이 생긴 perceptron으로 간단한 분류 문제를 해결해보았다 (물론 그냥 프로그래밍을 해도 아주 간단하게 해결되는 문제다).

ch10_06

그림 3: Perceptron에 Bias input을 추가한 그림 (출처)

 

간단하게 perceptron에 대해서 작성해보았다. 다음은 하나의 perceptron으로 풀지 못하는 문제와 이를 해결하기 위해 hidden layer에 관해서 설명을 해보겠다.

 

출처

  1. http://natureofcode.com/book/chapter-10-neural-networks/

Leave a Comment