2층 신경망 구현하기

-오차 역전파로 2층 신경망 학습 시키기

p147

오차 역전파로 기울기를 구하는 함수 소개

<aside>

기존에 배웠던 신경망이 학습되는 원리

기울기를 구하기 위해 아래의 미분 함수 생성

def numerical_diff (f,x):
	h = 0.0001
	return ( f(x - h) -f(-h) / (2*h) )

위의 함수로 신경망을 학습시킬 시 구해야하는 가중치가 많기에 작업속도가 느리다는 단점이 있다

미분이 아닌, 도함수를 통한 미분계수 계산으로 작업속도 향상

image.png

</aside>

정리

  1. 기존에 numerical_diff 를 이용해서 오차함수를 미분해서 기울기를 구했더니 학습시간이 몇주일 몇달이 지속되었습니다.
  2. 그래서 컴퓨터 과학자들이 도함수를 이용해서 미분하자는 아이디어를 냈고 이 방법으로 신경망을 학습 시켰더니 몇시간 또는 몇분에 신경망 학습이 완료 되었습니다.

미분함수를 통해 미분계수(기울기) 구하는 실습

문제

도함수를 이용해서 신경망을 구성하면 빠르게 학습 시킬 수 있다. 구글에서 만든 텐써 플로우 함수 내에도 모두 도함수로 코딩되어져 있어 속도가 빠른것이다.

f(x) = 9x^5 + 2x^3 + 3x + 24
f(x') = 45*x**4 + 6*x**2 + 3
def f_prime(x):
	return 45*x**4 + 6*x**2 + 3
	
f_prime(4) #11619

계산 그래프를 이용해서 신경망 순전파 구현