AI 모델(딥러닝 기초)/4. 오차역전파법
-
4. 오차역전파법(4)AI 모델(딥러닝 기초)/4. 오차역전파법 2023. 1. 26. 10:29
※ 오차역전파법을 활용한 신경망 개선 이전 3장 마지막에서 기울기 개선에 대해서 살짝 언급하고 지나간 적이 있는 것을 기억할지 모르겠다. 신경망의 학습 순서 중 기울기 산출 단계에서 이전에는 수치미분을 사용하여 기울기를 산출했다. 하지만, 수치 미분법은 시간이 오래 걸려 현업에서는 잘 사용하지 않는다. 그렇다면 지금까지 배운 오차역전파법을 사용하여 기울기 산출 단계를 개선해 보자. import sys, os sys.path.append(os.pardir) import numpy as np from common.layers import * from common.gradient import numerical_gradient from collections import OrderedDict class TwoLa..
-
4. 오차역전파법(3)AI 모델(딥러닝 기초)/4. 오차역전파법 2023. 1. 25. 10:24
※ Affine 계층 - Affine transformation : 신경망의 순전파 때 수행하는 행렬의 곱 - Affine 계층 : 어파인 변환을 수행하는 처리 이 계산 그래프를 통해서 Affine 계층에 대해 알아보자. X,W,Y는 모두 행렬이며, 행렬 연산에 대해 궁금하다면 2장 신경망 부분을 찾아보기를 바란다. 순전파는 단순하게 구현이 가능하지만, 행렬 연산에서 고려할 형상의 중요성 때문에 역전파에서 dot(곱셈) 연산을 하는 경우에는 스칼라값 계산과 같이 단순하게 반대 입력값을 곱해주는 형식을 사용해서는 안된다. 예를 들어, X자리의 역전파를 만들 때를 생각해보자. X*W의 역전파가 (N,3)의 형상일 때 W가 (2,3)의 형상을 가지고 있다면 (N,3)과 (2,3)은 서로 곱셈이 불가능하므로 W..
-
4. 오차역전파법(2)AI 모델(딥러닝 기초)/4. 오차역전파법 2023. 1. 24. 11:19
이제 계산 그래프 이론으로만 이해했던 오차역전파법을 직접 구현해 볼 차례이다. ※ 덧셈 노드 계층 class AddLayer: def __init__(self): pass def forward(self, x, y): out = x + y return out def backward(self, dout): dx = dout * 1 dy = dout * 1 return dx, dy AddLayer라는 Class 형태로 덧셈 노드 계층을 구현할 수 있다. 순전파는 그대로를 보내고, 역전파도 그대로 아무것도 하지 않고 출력시키면 되기 때문에 초기화를 pass 시켰고, 순전파와 역전파 역시 우리가 오차역전파법(1)에서 그림으로 보았던 것처럼 그대로 출력을 시켜 주었다. ※ 곱셈 노드 계층 class MulLayer..
-
4. 오차역전파법(1)AI 모델(딥러닝 기초)/4. 오차역전파법 2023. 1. 20. 15:57
※ 오차역전파법(backpropagation) - 가중치 매개변수의 기울기를 효율적으로 계산하는 방법 1. 수식을 통한 설명 2. 계산 그래프를 통한 설명 ※ 계산 그래프 - 자료구조 Graph를 이용하여 노드와 에지를 사용하여 표현 순전파 : 계산 그래프(왼쪽 -> 오른쪽) 역전파 : 계산 그래프(오른쪽 -> 왼쪽) ■ 국소적 계산 - 전체에서 벌어지는 일과 상관없이 자신과 관계된 정보만으로 결과 출력이 가능함. - 중간 계산 결과를 모두 보관할 수 있음. - 역전파를 통해 '미분'을 효율적으로 계산 할 수 있음. 공부를 하는 교재의 그림을 참고하여 설명을 해보겠다. 순전파를 통해서 100원짜리 사과 2개를 산 후 소비세 10%가 붙을 때 지출하는 금액을 나타낼 수 있었다. 이를 역전파를 통해서 살펴보..