MLP (Multi Layer Perceptron)

2024. 9. 21. 21:39·머신러닝

Perceptron: Limitation

  • 먼저 단일 perceptron이 갖는 한계에 대해서 설명하겠습니다.
  • perceptron이란 classification 관점에서 봤을 때 두 category를 구분하는 초평면을 만드는 linear model입니다.
  • linear model은 이차원일 경우 1번(핑크색)과 같이 이 두 데이터 사이를 가장 잘 구분하는 하나의 직선을 찾습니다.
  • 2번(핑크색)과 같이 데이터가 있다고 하면, 다중선형회귀분석으로 표현되는 regression model은 이 데이터에 대해서 가장 적합한 회귀직선을 찾습니다.
  • 2번(핑크색)에서 저런 곡선(연두색)을 찾아낼 수 있다면, 설명변수와 종속변수가 갖고 있는 복잡한 관계를 잘 설명할 수 있습니다.
  • 문제는 설명변수와 종속변수의 관계식이 선형이 아닐 때 발생합니다.

Introduction

  • 선을 여러 개 그어서 합치자는 게 mlp의 핵심입니다.
    • 복잡한 문제를 풀기 위해 small and simple problem으로 decompose 하는 것입니다.
  • 왼쪽 그림을 보았을 때, 부호들을 잘 구분하려면,
    왼쪽 하단에 있는 -(마이너스)를 구분할 수 있는 퍼셉트론을 만들고, 오른쪽 상단에 있는 -(마이너스)를 구분할 수 있는 퍼셉트론을 만든 후 이 둘을 조합하면 됩니다.
    • 이는 오른쪽에 위치한 perceptron이 두개인 mlp에 대한 설명입니다.
  • perceptron은 선형 모형입니다. 이 선형 모형을 어떻게 조합하느냐에 따라 다양한 형태의 비선형 경계면 혹은 함수식이 만들어질 수 있습니다.

  • 1번(핑크색)은 hidden layer가 단 하나인 mlp입니다. 
    • 중간에 위치한 layer를 hidden layer라고 합니다.
    • 이 hidden layer를 여러 개 배치해서 모델의 복잡도를 높일 수 있습니다.
  • 3번(핑크색)처럼 hidden layer의 수가 점점 많아지면 -> 딥러닝 구조가 되는 것입니다.

Decision boundary of MLP

  • 다음으로 각각의 알고리즘들이 갖는 특징을 비교 및 설명하겠습니다.
  • 만약에 decision boundary가 piece-wise linear boundary (어떤 선들의 조합)이라고 하면,
    logistic regression은 그릴 수 있는 선의 개수가 하나입니다.
    그러나 이 선의 방향이나 기울기에 대해서는 제약이 없습니다.
  • 반면에 decision tree는 여러 개의 선을 그릴 수 있습니다.
    그러나, 선은 축에 수직으로 그려져야 합니다.
  • mlp는 선의 개수를 사전에 정할 수 있습니다.
    즉, 모델의 복잡도를 저희가 직접 조절할 수 있습니다.
  • 모델의 복잡도를 조절하기 위해서, hidden layer의 수 혹은 hidden node의 수를 바꿀 수 있습니다.
    • 본 강의에서는 hidden layer의 수는 하나로 고정하고, hidden node의 수를 바꿔가면서 학습을 진행합니다.
  • 또한, mlp는 선의 방향에 대해서도 제약이 없습니다.

