logo

퍼셉트론의 정의 📂머신러닝

퍼셉트론의 정의

정의

선형 함수 $f(x) = wx + b$와 단위 계단 함수 $H$의 합성퍼셉트론perceptron이라 정의한다.

$$ \text{Perceptron} := H \circ f (x) = H(wx + b) $$

다변수 함수의 경우, $f(\mathbf{x}) = \mathbf{w}\cdot \mathbf{x} + b = w_{1}x_{1} + \cdots w_{n}x_{n} + b$이고,

$$ \text{Perceptron} := H \circ f (\mathbf{x}) = H(\mathbf{w} \cdot \mathbf{x} + b) $$

특히나 이를 단층 퍼셉트론single layer perceptron이라 부르기도 한다.

설명

퍼셉트론은 1957년 로젠블렛에 의해 고안됐으며 최초의 지도 학습 모델이다. 기계 학습에선 이를 가중치니, 바이어스니, 활성화함수니 하며 입문자가 알아듣기 어렵게 설명하지만, 그냥 선형함수와 계단함수의 합성일 뿐이다. 가중치는 선형항의 계수, 바이어스는 상수항을 의미한다.

여기서 단위 계단 함수는 편의에 따라서 정의하기 나름이다.

$$ H(x) = \begin{cases} 1 & x \gt 0 \\ 0 & x \lt 0\end{cases} \quad \text{or} \quad H(x) = \begin{cases} 1 & x \gt 0 \\ -1 & x \lt 0\end{cases} $$

또한 $H$의 자리에 꼭 단위 계단함수가 들어가야하는 것은 아니며, 활성화함수로 쓰이는 것들이면 문제없다. 따라서 일반적으로 정의하자면, 퍼셉트론이란 선형함수와 활성화함수의 합성이다.

위의 값이 $0$보다 큰지, 작은지에 따라 분류 하므로 기준이 되는 곳을 찾으면 된다. 그러면 식을 정리하여 다음과 같은 결과를 얻는다.

$$ \begin{align*} && w_{1}x_{1} +w_{2}x_{2}+b &= 0 \\ \implies && w_{2}x_{2} &= -w_{1}x_{1}-b \\ \implies && x_{2} &= -\frac{w_{1}}{w_{2}}x_{1}-\frac{b}{w_{2}} \end{align*} $$

이는 2차원 평면에서 직선의 방정식과 같다. 입력 데이터가 $N$차원인 경우는 다음과 같이 나타낼 수 있다.

$$ \begin{align*} \hat{y}&=\varphi \left( \begin{bmatrix} b & w_{1} & \dots &w_{N} \end{bmatrix} ^{T} \begin{bmatrix} 1& x_{1} & \dots & x_{N} \end{bmatrix} \right) \\ &= \varphi \left( \bf{w}^T \bf{x} \right) \end{align*} $$ 따라서 퍼셉트론의 학습 목표는 아래 그림과 같이 두 종류의 데이터를 구분지을 수 있는 선을 그을 수 있도록 하는 것이다. 1.PNG

그러면 가중치 벡터 $\mathbf{w}$는 다음 그림과 같이 나타난다. 3.PNG

위 그림과 같은 $\mathbf{w}$를 구하면 모든 파란색 점과의 각도가 90도 이내이므로 내적의 값이 양수이고, 모든 초록색 점과의 각도가 90도보다 크므로 내적의 값이 음수가 된다. 따라서 이러한 조건을 만족하는 $\mathbf{w}$가 유일하지는 않다. 이런식으로 퍼셉트론이 아래의 그림1처럼 데이터를 구분짓는 선을 그릴 수 있는 경우를 선형 분리가능linearly separable하다고 한다. 2.PNG

학습 방법

학습 방법은 단순하다. $n$번째 입력 데이터 $\mathbf{x} (n)$이 $-1$로 분류되어야하는데 $\hat{y}(n)=\varphi \left( \mathbf{w}^{T}(n)\mathbf{x}(n) \right)=1$의 결과가 나왔다고 해보자. 이는 현재의 가중치에 대해서 $\mathbf{w}^{T}(n)\mathbf{x}(n)$이 양수라는 뜻이고 퍼셉트론이 올바르게 예측하려면 $\mathbf{w}^{T}(n)\mathbf{x}(n)$의 값이 음수가 되어야 한다. 따라서 $\mathbf{w}^T(n)\mathbf{x}(n)$에 어떤 값을 빼는 식으로 업데이트 하면 된다. 이를 입력 데이터 $\mathbf{x}(n)$에 의존하도록 하면 가중치의 업데이트를 다음과 같이 나타낼 수 있다. $$ \begin{align*} && \mathbf{w}^T(n+1)\mathbf{x}(n) &=\mathbf{w}^T(n)\mathbf{x}(n)-\eta\mathbf{x}^T(n)\mathbf{x}(n) \\ \implies && \mathbf{w}(n+1) &= \mathbf{w}(n) -\eta \mathbf{x}(n) \end{align*} $$ 이때 $\eta>0$는 학습률learning rate라 불리는 상수이다. 같은 방법으로 $+1$인 $\mathbf{x}$를 $-1$로 예측한 반대의 경우 다음과 같이 가중치를 업데이트하면 된다. $$ \mathbf{w}(n+1) = \mathbf{w}(n) +\eta \mathbf{x} $$ 위의 두 가지 경우를 다음과 같이 한 번에 나타낼 수 있다. $$ \mathbf{w}(n+1) = \mathbf{w}(n) +\eta y(n) \mathbf{x}(n) $$ 이때 $y(n)$는 $\mathbf{x}(n)$의 라벨(정답)이다. 실제로 퍼셉트론이 2차원, 3차원 데이터에 대해서 학습하는 과정을 움짤로 보면 다음과 같다.

perceptron3.gif

perceptron3d10.gif


  1. Simon Haykin. (2009). Neural Network and Learning Machines(3rd Edition) –> ↩︎