Within Convolutional Layer - Phần 2 (Kết): Backpropagation

Ở bài viết trước, chúng ta đã nói đến Connections cutting, Weights sharing và Convolution tại Forward pass. Trong phần này sẽ chủ yếu diễn giải các công thức, thuật toán được sử dụng để thực hiện Backpropagation tại Convolutional Layer.


Nhắc lại về Forward pass



Như đã nói ở phần I về Convolution operator, công thức tính output Y sau bước convolution input X với kernel W (kích thước $2k+1$) có thể viết thành:
$\Large Y = X \star W + b$
$ b$ là bias.
Tại mỗi điểm $ y_{i,j} \in Y$:
$\LARGE y_{i,j} = \sum\limits_{m=-k}^{k}\sum\limits_{n=-k}^{k}x_{i-m,j-n}w_{i,j} + b$
hay:
$\LARGE y_{i,j} = \sum\limits_{m=i-k}^{i+k}\sum\limits_{n=j-k}^{j+k}x_{m,n}w_{i-m,j-n} + b$

BACKPROPAGATION


Nếu các bạn đã biết về Backpropagation ở Linear layer, thì cách tiếp cận với Convolutional layer cũng hoàn toàn tương tự.  Mục tiêu của quá trình lan truyền ngược là tính toán sự tham gia đóng góp lỗi vào hàm mất mát $L$ của mỗi layer, từ đó tối ưu các trọng số của những layer này nhằm giảm loss về mức tối thiểu. Thuật toán sử dụng chain-rule để tính toán gradient cho layer. 
Sau bước Backpropagation ở layer $l+1$, tại layer $l$ đang xét, ngoài $X^l$, $W^l$, ta còn có thêm giá trị $\frac {\partial L}{\partial Y^l}$. Như đã nói ở trên, mục tiêu là tính được $\frac {\partial L}{\partial Y^(l-1)}$ và $\frac {\partial L}{\partial W^l}$.

Để dễ hình dung, chẳng hạn với $Y$ có kích thước $2 \times 2$, đặt
$ \LARGE \frac{\partial L}{\partial Y} = \begin{bmatrix} \frac{\partial L}{\partial y_{11}} & \frac{\partial L}{\partial y_{12}} \\ \frac{\partial L}{\partial y_{21}} & \frac{\partial L}{\partial y_{22}} \end{bmatrix} = \begin{bmatrix} \delta_{11} & \delta_{12}\\ \delta_{21} & \delta_{22} \end{bmatrix}$


Theo chain-rule:
$\LARGE \frac{\partial L}{\partial w_{p,q}} = \sum\limits_{i,j}\frac{\partial L}{\partial y_{i,j}}\frac{\partial y_{i,j}}{\partial w_{p,q}} $ 

$\LARGE = \sum\limits_{i,j}\frac{\partial L}{\partial y_{i,j}}\frac{\partial \sum\limits_{m,n}w_{m,n}x_{i-m,j-n} + b}{\partial w_{p,q}}$ 

$\LARGE = \sum\limits_{i,j}\frac{\partial L}{\partial y_{i,j}}\frac{\partial (w_{0,0}x_{i,j} + .. .+ w_{p,q}x_{i-p,j-q}+...+ b)}{\partial w_{p,q}} $

$\LARGE = \sum\limits_{i,j}\frac{\partial L}{\partial y_{i,j}}x_{i-p,j-q}$  

Đặt $ i' = i-p => i = i'+p$, $j' = j-q => j= j'+q$:

$\LARGE \frac{\partial L}{\partial w_{p,q}} = \sum\limits_{i',j'}\frac{\partial L}{\partial y_{i'+p,j'+q}}x_{i',j'}$.

$ \LARGE \rightarrow  \frac{\partial L}{\partial W}= X \otimes \frac{\partial L}{\partial Y}  = X\star  flip(\frac{\partial L}{\partial Y}) $

Công thức trên là lý do trong quá trình Backpropagation, khi tính gradient của $W$, gradient của $Y$ bị flip:

Với $\frac{\partial L}{\partial Y^{l-1}}$ trước tiên cần biết rằng $X^l = f(Y^{l-1})$, trong đó $f(Y^{l-1})$ là activate function hoặc Pool, ReLU của layer $l-1$. Gọi đạo hàm của hàm này là $f'(Y^{l-1})$  (thường có công thức rất đơn giản).
Tương tự ta cũng dùng chain-rule:

$\LARGE \frac{\partial L}{\partial y_{p,q}^{l-1}} =\sum\limits_{i,j}\frac{\partial L}{\partial y_{i,j}^l}\frac{\partial \sum\limits_{m,n}w^{l}_{i-m,j-n}x^l_{m,n} + b^l}{\partial y_{p,q}^{l-1}}$
$\LARGE= \sum\limits_{i,j}\frac{\partial L}{\partial y_{i,j}^l}\frac{\partial \sum\limits_{m,n}w^{l}_{i-m,j-n}f(y^{l-1}_{m,n}) + b^l}{\partial y_{p,q}^{l-1}} $
$\LARGE = \sum\limits_{i,j}\frac{\partial L}{\partial y_{i,j}^l}\frac{\partial [w^{l}_{i,j}f(y^{l-1}_{0,0}) +...+w^{l}_{i-p,j-q}f(y^{l-1}_{p,q}) + ... + b^l]}{\partial y_{p,q}^{l-1}}$
$\LARGE= \sum\limits_{i,j}\frac{\partial L}{\partial y_{i,j}^l}w^{l}_{i-p,j-q}f'(y^{l-1}_{p,q})$
$\LARGE \rightarrow  \frac{\partial L}{\partial Y^{l-1}} = \frac{\partial L}{\partial Y^l}f'(Y^{l-1}) \star  flip(W^l)$

Convolution được sử dụng rất nhiều trong Deep learning, đặc biệt với các bài toán về hình ảnh. Hy vọng sau series này, bạn có thể hiểu thêm những điều chưa biết về Convolutional layer ngoài những khái niệm cơ bản thường thấy.

Comments

Popular posts from this blog

Intersection over Union (IoU) cho object detection

Giới thiệu về Generative Adversarial Networks (GANs)

YOLO: You Only Look Once