페이지

2025년 7월 1일 화요일

[신경망 이해] 다층 퍼셉트론 오류 역전파 및 기울기 계산

[신경망 이해] 다층 퍼셉트론 오류 역전파 및 기울기 계산

개요

  • 붓꽃 데이터를 대상으로 꽃의 종류를 분류
  • 다층 퍼셉트론(Multi-Layer Perceptron, MLP) 모델의 오류 역전파 및 기울기 계산 과정 설명

데이터셋

  • 붓꽃 데이터
    • 꽃 종류
      • setosa (50개)
      • versicolor (50개)
      • virginica (50개)
    • 측정 항목
      • sepal length (cm): 꽃받침 길이
      • sepal width (cm): 꽃받침 넓이
      • petal length (cm): 꽃잎 길이
      • petal width (cm): 꽃잎 넓이

문제 정의

  1. 붓꽃의 종류가 무엇인지 표시되어 있는 데이터 세트를 사용하여 붓꽃 분류 기능을 학습합니다.
  2. 새로운 붓꽃 데이터에 대하여 종류가 무엇인지 예측합니다.

모델 함수 정의

  • 입력층의 크기: 4
  • 은닉층의 크기: 8 (다른 값으로 지정할 수도 있음)
  • 출력층의 크기: 3

h=tanh(Wxhx+bh)y=Whyh+bypi=softmax(yi)=eyik=02eyk \begin{alignat}{4} h& = tanh (W_{xh} \cdot x + b_{h}) \\ y& = W_{hy} \cdot h + b_{y} \\ p_{i}& = softmax(y_{i}) = \frac {e^{y_i}} { \sum_{k=0}^2 e^{y_k} } \\ \end{alignat}

  • ii는 붓꽃 종류에 부여한 인덱스 (0: setosa, 1: versicolor, 2: virginica)
  • xx는 한 개의 붓꽃에 대한 측정값 입력 벡터
  • hh는 은닉층의 노드
  • yy는 MLP 네트워크의 출력 벡터
  • pp는 붓꽃 종류별 예측 확률 벡터
  • WxhW_{xh}, WhyW_{hy}는 모델 학습 가중치 파라미터 행렬
  • bhb_{h}, byb_{y}는 모델 학습 바이어스 파라미터 벡터

비용 함수 정의

비용 함수로 크로스-엔트로피 손실(cross-entropy loss)을 사용합니다.

L=ln(pc) \begin{alignat}{4} L&=-ln(p_{c}) \end{alignat}

  • cc는 참인 종류
  • pcp_c는 참인 종류일 확률

예를 들어, 데이터 샘플의 참 값이 setosa(0)이고 해당 샘플에 대하여 모델로 계산한 확률 분포에서 setosa일 확률이 0.5일 때 손실 값은 다음과 같습니다.

c=0pc=0.5L=ln(0.5)0.693 \begin{aligned} & c = 0 \\ & p_c = 0.5 \\ & L = -ln(0.5) \approx 0.693 \end{aligned}

모델 파라미터 찾기

경사하강법(Gradient Descent)을 사용하여 손실 값을 줄일 수 있는 모델의 파라미터를 찾습니다.

기울기 수식 도출

찾고자 하는 파라미터를 변경하였을 때 영향을 받는 변수들을 화살표 방향으로 표시해 봄으로써 오류 역전파 경로를 파악하고 파라미터 변경에 대한 비용 함수의 기울기 수식을 도출할 수 있습니다.

LWhy=yWhyLyLby=ybyLyLWxh=hWxhyhLyLbh=hbhyhLy \begin{alignat}{5} \frac {\partial L}{\partial W_{hy}}& = \frac {\partial y}{\partial W_{hy}} \cdot \frac {\partial L}{\partial y} \\ \frac {\partial L}{\partial b_{y}}& = \frac {\partial y}{\partial b_{y}} \cdot \frac {\partial L}{\partial y} \\ \frac {\partial L}{\partial W_{xh}}& = \frac {\partial h}{\partial W_{xh}} \cdot \frac {\partial y}{\partial h} \cdot \frac {\partial L}{\partial y} \\ \frac {\partial L}{\partial b_{h}}& = \frac {\partial h}{\partial b_{h}} \cdot \frac {\partial y}{\partial h} \cdot \frac {\partial L}{\partial y} \end{alignat}

위의 기울기 수식에서 각각의 항목을 구하면 아래와 같습니다.

yWhy=hyby=1hWxh=(1h2)xhbh=(1h2)1yh=Why \begin{alignat}{4} \frac {\partial y}{\partial W_{hy}}& = h \\ \frac {\partial y}{\partial b_{y}}& = 1 \\ \frac {\partial h}{\partial W_{xh}}& = (1 - {h}^2) \cdot x \\ \frac {\partial h}{\partial b_{h}}& = (1 - {h}^2) \cdot 1 \\ \frac {\partial y}{\partial h}& = W_{hy} \end{alignat}

