Introduction Backpropagation CNN(Series 2)
Nhân dịp năm mới mình kính mong tất cả mọi người năm mới an lạnh thật nhiều niềm vui . Chúc mừng năm mới ngập tràn tiếng cười.
Phần 1: Backward CNN2D
Lưu ý : ở đây mình ko backward cả bộ filters trong cnn
Trong bài viết này sẽ là series thứ 2 nối tiếp từ series thứ 1 . Nguyên nhân lý do tại sao mình tổng hợp các bài viết cũ từ facebook của mình đem lên trên này là để hướng tới forward to forward-hinton. Vì mình nghĩ trong tương lai có khả năng backpropagation sẽ bị thay thế . Mặc dù hiện tại FF chưa đạt được thành công lớn cho lắm nhưng chắc chắn theo cảm nghĩ của mình chúng có khả năng . Nối tiếp các series các bạn sẽ được nhìn thấy các thử thuật backpropagation cnn, norm, rnn,lstm, self_attetion và cả activation function SOTA là gelu. Trong phần này mình sẽ show hiển thị ra ảnh chi tiết cách tính backpropagation CNN và các layernorm cũng như batchnorm.
Nào, hãy cùng bắt đầu khám phá thế giới backpropagation qua từng mạng nơ-ron.
Lưu ý : Trong phần này chúng ta sẽ sử dụng Loss để backward là multiclass crossentropy
Để ý sơ đồ tính toán A ở đây chính là fully cnn. Từ L-A là 1 phần và từ A-Input là 2 phần , ta nhận thấy rõ ràng là từ L-A giống như series 1 trước đã làm . Còn từ A-Input sẽ là phần chúng ta sẽ thấy sự hác biệt khi backward ANN với CNN khác nhau như thế nào ?
Ở bước này ta sẽ tiếp từ tính từ L-A giống như series 1 với loss là multiclass crossentropy. Mọi chuyện không có gì thay đổi cả.
Ta có thể nhận ra rằng chúng không có gì thay đổi so với phần 3 của series 1 trước đó . Vâng chúng chính là một phần nhỏ ANN trong đó , tiếp theo sẽ là một thách thức thực sự với cnn khi backward và nhận ra điều kỳ diệu của chúng. Nhìn lên sơ đồ tính toán ta biết ta sẽ phải tính đạo hàm với max pooling
Tiếp theo ta sẽ tính toán đạo hàm với cnn2d với kích thước là 3x3 thay vì 5x5 được tính như trong hình vẽ. Những dấu gạch đứt là biểu thị cho quá trình trượt window với stride là 1 và kernel_size là 2( tuy nhiên trong thực tế ta nên đặt là 3,5,7,.. là các số lẻ thay vì chẵn)
Quá trình tính toán CNN xin được phép bắt đầu.
Ta sẽ cập nhật update weight hay còn gọi là các kernel vì trong CNN kernel value chính là weight
Trên đây là cách mà ta cập nhật các kernel value với 4 giá trị tương ứng trong ảnh lần lượt qua trượt windows. Đầu tiên ta sẽ tính kernel ở giá trị F11 thứ nhất
Tiếp theo tính kernel ở giá trị F12 thứ hai, F21 thứ ba
Cuối cùng tính kernel ở giá trị F22 và tính toàn bộ với kích thước 3x3 đầu vào như . Ta biết rằng ? là do khi đạo hàm F11 trong hàm F(x) tính toán không có giá trị F11 nên là 0.
Liên tục thực hiện như vậy với các giá trị . Ta có thể nhận thấy kernel xoay hình 180 độ
Dưới đây là minh họa giải thích tại sao lại là 180độ. Và quá khác lạ hóa a quá trình update kernel lại là phép xoay một cách lạ kỳ , chứng minh được rằng CNN có tính chất không như transformers phụ thuộc vào vị trí . CNN hoàn toàn không quan tâm tới điều đó, đó cũng giải thích tại sao với trường hợp dataset ít hơn CNN lại tốt hơn transformers.
Cuối cùng cũng đã hoàn tất . Đây sẽ là giả định average poolong thay vì maxpooling như trước, trên đây ta cũng đã hiểu sâu sắc một phần về backward CNN . Tiếp theo ta sẽ tìm hiểu sơ qua về các layer norm cũng như batchnorm xem chúng khi backward sẽ tạo ra thứ thực sự là gì.
Phần 2: Backward Norm
2.1 LayerNorm
Chúng ta đã biết layernorm forward quy trình của chúng hoạt động ra sao. Với cách thức hoạt động dựa trên trung bình và phương sai (mean and variance).
Chúng ta có thể nhìn ra rằng chúng được bắt đầu với tận 3 trường hợp khác nhau đó là do mean là 0 và variance là 1. Dù sao thì ta nên kết hợp chúng với nhau
Tiếp tục với các trường hợp
Ta biết Th3 bao gồm cả th1 và th2 nên ta sẽ cố gắng kết hợp
2.2 BatchNorm
Tương tự như layernorm nhưng thay vì 1 batchsize như layernorm thì ở đây ta có nhiều batch hơn mà thôi.
Phần 3: Kết luận
Trên đây là quá trình thực hiện backward được mình tổng kết lại từ bài viết trên facebook của bản thân. Mục tiêu hướng đến toán bộ series này sẽ là forward to forward của hinton
Tham khảo
https://www.facebook.com/groups/miaigroup/permalink/980588432712429(phần 2) https://www.facebook.com/groups/dunglailaptrinh/permalink/519257499260859(phần 1)
All rights reserved