본문 바로가기
IT/[딥러닝]

[자습일지] 딥러닝 핵심 기술

by Coffee With Me 2020. 8. 25.

출처 : 파이썬과 케라스를 이용한 딥러닝 강화학습 주식투자 - 퀀티랩 지음 http://quantylab.com/

 

퀀티랩 - Quantylab

코스피 Upward 2329.83 +25.24 +1.10%

quantylab.com

 

오차 역전파 기법

오차 역전파 기법은 인공신경망의 가중치 학습에 사용되는 기법이다. 인공지능에서의 학습이란 곧 가중치를 조율하는 일과 같아서, 가중치 조율을 통한 인공지능의 학습 과정을 간단히 '가중치 학습'이라고 부를 수 있다.

가장 마지막 계층부터 앞쪽 계층으로 순전파(forward)를 편미분한 값인 역전파(backward)를 곱해 나가면서 그 최종 역전파 값을 가중치에 더해서 조정한다.

 

자세한 과정은 https://wikidocs.net/37406 에서 자세히 배울 수 있었다.

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

최적해 탐색 기법

신경망 학습은 신경망의 가중치를 반복해서 갱신하는 과정이다. 학습 데이터는 입력 데이터와 레이블(정답 출력)로 구성 되어 있다. 학습을 통해 입력 데이터에 대한 신경망의 출력과 레이블과의 차이(손실)를 줄여 나간다. 

손실 함수(loss function)는 입력 데이터와 레이블로 손실을 구하는 함수이다. 대표적인 손실 함수로 평균제곱합(mean squared error, MSE)과 교차 엔트로피(cross entropy)가 있다.

 

MSE 손실 함수를 나타낸 수식은 다음과 같다.

MSE 손실 함수

w는 신경망의 가중치이며 z는 일련의 데이터의 가중치 곱의 합이고 t는 일련의 레이블이다. m은 z와 t의 크기이다. 신경망의 출력과 레이블을 뺀 값에 제곱을 취한 값의 평균이 손실이다.

 

교차 엔트로피의 수식은 다음과 같다.

이 손실 함수는 이진교차 엔트로피(binary cross entropy)로 레이블이 0과 1의 2가지일 때 사용할 수 있다.

 

신경망 학습은 결국 손실을 최소화 하는 과정이다. 대표적인 신경망 학습 기법으로 경사 하강법이 있다.

 

경사 하강법

경사 하강법은 손실 함수의 기울기에 학습 속도를(learning rate)를 곱해 가중치에서 뺌으로써 가중치를 갱신한다. 수식으로 표현하면 다음과 같다.

가중치 w에 손실함수의 기울기와 학습속도 α를 곱한 값을 빼줌으로써 갱신한다. 이 과정을 계속 반복했을 때 손실이 줄어들어야 하며 손실에 변화가 거의 없어질 때는 학습이 더 이상 이루어지지 않는다고 보고 학습을 종료한다.

학습속도 α는 너무 크게 설정하면 최적화가 잘 되지 않으며 너무 작게 설정하면 학습이 오래걸린다. 

 

확률적 경사 하강법

확률적 경사 하강법은 경사하강법과 학습방법이 동일하지만, 학습 수행 시점과 그 양에서 차이가 있습니다.

경사 하강법 : 학습 데이터에 포함된 샘플 하나하나 를 가중치 갱신에 사용

확률적 경사 하강법 : 미니 배치(mini batch)라고 하는 학습 데이터의 부분 집합을 한 번의 가중치 갱신에 사용

확률적 경사 하강법은 경사하강법에 비해 학습량이 적으며 그만큼 수행 속도가 빠르다. 대신 정확도는 조금 떨어질 수 있다.

따라서, 학습 데이터가 작으면 경사 하강법을, 학습 데이터가 크면 확률적 경사 하강법을 사용하는 것이 좋다.

 

 

과적합 해결 기법

정규화

정규화는 손실 함수에 람다(lambda) 상수와 가중치 제곱의 합을 곱해 더하는 방법이다.

손실 값을 줄이는 방향으로 학습이 진행됨과 동시에 가중치의 값도 줄여나가는 것이다.

 

 

드롭아웃

신경망의 일부 뉴런을 생략하고 학습을 진행하는 방법이다. 간단하면서도 강력한 과적합 회피 방법으로 많이 사용된다. 드롭아웃 된 뉴런에서 발생될 출력을 다음 레이어에 넘겨주지 않음으로써 과도하게 학습 데이터에 맞춰지는 것을 피할 수 있다.