* 학습 = 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것
* 딥러닝 = 종단간 기계학습 (데이터에서 목표한 결과를 사람의 개입 없이 얻음)
4.1 손실함수
- 신경망 학습에 사용하는 지표
- 해당 지표로 최적의 매개변수 값 탐색
- 일반적으로 오차제곱합과 교차 엔트로피 오차 사용
[오차제곱합(SSE)]
- yk: 신경망이 추정한 값
- tk: 정답 레이블
- k: 데이터의 차원 수
[교차 엔트로피 오차(CEE)]
- 실질적으로 정답일 때의 추정(tk가 1일 때의 yk)의 자연로그를 계산하는 식
- 정답에 해당하는 출력이 커질수록 0으로 다가가다가, 그 출력이 1일 때 0
- 반대로 정답일 때 출력이 작아질수록 오차는 커짐
[훈련 데이터 모두에 대한 손실함수의 합]
- 데이터 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단계 반복
[정리]
- 기계학습에서 사용하는 데이터셋은 훈련 데이터와 시험 데이터로 나눠 사용
- 훈련 데이터로 학습한 모델의 범용 능력을 시험 데이터로 평가
- 신경망 학습은 손실 함수를 지표로, 손실 함수의 값이 작아지는 방향으로 가중치 매개변수 갱신
- 가중치 매개변수를 갱신할 때는 가중치 매개변수의 기울기를 이용하고, 기울어진 방향으로 가중치 값 갱신 반복
- 아주 작은 값을 주었을 때의 차분으로 미분하는 것을 수치 미분
- 수치 미분을 이용해 가중치 매개변수의 기울기를 구할 수 있음
'Study > DL' 카테고리의 다른 글
[밑시딥1] Chapter 6. 학습 관련 기술들 (0) | 2024.01.10 |
---|---|
[밑시딥1] Chapter 5. 오차역전파법 (0) | 2024.01.10 |
[밑시딥1] Chapter 3. 신경망 (2) | 2024.01.09 |
[밑시딥1] Chapter 2. 퍼셉트론 (1) | 2024.01.09 |
[모두를 위한 딥러닝 시즌2] lab 1-1,1-2,8-1,8-2 (2) | 2024.01.09 |