머신러닝딥러닝/딥러닝

딥러닝(Deeping Learning) #7 - 오차 역전파/신경망

orangecode 2022. 4. 12. 18:39
728x90
오차역전파

다층 퍼셉트론의 최적화과정을 오차역전파(back propagation)라 한다.

 

오차역전파 구동방식

1. 임의의 초기 가중치 w를 준 뒤, 결과를 계산한다.

2. 실제 값(실제 계산 결과)와 이상값(원하는 값)의 오차를 구한다.

3. 경사 하강법을 이용해 앞 가중치의 오차가 작아지는 방법으로 업데이트 한다.

4. 더이상 오차가 줄어들지 않을 때까지 반복한다.

 

오차역전파 가중치 수정 수식

신경망의 구현 과정

1. 환경변수 지정

데이터셋, 학습률, 활성화함수, 가중치 선언 등 환경변수 지정

 

2. 신경망 실행

초기값을 입력해 활성화 함수와 가중치를 거쳐 결과값이 나오게 합니다.

 

3. 결과를 실제 값에 비교

실제값 vs 이상값 비교

 

4. 역전파

출력층/은닉층 가중치를 수정한다.

이상값과 실제값의 오차가 0에 근접할 때까지

 

5. 결과 출력

활성화 함수의 기울기 소실 문제

 

확률적 경사하강법 SGD

경사하강법의 불필요하게 많은 계산량과 느린 속도를 보완한 방법이다.

 

전체데이터가 아닌 랜덤하게 추출한 일부 데이터를 사용해 빠르고 빈도높은 업데이트가 가능하다.

 

모멘텀(momentum)

모멘텀 SGD는 경사하강법에 탄력을 더해주는 것이다.

매번 기울기를 구하지만, 오차를 수정하기 전 바로 앞 수정값과 방향(+,-)를 참고하여 같은 방향으로 수정되게 하는 방법을 사용하여, 관성의 효과를 낸다.

 

고급 경사 하강법

 

고급 경사 하강법 개요 효과 keras 사용법
확률적 경사 하강법(SGD) 랜덤추출데이터 이용한
더빠르고 자주 업데이트
속도 개선 keras.optimizers.SGD(lr=0.1)
모멘텀(Momentum) 관성 방향을 고려한 진동, 폭을 줄임 정확도 개선 keras.optimizers.SGD(lr=0.1, momentum =0.9)
네스테로프 모멘텀(NAG) 모멘텀 이동 방향으로 미리 이동해 그레이디언트를 계산, 불필요한 이동을 줄임 정확도 개선 keras.optimizers.SGD(lr=0.1, momentum =0.9, nesterov =True)
Adagrad 변수 업데이트가 잦으면 학습률을 적게하여 이동보폭을 조절 보폭 크기 개선 keras.optimizers.Adagrad(lr=0.01, epsilon = 1e-6)
RMSProp 아다그리드의 보폭 민감도 보완 보폭 크기 개선 keras.optimizers.RMSProp(lr=0.001, rho =0.9, epsilon = 1e-08, decay = 0.0)
Adam 모멘텀/RMSProp 합친 방법 정확도/보폭크기 개선 keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_0.2=0.999, epsilon = 1e - 08, decay =0.0)
반응형