신경망 학습의 목적: 손실 함수의 값을 가능한 한 낮추는 매개변수 찾기 → 최적화
매개변수 기울기 구하고 기울어진 방향으로 매개변수 갱신
작다 → 학습속도를 느리게하여 보다 정확
크다 → 학습속도가 빠르지만 부정확
SGD 단점
비등방성 함수(방향에 따라 기울기가 달라지는 함수)에서는 탐색 경로가 비효율적이다.
기울어진 방향이 본래의 최솟값과 다른 방향을 가리킬 경우 문제가 된다.
v(속도)에 대한 식은 기울기 방향으로 힘을 받아 물체가 가속된다는 물리 법칙을 나타낸다.
+) 공이 그릇의 바닥을 구르는 듯한 움직임
SGD와 비교했을 경우 지그재그 정도가 덜하다
학습률 감소: 학습을 진행하면서 학습률을 점차 줄여간다(처음에는 크게 학습, 뒤에서는 조금씩 작게)
AdaGrad: 각각의 개별 매개변수에 적응적으로 학습률을 조정하며 학습 진행
h: 기존 기울기 값을 제곱하여 계속 더해준다
→ 매개변수의 원소 중 많이 움직인(크게 갱신된) 원소는 학습률이 낮아진다
→ 매개변수의 원소마다 다르게 적용된다
문제점: 무한히 계속 학습하다 보면 갱신량 0되는 경우 존재
해결책: RMSProp 먼 과거의 기울기는 잊고, 새로운 기울기 정보를 크게 반영
모멘텀 + AdaGrad
갱신 강도를 적응적으로 조정해서 모멘텀 때보다 공의 좌우 흔들림이 적다.
가중치의 초깃값에 따라 신경망 학습의 성패가 결정된다
가중치 매개변수의 값이 작아지도록 학습하여 오버피팅이 일어나지 않게 하는 것
가중치가 오차역전파법에서 잘 갱신되게 하려면 가중치의 초깃값을 무작위로 설정해야 한다
활성화 함수로는 시그모이드 함수를 사용하며, 초기값 설정에 따른 각 층의 활성화 값 분포를 알아본다.
Xavier 초깃값은 활성화 함수가 선형인 것을 전제로 이끈 결과(sigmoid, tanh)이다
ReLU를 이용할 때는 He 초깃값을 사용한다
He 초깃값
앞 계층의 노드가 n개일 때, 표준편차가 root(2/n)인 정규분포를 사용한다
→ 음의 영역이 0이라 더 넓게 분포시키기 위해 2배의 계수가 필요
활성화 함수로 ReLU를 사용할 때는 He 초깃값, sigmoid나 tanh 등의 선형 함수일 때는 Xavier 초깃값을 쓴다
각 층에서의 활성화값이 적당히 분포되도록 조정하는 것
데이터 분포를 정규화하는 ‘배치 정규화 계층’을 신경망에 삽입한다
미니배치를 단위로 정규화하며 평균 0, 분산 1이 되게 정규화한다
이 처리를 활성화 함수의 앞(혹은 뒤)에 삽입해서 데이터 분포가 덜 치우치게 할 수 있다
배치 정규화를 사용하면 가중치 초깃값에 크게 의존하지 않아도 된다
매개변수가 많고 표현력이 높은 모델일 경우, 훈련 데이터가 적을 경우 발생한다
훈련 데이터를 사용하여 측정한 정확도 & 시험 데이터를 사용하여 측정한 정확도 확연히 다를 때
하이퍼파라미터(각 층의 뉴런 수, 배치 크기, 매개변수 갱신 등)를 조정할 때는 훈련이나 시험 데이터가 아닌 검증 데이터가 필요하다
ex) MNIST 데이터 중 20% 정도를 검증 데이터로 먼저 분리한다