Normalize là gì

  -  

Các mô hình Deep Learning hiện nay đang tạo ra các mô hình tốt nhất để giải quyết rất nhiều các lĩnh vực và bài toán phức tạp như là speech recognition, computer vision, machine translation, v.v.. Tuy nhiên, để có thể huấn luyện tốt được các mô hình Deep Learning là rất khó khăn vì các mô hình hiện tại có cấu trúc bao gồm rất nhiều layer, trong suốt quá trình đó,phân bố dữ liệu qua các layer bị biến đổi. Do vậy, để mô hình có thể học nó là rất khó khăn. Vì vậy, trong bài viết này, mình sẽ đưa ra tầm quan trọng của việc normalization và các phương pháp của nó để các bạn có thể sử dụng chúng phù hợp với bài toán của bạn.

Bạn đang xem: Normalize là gì

Đang xem: Normalization là gì

Normalize data là gì?

Dù có nhiều ý kiến trái ngược nhưng chuẩn hóa CSDL là một việc quan trọng để có được một CSDL tốt: không còn các dị thường (update anomaly, insertion anomaly, deletion anomaly), không có dư thừa dữ liệu.

*
*
*

Normalization có nhiều phương pháp, như mình đã nói ở trên, việc lựa chọn phương pháp đúng cho mục đích của mô hình là rất quan trọng, sau đây mình sẽ đưa ra một số phương pháp mà mình tìm hiêu được :

Batch normalization

Batch normalization là một trong các phương thức normalization được sử dụng phổ biến trong mô hình deep learning. Nó cho phép đào tạo nhanh hơn và ổn dịnh các mạng nơ-ron sâu bằng cách ổn định sự phân bố của các đầu vào các layer trong quá trình huấn luyện.Cách tiếp cận này chủ yếu liên quan đến Internal Covariate Shift (ICS). Để cải thiện việc huấn luyện mô hình, điều quan trọng là phải giảm ICS bằng cách kiểm soát means và variances của dữ liệu đầu vào các layer, nôm na là điều chỉnh phân phối của dữ liệu cho đồng bộ trên toàn mô hình. Batch normalization là một phương thức chuẩn hóa các hàm kích hoạt trong mạng qua một mini-batch theo kích thước được định nghĩa trước đó. Với mỗi feature, batch normalization tính toán trung vị và phương sai của feature đó trong một mini-batch. Sau đó, nó trừ đi giá trị trung bình và chia cho độ lệch chuẩn của mini-batch đó. Công thức sẽ được biểu diễn như sau:

μB←1m∑i=1mxi//mini−batchmeanmu_{mathcal{B}} leftarrow frac{1}{m} sum_{i=1}^{m} x_{i} / / mini-batch meanμB​←m1​i=1∑m​xi​//mini−batchmean

σB2←1m∑i=1m(xi−μB)2//mini−batchvariancesigma_{mathcal{B}}^{2} leftarrow frac{1}{m} sum_{i=1}^{m}left(x_{i}-mu_{mathcal{B}}ight)^{2} quad / / mini-batch variance σB2​←m1​i=1∑m​(xi​−μB​)2//mini−batchvariance

Điều gì xảy ra nếu ta tăng cường độ trọng số làm cho mô hình trở nên tốt hơn. Để giải quyết vấn đề này, chúng ta có thể thêm γ và β để chúng có thể học scale và shift vs tham số tương ứng. Được mô tả như sau:

Input: Values of xxx over a mini-batch: B={x1…m}mathcal{B}=left{x_{1 ldots m}ight}B={x1…m​} Parameters to be learned: γ,βgamma, etaγ,β

Output: {yi=BNγ,β(xi)}left{y_{i}=mathrm{BN}_{gamma, eta}left(x_{i}ight)ight}{yi​=BNγ,β​(xi​)}

μB←1m∑i=1mxi//mini−batchmeanmu_{mathcal{B}} leftarrow frac{1}{m} sum_{i=1}^{m} x_{i} / / mini-batch meanμB​←m1​i=1∑m​xi​//mini−batchmean

