본문 바로가기

[Pytorch] MultiLayer Perceptron (MLP) & ReLU function

Derrick 발행일 : 2022-05-08
728x90
반응형

 

1. 기본 용어 및 특징

딥러닝에서 통용되고 있는 기본적인 용어들과 특징들을 공부해보자
 → Perceptron, Backpropagation, Overfitting 등등

1-1. Perceptron (퍼셉트론) - Single / Multi-layer

인공신경망 중 한 종류로, 무언가를 인지하고 그 정보를 통해 문제를 해결하는 결과를 도출하는 것.

 

[ Multi-layer Perception, MLP ]

 

위의 사진처럼 Perceptron의 원리는 input(x)가 들어왔을 때, x들에 weight(가중치)를 곱하고 이 가중치들의 합과 Bias를 더해서 Activation function을 통해 output이 출력되는 것이다.
우리는 어떤 inputs에 대한 정답 label을 가지고 Perceptron의 성능을 확인할 수 있고 Training을 통해 정확한 결과에 도달하지 못할 때마다 Training error(=loss)를 산출하게 된다.
→ 이때 성능을 개선하기 위해서는, 이 Perceptron들을 정의하는 Parameter(=weight, bias)의 값을 앞서 구한 loss를 감소시키는 방향으로 "최적의 값을 갖는 Parameter"를 찾음으로써, 최대한 정답(Ground Truth)에 가깝도록 설계하는 것이 딥러닝의 궁극적인 목표인 것이다.

 

[ Deep Neural Networks, DNN ]

 

MultiLayer Perceptron(MLP, 다층 퍼셉트론)은 input과 output 사이에 hidden layer(은닉층)이 있다는 점에서 Single Layer(단층 퍼셉트론)과 다르다. 또한 위 사진과 같이 은닉층이 2개 이상인 신경망을 심층 신경망(Deep Neural Network, DNN) 이라고 한다.

1-2. Backpropagation (역전파)

 

[ Backpropagation Neural Network Architecture ]

 

Backpropagation은 신경망(Neural Network)를 학습시키기 위한 알고리즘 중 하나이다.
→ 본인이 산출하고픈 target과 실제 모델이 예측/계산한 output의 차이가 얼마나 나는지 계산 후, 그 오차값(loss)을 다시 뒤로 전파하면서 각 노드가 가지고 있는 변수들을 업데이트하는 방식이다.

 

[ 순전파와 역전파를 통한 가중치(w) 업데이트 과정 ]

 

위와 같이, Forward(순전파) -> Backpropagation(역전파) -> Weight 업데이트 -> 순전파 -> ... 과정으로 Training이 이루어지며, 이상적으로 오차값(loss)가 0 에 가까워지게 된다.

1-3. Regression(회귀) vs Classification(분류)

 

[ Classification vs Regression ]

 

# Regression : Linear Reression, Logistic Regression 등
→ Classification과 다르게 0 or 1 혹은 비연속적인 수치가 아닌 연속된 값을 결과로 가진다.
 즉, 주어진 데이터의 특성 및 경향을 파악하고 함수 및 수치를 예측하는 것. ex) 생산량, 지수 예측 등

# Classification : Label이 있는 output값을 통해 각각의 데이터를 분류하는 과정
 → Binary : 주어진 입력에 대해서 둘 중 하나의 답을 선택하는 과정. ex) 합격 / 불합격
 → Multi-class : 주어진 입력에 대해 3개 이상의 선택지(class) 중 하나로 판단하는 과정

1-4. Sample(샘플) & Feature(특성)

- Sample (샘플) : 하나의 데이터
- Feature (특성) : 종속 변수(y)를 예측하기 위한 각각의 독립 변수(x)
  ex) 사람 100명에 대한 키, 몸무게, 나이 등의 10개 건강지표가 있다면,
 → 100개의 Sample과 10개의 Feature로 구성된 데이터 테이블이라고 정의할 수 있다.

 

1-5. Overfitting (과적합)

Overfitting (과적합)이란, Training data를 과하게 학습한 경우를 의미한다.
이때 Training data에 대해 Error가 낮지만, Test data에서는 Error가 높아지는 문제가 발생한다.

 

 

 위의 그래프는 학습의 진행에 따른 Decision boundary의 변화로 보여주고 있다. (빨간선 : class)
보통 loss가 감소하는 방향으로 학습이 진행될수록 boundary는 dataset에 알맞게 fitting되지만, Overfitting의 경우 Training data와 다른 양상의 Test data에 대해 더 낮은 Accuracy를 갖는다.

 

[ Under-fitting ~ Over-fitting ]

 

위의 그래프는 Epoch에 따른 Training loss와 Test loss를 비교한 것이다.
 - Underfitting : Training loss와 Test loss가 함께 감소하는 구간
 - Overfitting : Training loss는 정상적으로 감소하지만, Test loss가 증가하는 구간
이러한 Overfitting 문제를 방지하기 위한 Augmentation, Dropout 등의 기법은 다음 노트에서..

 

2. ReLU (Non-Linear Activation function)

Linear function(선형층)으로 은닉층을 1회 추가한 것과 연속으로 쌓는 경우는 차이가 없기 때문에, Activation function으로는 비선형(Non-linear) 함수를 사용하고 은닉층을 계속 추가한다.
→ 이 때, 기존에 사용한 Sigmoid 함수의 문제점과 이를 보완한 ReLU 함수를 공부하자.

 

2-1. Vanishing Gradient

 

[ Description of Vanishing Gradient ]

 

위의 사진에서 알 수 있듯이 신경망을 학습할 때, Backpropagation(역전파) 과정에서 input 층으로 갈수록 Gradient(기울기)가 점차적으로 소멸(Vanishing)됨으로써 Weight(가중치)의 업데이트가 제대로 이루어지지 않는 현상을 "Vanishing Gradient(기울기 소실)"라고 한다.

 

 

위의 Sigmoid 함수을 보면 양끝단에서 기울기가 0에 매우 가까워지는 것을 확인할 수 있다.
이 함수를 사용하는 여러 layer들이 쌓였을 경우, 아주 작은 Gradient가 계속 곱해지면서 앞단에서는 Gradient를 전파받을 수 없게 되고, 이에 따라 업데이트되야 할 Weight(W)가 학습되지 않게 된다.

 

2-2. ReLU function

ReLU 함수x값에 음수로 input이 들어오면 0을 출력하고, 양수일 경우 입력값 그대로 반환된다.

 

[ ReLU function ]

 

ReLU function을 적용하면, x값이 음수만 아니면 gradient를 1이 되도록 하기 때문에 위의 Vanishing Gradient 문제를 해결할 수 있으므로 신경망에서 가장 많이 쓰이는 함수이다.

 

 

댓글