4-3. 신경망 기초: 다층 퍼셉트론 (MLP)
1. 다층 퍼셉트론 (MLP)의 이해
다층 퍼셉트론 (Multi-Layer Perceptron, MLP)은 딥러닝의 기본적인 구조 중 하나입니다. 이름에서 알 수 있듯이, 여러 층(layer)으로 구성된 퍼셉트론을 쌓아 올린 형태를 띕니다. 단일 퍼셉트론은 선형 분류 문제, 즉 입력 데이터를 두 개의 클래스로 나누는 데 사용될 수 있지만, MLP는 더 복잡한 비선형 문제까지 해결할 수 있도록 설계되었습니다. 마치 레고 블록을 쌓아 올리듯이, 간단한 연산 유닛들을 층층이 쌓아 복잡한 기능을 수행하는 것이 MLP의 핵심 아이디어입니다.
1) 퍼셉트론 복습
MLP를 이해하기 위해 먼저 퍼셉트론이 무엇인지 간단히 복습해 보겠습니다. 퍼셉트론은 입력 신호를 받아 가중치를 곱하고, 그 결과를 모두 더한 후, 활성화 함수를 적용하여 최종 출력을 생성하는 단순한 모델입니다.

수식으로 나타내면 다음과 같습니다.
$$ y = f\left(\sum_{i=1}^{n} w_i x_i + b\right) $$
여기서:
- $x_i$는 입력
- $w_i$는 가중치
- $b$는 편향(bias)
- $f$는 활성화 함수
- $y$는 출력
2) MLP의 구조
MLP는 이러한 퍼셉트론을 여러 층으로 쌓아 올린 구조를 가집니다. 일반적으로 입력층, 하나 이상의 은닉층(hidden layer), 그리고 출력층으로 구성됩니다. 각 층은 여러 개의 노드(node) 또는 뉴런(neuron)으로 이루어져 있으며, 각 노드는 이전 층의 모든 노드로부터 입력을 받아 가중치를 곱하고 활성화 함수를 적용하여 다음 층으로 전달합니다.

