Published on

밑바닥부터 시작하는 딥러닝 | 퍼셉트론

Authors
  • avatar
    Name
    박준열 | Eric Park
    Twitter

퍼셉트론 Perceptron

다수의 신호를 입력 받아 하나의 신호를 출력.

퍼셉트론의 출력은 두 가지 값이 있다.

  1. 흐른다: 1
  2. 안흐른다: 0

위에 예시에서 보면: X_1W_1 + X_2W_2 <= θ라면 안흐른다 X_1W_1 + X_2W_2 > θ라면 흐른다

W_1, W_2, θ 값은 임의로 정한 값

Machine Learning

지금까지는 퍼셉트론의 가중치를 수동으로 입력을 했는데, 머신러닝은 이 작업을 자동화하는 것이다.

  1. 학습 - 적절한 가중치를 찾는 작업
  2. 사람은 퍼셉트론의 구조를 정하고 컴퓨터에 학습 데이터를 공급

Rosenblatt's Algorithm

  1. Weight값을 랜덤으로 지정한다
  2. 정해진 X값으로 Y값을 예측한다
  3. 만약 Y = 0을 예측 했는데, 실제로는 Y = 1이었다면, weight값을 증가시킨다.
  4. 만약 Y = 1을 예측 했는데, 실제로는 Y = 0이었다면, weight값을 감소시킨다.
  5. 예측 값이 정확할 때까지 반복.

편향값 (Bias)

θ값 대신 b값 도입

b + X_1W_1 + X_2W_2 <= 0라면 안흐른다 b + X_1W_1 + X_2W_2 > 0라면 흐른다

W_1, W_2, b 값은 임의로 정한 값

Weight(가중치): W_1, W_2는 각 입력 신호가 결과에 주는 영향력을 조정

Bias(편향): 퍼셉트론이 얼마나 쉽게 활성화 되는지를 조절

  1. b = -0.1 각 입력 신호에 가중치를 곱한 값들의 합이 0.1을 초과할 때 활성화
  2. b = -20.0 각 입력 신호에 가중치를 곱한 값들의 합이 20.0을 초과할 때 활성화

퍼셉트론의 한계

(b, W_1, W_2) = (-0.5, 1.0, 1.0)일 때,

  1. 파란 영역은 0을 출력하는 영역
  2. 하얀 영역은 1을 출력하는 영역
  3. 0을 원, 1을 삼각형으로 표현

OR게이트를 만들려면 원과 삼각형을 직선으로 나눠야 한다

그럼 XOR게이트를 만들려면 원과 삼각형을 직선으로 어떻게 나눠야 할까?

정답은: 한 직선으로는 절대로 나눌 수가 없다

그러면 어떻게 해야 원과 삼각형을 나눌 수 있을까?

이렇게 직선이라는 제약이 사라진다면 나눌 수가 있다

쉽게 생각하면, 하나의 계층의 퍼셉트론으로는 XOR게이트를 구현할 수가 없고, 다층 퍼셉트론으로는 가능하다는 뜻이다

다층 퍼셉트론 Multi-layer Perceptron

  • 퍼셉트론을 여러 층으로 쌓은 모델 = Neural Networks

XOR게이트 구현

이렇게 세개의 게이트가 주어졌을때, XOR게이트를 구현하려면 어떻게 게이트를 배치해야 할까

정답은 바로: OR NAND AND 순서대로 이다.

XOR은 다층 구조의 네트워크이기 때문에, 이런식으로 구현이 가능하다. (일반적으로 아웃풋 레이어는 계층에 포함되지 않는다)

정리

  • 퍼셉트론은 입출력을 갖춘 알고리즘이다.
  • 입력을 주면 정해진 규칙에 따른 값을 출력한다.
  • 퍼셉트론으로 AND, OR게이트 등의 논리회로를 표현할 수 있다.
  • XOR 게이트는 2층 퍼셉트론으로 표현할 수 있다.
  • 다층 퍼셉트론은 직선형 영역만 표현하는 반면 다층 퍼셉트론은 비선형 영역도 표현할 수 있다.
  • 다층 퍼셉트론으로는 이론상 컴퓨터도 만들 수 있다.