[Correct me if I am wrong] Batch Normalize

deep-learning
batch-normalization

#1

BN là một phương pháp rất tốt khi training một deep model.

Mục tiêu của phương pháp là muốn normalize feature về trạng thái zero mean và unit-variance. Công thức như sau:

lamda và beta cũng là các learnable parameters. Tuy nhiên có thể setting như sau để recover identity mapping

Tại sao lại cần batch normalize hay những vấn đề của non zero mean và high variance feature:

  • Non zero mean là hiện tượng dữ liệu không phân bố quanh giá trị 0, mà dữ liệu có phần nhiều giá trị lớn hơn không, hoặc nhỏ hơn không. Kết hợp với vấn đề high variance khiến dữ liệu trở nên có nhiều thành phần rất lớn hoặc rất nhỏ.

  • Vấn đề trên có phổ biến không? Câu trả lời là có, và phụ thuộc cả vào việc khởi tạo của layer weight, và càng trở nên nghiêm trọng khi mạng càng lớn (more deep). Dữ liệu ảnh thường gồm các vật thể có kích thước khác nhau trong một bức ảnh. Một vật thể hay background lớn và đồng màu (có nghĩa là nhiều giá trị x giống nhau) khi đi qua bộ lọc (y = sigma(W*x+b)) sẽ likely là có cùng giá trị giống nhau và khác không (như hình ngoài cùng bên trái, thể hiện low level feature của một mạng deep, có nhiều vùng có độ lớn giống nhau). Hiện tượng tiếp tục tiếp diễn khi đi qua các layer, đặc biệt qua các activation function.

(image credit: https://www.slideshare.net/embeddedvision/methods-for-understanding-how-deep-neural-networks-work-a-presentation-from-fraunhofer)

  • Tại sao vấn đề trên lại nghiêm trọng?

[vấn đề 1] Nhìn vào một công thức layer đơn giản y = (Wx + b). Gradient của y theo w có dạng: dy = dWx. Như vậy giá trị x ảnh hưởng trực tiếp đến giá trị của gradient (gradient trong deep không đơn giản như vậy tuy nhiên nguyên lý là giống). Ta biết nếu sử dụng gradient descent để learning model, thì gradient không nên quá lớn, hoặc quá nhỏ. Như vậy việc feature bị bias khiến việc learning model không ổn định.

[vấn đề 2] Ngoài ra còn có ảnh hưởng của non linear activation functions ví dụ như tanh, sigmoid, relu. Các hàm này đều có các vùng bão hoà (vùng có giá trị đầu ra không đổi theo đầu vào). Có hai vấn đề của vùng bão hoà. Theo chiều forward, khi nhiều giá trị rơi vào vùng bão hoà thì nhiều giá trị đầu ra sẽ giống nhau. Như vậy flow của dữ liệu sau đó trong model cũng sẽ giống nhau. Hiện tượng này là hiện tượng covariance shifting. Vấn đề thứ hai là theo chiều backward, gradient bằng 0 tại vùng bão hoà. Như vậy việc giá trị x quá khác 0, khiến x khả năng cao nằm trong vùng bão hoà của hàm activation và gặp hai vấn đề như trên.

(image credit: https://www.researchgate.net/figure/Non-linear-activation-functions-The-hyperbolic-tangent-is-normalized-to-0-1_fig4_281289234)

  • Batch Normalize đã normalize dữ liệu về zero mean, và chuẩn hoá variance về dạng unit. Bằng cách này đã giải quyết được rất tốt các vấn đề kể trên. Những ưu điểm của batch norm như sau:

#2

zero mean và unit-variance là tiếng việt là như nào đại ca.