밑바닥부터 시작하는 딥러닝(4)

이소은·2025년 5월 22일

4.1 데이터에서 학습한다!

이미지의 특징은 보통 벡터로 기술함
변환된 벡터를 가지고 지도 학습 방식의 대표 분류 기법인 SVM, KNN 등으로 학습함

신경망은 이미지에 포함된 중요한 특징까지 기계가 스스로 학습함

데이터를 training data와 test data로 나눠야 임의의 데이터에도 좋은 출력이 나올 수 있음
overfitting : 한 데이터셋에만 너무 최적화되어 있는 상태

4.2 손실함수

오차제곱합 : 가장 많이 쓰이는 손실 함수

yt : 신경망의 출력(신경망이 추정한 값)
tk : 정답 레이블
k : 데이터의 차원 수

오차제곱합 : 모든 원소의 {원소의 출력(추정값) - 정답 레이블(참 값)}^2 합

교차 엔트로피 오차

log는 자연로그를 의미함
=> tk는 원-핫 인코딩으로 되어 있기에 실질적으로 정답일 때의 추정의 자연로그를 계산함

위 그림과 같이 정답에 해당하는 출력이 커질수록 y는 0에 다가가고 정답일 때의 출력이 작아질수록 오차가 커짐


delta는 아주 작은 값으로, np.log에서 0을 입력하면 마이너스 무한대로 가기 때문에 이를 막기 위해 더해줌

교차 엔트로피 오차는 결과값이 오차이므로 작은 값이 더 좋은 추정임

미니배치 학습
교차 엔트로피 오차와 같이 하나의 데이터에 대해서 손실함수를 일일이 구하면 데이터가 많아졌을 때 시간이 너무 오래 걸림
=> 미니배치 학습은 전체 데이터에서 랜덤하게 일부를 뽑아 사용해 근사치를 구함

load_mnist : MNIST데이터셋을 읽어오는 함수
one_hot_label=True : 정답 위치의 원소만 1이고 나머지는 0인 배열을 얻을 수 있음

MNIST 데이터셋은 훈련 데이터 600000개, 입력 데이터 784열인 이미지 데이터
정답 레이블은 10줄임
x_train = (60000, 784)
t_train = (60000, 10)

np.random.choice() : 지정한 범위의 수 중에서 무작위로 원하는 개수만 꺼낼 수 있음

미니배치 같은 배치 데이터를 지원하는 교차 엔트로피 오차
1개의 데이터일 경우를 대비해 reshape을 사용하여 데이터의 형상을 바꿈
배치 크기로 나눠 정규화, 이미지 1장당 평균의 교차 엔트로피 오차를 계산함

정답 레이블이 숫자 레이블일 경우

0부터 batch_size - 1까지 넘파이 배열을 생성하고 t에는 레이블이 저장되어 있으므로 y[np.arange(batch_size), t]는 각 데이터의 정답 레이블에 해당하는 신경망의 출력을 추출함

정확도를 지표로 삼아서는 안 되는 이유는 미분 값이 대부분의 장소에서 0이 되어 매개변수를 갱신할 수 없기 때문이다.
=> 이 이유는 매개변수의 값을 조금 바꾼다고 해도 정확도는 변하지 않고 정확도는 연속적인 값보다는 이산적인 값이 나옴
=> 손실 함수는 매개변수의 값이 조금 달라짐에 따라 값이 그에 따라 반응하며 손실 함수의 값도 연속적으로 변화함

4.3 수치 미분

미분을 할 때 h를 너무 작은 값으로 하면 반올림 오차 문제가 생겨 0으로 인식해버릴 수 있음
=> h를 10^(-4)를 사용하면 좋은 결과를 얻을 수 있음

수치 미분 : 아주 작은 차분으로 미분하는 것

4.4 기울기

기울기 : 모든 변수의 편미분을 벡터로 정리한 것

기울기가 가리키는 쪽은 각 장소에서 함수의 출력 값을 가장 크게 줄이는 방향

경사하강법 : 현 위치에서 낮아지는 방향으로 일정 거리만큼 이동하는 걸 반복하여 함수의 값을 점차 줄이는 신경망 학습법

학습률 : 에타라고 부르며 갱신하는 양을 의미함

f는 최적화하려는 함수
init_x는 초깃값
lr은 learning rate(학습률)
step_num은 경사법에 따른 반복 횟숫

simpleNet클래스
predict: 예측값을 출력
loss : 손실 함수의 값


softmax함수, cross entropy error함수 사용



4.5 학습 알고리즘 구현하기

단계
1단계 - 미니배치
2단계 - 기울기 산출
3단계 - 매개변수 갱신
4단계 반복

확률적 경사 하강법(SGD) : 데이터를 미니배치로 무작위로 선정


params : 신경망의 매개변수를 보관하는 딕셔너리 변수
grads : 기울기 보관하는 딕셔너리 변수

미니배치 학습 구현

매번 훈련 데이터에서 임의로 100개의 데이터를 추려내어 확률적 경사 하강법을 수행함

에폭 : 하나의 단위로, 1에폭은 학습에서 훈련 데이터를 모두 소진했을 때의 횟수에 해당함


0개의 댓글