brunch

You can make anything
by writing

C.S.Lewis

by 정지현 Nov 20. 2019

[딥러닝] 손으로 Feedforward/ Backpro

손으로 직접 계산해보는 Feedfoward, backpropagation


해당 내용은 2019년 2학기 연세대학교 정보대학원 기본 머신러닝 수업에서 feedforward neural network와 backpropagation을 손으로 직접 계산한 과제를 정리한 내용입니다.  


Deep neural network를 이해하는데 직접  계산하는 것이 큰 도움이 되며 backpropagation 또한 직접 계산해 본 것 결과 성능이 더 좋아지는 결과를 실제 확인할 수 있었습니다. 




우선, 가상의 시나리오를 설정합니다. 여기서는 A라는 가상의 회사에서 프로틴 파우더 섭취 횟수가 근육량에 증가에 미치는 효과 파악이라는 주제로 진행하였습니다. 참고로 input 데이터는 normalization을 따로 하지 않고 각 input 값들의 차이를 크게 두지 않았습니다. (보통은 0~1 사이의 값을 random 모듈을 사용하여 임의로 지정하는 방법을 사용하거나 특정 변수값이 클 경우 normalization 테크닉을 활용하여 input 값들의 차이가 크지 않게 조정합니다.)





파라미터수의 계산식은 3(input) x 2(hidden 1) x 2(hidden 2) + 5(bias, hidden 1, 2, output layer)



Activation/Loss function의 선정 방식은 Regression이기 때문에 위와 같이 ReLU와 Euclidean loss를 사용함. (Activation, loss function은 regression인지, binary classification, multiple classification 등 풀고자 하는 문제에 따라 달라짐.)




계산 값을 쉽게 하기 위해 임의로 weight, bias를 아래와 같이 주었습니다. (해당 과제의 목적은 실제로 Feedforward neural network와 backpropagation을 하는 것에 초점을 맞추었습니다.)






각 hidden layer마다 ReLU 함수를 사용했습니다. 실제 계산하는 방법은 Python 코드를 사용하면 쉽게 되며, 엑셀로도 가능합니다.



Python 코드 참고                                          


import numpy as np
def relu(x):
    return np.maximum(0, x)







근육 증가량 또한 우리가 임의로 지정해 두었습니다. Outpu(결과 값)과 기댓값의 차이가 위와 같이 발생했습니다.



자 이제 Backpropagation을 실시합니다. l




backward 과정을 계산하면서 weight, bias 값들이 아래와 같이 조정됩니다.



backpropagation 이후 다시 Feedforward를 실시하면 기존과는 달리 오차 값이 더 줄어든 것(성능이 더 좋아진 것)을 확인할 수 있습니다.


위의 계산방법이 FFNN 나 backpropagation을 공부하시는 분들에게 도움이 되길 바랍니다.


주의사항: 해당 내용의 불펌은 허용하지 않습니다. 


출처: 연세대학교 정보대학원 소속 정지현, 조은옥, 한치훈 3명

작가의 이전글 #2 프로그래밍을 배우면 좋은 점 - 마케팅/영업직군
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari