[0부터 만드는 Deep Learning] 신경망의 고속화 역전파 처리에 대해 해설해 보았다

소개



이 기사는 처음부터 만드는 딥 러닝 6장 오차 역전파법을 자신 나름대로 이해하고 알기 쉽게 출력한 것입니다.
문계의 스스로도 이해할 수 있었으므로, 기분을 편하게 읽어 주시면 다행입니다.
또, 본서를 학습할 때에 참고해 주시면 더욱 기쁩니다.

역전파 처리란?



전회도 조금 이야기했습니다만, 역전파 처리란 계산 그래프를 오른쪽으로부터 왼쪽으로 풀어나가는 처리를 하는 것으로, 각 변수의 미분을 구할 수 있습니다.

이전 장에서 구현한 신경망의 기울기 식은 수치 미분이라는 변수에 미세한 값을 더해 미분을 구하는 방법을 사용했습니다.
수치 미분은 간단하고 이해하기 쉽지만 처리 시간이 길다는 단점이 있습니다.
거기서 사용하는 것이 역전파 처리입니다.
신경망의 처리에 역전파 처리를 실장해 주는 것으로 기울기를 지금까지보다 고속으로 효율적으로 구할 수 있습니다.

이제는 파이썬으로 간단한 계산 그래프의 순전파 처리와 역전파 처리를 구현하고 싶습니다.

a = 100
as = 3
o = 50
os = 4
t = 1.1

# 順伝播処理
az = a * as # リンゴの合計金額
oz = o * os # みかんの合計金額
z = az + oz # リンゴみかんの合計金額
y = z * t # 合計金額

# 逆伝播処理
dy = 1 # 順伝播処理の答えyの微分

# z * tは掛け算なので各変数の値をそれぞれ入れ替えて前の微分をかける
dz = t * dy = 1.1 # zの微分
dt = z * dy = 500 # tの微分

# az + oz は足し算なので前の微分をそのまま継承する
daz = dz = 1.1 # azの微分
doz = dz = 1.1 # ozの微分

# o * osは掛け算なので各変数の値をそれぞれ入れ替えて前の微分をかける
do = os * doz = 4.4 # oの微分
dos = o * doz = 55 # osの微分

# a * asは掛け算なので各変数の値をそれぞれ入れ替えて前の微分をかける
da = as * daz = 3.3 # aの微分
das = a * adz = 330 # asの微分

상기와 같이 곱셈과 덧셈의 역전파 처리를 간단하게 할 수 있으므로, 이것을 이용하여 신경망에 역전파 처리를 구현한다.

좋은 웹페이지 즐겨찾기