- vừa được xem lúc

Introduction Backpropagation CNN(Series 2)

0 0 22

Người đăng: Hole Black Quyết

Theo Viblo Asia

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ư x11,x12x11,x12 . 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ị x13,x21,x22,x23,x31,x32,x33x13,x21,x22,x23,x31,x32,x33 . 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)

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tìm hiểu về YOLO trong bài toán real-time object detection

1.Yolo là gì. . Họ các mô hình RCNN ( Region-Based Convolutional Neural Networks) để giải quyết các bài toán về định vị và nhận diện vật thể.

0 0 275

- vừa được xem lúc

[Paper Explain] [Deep Neural Network] -ImageNet Classification with Deep Convolutional Neural Networks

Source paper. . Link paper ImageNet Classification with Deep Convolutional Neural Networks. .

0 0 87

- vừa được xem lúc

Những vấn đề liên quan đến dữ liệu ảnh trong Computer Vision

Như mọi người cũng biết data cực kỳ quan trọng đối với Machine learning vì vậy hôm nay mình sẽ chia sẻ xung quanh vấn đề ảnh. .

0 0 34

- vừa được xem lúc

Hướng dẫn convert Pytorch sang TF Lite

I. Giới thiệu.

0 0 44

- vừa được xem lúc

Triển khai các mô hình với OpenVINO

I. Giới thiệu.

0 0 62

- vừa được xem lúc

CenterNet - CenterTrack - TraDeS: Từ object detection đến multiple object tracking

1. Mở đầu.

0 0 227