클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

딥러닝 11 - 활성화 함수, 오차역전파, 경사하강법 그리고 relu 함수에 대하여 본문

인공지능/딥러닝

딥러닝 11 - 활성화 함수, 오차역전파, 경사하강법 그리고 relu 함수에 대하여

huenuri 2024. 9. 22. 18:11

이제 딥러닝 수업이 하루치만 남아있다. 빠르게 학습을 마치고 다음 과목을 공부해보고 싶다.


 

 

 

딥러닝 개념 정리

 

 

 


 

 

 

오늘 학습할 개념들

 

 

 

 

 

 

 

 

 

1. 활성화 함수

 

 

 

 

 

 

 

초기에는 계단 함수를 사용했는데 문제가 발생한다.

 

 

 

 

 

 


 

 

 

2. 경사 하강법

 

 

 

 

 

 

 

이 기울기를 미분해서 구하는 것이다. 공식을 암기할 필요는 없지만 이 알파값이 Learning rate라는 것 정도는 알고 있어야 한다. 기울기가 급하면 내려가는 보폭이 커지는 것을 생각하면 된다. 만약 예측값이 10인데, 실제값이 15가 나왔다면 기울기를 왼쪽으로 이동해야 한다고 판단한다. 이때 얼마만큼 왼쪽으로 이동할지 결정하는 것이 Learning rate(학습률) 알파값이다.

초기에는 랜덤값으로 설정이 되니 그때의 순간 기울기를 찾고, 이후 기울기가 낮아지는 방향으로 설정하는 것이 경사하강법이다.


 

 

 

 

 

학습률이 너무 큰 경우에는 비효율적인 학습을 하게 되고, 너무 작은 경우에는 목표량에 빠르게 도달하지 못하게 된다. 왜 계단 함수는 활성화 함수로 사용하지 못할까? 그 이유는 계단 함수는 역치는 있지만 기울기 개념을 갖지 못하기 때문이다. 이렇게 해서 기울기가 있는 곡선 형태의 Sigmoid 함수가 나오게 된 것이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

3. 오차 역전파에 대하여

지난 시간에 내가 쓴 코드는 이상하게도 선생님처럼 나오지 않고 성능이 훨씬 안 좋았다. 그 이유를 이번 수업을 통해 알게 되었다. 난 중간층을 더 깊게 쌓았기 때문이다.

상식적으로 보면 더 깊게 쌓았으니 성능이 좋을 것으로 생각하겠지만 오히려 성능이 떨어지는 현상이 발생한다. 이것은 오차 역전파 때문이다.

 

 

 

 

역전파는 순전파와 반대로 다시 입력층 쪽으로 전파를 이동하며 학습해 가는 과정이다. 순전파에서는 예측 과정을 거치고, 역전파에서는 오차를 통한 학습을 통해 w값을 예측해나간다.

 

 

 

 

순전파에서는 y = wx + b에서 y값을 예측해 나간다면, 역전파에서는 기울기를 구하는 경사하강법으로 미분해나가는 과정을 거친다. 딥러닝에서는 이러한 순전파와 역전파 과정을 반복해서 나아간다.

 

 

 

 

 

 

sigmoid 함수는 최대 오차가 0.25이므로 오차가 0.25씩 감해진다. 미분을 함으로 오차가 수정되어 제대로된 선을 긋지 못하게 된다.

 

 

 

 

 

 

역전파에서 오차를 학습해나감으로 이 함수에서만 0.25가 9번 곱해지게 된다. 오차가 원래 1만이었다고 하면 0.25를 9번 곱한 값이 곱해져 오차값은 0.2가 된다. sigmoid 함수를 만나면 오차가 없는 것처럼 손실이 되는 것이다.

조금 전에 성능이 낮아졌던 이유도 바로 이것이다. 한 층만 사용했을 때는 기울기가 손실이 크지 않아서 별 영향이 없다. 하지만 층을 깊게 쌓을수록 시그모이드 함수를 중간층으로 사용함으로 제대로된 학습을 할 수 없다.

 

이럴 때는 sigmoid 함수를 기울기 손실이 되지 않는 함수로 바꾸어 주어야 한다.


 

 

 

 

 

4. Simgmoid 함수 해결 방법 : relu

 

 

 

 

 

 

 

 

그래서 찾은 함수가 렐루이다.

 

 

 

 

렐루 함수로 바꾸어서 신경망 모델을 진행해보았다.

 

 

 

이제 90% 이상의 제대로된 성능을 내고 있음을 확인할 수 있다.

 


 

 

 

학습을 마치고

2시간 정도의 학습 내용을 한 페이지에 정리해보았다. 새로운 개념을 학습할 때가 난 가장 흥미로운 것 같다. 이제 오전 수업의 마지막 교시가 남아있는 것 같다. 1시간 반 정도 남았지만 이것도 수업을 들으며 정리하다보면 금방 시간이 지나갈 것 같다.

함수라는 건 참 재미있는 분야임을 요즘 느끼고 있다. 프로그래밍에서도 함수가 매우 중요한데, 인공지능 분야도 그런 모양이다.