퍼셉트론
퍼셉트론은 가장 간단한 인공 신경망 중 하나로 1957년에 프랑크 로젠블라트가 제안했습니다.
퍼셉트론은 TLU(threshold logic unit)또는 LTU(linear threshold unit)이라고 불리는 인공 뉴런을 기반으로 합니다.
아래 그림처럼 입력과 출력이 어떤 숫자이고 각 입력 연결은 가중치와 연관되어 있습니다.
TLU는 입력의 가중치 합을 계산(\( z = w_{1}x_{1} + w_{2}x_{2} + \dots + w_{n}x_{n} = x^{T}w \))한 뒤 계산된 합에 계단 함수를 적용하여 결과를 출력합니다. 즉, \(h_{w}(x) = step(z), z=x^{T}w\) 입니다.
퍼셉트론에서 가장 널리 사용되는 계단 함수는 헤비사이드 계단 함수(heaviside step function)와 부호 함수(sign function)입니다.
\[ \displaystyle heaviside(z) = \begin{cases} 0, z < 0 \\ 1, z \geq 0 \end{cases} \]
\[ \displaystyle sgn(z) = \begin{cases} -1, z < 0 \\ 0, z = 0 \\ 1, z > 0 \end{cases} \]
하나의 TLU는 간단한 선형 이진 분류 문제에 사용할 수 있습니다.
입력의 선형 조합을 계산해서 그 결과가 임곗값을 넘으면 양성 클래스를 출력하고, 그렇지 않으면 음성 클래스를 출력합니다. 이 때 TLU를 훈련한다는 것은 최적의 \( w_{0}, w_{1}, \dots, w_{n} \)을 찾는 것입니다.
퍼셉트론은 층이 하나뿐인 TLU로 구성됩니다.
각 TLU는 모든 입력에 연결돼 있습니다.
한 층에 있는 모든 뉴런이 이전 층의 모든 뉴런과 연결되어 있을 때 이를 완전 연결 층(connected layer) 또는 밀집 층(dense layer)라고 부릅니다.
퍼셉트론의 입력은 입력 뉴런이라 불리는 뉴런에 주입됩니다.
이 뉴런은 어떤 입력이 주입되든 그냥 출력으로 통과시킵니다.
입력층은 모두 입력 뉴런으로 구성됩니다.
보통 입력층에 편향 특성이 더해집니다.
전형적으로 이 편향 특성은 항상 1을 출력하는 특별한 종류의 뉴런인 편향 뉴런으로 표현됩니다.
아래 그림은 입력 두 개와 출력 세 개로 구성된 퍼셉트론입니다.
이 퍼셉트론은 샘플을 세 개의 다른 이진 클래스로 동시에 분류할 수 있으므로 다중 레이블 분류입니다.
선형 대수학으로 한 번에 여러 샘플에 대해 인공 뉴런 층의 출력을 효율적으로 계산 가능합니다.
\[ h_{w, b}(X) = \phi(XW + b) \]
- \(X\): 입력 특성의 행렬입니다. 행은 샘플, 열은 특성입니다.
- \(W\): 가중치 행렬로 편향 뉴런을 제외한 모든 연결 가중치를 포함합니다. 이 행렬의 행은 입력 뉴런에 해당하고 열은 출력층에 있는 인공 뉴런에 해당합니다.
- \(b\): 편향 뉴런과 인공 뉴런 사이의 모든 연결 가중치를 포함합니다. 인공 뉴런마다 하나의 편향값이 있습니다.
- \(\phi\): 활성화 함수입니다. 인공 뉴런이 TLU일 경우 이 함수는 계단 함수입니다.
퍼셉트론의 훈련은 헤브의 규칙에서 영감을 받았습니다.
헤브의 규칙은 생물학적 뉴런이 다른 뉴런을 활성화시킬 때 이 두 뉴런의 연결이 강해진다는 규칙입니다.
퍼셉트론 학습 규칙은 오차가 감소되도록 연결을 강화시킵니다.
다시 말하면 퍼셉트론에 한 번에 한 개의 샘플이 주입되면 각 샘플에 대해 예측이 만들어집니다.
잘못된 예측을 하는 모든 출력 뉴런에 대해 올바른 예측을 만들 수 있도록 입력에 연결된 가중치를 강화시킵니다.
수식으로 나타내면 아래와 같습니다.
\[ \displaystyle w_{i, j}^{(next)} = w_{i, j} + \eta(y_{j} - \hat{y_{j}})x_{i} \]
- \(w_{i, j}\): i번째 입력과 j번째 출력 사이를 연결하는 가중치입니다.
- \(x_{i}\): 현재 훈련 샘플의 i번째 뉴런의 입력값입니다.
- \(\hat{y_{j}}\): 현재 훈련 샘플의 j번째 출력 뉴런의 출력값입니다.
- \(y_{j}\): 현재 훈련 샘플의 j번째 출력 뉴런의 타깃값입니다.
- \(\eta\): 학습률입니다.
각 출력 뉴런의 결정 경계는 선형이라서 복잡한 패턴을 학습하지는 못하지만 훈련 샘플이 선형적으로 구분될 수 있다면 이 알고리즘은 정답에 수렴합니다. 사이킷런은 하나의 TLU 네트워크를 구현한 Perceptron 클래스를 제공합니다.
퍼셉트론은 일부 간단한 문제를 풀 수 없을 뿐만 아니라 고수준 문제 또한 해결할 수 없는 단점이 있습니다.
퍼셉트론을 여러 개 쌓아올리는 다층 퍼셉트론(MLP)를 이용하면 일부 제약을 줄일 수 있는데,
이와 관련해서는 다음 포스트에서 다뤄보겠습니다.
'DATA > 머신 러닝' 카테고리의 다른 글
[머신 러닝] 모델 저장과 복원 (0) | 2022.01.22 |
---|---|
[머신 러닝] 다층 퍼셉트론 (0) | 2022.01.22 |
[머신 러닝] 비지도 학습 (0) | 2022.01.19 |
[머신 러닝] 차원 축소 (0) | 2022.01.18 |
[머신 러닝] 서포트 벡터 머신 (support vector machine) (0) | 2022.01.17 |