Post

퍼셉트론

퍼셉트론

퍼셉트론

프랑크 로젠블랫(F. Rosenblatt)에 의해 고안된 인공신경망 이진분류기이다.

image

퍼셉트론은 특성에 대한 입력값(Input)인 벡터 $\mathbf{x}$에 가중치(Weight) 벡터 $\mathbf{w}$를 곱한 $\mathbf{wx}$를, 즉 모든 input에 weight를 곱한 것을 더한 것을 계단함수에 넣어 0 또는 1로 분류한다. 이후 실제 출력값과 예측된 출력값을 비교해 오차를 계산한 후 이것을 바탕으로 가중치를 갱신하여 성능이 향상되도록 다시 학습하는 것이다.

간단한 예시를 들자면, 어떤 메일이 스팸 메일인지 아닌지 구별한다고 할 때, 특정 단어의 유무로 판단한다면 $x_1$: ‘광고’, $x_2$: ‘안내’, $x_3$: ‘홍보’와 같이 입력값을 설정한 후 결과를 예측한다. 이후 해당 메일이 실제 스펨 메일인지 여부를 확인하여 정답 여부를 확인하고, 오차가 있을 경우, 가중치를 갱신해 성능을 향상시키는 것이다.

퍼셉트론의 경우, 지도학습과 마찬가지로 데이터를 학습해 실제값과 예측값의 차이를 최소화하는 것이 목표이나, 이후 나올 인공신경망 모델과는 달리, 손실함수(Loss function)가 존재하지 않다.

계산 방법

이때, $x_0=1, w_0=b$는 상수항

\[\mathbf{x} =\begin{pmatrix}1\\x_1\\\vdots\\x_p\\\end{pmatrix} \tag{1}\] \[\mathbf{w} =\begin{pmatrix}w_0\\w_1\\\vdots\\w_p\\\end{pmatrix} \tag{2}\]

(1), (2)를 곱하면,

\[\mathbf{wx} =\begin{pmatrix}w_0\\w_1x_1\\\vdots\\w_px_p\\\end{pmatrix} \tag{3}\]

이때, (4)을 다르게 표현하면,

\[\mathbf{w}^T\mathbf{x}=\sum^p_{j=0}w_jx_j \tag{4}\]

계단함수(Step function) $g(x)$를 정의하면,

image

\[g(x)\overset{\text{def}}{=}\begin{cases}0, x> 0\\1, x\leq 0\end{cases} \tag{5}\]

(5)에 (4)를 대입하면,

\[\hat{y}=g\left(\sum^p_{j=0}w_jx_j\right)=g(\mathbf{w}^T\mathbf{x}) \tag{6}\]

$i$개의 샘플이 있을 때, 각 샘플에 대한 오차 $e^{(i)}$를 계산하면,

\[e^{(i)}=y^{(i)}-\hat{y}^{(i)} \tag{7}\]

$\eta$는 학습률(Learning Rate)을 위한 파라미터라고 할 때, 갱신할 가중치를 (7)을 바탕으로 다음과 같이 계산하고,

\[\Delta w_j\overset{\text{def}}{=}\eta e^{(i)}x_j^{(i)}, j=0, 1, \cdots, p \tag{8}\]

(8)을 기존 가중치에 더해 새로운 가중치를 만들면

\[w_j=w_j+\Delta w_j \tag{9}\]

이후 다시 (3)으로 돌아가 다시 학습을 진행하여 성능이 향상되도록 반복한다.

예제

만약, $\mathbf{x}$를 메일 내의 특정 단어의 유무라고 하고, 세부 특성을 $x_1$: ‘광고’, $x_2$: ‘안내’, $x_3$: ‘홍보’라고 설정했을 때, 메일이 스팸 메일인지 아닌지 여부를 확인하고자 한다. 단, 1은 참, 0은 거짓으로 하며, 초기 가중치를 모두 0으로 설정하고, 학습률은 $\eta=0.1$로 한다.

두 개의 메일($i=2$)이 있고, 특성과 스팸 메일 여부를 다음과 같이 작성하였을 때, 1회 학습하였을 경우의 가중치를 구한다면,

\[\mathbf{x}^{(1)} =\begin{pmatrix}1\\1\\0\\1\\\end{pmatrix}, y^{(1)}=1, \mathbf{x}^{(2)} =\begin{pmatrix}1\\0\\1\\0\\\end{pmatrix}, y^{(2)}=0 \tag{10}\]

첫 번째 데이터에 대한 학습을 진행하면,

\[\mathbf{w} =\begin{pmatrix}0\\0\\0\\0\\\end{pmatrix} \tag{11}\] \[\mathbf{w}^T\mathbf{x}^{(1)} =\begin{pmatrix}0&0&0&0\\\end{pmatrix} \begin{pmatrix}1\\1\\0\\1\\\end{pmatrix}=0 \tag{12}\]

(5)에 의해 $\hat{y}^{(1)}$을 구하면, $0\leq0$이기에,

\[\hat{y}^{(1)}=g(0)=1 \tag{13}\]

(7)에 의해 오차를 구하면,

\[e^{(1)}=y^{(1)}-\hat{y}^{(1)}=1-1=0 \tag{14}\]

(14)에 의해 오차가 0이므로, 가중치는 수정되지 않는다.

두 번째 데이터에 대한 학습을 진행하면 (10)과 (11)에 의해,

\[\mathbf{w}^T\mathbf{x}^{(2)} =\begin{pmatrix}0&0&0&0\\\end{pmatrix} \begin{pmatrix}1\\0\\1\\0\\\end{pmatrix}=0 \tag{15}\]

(5)에 의해 $\hat{y}^{(2)}$를 구하면, $0\leq0$이기에,

\[\hat{y}^{(2)}=g(0)=1 \tag{16}\]

(7)에 의해 오차를 구하면,

\[e^{(2)}=y^{(2)}-\hat{y}^{(2)}=0-1=-1 \tag{17}\]

(17)에 의해 오차가 $-1$이므로 (8)에 의해,

\[\Delta w_0=0.1\times (-1)\times 1=-0.1, \Delta w_1=0.1\times (-1)\times 0=0,\] \[\Delta w_2=0.1\times (-1)\times 1=-0.1, \Delta w_3=0.1\times (-1)\times 0=0 \tag{18}\]

(9)에 (11), (18)을 대입하면 갱신된 가중치는,

\[\mathbf{w} =\begin{pmatrix}0+(-0.1)\\0+0\\0+(-0.1)\\0+0\\\end{pmatrix}=\begin{pmatrix}-0.1\\0\\-0.1\\0\\\end{pmatrix} \tag{19}\]

단순 퍼셉트론의 한계

1) 단일 계층의 신경망으로, 복잡한 데이터 처리 한계 있음

2) 최종적으로 step function인 $g(x)$를 사용해 분류를 하기에 선형 분리 문제만 해결할 수 있음, 비선형, XOR 문제 해결 불가

3) 단일 샘플 단위로 오차를 수정하기에 가중치가 수렴되기까지 학습이 느림

4) 0 또는 1로만 출력 가능

This post is licensed under CC BY 4.0 by the author.