이미지를 CNN에 넣기 전에 이미지를 정규화해야하는 이유는 무엇입니까?


답변:


34

첫 번째 참고 사항 : 각 기능 (픽셀) 값의 표준 편차로도 나눠야합니다. 평균을 빼면 입력의 중심이 0이되고 표준 편차로 나누면 스케일링 된 피처 값이 평균에서 떨어진 표준 편차 수로됩니다.

질문에 대답하려면 : 신경망이 어떻게 가중치를 학습하는지 고려하십시오. C (NN)은 트레이닝 예제가 통과됨에 따라 네트워크 전반에 걸쳐 역 전파로부터 계산 된 경사 에러 벡터 (학습 속도로 곱한)를 연속적으로 다양한 가중치 행렬에 추가함으로써 학습한다.

여기서 주목해야 할 것은 "학습률을 곱한 것"입니다.

입력 트레이닝 벡터를 스케일링하지 않은 경우, 기능 값의 분포 범위는 각 기능마다 다를 수 있으므로 학습 속도는 각 차원에서 서로 다른 (비례 적으로 말하면) 수정을 야기 할 수 있습니다. 우리는 한 가중치 차원에서 수정을 과도하게 보상하는 반면 다른 가중치 차원에서는 보정을 과도하게 보상 할 수 있습니다.

진동 (비용 (중량) 공간에서 더 나은 최대 값에 집중할 수 없음) 상태 또는 느리게 움직이는 (너무 느리게 이동하여 더 나은 최대 값에 도달하지 못함) 상태에있을 수 있으므로 이는 이상적이지 않습니다.

물론 가중치 당 학습 속도를 가질 수는 있지만 이미 찾기 위해 최적화해야 할 이미 복잡한 네트워크에 도입하는 것은 더 많은 하이퍼 파라미터입니다. 일반적으로 학습 속도는 스칼라입니다.

따라서 이미지를 NN (또는 그라디언트 기반) 알고리즘의 입력으로 사용하기 전에 이미지를 정규화하려고합니다.


1
컬러 이미지는 어떻습니까? 각 색상 채널에 대해 수행합니까? 색상 분포가 엉망이되지 않습니까?
user10024395 2016 년

2
그렇다고 믿습니다. 당신은 다음과 같이 할 수 있습니다 :(image - image.mean()) / (image.std() + 1e-8)
JohnAllen

이것이 훈련에 정말 도움이됩니까? 나는 물체 탐지기를 훈련시키고 있으며,이 피팅 러를 사용하면 이미지가 실제로 혼란
스러워서

학습 성과 정확성 측면에서 훈련에 매우 도움이됩니다. 그것은 모델이 아닙니다. :) 디버깅 할 때 정규화되지 않은 이미지를 출력하여 육안으로 정상적으로 보일 수 있습니다.
lollercoaster
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.