남은 항목 Ly\frac {\partial L}{\partial y}의 계산 과정은 생략하고 결과만 적으면 아래와 같습니다.

Lyi=pi,foricLyi=pi1,fori=c \begin{alignat}{4} \frac {\partial L}{\partial y_i}& = p_i &{, \quad for \quad i \ne c} \\ \frac {\partial L}{\partial y_i}& = p_i - 1 &{, \quad for \quad i = c} \end{alignat}

이제 기울기 계산에 필요한 모든 항목을 구할 수 있게 되었습니다.

LWhy=hLyLby=1LyLWxh=(1h2)xWhyLyLbh=(1h2)1WhyLy \begin{alignat}{5} \frac {\partial L}{\partial W_{hy}}& = h \cdot \frac {\partial L}{\partial y} \\ \frac {\partial L}{\partial b_{y}}& = 1 \cdot \frac {\partial L}{\partial y} \\ \frac {\partial L}{\partial W_{xh}}& = (1-h^2) \cdot x \cdot W_{hy} \cdot \frac {\partial L}{\partial y} \\ \frac {\partial L}{\partial b_{h}}& = (1-h^2) \cdot 1 \cdot W_{hy} \cdot \frac {\partial L}{\partial y} \end{alignat}

위 기울기 수식에서, LLyy에 대한 기울기는 주어진 샘플 데이터의 참 값이 무엇인지를 고려하여 식 (14)와 (15)로 계산합니다. 수식 (16) ~ (19)로부터 다음 두 가지 사항을 알 수 있습니다.

  • 기울기 결정 요소
    • 입력 값: xx
    • 현재의 파라미터 값들: WhyW_{hy}
    • 신경망을 통해 계산하는 과정에서 나오는 값들: hh, pip_{i}
  • 기울기 계산 대상
    • 훈련 가능한 개별 파라미터별

반복 수행 (학습 단계)

비용 함수의 값이 최솟값에 가까워지도록 아래의 과정을 수행합니다.

  1. 지정한 epoch 수만큼 반복
    1. 훈련 데이터의 수만큼 반복
      1. 예측 및 오류 계산
        1. 오류 역전파 과정에서 사용하기 위하여 xx 보관
        2. hh를 얻기 위하여 수식 (1)을 적용
        3. 오류 역전파 과정에서 사용하기 위하여 hh 보관
        4. 위의 결과로 얻은 hh에 대하여 수식 (2), (3)을 적용
        5. 수식 (4)를 통해서 오류 계산
      2. 오류 역전파 및 기울기 계산
        1. 수식 (9) ~ (15) 계산
        2. 수식 (16), (17)으로 비용 함수의 WhyW_{hy}, byb_y에 대한 기울기 계산
        3. 수식 (18), (19)로 비용 함수의 WxhW_{xh}, bhb_h에 대한 기울기 계산
      3. 파라미터 조정
        Why=lr×LWhyby=lr×LbyWxh=lr×LWxhbh=lr×Lbh \begin{alignat}{4} W_{hy}& -= l_r \times \frac {\partial L}{\partial W_{hy}} \\ b_{y}& -= l_r \times \frac {\partial L}{\partial b_{y}} \\ W_{xh}& -= l_r \times \frac {\partial L}{\partial W_{xh}} \\ b_{h}& -= l_r \times \frac {\partial L}{\partial b_{h}} \\ \end{alignat}
  • lrl_r은 학습 속도

새로운 붓꽃의 종류 예측

새로운 붓꽃 데이터가 아래와 같이 주어졌을 때 학습을 마친 모델을 사용하여 꽃의 종류를 예측해 봅니다.

x=[6.1,3.3,5.1,2.4] x = [6.1, 3.3, 5.1, 2.4]

  1. xx에 대하여 수식 (1)을 적용
  2. 위의 결과로 얻은 hh에 대하여 수식 (2), (3)을 적용
  3. 수식 (3)의 결과 p0p_0, p1p_1, p2p_2 중에서 제일 큰 값에 해당하는 종류를 채택

위에서, 출력층과 분류 확률의 구체적인 값은 예시를 위해 임의로 지정한 값입니다. 실제 모델에서는 다른 값일 수도 있습니다.

Written with StackEdit.

[신경망 이해] 다층 퍼셉트론 오류 역전파 및 기울기 계산

[신경망 이해] 다층 퍼셉트론 오류 역전파 및 기울기 계산 개요 붓꽃 데이터를 대상으로 꽃의 종류를 분류 다층 퍼셉트론(Multi-Layer Perceptron, MLP) 모델의 오류 역전파 및 기울기 계산 ...