본문 바로가기

딥러닝

모두의 딥러닝 (3) - 오차 수정하기 : 경사 하강법

저번 장에서 오차를 확인하는 최소제곱법, 평균 제곱근 오차에 대해 공부했다면 

이번 장에서는 그 오차를 계속 수정하면서 오차를 최소화 시키는 방법인 경사 하강법에 대해서 배우겠습니다!

이차함수

위 그림을 보면 x가 p일 때 오차가 제일 작다. 즉, x가 p와 가까워질수록 오차가 점점 작아진다는 것!!

그러면 만약 x가 p와 멀리 떨어져 있을때 오차를 줄이면 되는데 그것을 하기 위해서는 현재 있는 지점이 다음에 진행될 지점와 비교해 p와 어느정도 떨어져 있는지 컴퓨터가 알아야 한다!

하지만 우리는 어느 지점이 우리가 원하는 p 값인지 모르게 때문에 '미분'을 사용!

현재 있는 지점에서 미분을 하면 그 기울기가 나오는데 x가 p에 가까울수록 미분된 기울기가 0에 가까워진다.

위 그림으로 좀 더 자세히 설명을 드리자면

 

1. a1에서 미분을 구하고

2. 구해진 기울기의 반대 방향(기울기가 (+)면 음의 방향, (-)면 양의 방향)으로 얼마간

   이동시킨 a2에서 미분을 또 구하고

3. 그렇게 이동된 a3에서 미분을 계속 구해서

4. 그 a가 m이 되도록 미분된 값이 0이 될 때까지 반복!

 

현재 이 그림처럼 오차를 잘 찾아간 이유는 학습률이 적절했기 때문이다.

학습률이란 기울기의 부호를 바꿔 이동시킬 때 적절한 거리를 찾지 못하고 멀리 이동시키면 a의 값이 발산하게 되는데 이것을 방지하고 오차 최소화를 하기 위해서 이동 거리를 정해주는 것이 바로 학습률! 딥러닝에서 최적의 학습률을 찾는 것은 중요한 최적화 과정 중 하나이다.

즉 => 오차의 변화에 따라 이차 함수 그래프를 만들고 적절한 학습률을 설정해 미분 값이 0인 지점을 구하는 것! 이렇게 그래프에서 오차를 비교하여 가장 작은 방향으로 이동시키는 방법이 바로 경사 하강법! 코딩으로도 설명을 하자면

 

저번 글에서 평균 제곱근 오차를 구할 때는 직접 rmse라는 함수를 만들어서 활용을 했는데 

보시는 거와 같이 Tensorflow에는 reduce_mean, square등등의 함수가 내재되어 있어서 바로 사용했다! 

다음 장은 딥러닝에서 선형 회귀만큼 중요한 참 거짓 판단 장치: 로지스틱 회귀를 배워볼 예정이다!