[8] Deep Learning - Perceptron
Perceptron
Perceptron은 가장 간단한 인공 신경망의 일종으로 TLU를 기반으로 구성된다.
TLU는 위의 그림과 같이 입력에 대해 가중치를 적용한 후 , 이를 모두 더해 계단 함수 ( step function )에 적용한다. 사용되는 계단 함수의 대표적인 예시는 Heavyside와 sign function 이 있다.
Heavyside step function - h(z)
- z >= 0 일 때 , 1
- z < 0 일 때 , 0
sign function - s(z)
- z < 0 일 때 , -1
- z = 0 일 때 , 0
- z > 0 일 떄 , 1
기본적인 Perceptron은 층이 하나뿐이고 이는 TLU로 구성된다. 이 TLU는 모든 입력에 대해 연결되어 있는 Fully connected 구조를 가진다. 입력층의 경우 , 입력 이외에도 bias 뉴런이 추가되기도 한다. bias 뉴런은 입력층에서 언제나 1을 출력하는 형태로 구성된다. 따라서 출력에 대한 식은 다음과 같이 나온다.
X는 입력에 대한 행렬이고 , W는 weight 행렬이다. b는 bias 벡터이며 이는 bias 뉴런과 TLU 층의 전체 뉴런 사이의 weight를 포함한다. Φ의 경우 activation function을 의미한다. 이 경우 activation function은 step function이 될 것이다.
Perceptron은 오차가 감소되는 방향으로 학습을 진행하며, 각 샘플 입력에 대한 예측이 잘못되었다면 올바른 예측을 할 수 있도록 연결된 weight를 강화하는 방향으로 학습이 이루어진다.
Perceptron의 경우 선형 관계를 계속 유지하기 떄문에 , 부드러운 곡선 경계나 함수를 학습하지 못한다. 하지만 Train set이 선형적으로 구분된다면 , 퍼셉트론 수렴 이론 ( Perceptron Convergence theorem )에 따라 정답에 수렴한다.
이러한 Perceptron은 선형 관계가 유지되었기 떄문에 단순한 XOR 문제도 풀 수 없었다. XOR 문제에 관한 내용은 아래 글에 나와있다.
[6] Deep Learning - Neural Network (tistory.com)
선형 경계를 가지고는 XOR 문제를 풀 수 없기 떄문에 Perceptron은 위 문제를 해결하지 못한다. 이에 대해 Perceptron을 여러 겹 쌓아 올리자는 아이디어가 제시되었고 이를 다층 퍼셉트론 ( Multi-Layer Perceptron ) MLP라고 한다.
MLP는 위와 같은 구조로 구성된다. 위의 그림에서 layer 사이의 화살표는 층과 층 사이 뉴런의 Fully connected를 의미한다. MLP는 위 그림과 같이 1개의 input layer , 1개 이상의 hidden layer , 1개의 output layer로 이루어진다. output layer를 제외하고 모든 layer는 bias 뉴런을 포함한다.
위의 그림에서 hidden layer를 여러겹 쌓아 올린 경우를 DNN ( Deep Neural Network )라고 한다. 이 MLP를 훈련하는 방법으로는 역전파 ( backpropagation ) 방법이 있다. backpropagation에 대한 내용은 아래 글에 나와있다.
[6] Deep Learning - Neural Network (tistory.com)
이러한 backpropagation은 다양한 activation function과 함께 사용된다. 예시로 하이퍼볼릭 탄젠트 함수와 ReLU가 있다.
MLP는 회귀 문제에도 사용할 수 있다. 문제 정의에 따라 output 뉴런의 수를 정하기만 하면 회귀 문제도 MLP를 통해 해결할 수 있다. 이러한 경우 output layer에 activation function을 사용하지 않기도 한다. 혹은 출력 경우에 따라 ReLU , softplus 같은 activation function을 사용한다. loss function의 경우 일반적으로 MSE 혹은 Huber 손실을 사용한다.
분류 문제의 경우 최종적인 output을 통해 분류해야 하므로 , 마지막 output layer의 activation function으로 softmax 함수를 사용할 수 있다. 또한 loss function의 경우 , 확률에 관해 사용하기 때문에 일반적으로 Log 손실 함수를 사용한다.
관련 코드
ref. "Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition"
'코딩 > 데이터 분석 이론 & 응용' 카테고리의 다른 글
[10] Deep Learning - Hyper Parameter Tuning (0) | 2022.01.17 |
---|---|
[9] Deep Learning - Keras Functional API (0) | 2022.01.14 |
[7] Deep Learning - CNN (0) | 2022.01.09 |
[6] Deep Learning - Neural Network (0) | 2022.01.09 |
[5] Co-Occurrence Networks Analyzing (0) | 2022.01.08 |