σB2←1m∑i=1m(xi−μB)2//mini−batchvariancesigma_{mathcal{B}}^{2} leftarrow frac{1}{m} sum_{i=1}^{m}left(x_{i}-mu_{mathcal{B}}ight)^{2} quad / / mini-batch variance σB2​←m1​i=1∑m​(xi​−μB​)2//mini−batchvariance

x^i←xi−μBσB2+ϵ//normalizewidehat{x}_{i} leftarrow frac{x_{i}-mu_{mathcal{B}}}{sqrt{sigma_{mathcal{B}}^{2}+epsilon}} / / normalize xi​←σB2​+ϵ​xi​−μB​​//normalize

yi←γx^i+β≡BNγ,β(xi)//scaleandshifty_{i} leftarrow gamma widehat{x}_{i}+eta equiv mathrm{B} mathrm{N}_{gamma, eta}left(x_{i}ight) / /scale and shiftyi​←γxi​+β≡BNγ,β​(xi​)//scaleandshift

Các vấn đề của batch normalization

Variable batch size -> Nếu barch size là 1, thì phương sai sẽ bằng 0, lúc này thì batch norm không hoạt động được. Hơn nữa, nếu ta cho mini-batch nhỏ thì nó sẽ thành nhiễu và ảnh hưởng đến quá trình huấn luyện mô hình.Cũng có vấn đề trong lúc huấn luyện. Như là, nếu bạn đang tính toán trên các máy khác nhau thì bạn phải có batch size giống nhau vì tham số γ và β sẽ khác nhau đối với các hệ thống khác nhauRecurrent Neural Network -> Trong RNN, các kích hoạt lặp lại của mỗi bước thời gian sẽ có một câu chuyện khác nhau để kể (tức là số liệu thống kê). Điều này có nghĩa là chúng ta phải phù hợp với các layer batch norm riêng biệt cho mỗi time-step. Điều này làm cho mô hình phức tạp hơn và tốn không gian hơn vì nó buộc chúng ta phải lưu trữ số liệu thống kê cho từng bước thời gian trong quá trình đào tạo.

Các lợi ích của batch normalization

Làm giảm internal covariate shift (ICS) và tăng tốc độ huấn luyện cho mô hình deep learning.Cách tiếp cận này làm giảm sự phụ thuộc của gradients vào tỉ lệ của các tham số hoặc giá trị ban đầu của chúng, dẫn đến learning rate cao hơn mà không có nguy cơ phân kỳ.Batch normalization giúp bạn có thể sử dụng các chế độ phi tuyến bão hòa bằng cách ngăn mạng khỏi bị kẹt trong các chế độ bão hòa.

Weight normalization

Weight normalization là một quá trình đánh giá lại các trọng số vector trong một mạng neural sâu hoạt động bằng cách tách độ dài của các vectơ trọng lượng đó khỏi hướng của chúng. Nói một cách dễ hiểu, chúng ta có thể định nghĩa chuẩn hóa trọng số như một phương pháp để cải thiện tính tối ưu của các trọng số của mô hình mạng nơ-ron.Weight normalization đánh giá lại các trọng số như sau:

w=g∥v∥voldsymbol{w}=frac{g}{|oldsymbol{v}|} oldsymbol{v}w=∥v∥g​v

Việc tách các vector trọng số ra khỏi hướng của nó, điều này tương tự như cách hoạt động của batch normalization với phương sai. Điều khác biệt duy nhất ở đây là biến thể thay vì hướng.Về giá trị trung bình, các tác giả của bài báo này đã khéo léo kết hợp trung bình batch normalization và chuẩn hóa trọng lượng để có được giá trị mong muốn ngay cả trong các lô nhỏ nhỏ. Có nghĩa là chúng trừ đi giá trị trung bình của mini-batch nhưng không chia cho phương sai. Cuối cùng, họ sử dụng chuẩn hóa trọng số thay vì chia cho phương sai.Lưu ý: Trung bình ít nhiễu hơn so với phương sai (ở trên có nghĩa là một lựa chọn tốt so với phương sai) do quy luật số lớn.Bài báo chỉ ra rằng weight normalization kết hợp với batch normalization đạt được kết quả tốt nhất trên CIFAR-10.