Basic Structure

  • 이번 슬라이드에서는 다층 퍼셉트론 예시를 보겠습니다.
  • hidden node로 표현된 동그라미 하나가 perceptron 하나를 의미합니다.
  • $h_1$부터 $h_p$까지 p개의 perceptron이 존재합니다.
  • 각각의 설명변수들은 각 perceptron으로 다 연결이 됩니다.
    • $x_1$에 대해서 첫번째 perceptron은 $w_{11}$이라는 가중치에 의해서 연결됩니다.
    • p번 perceptron에 대해서는 $w_{1p}$라는 가중치 에 의해서 연결됩니다.
  • $w_{11}$과 $w_{1p}$는 같지 않을 확률이 높습니다.
  • 마지막에 각각의 perceptron이 처리했던 정보들을 취합합니다.

  • $y=\sum_{i=0}^p w_p^(2) h_p$에서 (2)의 의미는 hidden node에서 output node로 연결되는 가중치라는 뜻입니다.
  • 예를 들어 $w_{dp}^(1)$ 이렇게 표현하면 d번째 변수가 p번째 hidden node에 연결되는 가중치라는 것입니다.
    • 여기서 (1)은 input과 hidden node를 연결하는 가중치입니다.

  •  MLP를 이용한 classificaion 문제는 접근 방식이 조금 다릅니다.
  • classification은 output node가 복잡하게 만들어집니다.
  • output node의 개수는 class의 수와 같습니다.
    • encoding은 one-hot encoding을 수행합니다.
  • $z_j=\sum_{i=1}^p w_{jp}^{(2)}h_p$ : 여기서 $z_j$는 각 hidden node로부터 받은 선형 결합 값입니다.
  • $y_j$의 output node는, z값에 exponential을 씌운 값입니다.
    • z가 항상 0보다 큰 값을 갖게 하기 위해서 입니다.
  • $y_j=\frac{e^{z_j}}{\sum_{k=1}^{c}e^{z_k}}$ 이 식은 1번부터 c번까지 output node의 z값에 전부 exponential을 취하고 더한 것입니다.
    • $y_1+y_2+...+y_c=1$ 이 식이 항상 성립합니다. 이때, $0\leq y_i \leq 1$ 를 만족합니다.
    • $\sum_{i=1}{c}y_i=1$ : 각각의 출력 node의 최종적인 output은 해당 범주에 속하는 확률로써 해석할 수 있습니다.
    • $y_j=\frac{e^{z_j}}{\sum_{k=1}^{c}e^{z_k}}$ : 이 식을 softmax function이라고 합니다. 

The role of hidden nodes

  • hidden node의 개수는 인공신경망의 복잡도를 결정합니다.
  • hidden node를 많이 사용할수록 복잡한 decision boundary를 만들 수 있습니다.
    • 이 페이지의 예시 그림을 통해서도 알 수 있습니다.

XOR problem revisited

  • MLP가 어떻게 작동하는지 원리를 설명하겠습니다.
  • 1번과 같은 상황에서 두 범주를 구분하는 mlp를 만들겠습니다.
    • 왼쪽 하단에 위치한 파란색 동그라미만 구분할 수 있는 하나의 직선식을 만들어보겠습니다.
    • $a_1=x_1+x_2-\frac{3}{2}$ 입니다.
    • 이 식을 구조로 나타내면 3번입니다.
  • 원래는 activation function : $\frac{1}{1+e^{-a}}$를 쓰는데, 여기서는 exponential을 정의하기 어려우므로, step function을 사용합니다.
    • step function이란 a값이 0보다 크거나 같으면 1을 반환하고 0보다 작으면 -1을 반환하는 함수입니다.

  • 다음으로 오른쪽 상단에 위치한 파란색 동그라미만 구분할 수 있는 직선식을 만들어보겠습니다.
  • 해당하는 직선식은 $a_2=x_1+x_2-\frac{5}{2}$입니다. 이 직선식은 2번과 같이 표현됩니다.
    • 이 선 아래 있는 세 개 점들(주황색 네모 두개, 파란색 동그라미)에 대해서도 a를 구하고 다시 activation을 시키면 -1이 나옵니다.
      • 마지막 하나는 1이 나옵니다.

  • 계속해서, 원래 $x_1$, $x_2$라는 2차원 공간에 있던 네 개의 점들을 $h_1$, $h_2$라는 2차원 공간으로 매핑시킵니다.
  • $o=h_1+h_2-1$이라는 직선식을 만들어서 두 범주(동그라미, 네모)를 구분할 수 있게 되었습니다.
  • 같은 활성 함수에 넣어 계산 해보면,
    3번처럼 1, -1, -1 이 됩니다. 최종적인 output node는 4번 표의 y 컬럼처럼 구분이 됩니다.
  • 원래 공간에서는 linearly non-separable 했는데
    h라는 hidden node, 즉 perceptron에 의해 분리된 공간 상에서는 두 범주(동그라미, 네모)가 separable한 상황이 되었습니다.
  • 정리하면, 원래 공간에서 선형적으로 분리가 불가능했던 데이터 셋을,
    부분적으로 선형으로 분리시킨 다음에,
    그걸 결합해서 선형적으로 분리가 가능하게 만드는 것이 mlp의 원리입니다.

General formulation

  • 위 슬라이드는 각각의 노드를 구하는 계산식입니다.

Error Back-Propagation

  • 이번에는 gradient descent를 갖고 backpropagation을 설명하겠습니다.
  • 먼저 1번에 해당하는 hidden node와 output node 사이의 가중치는 $w_j^(2)$만 해결하면 됩니다.
    • 이를 정리하면, $(y_k-\hat{y}_k)\cdot h_j$가 됩니다.
  • 현재 정답과 $y_k$ 노드의 mlp에 의해 추정된 값 $\hat{y}_k$ 차이에 비례해서 gradient가 계산됩니다.

