Huấn luyện mạng nơ-ron thường mất nhiều thời gian và dễ gặp tình trạng mô hình hội tụ chậm hoặc thiếu ổn định.Batch Normalization chuẩn hóa các activation/đầu vào của một lớp trong mạng nơ-ron theo thống kê của mini-batch trong quá trình huấn luyện. Hãy cùng FPT.AI tìm hiểu nguyên lý hoạt động, lợi ích và ứng dụng của Batch Normalization trong Deep Learning.
Batch Normalization là gì?
Batch Normalization (BatchNorm) là kỹ thuật chuẩn hóa dữ liệu trong các lớp của mạng nơ-ron trong quá trình huấn luyện, giúp giữ giá trị đầu vào ổn định hơn giữa các mini-batch. Nhờ đó, mô hình có thể học nhanh hơn, ổn định hơn và giảm sự phụ thuộc vào cách khởi tạo trọng số ban đầu.
BatchNorm thường giúp quá trình tối ưu ổn định hơn và cho phép sử dụng learning rate lớn hơn; tác động đến độ chính xác hoặc khả năng tổng quát phụ thuộc kiến trúc, dữ liệu và thiết lập huấn luyện.

Vai trò của Batch Normalization trong Deep Learning
Batch Normalization khắc phục những hạn chế như giảm hiện tượng Internal Covariate Shift, Tăng tốc độ hội tụ…, giúp quá trình huấn luyện diễn ra hiệu quả hơn:
- Giảm hiện tượng Internal Covariate Shift: Giảm Internal Covariate Shift là động cơ ban đầu khi BatchNorm được đề xuất. Tuy nhiên, các nghiên cứu sau đó cho thấy đây chưa chắc là nguyên nhân chính giải thích hiệu quả của BatchNorm; một cách giải thích khác là BatchNorm làm quá trình tối ưu và gradient ổn định hơn.
- Tăng tốc độ hội tụ: Có thể tăng tốc hội tụ trong nhiều kiến trúc bằng cách giúp quá trình tối ưu ổn định hơn và hỗ trợ learning rate lớn hơn.
- Cho phép sử dụng Learning Rate lớn hơn: Giảm nguy cơ mô hình mất ổn định khi tăng tốc độ học, từ đó đẩy nhanh quá trình tối ưu.
- Giảm nguy cơ Gradient biến mất hoặc bùng nổ: Hỗ trợ ổn định activation và gradient trong quá trình tối ưu; mức độ hiệu quả phụ thuộc kiến trúc và thiết lập huấn luyện.
- Hỗ trợ Regularization: Nhiễu do thống kê khác nhau giữa các mini-batch có thể tạo hiệu ứng regularization trong một số thiết lập.

Nguyên lý hoạt động cơ bản của Batch Normalization
Batch Normalization chuẩn hóa dữ liệu theo từng mini-batch trước khi đưa sang lớp tiếp theo, giúp mô hình học ổn định và nhanh hơn. Quy trình thường gồm 5 bước như sau:
- Bước 1. Tính giá trị trung bình của mini-batch (Batch Mean): Tính giá trị trung bình của các activation trong mini-batch, làm cơ sở cho bước chuẩn hóa.
μᵦ = (1/m) Σxᵢ - Bước 2. Tính phương sai của mini-batch (Batch Variance): Xác định mức độ phân tán của các activation xung quanh giá trị trung bình.
σ²ᵦ = (1/m) Σ(xᵢ − μᵦ)² - Bước 3. Chuẩn hóa Activation: Mỗi activation được trừ đi batch mean và chia cho căn bậc hai của batch variance. Một hằng số nhỏ ε (epsilon) được thêm vào mẫu số để đảm bảo ổn định số học và tránh phép chia cho 0.
x̂ᵢ = (xᵢ − μᵦ) / √(σ²ᵦ + ε)
Sau bước này, các activation có giá trị trung bình xấp xỉ 0 và phương sai xấp xỉ 1. - Bước 4. Scale và Shift bằng γ (Gamma) và β (Beta): Batch Normalization sử dụng hai tham số có thể học là γ để điều chỉnh tỷ lệ và β để dịch chuyển các activation đã chuẩn hóa, giúp mạng duy trì khả năng biểu diễn linh hoạt.
yᵢ = γx̂ᵢ + β - Bước 5. Truyền output sang lớp tiếp theo: Các activation sau khi được scale và shift được chuyển đến lớp tiếp theo của mạng. Trong quá trình training, mean và variance được tính riêng cho từng mini-batch; khi inference, Batch Normalization sử dụng các running averages của những thống kê này được tích lũy trong quá trình huấn luyện.