Các lợi ích của weight normalization

Weight normalization cải thiện điều kiện của vấn đề tối ưu cũng như tăng tốc độ hội tụ sự giảm dần của SGD.Nó có thể áp dụng tốt cho mô hình hồi quy như là LSTM cũng như là mô hình reinforcemnet learning,…

Layer normalization

Layer normalization là một phương thức để cải tiển tốc đố huấn luyện với các mô hình neural nerworks đa dạng. Không giống như batch normalization, phương pháp này ước tính trực tiếp số liệu thống kê chuẩn hóa từ các đầu vào tổng hợp đến các nơ-ron bên trong một lớp ẩn. Layer normalization về cơ bản được thiết kế để khắc phục những hạn chế của batch normalization như phụ thuộc vào các mini-batch, v.v.Layer normalization chuẩn hóa đầu vào trên các features thay vì chuẩn hóa các features đầu vào trên từng batch trong batch normalization.

Xem thêm: Hóa Đơn Giá Trị Gia Tăng Tiếng Anh Là Gì ? Thuế Giá Trị Gia Tăng Tiếng Anh Là Gì

Một mini-batch bao gồm nhiều ví dụ với cùng một số tính năng. Mini-batch là ma trận (hoặc tenxơ) trong đó một trục tương ứng với lô và trục kia (hoặc các trục) tương ứng với các kích thước đặc trưng.

μi=1m∑j=1mxijmu_{i}=frac{1}{m} sum_{j=1}^{m} x_{i j}μi​=m1​j=1∑m​xij​

σi2=1m∑j=1m(xij−μi)2sigma_{i}^{2}=frac{1}{m} sum_{j=1}^{m}left(x_{i j}-mu_{i}ight)^{2}σi2​=m1​j=1∑m​(xij​−μi​)2

xij^=xij−μiσi2+ϵhat{x_{i j}}=frac{x_{i j}-mu_{i}}{sqrt{sigma_{i}^{2}+epsilon}}xij​^​=σi2​+ϵ​xij​−μi​​

Trong các bài báo, các tác giả tuyên bố rằng layer normalization hoạt động tốt hơn batch normalization trong các bài toán RNN,..

Các lợi ích của layer normalization

Layer normalization có thể dễ dàng áp dụng cho mô hình RNN bởi vì nó tính toán thống kê chuẩn hóa riêng biệt trên từng time-step.Cách tiếp cận này có hiệu quả trong việc ổn định các trạng thái ẩn trong các mạng hồi quy.

Instance normalization

Layer normalization và instance normalization rất tương tự nhau nhưng sự khác biệt giữa chúng là instance normalization chuẩn hóa qua mỗi channel trong mỗi ví dụ huấn luyện thay vì chuẩn hóa qua các features đầu vào trong một ví dụ huấn luyện. Không giống như batch normalization,lớp instance normalization được áp dụng trong quá trình thử nghiệm rất tốt ( do không phụ thuộc vào mini-batch ), được áp dụng cho toàn bộ loạt ảnh thay vì một ảnh duy nhất

ytijk=xtijk−μtiσti2+ϵy_{t i j k}=frac{x_{t i j k}-mu_{t i}}{sqrt{sigma_{t i}^{2}+epsilon}}ytijk​=σti2​+ϵ​xtijk​−μti​​

μti=1HW∑l=1W∑m=1Hxtilmquad mu_{t i}=frac{1}{H W} sum_{l=1}^{W} sum_{m=1}^{H} x_{t i l m}μti​=HW1​l=1∑W​m=1∑H​xtilm​

