학습/AI

Deep Learning for Computer Vision : Neural Networks 3

roquen4145 2025. 4. 28. 00:42

https://cs231n.github.io/neural-networks-3/

 

CS231n Deep Learning for Computer Vision

Table of Contents: Learning In the previous sections we’ve discussed the static parts of a Neural Networks: how we can set up the network connectivity, the data, and the loss function. This section is devoted to the dynamics, or in other words, the proce

cs231n.github.io

이번에는 위 내용에 대해서 한글로 정리해보겠습니다.

 

학습

지난 섹션에서는 인공신경망의 수치적인 부분에 대해 논의했다면

이번 섹션에서는 파라미터 학습과정과 좋은 하이퍼파라미터 찾는 방법에 대해서 논의한다.

그래디언트 점검(Gradient Checks)

그래디언트 점검은 이론상으로는 해석적 기울기(analytic gradient)가 수치적 기울기(numerical gradient)와 일치하는지 확인하는 것만큼 간단하지만 실제로는 많은 것들이 연관되어있고 에러가 발생하기 쉽다.

  • 중앙 차분(centered difference) 공식 사용하기:
    • df(x) / dx = ( f(x+h) - f(x-h) ) / 2h  
  • 상대 오차(relative error) 계산:
    • | f_a' - f_n' | / max(|f_a'|, |f_n'|)
  • 더블 프리시전 사용
  • 작은 h에서 부동소수점 범위(active range)를 벗어나지 않도록 주의
  • 목적함수의 미분할 수 없는 부분 (꼬임) 주의하기
  • 적은 데이터포인트 사용하기
  • 스탭 사이즈 h 주의하기
  • 정규화가 데이터를 압도하지 않도록 주의하기
  • dropout/augmentation을 끈 상태로 점검하기

학습 전 사전 점검(Sanity Checks)

학습 전 값비싼 최적화에 빠져들기 전에 몇 가지 확인할 것이 있다.

  • 확률 성능 확인: 작은 가중치 초기화 후 Softmax 손실 ≈ -ln(1/K)이어야 함
  • 정규화 강도 확인: 정규화 항 λ 증가 시 손실이 증가해야 함
  • 작은 데이터셋 과적합: 예시 20개만으로 100% 학습 가능해야 구현 오류 배제  

학습 과정 모니터링(Babysitting the Learning Process)

학습 과정에서 주의깊게 봐야하는 항목에는 다음과 같이 있다.

  • 손실(loss) 곡선: 배치 크기·학습률 설정에 따른 진동(wiggle) 패턴 관찰
    • 좋은 진동 패턴은 손실을 지속적으로 감소시키며 기울기가 줄어든다.
  • 학습/검증 정확도(train/val accuracy) 차이: 과적합 정도 판단
    • 두 개가 비슷한 것이 과적합이 적게 된 것
  • 파라미터 대비 업데이트 비율(weights:updates): 대략 10^{-3} 권장
  • 층별 활성화·그래디언트 분포(histograms): 포화(saturation)·죽은 뉴런(dead neuron) 여부 진단
  • 1층 필터 시각화(first-layer visualizations): 가중치 패턴으로 학습 진행 상태 파악  

파라미터 업데이트(Parameter Updates)

역전파를 통해 수치적 기울기가 계산되면 기울기들이 파라미터를 업데이트하는데 쓰인다.

 

  • Vanilla SGD: x += - learning_rate * dx
  • Momentum: x += mu * v - learning_rate * dx
    • 마찰 계수 mu 약 0.9, 속도(velocity) 개념 도입으로 수렴 가속
  • Nesterov Momentum:
    • x_ahead = x + mu * v
    • x += mu * v - learning_rate * dx_ahead
    • 미리 보기(ahead) 그라디언트 계산으로 흔들림 감소  

학습률 스케줄링 및 2차 최적화(Annealing & Second-Order Methods)

높은 학습률을 사용하면 시스템은 너무 많은 운동에너지를 가지고 파라미터 벡터가 이리저리 튀기 때문에

손실함수에서 깊이 정착할 수 없다. 그래서 학습률을 다음과 같은 방식으로 조정한다.

  • 학습률 감쇠(Annealing) 방법:
    • 계단식(step) 감쇠: 일정 에포크마다 η = αη(예: 0.5씩)
    • 지수적(exp) 감쇠: η = η_0 e^{-kt}
    • 1/t 감쇠: η= η_0/(1 + kt)
  • 뉴턴 계열(Newton’s Method & L-BFGS): xx[Hf(x)]1f(x)
    • Hessian 계산·역행렬 비용 과다 → L-BFGS 같은 근사 기법 사용
    • 대규모 딥러닝엔 잘 쓰이지 않고, SGD 변형이 주류  
  • 적응적 학습률(Adaptive Learning Rates)
    • Adagrad: 각 파라미터별 제곱 그래디언트 누적값으로 학습률 조정
    • RMSprop: 지수 이동평균 기반으로 Adagrad의 학습률 소진 문제 완화
    • Adam: RMSprop에 Momentum 결합, 편향 보정(bias correction) 추가
      • 기본값: β_1=0.9, β_2=0.999, ε=10^{-8}  

하이퍼파라미터 최적화(Hyperparameter Optimization)

인공신경망을 학습시키는 것은 많은 하이퍼파라미터 설정을 포함한다.

대부분의 일반적인 하이퍼파라미터에는 최초 학습률, 학습률 감쇠방식, 정규화 강도 등이 있다.

 

이번 섹션에서는 하이퍼파라미터 탐색을 위한 추가적인 팁을 제공한다.

  • 구현 팁: 랜덤 워커(worker)가 무작위 조합 실험 → 검증 성능 체크포인트 기록
  • 검증 폴드: 단일 검증 세트 선호(크로스 밸리데이션 생략)
  • 범위 탐색:
    • 로그 스케일 탐색(예: \eta=10^{U(-6,1)})
    • 랜덤 서치(random search) ≫ 그리드 서치(grid search)  

모델 평가 및 앙상블(Evaluation & Model Ensembles)

  • 여러 모델 독립 훈련 → 예측 평균(평균화 기법)으로 수퍼바이즈드 성능 몇 % 추가 향상
  • 기법: 초기화 차이, 교차검증 상위 모델, 체크포인트 스냅샷, 가중치 지수평균(exponential moving average) 등  
반응형