데이터 과학

딥러닝 오차함수(loss function, 손실함수)와 옵티마이저 본문

인공지능/파이썬 인공지능 - 딥러닝

딥러닝 오차함수(loss function, 손실함수)와 옵티마이저

티에스윤 2021. 11. 10. 09:07

https://wikidocs.net/36033

오차함수 

 

딥러닝에서 오차함수, 손실함수는 실제값과 오차값의 차이를 수치화하는 함수입니다. 

오차가 클수록 함수의 값이 크고, 작을수록 오차값이 작아지겠죠. 

 

2가기 방법을 사용하는데 회귀적 방법으로는 MSE , 평균제곱오차 방법과 분류의 방법으로는 Cross entropy를 사용합니다. 

 

MSE

 

def MSE(y,t):

   return(1/2)*np.sum((y-t)**2)

 

평균값의 제곱

 

 

Cross Entropy

 

Binary crossEntropy와 categorical crossEntropy를 사용합니다. 

y는 실제값, y hat은 예측값

 

def cross_entropy(y,t):

   delta=le-N

   return -np.sum(t*np.log(y+delta))

 

https://jayden1116.tistory.com/337

 

[딥러닝]손실 함수

손실 함수란 손실 함수 = 비용 함수(cost function ; cost) 입력값(x)를 F(w)라는 모델에 통과시켰을 때 나오는 값은 출력값(y_pred; 예측값)입니다. 모델의 최종 목적은 실제값(y_true; 참값, 관측값)에 최대

jayden1116.tistory.com

 

 

https://didu-story.tistory.com/27

 

[딥러닝] 손실함수 (loss function) 종류 및 간단 정리 (feat. keras & pytorch)

시작하며 딥러닝모델 구축 도중 손실함수 때문에 오류가 났다. 아마 손실함수와 활성화 함수의 조합이 맞지 않았던 것 같다. 일단 그래서 이대로는 안되겠다 싶어서 자세한 수식까지는 아니더

didu-story.tistory.com

 

 

최적화 (Optimizer)

 

딥러닝을 공부하다 보면 옵티마이저 이야기가 나옵니다.

이전에 인공 신경망을 공부할때 만나는 경사하강법의 심화과정이라 볼 수 있는데 텐서플로우에서 optimizer='adam', 이라는 옵션 설정을 만날 수 있습니다. 

 

이러한 최적화 옵션의 종류로는

 

1. SGD 

2. Momentum

3. NAG ( Nesterov Momentum)

4. AdaGrad

5. RMSProp

6. AdaDelta

7. Adam

8. Nadam, Radam, AdamW

 

등 여러가지의 알고리즘들이 있습니다.

 

 

 

SGD (Stochastic Gradient Descent)

 

- 경사하강법은 전체 데이터를 모두 계산하시에 학습하는데 시간이 많이 걸리는 문제점이 있어서 step에서 1개의 샘플을 선택하여 그 샘플의 기울기를 계산함. batch 크기가 1인 경사하강법

- 속도가 빠르고, 큰 데이터에서 사용이 가능. 

- local minimum을 벗어날 수 있지만, 샘플 편향성에 대한 문제점이 생김. 

 

 

미니배치 경사하강법 

 

- 배치를 줄이고, SGD를 사용함. 

- 학습데이터가 1000개이고, batch를 100개로 정의하면 미니 batch는 10으로 설정함. 에포크 1이 발생하는 것은 10번의 SGD가 실햄됨.

- 많은 에포크가 발생하는 만큼 최적해에는 도달 할 수 있지만 지역 최적화에 빠질 수 있는 문제가 있음. SGD를 이용해서 해결 함. 

 

 

모멘텀

 

- 관성을 이용해서 local minimum에서 벗어나게 하려는 방법.

 

 

AdaGrad (Adaptive Gradient)

 

- 학습율이 적으면 오랜시간이 걸리고, 크면 최적값을 못찾는 문제에서 출발

- 변수별 맞춤형 학습율을 주는 방법으로 기울기 값이 시간이 지날 수록 커지는 문제에서 학습률을 조절하여 기울기를 낮추면  변수별로 학습율이 조절되는 방법으로 접근한 방법.

- 학습율이 작아지면 학습이 정체되는 문제점이 있음. 

 

 

RMSProp

 

- 최신의 기울기를 더 반영하여 보폭을 줄여주는 방법을 좀 더 현실화 시킴. 

- 이를 위해 지수이동평균(Exponential Moving Average)를 사용함. 

 

 

Adam (Adaptive Moment Estimaion)

 

- momentum과 RMSProp을 조합

- 지금 현재 가장 많이 사용하는 옵티마이저 방법임. 

 

참고: https://ardino.tistory.com/32?category=1088001 

 

 

 

 

 

https://seamless.tistory.com/38

 

경사하강법은 미분을 이용해 기울기를 찾아가는 방법이며, 이를 빠르게 길을 찾게 만드는 방법이 SGD 입니다. 여기에 관성을 더해 방향을 더해주는 것이 Momentum이며, 먼저 방향으로 가고 스텝을 계산하는 방법이 NAG 입니다. 

SGD에서 내려가는 방향을 좀 더 세밀하게 진행하고 안 가본 곳은 빠르게 움직이는 것이 Adagrad 이며, 좀 더 상황을 세밀하게 따져가는 것이 RMSProp, Adagrap에서 보폭이 작아지는 것을 방지하는 것이 AdaDelta이며, RMSProp+ Momentum의 결합으로 방향과 스텝을 섞어 놓은 것이 Adam 이며, Adam에 NAG를 접목시킨것이 Nadam 입니다. 

 

 

 

 

자료 참고: 

https://velog.io/@yookyungkho/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%98%B5%ED%8B%B0%EB%A7%88%EC%9D%B4%EC%A0%80-%EC%A0%95%EB%B3%B5%EA%B8%B0%EB%B6%80%EC%A0%9C-CS231n-Lecture7-Review

 

https://velog.io/@arittung/DeepLearningStudyDay8

 

'인공지능 > 파이썬 인공지능 - 딥러닝' 카테고리의 다른 글

numpy  (0) 2022.03.30
Colab에서의 파이썬  (0) 2022.03.29
Fashion MNIST  (0) 2021.10.31
케라스 CNN을 이용한 개와 고양이 분류  (0) 2021.09.26
케라스 설치 방법  (2) 2021.09.06