- 입력층 (Input Layer): 모델에 입력 데이터를 전달하는 층입니다. 입력 데이터의 차원에 따라 입력층의 노드 수가 결정됩니다.
- 은닉층 (Hidden Layer): 입력층과 출력층 사이에 위치하며, 입력 데이터를 학습하여 특징을 추출하는 층입니다. 하나 이상의 은닉층을 가질 수 있으며, 층의 개수와 각 층의 노드 수는 모델의 복잡도와 성능에 영향을 미칩니다.
- 출력층 (Output Layer): 모델의 최종 출력을 생성하는 층입니다. 문제의 종류(분류, 회귀 등)에 따라 출력층의 노드 수와 활성화 함수가 결정됩니다. 예를 들어, 이진 분류 문제의 경우 출력층은 하나의 노드를 가지며 시그모이드(sigmoid) 활성화 함수를 사용할 수 있습니다.
MLP는 이러한 층들을 연결하여, 복잡한 비선형 관계를 학습할 수 있습니다. 각 층의 퍼셉트론은 이전 층의 출력을 입력으로 받아 가중치, 편향, 활성화 함수를 사용하여 새로운 출력을 생성하고, 이러한 과정이 여러 층을 거치면서 데이터의 특징이 추상화되고 학습됩니다.
2. 활성화 함수 (Activation Function)
활성화 함수는 MLP의 중요한 구성 요소로, 각 노드의 출력을 결정하는 비선형 함수입니다. 활성화 함수는 모델이 복잡한 패턴을 학습할 수 있도록 하는 핵심적인 역할을 합니다. 활성화 함수가 없다면, MLP는 단순히 선형 회귀와 동일한 기능을 수행하게 됩니다. 즉, 선형 변환만으로는 복잡한 비선형 문제를 해결할 수 없기 때문에, 활성화 함수를 통해 비선형성을 부여하는 것이 중요합니다.
1) 활성화 함수의 종류
다양한 활성화 함수가 존재하며, 각 함수는 고유한 특성을 가지고 있습니다. 몇 가지 주요 활성화 함수를 살펴보겠습니다.
-
시그모이드 (Sigmoid): $f(x) = \frac{1}{1 + e^{-x}}$
- 출력 범위를 0과 1 사이로 제한하여, 확률 값을 표현하는 데 유용합니다.
- 하지만, 기울기 소실 문제(vanishing gradient problem)가 발생할 수 있습니다. 입력값이 너무 크거나 작으면 기울기가 0에 가까워져 학습이 멈출 수 있습니다.
- 하이퍼볼릭 탄젠트 (Tanh): $f(x) = tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$
- 출력 범위를 -1과 1 사이로 제한합니다.
- 시그모이드 함수보다 0을 중심으로 대칭적이기 때문에, 학습 속도를 향상시킬 수 있습니다.
- 시그모이드 함수와 마찬가지로, 기울기 소실 문제가 발생할 수 있습니다.
- ReLU (Rectified Linear Unit): $f(x) = max(0, x)$
- 입력이 0보다 작으면 0을 출력하고, 0보다 크면 입력을 그대로 출력합니다.
- 계산이 간단하고, 기울기 소실 문제를 완화하는 데 효과적입니다.
- 하지만, 입력이 음수일 경우 기울기가 0이 되어, 뉴런이 죽는(dying ReLU) 문제가 발생할 수 있습니다.
- Leaky ReLU: $f(x) = \begin{cases} x, & \text{if } x > 0 \\ \alpha x, & \text{if } x \le 0 \end{cases}$ ( $\alpha$는 작은 상수)
- ReLU의 변형으로, 음수 입력에 대해 작은 기울기를 부여하여 dying ReLU 문제를 해결합니다.
- ELU (Exponential Linear Unit): $f(x) = \begin{cases} x, & \text{if } x > 0 \\ \alpha (e^x - 1), & \text{if } x \le 0 \end{cases}$ ( $\alpha$는 상수)
- ReLU와 Leaky ReLU의 장점을 결합한 함수로, 음수 입력에 대해 완만한 기울기를 가지며, 출력의 평균을 0에 가깝게 유지하여 학습을 안정시킵니다.
- Softmax: $f(x_i) = \frac{e^{x_i}}{\sum_{j=1}^{n} e^{x_j}}$
- 출력 값을 0과 1 사이로 정규화하며, 모든 출력 값의 합이 1이 되도록 합니다.
- 다중 분류 문제에서, 각 클래스에 속할 확률을 표현하는 데 사용됩니다.
2) 활성화 함수 선택
어떤 활성화 함수를 선택할지는 문제의 특성과 데이터에 따라 다릅니다.
- 일반적으로, 은닉층에는 ReLU, Leaky ReLU, ELU와 같은 함수를 사용하고, 출력층에는 문제의 종류에 따라 적절한 활성화 함수를 사용합니다.
- 이진 분류에는 시그모이드, 다중 분류에는 소프트맥스를 사용하는 것이 일반적입니다.
- 회귀 문제에는 선형 활성화 함수 또는 ReLU를 사용할 수 있습니다.
3. 역전파 (Backpropagation) 알고리즘
MLP의 학습은 역전파 알고리즘을 통해 이루어집니다. 역전파는 모델의 출력과 실제 값 사이의 오차를 계산하고, 이 오차를 이용하여 각 층의 가중치를 업데이트하는 과정입니다.
1) 순전파 (Forward Propagation)
역전파를 이해하기 전에, 순전파 과정을 먼저 살펴보겠습니다. 순전파는 입력 데이터를 입력층에서 출력층으로 전달하는 과정입니다. 각 층의 노드는 이전 층의 출력을 입력으로 받아, 가중치를 곱하고, 편향을 더한 후, 활성화 함수를 적용하여 다음 층으로 전달합니다. 이러한 과정을 반복하여 최종 출력을 생성합니다.
2) 오차 계산
순전파를 통해 얻은 출력 값과 실제 값 사이의 오차를 계산합니다. 오차는 손실 함수(loss function)를 사용하여 측정되며, 손실 함수는 모델의 예측과 실제 값의 차이를 나타내는 척도입니다.
-
평균 제곱 오차 (Mean Squared Error, MSE): 회귀 문제에서 일반적으로 사용됩니다.
$$ MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y_i})^2 $$ - 교차 엔트로피 오차 (Cross Entropy Error, CEE): 분류 문제에서 일반적으로 사용됩니다.
$$ CEE = - \sum_{i=1}^{n} y_i \log(\hat{y_i}) $$
3) 역전파 (Backpropagation)
오차가 계산되면, 역전파 알고리즘을 통해 각 층의 가중치를 업데이트합니다. 역전파는 오차를 출력층에서 입력층 방향으로 거꾸로 전파하면서, 각 가중치에 대한 오차의 기울기(gradient)를 계산합니다. 기울기는 손실 함수를 가중치에 대해 미분한 값으로, 가중치를 얼마나 변경해야 오차를 줄일 수 있는지를 나타냅니다.

