Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

:)

CNN - Training 본문

AI

CNN - Training

mihee 2022. 4. 29. 01:07

weight를 학습하고 갱신하는 과정을 어떤 방법을 쓰느냐에 따라 다르다.

딥러닝에는 Gradient descent method를 방법을 사용

  • 각각의 loss term의 미분 값을 구한 다음 곱해나가면서 기울기 값을 가지고 경사 하강법을 사용해 weight 업데이트하면서 loss 값을 줄이는 방법으로 모델을 학습

 

SGD - 일반적으로 많이 사용

  • 기존 방법은 train db가 100장이 있으면 100장에 대한 iteration forward 돌고 각각의 loss 값을 구해 loss 값에 대한 미분 값을 구해서 한 번에 갱신. 100개 데이터를 다 본 뒤에 100개 데이터에 나온 loss 값을 통해서 gradient를 계산하고 계산한 값을 한 번에 갱신
  • 100번을 보는 동안 weight를 갱신할 수 없음. 데이터가 많아질수록 weight가 수렴하기 어려움
  • SGD는 각각의 데이터에 대해 Forward 하고 이를 통해 나온 loss값을 가지고 각 weight에 대한 gradient를 계산해서 각 wieght를 갱신
  • 이미지 한 장 당 weight를 갱신시키면 노이즈 있는 영상이나 그런 경우에 weight 갱신에 부정적인 영향을 줄 수 있음
  • 이런 노이즈가 있다는 단점을 보완 -> mini batch
    • 여러 장의 이미지를 한 번에 계산한 다음 그 값을 가지고 weight 갱신

 

Momentum

  • velocity term :  이전 term에서 경사가 하강하는 방향을 그대로 가지고 감. 이전 방향을 고수하는 식으로 loss가 수렴하는 방식.

 

AdaGrad

  • 평균적인 값으로 학습을 진행. 루트 값을 사용하기 때문에 수렴이 느리게 됨.

 

RMS-prop

  • 지수이동평균. AdaGrad 단점을 보완(수렴이 느리게 되는 부분)

Adam

  • 많이 쓰고있는 optimizer 중 하나.

 

 

 

Regularization

  • overfitting model을 방지하기 위한 방법
  • large value의 weight를 가지고 있다면 overfitting되는 경우가 많음. 방지하기 위해 large weight을 penalize
  • 작은 value의 weight를 가지게 해서 overfitting의 가능성을 줄인다.

L2 Regularization이 좀 더 smooth한 값을 가짐(제곱을 하기 때문에)

Drop out

  • random하게 weight 값을 죽여서 generalize하게 하면서 Overfitting을 피함.
  • 학습할 때만 사용

Batch normalization

  • convolution을 통해서 나온 값들은 여러가지 range를 가짐.
  • batch normalization이 없다면 convolution output이 바로 activation term으로 들어가게 된다. if relu를 사용한다면, out range가 -40~ 10이라면 음수값을 다 죽이게 되므로 학습에 부정적인 영향을 주게 된다.  
  • activation function에 input이 들어갈 때 그 값들의 범위가 stable 해야함. batch normalization -> 안정적인 분포의 값으로 만들어줌

'AI' 카테고리의 다른 글

Perception 기술 분류  (0) 2022.05.02
YOLOv3 시작하기  (0) 2022.05.02
Object Detection  (0) 2022.04.30
CNN  (0) 2022.04.26
정보이론  (0) 2022.04.15
Comments