[신경망 이해] 다층 퍼셉트론 오류 역전파 및 기울기 계산
개요
- 붓꽃 데이터를 대상으로 꽃의 종류를 분류
- 다층 퍼셉트론(Multi-Layer Perceptron, MLP) 모델의 오류 역전파 및 기울기 계산 과정 설명
데이터셋
- 붓꽃 데이터
- 꽃 종류
- setosa (50개)
- versicolor (50개)
- virginica (50개)
- 측정 항목
- sepal length (cm): 꽃받침 길이
- sepal width (cm): 꽃받침 넓이
- petal length (cm): 꽃잎 길이
- petal width (cm): 꽃잎 넓이
문제 정의
- 붓꽃의 종류가 무엇인지 표시되어 있는 데이터 세트를 사용하여 붓꽃 분류 기능을 학습합니다.
- 새로운 붓꽃 데이터에 대하여 종류가 무엇인지 예측합니다.
모델 함수 정의
- 입력층의 크기: 4
- 은닉층의 크기: 8 (다른 값으로 지정할 수도 있음)
- 출력층의 크기: 3
hypi=tanh(Wxh⋅x+bh)=Why⋅h+by=softmax(yi)=∑k=02eykeyi
- i는 붓꽃 종류에 부여한 인덱스 (0: setosa, 1: versicolor, 2: virginica)
- x는 한 개의 붓꽃에 대한 측정값 입력 벡터
- h는 은닉층의 노드
- y는 MLP 네트워크의 출력 벡터
- p는 붓꽃 종류별 예측 확률 벡터
- Wxh, Why는 모델 학습 가중치 파라미터 행렬
- bh, by는 모델 학습 바이어스 파라미터 벡터
비용 함수 정의
비용 함수로 크로스-엔트로피 손실(cross-entropy loss)을 사용합니다.
L=−ln(pc)
- c는 참인 종류
- pc는 참인 종류일 확률
예를 들어, 데이터 샘플의 참 값이 setosa(0)이고 해당 샘플에 대하여 모델로 계산한 확률 분포에서 setosa일 확률이 0.5일 때 손실 값은 다음과 같습니다.
c=0pc=0.5L=−ln(0.5)≈0.693
모델 파라미터 찾기
경사하강법(Gradient Descent)을 사용하여 손실 값을 줄일 수 있는 모델의 파라미터를 찾습니다.
기울기 수식 도출
찾고자 하는 파라미터를 변경하였을 때 영향을 받는 변수들을 화살표 방향으로 표시해 봄으로써 오류 역전파 경로를 파악하고 파라미터 변경에 대한 비용 함수의 기울기 수식을 도출할 수 있습니다.

∂Why∂L∂by∂L∂Wxh∂L∂bh∂L=∂Why∂y⋅∂y∂L=∂by∂y⋅∂y∂L=∂Wxh∂h⋅∂h∂y⋅∂y∂L=∂bh∂h⋅∂h∂y⋅∂y∂L
위의 기울기 수식에서 각각의 항목을 구하면 아래와 같습니다.
∂Why∂y∂by∂y∂Wxh∂h∂bh∂h∂h∂y=h=1=(1−h2)⋅x=(1−h2)⋅1=Why
남은 항목 ∂y∂L의 계산 과정은 생략하고 결과만 적으면 아래와 같습니다.
∂yi∂L∂yi∂L=pi=pi−1,fori=c,fori=c
이제 기울기 계산에 필요한 모든 항목을 구할 수 있게 되었습니다.
∂Why∂L∂by∂L∂Wxh∂L∂bh∂L=h⋅∂y∂L=1⋅∂y∂L=(1−h2)⋅x⋅Why⋅∂y∂L=(1−h2)⋅1⋅Why⋅∂y∂L
위 기울기 수식에서, L의 y에 대한 기울기는 주어진 샘플 데이터의 참 값이 무엇인지를 고려하여 식 (14)와 (15)로 계산합니다. 수식 (16) ~ (19)로부터 다음 두 가지 사항을 알 수 있습니다.
- 기울기 결정 요소
- 입력 값: x
- 현재의 파라미터 값들: Why
- 신경망을 통해 계산하는 과정에서 나오는 값들: h, pi
- 기울기 계산 대상
반복 수행 (학습 단계)
비용 함수의 값이 최솟값에 가까워지도록 아래의 과정을 수행합니다.
- 지정한 epoch 수만큼 반복
- 훈련 데이터의 수만큼 반복
- 예측 및 오류 계산
- 오류 역전파 과정에서 사용하기 위하여 x 보관
- h를 얻기 위하여 수식 (1)을 적용
- 오류 역전파 과정에서 사용하기 위하여 h 보관
- 위의 결과로 얻은 h에 대하여 수식 (2), (3)을 적용
- 수식 (4)를 통해서 오류 계산
- 오류 역전파 및 기울기 계산
- 수식 (9) ~ (15) 계산
- 수식 (16), (17)으로 비용 함수의 Why, by에 대한 기울기 계산
- 수식 (18), (19)로 비용 함수의 Wxh, bh에 대한 기울기 계산
- 파라미터 조정
WhybyWxhbh−=lr×∂Why∂L−=lr×∂by∂L−=lr×∂Wxh∂L−=lr×∂bh∂L
새로운 붓꽃의 종류 예측
새로운 붓꽃 데이터가 아래와 같이 주어졌을 때 학습을 마친 모델을 사용하여 꽃의 종류를 예측해 봅니다.
x=[6.1,3.3,5.1,2.4]
- x에 대하여 수식 (1)을 적용
- 위의 결과로 얻은 h에 대하여 수식 (2), (3)을 적용
- 수식 (3)의 결과 p0, p1, p2 중에서 제일 큰 값에 해당하는 종류를 채택
위에서, 출력층과 분류 확률의 구체적인 값은 예시를 위해 임의로 지정한 값입니다. 실제 모델에서는 다른 값일 수도 있습니다.
Written with StackEdit.