개발자의시작

[Pytorch] 08-1 Perceptron 본문

머신러닝(machine learning)

[Pytorch] 08-1 Perceptron

LNLP 2022. 1. 14. 11:50

이 글은 모두를위한딥러닝 시즌2 https://github.com/deeplearningzerotoall/PyTorch 을 정리한 글입니다.

 

GitHub - deeplearningzerotoall/PyTorch: Deep Learning Zero to All - Pytorch

Deep Learning Zero to All - Pytorch. Contribute to deeplearningzerotoall/PyTorch development by creating an account on GitHub.

github.com

 

이번 chapter에서 살펴볼 주제는 다음과 같다.

 

Perceptron

AND, OR

XOR

Code: XOR

 

Perceptron(퍼셉트론)은 인공신경망의 한 종류이다. 인공신경망은 동물의 신경계 중 neuron을 본떠 만든 것이다. neuron은 뇌에서 신호를 주고받는 역할을 수행한다. neuron의 동작 방식을 살펴보면, 신호가 들어왔을 때, 신호들의 총크기가 특정 값(threshold)을 넘게 되면 신호가 다음 neuron으로 전파가 된다. 이를 본떠 만든 것이 인공 신경망이다.

 

인공 신경망 중 하나인 perceptron을 살펴보면 다음과 같다. perceptron은 어떤 입력 x가 들어왔을 때, 이 x들에 w(가중치)를 곱하게 되고 이 값들의 합과 b(bias)를 더해서 output을 만들게 된다. 이 output은 활성화 함수(activation function)를 거쳐서 최종적인 output을 만든다(sigmoid 등). 초창기 perceptron은 Linear classifier를 위해서 만들어진 모델이며 linear classifier는 어떤 두 가지 class가 있을 때 이 것을 linear 하게 분류할 수 있는 분류기를 의미한다. 여기서 예시는 개와 고양이를 구분하는 classifier이다. 

처음 perceptron이 개발될 당시에는 AND와 OR를 해결하기 위해 고안되었다. AND gate는 두 가지 입력 A와 B가 있을 때, 그림의 좌측과 같은 동작을 보이고 OR gate는 그림의 우측과 같은 동작을 보인다. 

이것을 그래프로 나타내면 다음과 같이 나타낼 수 있다. 그러면 이 것을 linear classifier로 분류할 수 있을까? 그림에서 보다시피 1과 0을 쉽게 분류할 수 있어 perceptron으로 AND, OR 문제를 해결할 수 있다. 

AND와 OR 문제를 해결할 수 있으니 더 복잡한 문제도 해결할 수 있을 것이라는 기대로 시작했지만, 이 perceptron으로는 XOR 문제를 해결할 수 없었다. 그래프에서도 하나의 선(Linear 한 classifier인 perceptron)으로 0과 1을 구분할 수 있는 방법이 존재하지 않음. 

XOR를 perceptron으로 분류하는 코드로 작성해보면 다음과 같다. 학습을 진행해보면 200번째 스텝 즈음부터 loss가 더 줄어들지 않는 것을 확인할 수 있고 학습이 진행되지 않는 것을 알 수 있다. 학습이 끝난 후 성능을 분석해보면 모든 예측값이 0.5로 예측하는 것을 볼 수 있고 정확도는 0.5로 더 이상 학습이 불가능하다. 

'머신러닝(machine learning)' 카테고리의 다른 글

[Pytorch] 09-1 ReLU  (0) 2022.01.14
[Pytorch] 08-2 Multi Layer Perceptron  (0) 2022.01.14
[Pytorch] 07-2 MNIST Introduction  (0) 2022.01.14
[Pytorch] 07-1 Tips  (0) 2021.12.30
[Pytorch] 06-2 Softmax Classification Pytorch  (0) 2021.12.29
Comments