Các phương pháp chuẩn hóa liên quan đến Batch Normalization
Để phù hợp với các kiến trúc mạng và điều kiện huấn luyện khác nhau, nhiều biến thể của Batch Normalization đã được phát triển như Group Normalization, Layer Normalization, Instance normalization…
Group Normalization
Group Normalization chia các kênh đặc trưng thành nhiều nhóm và thực hiện chuẩn hóa trong từng nhóm thay vì trên toàn bộ mini-batch. Phương pháp giúp duy trì hiệu quả ngay cả khi kích thước batch nhỏ, nên thường được sử dụng trong các mô hình xử lý ảnh có độ phân giải cao hoặc môi trường giới hạn bộ nhớ.

Layer Normalization
Layer Normalization tính thống kê trên các feature/chiều được chỉ định của từng mẫu, không dựa vào các mẫu khác trong mini-batch. Nhờ không phụ thuộc vào kích thước batch, kỹ thuật Layer Normalization phù hợp với RNN, Transformer Model và các mô hình xử lý ngôn ngữ tự nhiên.
Instance normalization
Instance Normalization tính normalization riêng cho từng instance và từng channel; kỹ thuật này được chứng minh hữu ích trong neural style transfer. Phương pháp được ứng dụng rộng rãi trong style transfer và các mô hình tạo ảnh nhằm giữ lại đặc trưng phong cách trong khi vẫn chuẩn hóa nội dung.

Batch renormalization
Batch Renormalization bổ sung correction để giảm sự phụ thuộc vào thống kê của mini-batch và làm hành vi giữa training/inference nhất quán hơn, đặc biệt khi batch nhỏ hoặc không i.i.d. Nhờ đó, mô hình có thể huấn luyện ổn định hơn khi kích thước batch nhỏ hoặc thay đổi.
Dưới đây là bảng so sánh BatchNorm vs 4 phương pháp trên:
| Phương pháp | Chuẩn hóa dựa trên | Phụ thuộc batch size | Thường dùng cho |
| BatchNorm | Thống kê theo mini-batch | Có | CNN, ResNet |
| LayerNorm | Feature trong từng sample | Không | Transformer, RNN |
| GroupNorm | Nhóm channel trong từng sample | Không | CNN với batch nhỏ |
| InstanceNorm | Từng channel của từng sample | Không | Style Transfer, mô hình ảnh |
| Batch Renorm | Batch statistics + hiệu chỉnh | Có, nhưng ít nhạy hơn BatchNorm | Batch nhỏ hoặc dữ liệu biến động |
So sánh Batch Normalization và Data Normalization
Batch Normalization và Data Normalization đều sử dụng các phép biến đổi để kiểm soát giá trị dữ liệu, nhưng chúng khác nhau về đối tượng được xử lý, thời điểm áp dụng và vai trò trong quá trình huấn luyện mô hình.
| Tiêu chí | Batch Normalization | Data Normalization |
| Thời điểm áp dụng | Trong quá trình huấn luyện mô hình. | Trước khi bắt đầu huấn luyện. |
| Đối tượng chuẩn hóa | Activation/tensor đầu vào của BatchNorm layer | Dữ liệu đầu vào của mô hình. |
| Phạm vi chuẩn hóa | Dựa trên thống kê của mini-batch, theo feature hoặc channel tùy loại BatchNorm layer. | Theo từng feature hoặc từng sample/vector tùy phương pháp |
| Mục đích | Hỗ trợ quá trình tối ưu ổn định hơn và có thể giúp hội tụ nhanh hơn. | Điều chỉnh scale/độ lớn của input để phù hợp với thuật toán. |
| Khả năng cập nhật | Thay đổi động theo từng mini-batch trong quá trình huấn luyện. | Các tham số tiền xử lý thường được ước lượng từ training set rồi áp dụng nhất quán cho validation/test; cách triển khai có thể khác tùy pipeline. |
| Ví dụ | Chuẩn hóa activation của từng lớp trong mô hình CNN hoặc Transformer. | Chuẩn hóa giá trị điểm ảnh về khoảng 0 – 1 hoặc -1 đến 1 trước khi huấn luyện mô hình. |

