Câu trả lời:
Lưu ý đầu tiên: bạn thực sự cũng nên chia cho độ lệch chuẩn của từng giá trị tính năng (pixel). Trừ trung bình trung bình đầu vào thành 0 và chia cho độ lệch chuẩn làm cho bất kỳ tính năng tỷ lệ nào có giá trị số lượng độ lệch chuẩn so với giá trị trung bình.
Để trả lời câu hỏi của bạn: Hãy xem xét làm thế nào một mạng lưới thần kinh học được trọng lượng của nó. Học C (NN) bằng cách liên tục thêm các vectơ lỗi gradient (nhân với tỷ lệ học) được tính toán từ truyền ngược cho các ma trận trọng số khác nhau trên mạng khi các ví dụ đào tạo được truyền qua.
Điều cần chú ý ở đây là "nhân với tỷ lệ học tập".
Nếu chúng tôi không mở rộng các vectơ đào tạo đầu vào của mình, phạm vi phân phối các giá trị tính năng của chúng tôi có thể sẽ khác nhau đối với từng tính năng và do đó, tốc độ học tập sẽ gây ra sự điều chỉnh theo từng chiều khác nhau (nói theo tỷ lệ) với nhau. Chúng tôi có thể sẽ bù đắp một sự điều chỉnh trong một chiều trọng lượng trong khi bù lại ở một chiều khác.
Điều này là không lý tưởng vì chúng ta có thể thấy mình ở trạng thái dao động (không thể tập trung vào một cực đại tốt hơn trong trạng thái không gian (trọng lượng)) hoặc trong trạng thái di chuyển chậm (di chuyển quá chậm để đạt đến trạng thái cực đại tốt hơn).
Tất nhiên có thể có tỷ lệ học tập theo trọng lượng, nhưng sẽ có nhiều siêu âm hơn để đưa vào một mạng đã phức tạp mà chúng ta cũng phải tối ưu hóa để tìm thấy. Nói chung tỷ lệ học tập là vô hướng.
Do đó, chúng tôi cố gắng bình thường hóa hình ảnh trước khi sử dụng chúng làm đầu vào cho thuật toán NN (hoặc bất kỳ độ dốc nào).
(image - image.mean()) / (image.std() + 1e-8)