본문 바로가기
Study/DL

[밑시딥1] Chapter 4. 신경망 학습

by hyeon827 2024. 1. 9.

* 학습 = 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것

* 딥러닝 = 종단간 기계학습 (데이터에서 목표한 결과를 사람의 개입 없이 얻음)

 

4.1 손실함수

  • 신경망 학습에 사용하는 지표
  • 해당 지표로 최적의 매개변수 값 탐색
  • 일반적으로 오차제곱합과 교차 엔트로피 오차 사용

[오차제곱합(SSE)]

  • yk: 신경망이 추정한 값
  • tk: 정답 레이블
  • k: 데이터의 차원 수

[교차 엔트로피 오차(CEE)]

  • 실질적으로 정답일 때의 추정(tk가 1일 때의 yk)의 자연로그를 계산하는 식
  • 정답에 해당하는 출력이 커질수록 0으로 다가가다가, 그 출력이 1일 때 0
  • 반대로 정답일 때 출력이 작아질수록 오차는 커짐

자연로그 y=logx 그래프

 

[훈련 데이터 모두에 대한 손실함수의 합]

  • 데이터 N개
  • tnk: n번째 데이터의 k번째 값
  • 마지막에 N으로 나누어 졍규화 (평균 손실 함수)
  • 데이터가 클 시 시간이 오래걸림

 

 [미니배치 학습]

  • 훈련 데이터로부터 일부만 골라 학습 (무작위)

[정확도 지표 사용 X]

  • 정확도를 지표로 하면 매개변수의 미분이 대부분 장소에서 0 

 

4.2 수치 미분

 

[수치 미분]

  • 위 방식은 반올림 오차 문제 발생 (작은 값이 생략되어 최종 계산 결과에 오차 발생)
  • ex) np.float32(1e-50) -> 0.0 반환
  • h를 1e-4정도의 값을 사용하면 좋은 결과

  • 또한, 차분 문제 발생
  • 진정한 미분 = x 위치의 함수 기울기
  • 이번 구현에서의 미분은 (x+h)와 x 사이의 기울기 
  • 오차를 줄이기 위해 (x+h)와 (x-h)일 때의 함수 f의 차분 계산(중심 차분)

[편미분]

  • 변수가 2개이기에 x0, x1 중 어느 변수에 대한 미분인지 구별해야함
  • 즉, 변수가 여럿인 함수에 대한 미분을 편미분

 

4.3 기울기

  • 기울기 = 모든 변수의 편미분을 벡터로 정리한 것
  • 기울기는 함수의 '가장 낮은 장소(최솟값)'을 가리킴
  • 기울기가 가리키는 쪽은 각 장소에서 함수의 출력 값을 가장 크게 줄이는 방향

 

[경사하강법]

  • 현 위치에서 기울기를 구하고, 기울어진 방향으로 나아가 손실함수 값을 점차 줄이는 것
  • 학습률: 한 번 학습할 때마다 얼마나 이동할 것인지(일반적은 0.01 또는 0.001)

[신경망에서의 기울기]

  • 가중치 매개변수에 대한 손실 함수의 기울기
  • 신경망의 기울기를 구한 다음에는 경사법에 따라 가중치 매개변수 갱신

 

4.4 확률적 경사 하강법(SGD)

  • 1단계: 미니배치
  • 2단계: 기울기 산출 
  • 3단계: 가중치 매개변수 갱신
  • 4단계: 1~3단계 반복

 

[정리]

  • 기계학습에서 사용하는 데이터셋은 훈련 데이터와 시험 데이터로 나눠 사용
  • 훈련 데이터로 학습한 모델의 범용 능력을 시험 데이터로 평가
  • 신경망 학습은 손실 함수를 지표로, 손실 함수의 값이 작아지는 방향으로 가중치 매개변수 갱신
  • 가중치 매개변수를 갱신할 때는 가중치 매개변수의 기울기를 이용하고, 기울어진 방향으로 가중치 값 갱신 반복
  • 아주 작은 값을 주었을 때의 차분으로 미분하는 것을 수치 미분
  • 수치 미분을 이용해 가중치 매개변수의 기울기를 구할 수 있음