인공지능/머신러닝

[머신러닝 - 이론] 딥러닝 - 다층 퍼셉트론 구조, 다층 퍼셉트론의 학습 방법(Deep Learning - Multi Layer Perceptron structrue, MLP Learning method)

바보1 2022. 4. 9. 00:45

 

앞의 글을 읽으시면 이해에 도움이 됩니다.

 

2022.04.08 - [Computer Science/머신러닝] - [머신러닝 - 이론] 딥러닝 - 인공 신경망, 퍼셉트론과 학습 방법 (DeepLearning - Artificial Neural Network, Perceptron, Learning Method)

 

[머신러닝 - 이론] 딥러닝 - 인공 신경망, 퍼셉트론과 학습 방법 (DeepLearning - Artificial Neural Network, P

이제부터 머신러닝의 꽃인 딥러닝에 대해 알아보겠습니다. 사실 제 생각엔 딥러닝을 하기 전에 지도, 비지도 학습을 먼저 공부하고, 수학적 이론을 쌓은 다음에 공부해야 하는 게 맞다고 생각합

hi-guten-tag.tistory.com

퍼셉트론을 이해하셨다면 다층 퍼셉트론 (MLP : Multi Layer Perceptron)은 이해하기 쉬우실 겁니다.


1. 퍼셉트론의 한계

 

 

퍼셉트론은 한계가 명확합니다. 퍼셉트론은 선형이기 때문에 선형적이지 않은 데이터를 분리할 수 없습니다.

 

기존의 퍼셉트론은 and, or, not 문제를 해결할 수 있었지만, xor 문제를 해결할 수 없었습니다.

왜냐하면 퍼셉트론의 결정 경계는 선형적이고, 이 선형적인 결정 경계는 두 가지의 분류밖에 못하기 때문입니다.

 

이때 나온 것이 퍼셉트론을 여러 개 병렬로 결합한 다층 퍼셉트론입니다.


2. 다층 퍼셉트론 (MLP)

 

 

퍼셉트론을 병렬로 결합하여 비선형으로 확장할 수 있습니다.

 

신경망을 공간 변환기로 볼 수 있습니다.

원래 feature vector를 다른 임시 공간으로 변환하고, 임시 공간을 레이블 공간으로 변환하는 두 단계를 처리합니다.

이때 임시 공간에 해당하는 층을 은닉층(hidden layer)이라 부르고, 임시 공간을 은닉 공간(hidden space) 또는 잠복 공간이라 부릅니다.

즉 기존의 입력 데이터를 다른 공간으로 변환하여, 또다시 연산합니다.

 

이때 새로운 공간은 이전 공간보다 분류에 더 유리하도록 학습됩니다.

 

자연 영상이나 자연어처럼 복잡한 데이터는 은닉층이 수십~수백 개를 가지고 있고, 이런 깊은 신경망의 학습을 Deep Learning이라고 부릅니다.

 

 

 

2.1 MLP의 구조

 

MLP의 구조

이처럼 MLP의 구조는 입력층, 은닉층, 출력층으로 이루어져 있습니다.

이때 층을 연결하는 가중치 뭉치가 2개 있으므로 2층 신경망으로 간주합니다.

 

참고로 입력 값과 출력 값은 정해져 있는데, 은닉 층의 노드 갯수는 안 정해져 있죠?

하이퍼 파라미터입니다 ㅎㅎ

 

아무튼 은닉 노드가 많으면

  • 신경망의 용량이 커진다.
    • 학습 파라미터가 많아지고, 시간이 오래 걸리지만 다양한 파라미터를 학습할 수 있음
    • 고로 정확도가 올라감
  • 과잉 적합의 가능성이 높아진다
    • 다양한 파라미터가 오로지 학습 데이터를 위해 학습될 수 있음

 

 

이때 입력 층에서 은닉 층으로 가는 가중치 행렬을 U1, 은닉 층에서 출력 층으로 가는 가중치 행렬을 U2라고 하겠습니다.

 

U1의 크기는 P (은닉 층의 노드 개수) x I (입력 층의 개수)입니다.

이때 \(U1_{ji}\)는 i번째 입력 노드에서 j번째 은닉 노드를 연결하는 가중치입니다.

 

U2의 크기는 C (출력 층의 개수) x P (은닉 층의 노드 개수)입니다.

이때 \(U2_{kj}\)는 j번째 은닉 노드에서 k번째 출력 노드를 연결하는 가중치입니다.

 

즉 출력 값을 도출하는 전체 과정을 행렬로 표현하면,

\(o = \tau_2(U2\tau_1(U1 x^T))\)이 됩니다.

 

훈련 집합에 있는 샘플 전체를 한꺼번에 처리하는 식으로 쓰면,

\(X = \begin{pmatrix}x_1 \\x_2 \\\vdots  \\x_n \\ \end{pmatrix} = \begin{pmatrix}
1 & x^1_1 & \cdots  & x^1_d \\
1 & x^2_1 & \cdots  & x^2_d \\
\vdots & \vdots  & \ddots  & \vdots  \\
1 & x^n_1 & \cdots  & x^n_d \\
\end{pmatrix}\)

이 됩니다!

 

 

2.2 MLP의 다양한 활성 함수

 

퍼셉트론은 계단 함수를 사용하는데, 예측 결과를 0~1 사이의 확률로 표현해야 하는 경우에는 계단 함수는 부적절합니다.

 

따라서 MLP는 sigmoid, 딥러닝은 ReLU나 softmax를 주로 사용합니다.

 

Sigmoid

 

딱 봐도 0~1 사이의 확률을 표현하는데 적합할 것 같지 않나요?

 

 

ReLU

 

Softmax

 

자세한 수식은 나중에 알려드리겠습니다.

 

로지스틱 시그모이드, 소프트맥스는 거의 확률을 계산하기 위해 사용합니다.

 

암튼 이런 게 있다 정도면 아시면 됩니다.

 

 

2.3 오류 역전파 알고리즘, 손실 함수 설계

 

MLP는 오류 역전파 알고리즘을 통해 학습합니다.

퍼셉트론보다 복잡하지만 기본 원리는 같습니다.

 

신경망의 출력 벡터(예측값) o가 타겟 벡터(참값) y와 같을수록 가중치 행렬 U1, U2는 데이터를 잘 인식한다는 뜻입니다.

하지만 o와 y가 다르면 가까워지도록 U1, U2를 갱신해야 합니다. 오차가 클수록 갱신해야 하는 양은 큽니다.

 

이때 손실 함수 중에 평균 제곱 오차 (MSE : mean squared error)가 있습니다.

MSE는 y-o를 제곱하여 평균 내는 손실 함수입니다.

입니다.

 

이때 이 손실 함숫값을 기준으로 가중치를 갱신하는데,,,,,

자세한 수식 유도나 미분 값은 나중에 시간이 나면 올리겠습니다.

 

아무튼 오류 역전파란 무엇이냐?

 

출력층에서 시작하여 역방향으로 오류를 전파한다는 뜻에서 오류 역전파라고 부릅니다.

예측 값과 실제 값의 차이를 계산하여, 미분을 통해 입력 층으로 향하면서 가중치를 갱신합니다.


3. 요약

 

오늘은 MLP, 다층 퍼셉트론에 대해 알아봤습니다.

 

다층 퍼셉트론의 활성화 함수로는 렐루, 시그모이드 등등이 있고,

손실 함수로는 MSE를 비롯한 다양한 손실 함수를 사용합니다.

 

하이퍼 파라미터로는 은닉 층의 노드 갯수, 미니 배치 사이즈 (얼만큼 나눠서 투입할 건지), 학습률 등등이 있습니다.

 

감사합니다.

 

 

 

지적 환영합니다.