cs231n: How to Train a Neuron Network에서 신경 네트워크를 훈련하는 방법

CS231N           ,                  ,       ,    Neuron Network        
  • Activation Functions
  • ReLu(good)
  • ELU
  • leaky ReLu
  • no saturated on +region
  • converges much faster는 6배의 속도가 나지 않습니다. 사다리가 죽지 않기 때문입니다
  • easy computation
  • but half of the data will die
  • 생물신경망의 개념에 부합
  • tanh
  • saturated -> kill gradient

  • sigmoid
  • 이거 쓰지 마, because it's not zero centered
  • 포화,exp가 계산하기 어려운 문제
  • 도 있다.
  • gradient on w will be all negative or positive

  • maxout

  • Data Preprocessing
  • Mean/Normalization
  • 이렇게 하지 않으면 w가 살짝 움직이면 분류가 안 된다
  • Batch Normalization
  • 레이어당 normalization
  • 마지막으로 y =gamma*xi+beta를 사용하여 복원하여expressive의 능력을 향상시킨다

  • Weight Initialization
  • W=0이면 업데이트되지 않음
  • W가 작으면 높은 층이 점점 0에 가까워진다
  • W가 비교적 크면 많은 활성화 함수가saturated로 인해 사다리가 0
  • 으로 변한다.
  • 마지막으로 Xavier initialization을 써야 하는데 이거 좋네
  • ReLu의 경우 Half Killed의 경우 1/2 이상
  • babysitting the network
  • 시작
  • loss가 합리적인지 아닌지
  • 그리고 reg를 넣으면 로스가 커진다
  • 그리고 작은 데이터 집합을 훈련시켜 효과
  • 를 본다
  • Learning Rate
  • 비교적 작은reg부터loss를 작게 만들 수 있는learning rate
  • 를 찾아라
  • 로스가 잘 안 변하면 러닝 레이트가 너무 작아
  • NaN 또는 inf라면 learning rate가 너무 크다
  • learning rate는 보통 1e-3~1e-5 사이
  • Hyper Parameters Learning
  • Grid Search
  • 랜덤으로 몇 가지를 선택하고 간격이 가까워서는 안 된다. 특히 중요한 매개 변수에 대해 비교적 좋은 분포가 중요하다
  • 먼저 랜덤으로 러버 range를 찾은 다음 더 세밀하게 검색
  • Regularization
  • Training accuracy와Validation Accuracy를 주의해서 보십시오. 만약Validation Accuracy가 별로 변하지 않으면 Training Accuracy가 증가하고 있습니다. 이것은 의합이 되어 커질 수 있음을 설명합니다


  • 알고리즘
  • SGD 알고리즘
  • decay 문제 주의
  • 가장 장점에 가까울 때 속도를 늦추고 for learning rate
  • decay usually be 0.9 or 0.999

  • 안장 지점(saddle)이나 local optima에 빠지기 쉽다
  • 주의, high dimension 문제에 대해 saddle는 더욱 흔히 볼 수 있다. 왜냐하면 local optima는 모든 방향이 가장 우수하다는 것을 의미하고 saddle는 일부 방향이 가장 우수하다는 것을 의미하기 때문이다
  • 빠지지 않아도 사다리가 작아져 속도가 느려진다
  • SGD가 막 뛰어
  • 부분 방향 really sensitive
  • SGD+Momentum(운동량)
  • velocity(initialized to be zero) 추가
  • vx = rho * vx + dx
  • 는 이전의 사다리의 조합에 해당한다
  • gradient -= alpha * vx

  • 작은 공이 위에서 아래로 내려갈 때 운동량이 있으면 작은 로컬optima, 즉 작은 구덩이에 멈추지 않고 관성 있게 계속 앞으로 달리는 것과 같다
  • Nesters Momentum Gradient Descent
  • Firstly compute the gradient of (v + grad)

  • AdaGrad (not so common)
  • 국부 최우수를 만났을 때 비참할 수 있으니 주의
  • for convex case, it’s a good feature to slow it down when you approach the optima
  • RMSprop (it runs well)

  • Adam (Stick all above together)
  • Problems come up at the initial steps, ‘cause these steps might be really large
  • so we should add a bias correction term
  • We can set like this, and it’s a good start point
  • beta1 = 0.9
  • beta2 = 0.99
  • learning_rate = 1e-3 or 5e-4


  • What’s more
  • 우리는 매끄러운 미니마
  • 를 선호한다
  • 직감적으로 말하자면sharp 미니마는 보통 좋은 가장 좋은 장점이 아니기 때문에 우리는 데이터량을 늘려 이런sharp
  • 를 제거할 수 있다.

  • Also we can decay our learning rate
  • step decay
  • exponential decay
  • 1/t decay
  • 아담은 보통 안 쓰는 것 같은데(보폭은 자동으로 줄어든다?)
  • 먼저 no decay부터 시작해서 볼래요
  • Second-order optimization
  • All above are first-order optimization
  • Try second-order taylor expansion
  • Newton’s method to solve ‘gradient = 0’
  • =>theta_star = theta - Hessian-1(gradient)
  • in vanilla version of Newton’s method, H replace the learning rate, which is used to be a hyper parameter (but actually we still need to add learning rate because the second-order approximation maybe not perfect too)
  • However, Hessian is time-consuming to compute, not to say invert

  • alternatively, we can use BGFS/L-BGFS

  • Ensemble Model 집계 모델
  • Less the gap of training error and test error (validation error)
  • enjoy 2% extra performance to address the problem of overfitting
  • hyper parameters usually are not the same


  • Overfitting
  • 다음은 모두 Regularization 방법입니다.
  • Vanilla Regularization
  • Dropout
  • Every time we do a forward pass through the network, at each layer, we randomly set some neurons to zero.
  • interpretation
  • Not use too much features to prevent overfitting
  • ensemble

  • 주의 나누기 확률 P
  • Common pattern
  • Add some randomness to improve the generalization in training, and then average out randomness in testing
  • Batch Normalization (most commonly use and tend to be enough)
  • 여기에 도입된 랜덤성을 정리하기 어렵다. 훈련할 때batch normalization은 모든mini batch에서 했기 때문에 그 규범화는 더욱 랜덤적이다. 테스트 단계에서 우리는pre-compute의 전체 균일치, 방차로 하기 때문에 이런 랜덤성
  • 을 평균화했다.
  • 이게 있으면 보통 dropout
  • 을 안 해도 돼요.
  • Data Augmentation
  • 입력을 무작위로 변환한다. 예를 들어 그림, 회전 렌즈,Color jittering, 이미지 정보 처리 등 일련의 조작
  • DropConnect
  • Fractional Max Pooling
  • Pooling(풀화)은 특정한 구역 내의 최대치를 무작위로 선택하여 이 구역의feature를 나타낸다. 주로 그림의 크기를 줄이고 제어하기 쉽다
  • Fractional이면 랜덤 Pooling인 것 같고 region 크기가 고정되지 않습니다
  • Stochastic Depth


  • Transfer Learning=> 물론 데이터 양을 직접 늘려도 Overfitting 완화
  • 이미 배운 모델 매개 변수를 새로운 모델로 옮겨 새로운 모델 훈련을 돕는다
  • 특히 데이터가 많지 않으면 ImageNet 같은 곳에 가서 비슷한 빅데이터 집합을 찾아서 훈련할 수 있다

  • 좋은 웹페이지 즐겨찾기