σti2=1HW∑l=1W∑m=1H(xtilm−muti)2quadsigma_{t i}^{2}=frac{1}{H W} sum_{l=1}^{W} sum_{m=1}^{H}left(x_{t i l m}-m u_{t i}ight)^{2}σti2​=HW1​l=1∑W​m=1∑H​(xtilm​−muti​)2

Trong đó, x∈ ℝ T ×C×W×H là đầu vào tensor chứa một batch của T ảnh. Gọi xₜᵢⱼₖ biểu thị phần tử tijk-th của nó, trong đó k và j mở rộng kích thước không gian (Chiều cao và Chiều rộng của hình ảnh), i là kênh đặc trưng (kênh màu nếu đầu vào là hình ảnh RGB) và t là chỉ số của hình ảnh trong lô.

Các lợi ích của instance normalization

Việc chuẩn hóa này đơn giản hóa quá trình huấn luyện của mô hình.Instance normalization có thể áp dụng trong quá trình thử nghiệm mô hình.

Xem thêm: Hướng Dẫn Sử Dụng Internet Banking Sacombank, Sacombank E

Group normalization

Group normalization có thể nói là một giải pháp thay thế cho batch normalization. Cách tiếp cận này hoạt động bằng cách chia các kênh (channels) thành các nhóm và tính toán trong mỗi nhóm giá trị trung bình và phương sai để chuẩn hóa tức là chuẩn hóa các tính năng trong mỗi nhóm. Không giống như batch normalization, chuẩn hóa nhóm độc lập với kích thước batch size và độ chính xác của nó cũng ổn định trong nhiều loại batch size.

Chúng ta có thể thấy Group normalization đứng ở giữa instance normalization và layer normalization. Khi chúng ta cho tất cả các kênh (channels) vào 1 nhóm thì group normalization trở thành layer normalization. Còn khi cho mỗi keenh(channel) vào các nhóm khác nhau thì nó trở thành instance normalization

μi=1m∑k∈Sixk,σi=1m∑k∈Si(xk−μi)2+ϵmu_{i}=frac{1}{m} sum_{k in mathcal{S}_{i}} x_{k}, quad sigma_{i}=sqrt{frac{1}{m} sum_{k in mathcal{S}_{i}}left(x_{k}-mu_{i}ight)^{2}+epsilon}μi​=m1​k∈Si​∑​xk​,σi​=m1​k∈Si​∑​(xk​−μi​)2+ϵ​

Si={k∣kN=iN,⌊kCC/G⌋=⌊iCC/G⌋}mathcal{S}_{i}=left{k mid k_{N}=i_{N},leftlfloorfrac{k_{C}}{C / G}ightfloor=leftlfloorfrac{i_{C}}{C / G}ightflooright}Si​={k∣kN​=iN​,⌊C/GkC​​⌋=⌊C/GiC​​⌋}

x^i=1σi(xi−μi)hat{x}_{i}=frac{1}{sigma_{i}}left(x_{i}-mu_{i}ight)x^i​=σi​1​(xi​−μi​)

yi=γx^i+βy_{i}=gamma hat{x}_{i}+etayi​=γx^i​+β

Các lợi ích của group normalization

Nó có thể thay thể batch normalization trong một số bài toán về Deep Learning.Dễ dàng triển khai nó.Kết luận

Qua bài viết này các bạn đã thấy được tầm quan trọng của việc normalization. Trong các phương thức normalization trên thì Batch Normalization vẫn là phương thức tốt nhất và được áp dụng rộng rãi cho nhiều bài toán trong Deep Learning. Tuy nhiên, vào một ngày không đẹp trời nào đó, mô hình của bạn chạy lâu và khó hội tụ , các bạn có thể thử thay đổi các phương thức khác theo bài toán của bạn xem sao, biết đâu trời lại đẹp. Chúc các bạn một ngày học tập và làm việc hiệu quả. Cảm ơn và nhớ để lại cho mình một upvote và một like nhé. Thanks you!!!