답변:
첫 번째 참고 사항 : 각 기능 (픽셀) 값의 표준 편차로도 나눠야합니다. 평균을 빼면 입력의 중심이 0이되고 표준 편차로 나누면 스케일링 된 피처 값이 평균에서 떨어진 표준 편차 수로됩니다.
질문에 대답하려면 : 신경망이 어떻게 가중치를 학습하는지 고려하십시오. C (NN)은 트레이닝 예제가 통과됨에 따라 네트워크 전반에 걸쳐 역 전파로부터 계산 된 경사 에러 벡터 (학습 속도로 곱한)를 연속적으로 다양한 가중치 행렬에 추가함으로써 학습한다.
여기서 주목해야 할 것은 "학습률을 곱한 것"입니다.
입력 트레이닝 벡터를 스케일링하지 않은 경우, 기능 값의 분포 범위는 각 기능마다 다를 수 있으므로 학습 속도는 각 차원에서 서로 다른 (비례 적으로 말하면) 수정을 야기 할 수 있습니다. 우리는 한 가중치 차원에서 수정을 과도하게 보상하는 반면 다른 가중치 차원에서는 보정을 과도하게 보상 할 수 있습니다.
진동 (비용 (중량) 공간에서 더 나은 최대 값에 집중할 수 없음) 상태 또는 느리게 움직이는 (너무 느리게 이동하여 더 나은 최대 값에 도달하지 못함) 상태에있을 수 있으므로 이는 이상적이지 않습니다.
물론 가중치 당 학습 속도를 가질 수는 있지만 이미 찾기 위해 최적화해야 할 이미 복잡한 네트워크에 도입하는 것은 더 많은 하이퍼 파라미터입니다. 일반적으로 학습 속도는 스칼라입니다.
따라서 이미지를 NN (또는 그라디언트 기반) 알고리즘의 입력으로 사용하기 전에 이미지를 정규화하려고합니다.
(image - image.mean()) / (image.std() + 1e-8)