$\frac{\partial L_k}{\partial w_{ji}^{(1)}}=\frac{\partial L_k}{\partial y_k}\cdot \frac{\partial y_k}{\partial w_j^{(2)}}\cdot \frac{\partial h_j}{\partial a_j}\cdot \frac{\partial a_j}{\partial w_{ji}^{(1)}}\\ =(y_k-\hat{y}_k)\cdot w_j^{(2)}\cdot a_j \cdot(1-a_j)\cdot \mathbf{x}_{kj}$

  • 반면에 1번에서 첫번째 input layer와 hidden layer 사이의 가중치에 대한 gradient를 계산해보면,
    첫번째 실제 값과 추정된 값 사이의 차이가 얼마나 크냐,
    그리고 가중치에 연결되어 있는 input node의 값이 얼마냐 에 따라 그래디언트가 결정됩니다.

  • 예시를 살펴보겠습니다.
  • 1번 식과 2번 식에 넣어서 계산해보면, 1, -1.5가 나옵니다.
  • output node를 그냥 1 1 1로 연결해 보겠습니다.
  • 현재 가중치로 y값을 계산하면,
    $x_1=\frac{1}{2}$이고, $x2=\frac{1}{2}$이니까 $a_1=1$, $a_2=-1.5$가 됩니다.
    이걸 activation function에 넣으면 0.269, 0.818이 나옵니다.
    이걸 다시 $\sum w_j^{(2)} h$ 식에 넣어서 계산을 하면 2.087이 나옵니다.

  • 앞선 예시를 갖고 이제 update를 하겠습니다.
  • hidden layer하고 output layer를 사용해서, $\eta(y-\hat{y}\times h_1)$에서 $\eta$에 값을 넣습니다.
    • $\eta$는 학습률이라고 할 수 있습니다.
  • 학습률을 0.1이라고 가정하면,
    $w_1^{(2)}(new)$, $w_2^{(2)}(new)$, $w_0^{(2)}(new)$에 넣어 update를 하면,
    하나의 data point에 대해 1.029, 10.89, 1.109가 나옵니다.

  • 이번에는 hidde node1에 해당하는 부분을 update 하겠습니다.
  • 원래는 1번과 같이 1, 1, 0 이었는데, 해당하는 식에 넣어 계산을 하면 1.011, 1.011, 0.021로 update가 됩니다.
  • 두번째 hidden node에 대해서도 동일한 방식으로 update를 진행합니다.
  • 앞선 내용들을 계속 반복함으로써, data point를 번갈아 제공하며 최적의 performance를 내는 모형을 학습시킬 수 있습니다.

Other properties

  • mlp에는 몇 가지 종료 장치를 걸 수 있습니다.
    1. weight의 변화량이 적을 때
    2. 독립된 검증 데이셋을 사용해서 예측 오차가 일정 수준 이하로 떨어졌을 때
    3. epoch을 사전에 정한 만큼 충분히 도달했을 때
  • 또한 학습 데이터를 갖고 iteration을 계속 하면 overfit이 발생합니다.
    • 이 overfit을 방지하기 위한 몇가지 장치들이 있습니다. (여기서는 생략하겠습니다.)

 

 

[출처] : https://www.youtube.com/watch?v=Wsvem-tuCyM&list=PLetSlH8YjIfXMOuS4piqzJRvSZorDnNUm&index=16

 

'머신러닝' 카테고리의 다른 글

머신러닝에서 분류 과제 수행 단계  (1) 2024.10.24
Logistic Regression  (2) 2024.09.22
XGBoost  (1) 2024.09.21
SVM (Support Vector Machine) 1탄  (1) 2024.09.20
Random Forest  (0) 2024.09.19
'머신러닝' 카테고리의 다른 글
  • 머신러닝에서 분류 과제 수행 단계
  • Logistic Regression
  • XGBoost
  • SVM (Support Vector Machine) 1탄
chaeniverse
chaeniverse
통계 학도입니다. 지금은 현업에서 data scientist로 근무하고 있습니다. 인공지능(머신러닝/딥러닝)에 관심이 많습니다.
  • chaeniverse
    채스
    chaeniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (22)
      • 통계학 (11)
      • 머신러닝 (7)
      • 딥러닝 (3)
      • 논문 리뷰 (1)
      • etc (0)
      • Project (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 포트폴리오
  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
chaeniverse
MLP (Multi Layer Perceptron)
상단으로

티스토리툴바