드디어 퍼셉트론에 들어섰습니다.
이번엔 퍼셉트론과 XOR 문제에 대해서 공부해보려합니다.
인공지능은 인공신경망(Artificial Neural Network)으로 이루어집니다. 그리고 이 인공신경망은 사람의 신경세포, 뉴런의 형태와 방식을 만든 모델입니다.
사람의 각 뉴런은 신경세포체와 축삭돌기 말단으로 연결되고 이부분을 시냅스라고 합니다. 가지돌기로 자극이 들어오고 그 자극이 역치를 넘을 시 활동전위가 발생하여 축삭돌기를 따라 흥분이 전도되고 연결된 다른 신경세포체에 전달됩니다.
이러한 뉴런의 흥분의 전도, 전달 방식을 본따 인공신경망을 만든 것입니다.
인공신경망은 인공뉴런, 퍼셉트론(Perceptron)으로 이루어져있습니다. 퍼셉트론은 이진 분류(Binary Classification) 모델을 학습하기 위한 지도학습(Supervised Learning) 기반의 알고리즘입니다. 이진 분류란 기준에 따라 입력값을 두개의 그룹으로 분류하는 것입니다. 지도학습은 모델을 답이 있는 데이터를 학습시키는 것을 말합니다. 이후 훈련데이터로 값을 유추하는 것입니다. 퍼셉트론은 은닉층 여부에 따라 단층 퍼셉트론과 다층 퍼셉트론으로 구분됩니다.
단층 퍼셉트론에서 값이 입력되면 가중치가 부여되고 가중치 곱의 합을 더한 후 활성함수를 지나 출력이 되는 과정입니다.
이때의 퍼셉트론과 뉴런을 비교해보면 입력은 자극, 활성함수는 역치, 출력은 전달이 될 수 있습니다. 퍼셉트론은 입력값에 가중치를 조절하여 학습합니다. 그래프를 그려보면 다음과 같이 표현됩니다.
빨간색 직선으로 파란색 점과 노란색 점이 구분된다는 것, 즉, 이진분류가 되었다는 것을 볼 수 있습니다. 이때의 기준을 Decision Boundary라고 합니다.
단층 퍼셉트론은 논리게이트인 AND, OR, NAND을 구현할 수 있지만 XOR은 구현하지 못한다는 한계가 있습니다.
AND(논리곱): 두개 모두 1이면, 1
OR(논리합): 하나라도 1이면, 1
NAND(부정 논리): 하나라도 0이면, 1
XOR(배타적 논리합): 하나만 1이면, 1
그래프를 보면 XOR에서는 직선으로 0과 1을 구분할 수 없습니다.
XOR은 단층 퍼셉트론으로 구현하지 못하기 때문에 퍼셉트론 2개를 한 번에 계산하는 은닉층을 가진 다층 퍼셉트론이 등장했습니다. 다층 퍼셉트론은 2개 이상의 은닉층을 갖고 있고 이것을 심층 신경망(Deep Neural Network)라고 합니다. 심층 신경망으로 학습하는 것이 바로 딥러닝(Deep Learning)입니다.
다층 퍼셉트론에서 구현한 XOR을 보면 위와 같고 이 때의 은닉층은 NAND와 OR이 됩니다.
다층 퍼셉트론에서 은닉층이 만들어지는 과정을 더 자세히 보겠습니다.
$X_1, X_2$는 입력값, $Y$는 출력값이고 회색으로 표시한 부분이 은닉층입니다. 입력값의 각 값에 가중치($w$)를 곱하고 바이어스($b$)를 더해 은닉층으로 전송합니다. 은닉층의 한 점을 노드(node)라고 하며 이 그림에선 $n_1, n_2$에 해당합니다. 은닉층에 취합된 값은 활성화 함수를 통해 보내지고 활성화 함수는 시그모이드 함수, 소프트맥스 함수, ReLU 함수 등 여러 함수들이 모델에 맞게 사용됩니다. 만약 시그모이드 함수를 쓰게 된다면
$$ n_1 = \sigma(x_1w_{11} + x_2w_{21} + b_1) $$
$$ n_2 = \sigma(x_2w_{21} + x_2w_{22} + b_2) $$
이 됩니다.
결과값이 출력층으로 보내지고, 마찬가지로 활성화 함수를 사용해 $y$ 예측 값을 정하게 됩니다. 이 값을 $y_{out}$이라 하면
$$ y_{out} = \sigma(n_1w_{31} + n_2w_{32} + b_3) $$
이 됩니다.
가중치($w$)와 바이어스($b$)를 행렬로 표현하면
$$ W^1 = \begin{pmatrix} w_{11} & w_{12} \\ w_{21} & w_{22} \end{pmatrix} B^1 = \begin{pmatrix} b_1\\b_2 \end{pmatrix} $$
$$ W^2 = \begin{pmatrix} w_{31} \\ w_{32} \end{pmatrix} B^2 = \begin{pmatrix} b_3 \end{pmatrix} $$
입니다.
이번 글에서는 퍼셉트론에 대해서 알아보았습니다. 다음 글에서는 XOR 문제 해결과 그 코드에 대해서 공부해보겠습니다.
참고: [모두의 딥러닝], https://heytech.tistory.com/332
'프로그래밍 > 인공지능' 카테고리의 다른 글
오차 역전파와 활성화 함수 (0) | 2023.06.01 |
---|---|
다중 분류(multi classification) (0) | 2023.05.31 |
로지스틱 회귀 (0) | 2023.05.17 |
경사하강법 (1) | 2023.05.16 |
선형회귀 - 최소 제곱법 (0) | 2023.03.23 |