Batch Normalization thường được sử dụng trong những mô hình nào?
Batch Normalization thường được dùng trong các mạng nơ-ron sâu để giúp quá trình huấn luyện ổn định và hiệu quả hơn. Một số kiến trúc phổ biến gồm:
- CNN: Thường áp dụng giữa các lớp convolution để ổn định activation.
- ResNet: Được sử dụng phổ biến trong các residual block.
- MLP: Có thể đặt giữa các fully connected layer để hỗ trợ quá trình tối ưu.
- FNN: Giúp duy trì phân phối đầu vào ổn định hơn giữa các lớp.

Batch Normalization tồn tại những hạn chế nào?
Mặc dù Batch Normalization giúp cải thiện đáng kể hiệu quả huấn luyện, kỹ thuật này vẫn tồn tại một số hạn chế và không phải lúc nào cũng là lựa chọn tối ưu. Hiểu rõ các thách thức sẽ giúp doanh nghiệp lựa chọn phương pháp chuẩn hóa phù hợp.
- Phụ thuộc vào kích thước batch: Khi mini-batch quá nhỏ, các thống kê tính toán kém ổn định, làm giảm hiệu quả huấn luyện.
- Chưa tối ưu cho mọi kiến trúc: Batch Normalization hoạt động tốt với CNN, nhưng hiệu quả có thể hạn chế trên RNN hoặc Transformer, nơi Layer Normalization thường phù hợp hơn.
- Tăng chi phí tính toán: BatchNorm tạo thêm chi phí tính toán và bộ nhớ cho từng forward pass, dù tổng số bước/epoch cần để hội tụ có thể giảm trong một số thiết lập.
- Có thể tạo chênh lệch giữa huấn luyện và suy luận: Thống kê sử dụng trong giai đoạn suy luận có thể khác với dữ liệu thực tế, ảnh hưởng đến hiệu suất mô hình.
- Cần cân nhắc khi kết hợp với kỹ thuật khác: Batch Normalization có thể tương tác với các phương pháp như Dropout, vì vậy cần tinh chỉnh tham số để đạt hiệu quả tối ưu.

Giải đáp các câu hỏi thường gặp về Batch Normalization
Batch Normalization có làm tăng độ chính xác của mô hình không?
Không nhất thiết. Batch Normalization chủ yếu hỗ trợ quá trình tối ưu và có thể cải thiện khả năng tổng quát hoặc độ chính xác trong một số mô hình, nhưng không bảo đảm accuracy luôn tăng.
Batch Size nhỏ có ảnh hưởng đến Batch Normalization không?
Batch size nhỏ khiến mean và variance ước lượng từ mini-batch có thể nhiễu và kém đại diện hơn, làm giảm hiệu quả của BatchNorm.
Batch Normalization có dùng được với Transformer không?
Có thể về mặt kỹ thuật, nhưng Batch Normalization không phải lựa chọn chuẩn trong Transformer. Kiến trúc Transformer gốc sử dụng Layer Normalization, vốn không phụ thuộc thống kê của mini-batch và phù hợp hơn với dữ liệu chuỗi
Khi nào nên dùng Layer Normalization thay cho Batch Normalization?
LayerNorm thường được ưu tiên trong Transformer/RNN hoặc khi muốn normalization không phụ thuộc batch size. Lựa chọn cuối cùng cần dựa trên kiến trúc và kết quả thực nghiệm.
Batch Normalization có thay thế được Data Normalization không?
Không. Batch Normalization không thể thay thế được Data Normalization. Hai kỹ thuật này phục vụ các mục đích ở những giai đoạn hoàn toàn khác nhau trong quá trình học máy và học sâu.
Kết luận
Batch Normalization là kỹ thuật normalization phổ biến giúp ổn định quá trình tối ưu trong nhiều mạng nơ-ron, đặc biệt là CNN. Hiệu quả phụ thuộc batch size, kiến trúc và thiết lập huấn luyện, vì vậy cần cân nhắc LayerNorm, GroupNorm hoặc các phương pháp khác khi phù hợp. Để tìm hiểu sâu hơn, hãy khám phá thêm các bài viết về Deep Learning, Machine Learning và AI trên FPT.AI để xây dựng, huấn luyện và triển khai mô hình AI hiệu quả.