역전파 과정은 다음과 같습니다.
- 출력층에서 시작: 출력층의 가중치에 대한 기울기를 계산합니다.
- 손실 함수를 출력층의 출력에 대해 미분합니다.
- 출력층의 출력을 입력으로 사용하는 가중치에 대해 미분합니다.
- 체인 규칙(chain rule)을 사용하여, 각 가중치에 대한 기울기를 계산합니다.
- 은닉층으로 전파: 출력층의 기울기를 이용하여, 은닉층의 가중치에 대한 기울기를 계산합니다.
- 출력층의 기울기를 이전 층의 출력에 대해 미분합니다.
- 이전 층의 출력을 입력으로 사용하는 가중치에 대해 미분합니다.
- 체인 규칙을 사용하여, 각 가중치에 대한 기울기를 계산합니다.
-
가중치 업데이트: 계산된 기울기를 이용하여, 각 층의 가중치를 업데이트합니다.
- 경사 하강법 (Gradient Descent): 가중치에서 기울기에 학습률(learning rate)을 곱한 값을 빼줍니다.
$$ w := w - \eta \frac{\partial L}{\partial w} $$
- $\eta$는 학습률, $\frac{\partial L}{\partial w}$는 가중치에 대한 손실 함수의 기울기
- 학습률은 모델 학습 속도에 영향을 미치는 하이퍼파라미터입니다. 학습률이 너무 크면 학습이 불안정해지고, 너무 작으면 학습 속도가 느려집니다.
-
반복: 입력 데이터를 사용하여 순전파를 수행하고, 오차를 계산하고, 역전파를 수행하여 가중치를 업데이트하는 과정을 반복합니다. 이러한 반복 과정을 통해 모델은 데이터를 학습하고, 예측 성능을 향상시킵니다.
4) 역전파의 핵심: 체인 규칙
역전파의 핵심은 체인 규칙입니다. 체인 규칙은 합성 함수의 미분을 계산하는 방법으로, 여러 함수가 중첩된 경우 각 함수의 미분을 곱하여 전체 함수의 미분을 계산합니다. MLP의 경우, 각 층의 가중치, 편향, 활성화 함수 등이 중첩되어 있기 때문에, 체인 규칙을 사용하여 각 가중치에 대한 기울기를 계산합니다.
예를 들어, $z = f(g(x))$와 같은 합성 함수가 있다고 가정해 보겠습니다. 이 경우, $z$를 $x$에 대해 미분하면 다음과 같습니다.
$$ \frac{dz}{dx} = \frac{dz}{dg} \cdot \frac{dg}{dx} $$
즉, $z$를 $g$에 대해 미분하고, $g$를 $x$에 대해 미분한 값을 곱하면 됩니다. 역전파 알고리즘은 이러한 체인 규칙을 반복적으로 적용하여, 각 가중치에 대한 기울기를 계산합니다.
4. 응용 및 활용 사례
MLP는 다양한 분야에서 활용될 수 있으며, 딥러닝의 기본적인 빌딩 블록으로서 다양한 딥러닝 모델의 기반이 됩니다.
- 이미지 인식: 이미지 분류, 객체 감지 등
- 자연어 처리: 텍스트 분류, 감성 분석, 기계 번역 등
- 음성 인식: 음성 텍스트 변환, 화자 인식 등
- 시계열 데이터 분석: 주가 예측, 날씨 예측 등
- 추천 시스템: 사용자 선호도 예측, 상품 추천 등
MLP는 비교적 단순한 구조를 가지고 있지만, 충분히 복잡한 문제를 해결할 수 있습니다. 특히, 데이터의 전처리 과정을 통해 특징을 잘 추출하면, MLP만으로도 좋은 성능을 얻을 수 있습니다.
5. 주의사항과 트러블슈팅
MLP를 사용할 때 주의해야 할 사항과 발생할 수 있는 문제, 그리고 해결 방법을 살펴보겠습니다.
-
과적합 (Overfitting): 모델이 학습 데이터에 과도하게 맞춰져, 새로운 데이터에 대한 일반화 성능이 떨어지는 현상입니다.
- 해결 방법: 정규화(regularization), 드롭아웃(dropout), 조기 종료(early stopping) 등
- 기울기 소실/폭주 문제 (Vanishing/Exploding Gradient Problem): 역전파 과정에서 기울기가 너무 작아지거나 너무 커져, 학습이 제대로 진행되지 않는 현상입니다.
- 해결 방법: ReLU, Leaky ReLU, ELU와 같은 활성화 함수 사용, 가중치 초기화(weight initialization), 배치 정규화(batch normalization) 등
- 학습률 설정: 학습률은 모델의 학습 속도에 영향을 미치는 하이퍼파라미터입니다. 학습률을 적절하게 설정하지 않으면, 학습이 불안정하거나 수렴하지 않을 수 있습니다.
- 해결 방법: 학습률 스케줄링(learning rate scheduling), Adam, RMSprop과 같은 최적화 알고리즘 사용 등
- 데이터 전처리: 데이터의 품질은 모델의 성능에 큰 영향을 미칩니다. 데이터 전처리를 통해 데이터의 스케일을 조정하고, 이상치를 제거하고, 특징을 추출하는 것이 중요합니다.
- 해결 방법: 정규화(normalization), 표준화(standardization), 결측치 처리, 특징 공학(feature engineering) 등
6. 결론
MLP는 딥러닝의 기본적인 구조이며, 다양한 문제 해결에 활용될 수 있습니다. MLP의 구조, 활성화 함수, 역전파 알고리즘을 이해하고, 주의사항과 트러블슈팅을 숙지하면, 더욱 효과적으로 MLP 모델을 구축하고 활용할 수 있습니다. MLP는 딥러닝의 핵심 개념을 이해하는 데 중요한 모델이며, 앞으로 더 복잡한 딥러닝 모델을 학습하기 위한 훌륭한 기반이 될 것입니다.
Comments (0)
No comments yet. Be the first to comment!
Please to write a comment.