微积分笔记05:矩阵求导在深度学习中的应用

微积分笔记05:矩阵求导在深度学习中的应用

5.1 算法简述

设存在一张像素大小为\(\sqrt n \times \sqrt n\)的样本图片,即该图片总像素个数\(=n\)

现需采用神经网络对其进行识别,过程如下:

(1)生成向量\(X_{1\times n}\)

设存在向量\(X_{1\times n}\),则可将图片的\(n\)个像素存入向量\(X\),记为:

\[\tag{1} X_{1\times n}= \begin {bmatrix} x_1&x_2&x_3&…&x_n \end {bmatrix} \]

(2)生成隐层:

生成隐层需将矩阵X变换为512列的矩阵Y,设存在矩阵\(W_{n\times512}\),则有:

\[\tag{2} Y_{1\times 512}=X_{1 \times n}\cdot W_{n \times 512} = \begin {bmatrix} y_1&y_2&y_3&…&y_{512} \end {bmatrix} \]

设存在函数:

\[relu(x)= \begin{cases} x&x\geq 0\\ 0&x<0 \end{cases} \]

采用\(relu()\)函数对矩阵\(Y\)进行处理,得到矩阵\(Z\)

\[\tag{3} Z_{1\times 512}=relu(Y) \]

(3)创建分类

设样本图片共有\(r\)种可匹配的图片类型,且存在矩阵\(O_{1\times r}\)\(W’_{512 \times r}\),则有:

\[\tag{4} O_{1\times r}=Z_{1\times 512} \cdot W’_{512 \times r} = \begin{bmatrix} o_1&o_2&o_3&…&o_r \end{bmatrix} \]

(4)生成概率分布

为统计样本图片与每一种图片类型匹配的概率,可使用\(softmax()\)函数对矩阵\(O_{1\times r}\)进行处理,得到对应的概率分布矩阵\(S_{1\times r}\)

\[\tag{5} O_{1\times r}= \begin{bmatrix} o_1&o_2&o_3&…&o_r \end{bmatrix} \stackrel{softmax()} \Longrightarrow S_{1\times r}= \begin{bmatrix} s_1&s_2&s_3&…&s_r \end{bmatrix} \]

对于矩阵\(S_{1\times r}\)中的任一元素\(s_i\),有:

\[\tag{6} 0<s_i=softmax(o_i)<100\% \]

\[(i=1,2,3,…,r) \]

且由概率分布性质可知:

\[\tag{7} \Sigma_{i=1}^r s_i=100\% \]

5.2 矩阵\(W、W’\)的求解

对于5.1中的算法过程,设采用\(m\)张不同的样本图片进行训练后得到某一概率值\(s_k\),且\(s_k\)为矩阵S中的最大概率值,则矩阵O中的图片类型\(o_k\)即为样本图片的最佳匹配类型。

若要对任意图片进行识别,则需通过训练得到的\(s_k\)\(o_k\)进一步对矩阵\(W、W’\)进行求解。

对于5.1 式(2)、式(4)中的矩阵\(W_{n\times 512}、W’_{512\times r}\),设存在以下函数\(J\)

\[\tag{8} J(W,W’) \]

则由梯度相关概念可知,可求解函数\(J\)对矩阵\(W、W’\)的偏导数得到相应梯度,再由梯度进一步对\(W、W’\)进行求解。

而训练得到的\(s_k\)\(o_k\)所属的矩阵(向量)S、矩阵(向量)O均由\(W、W’\)变换得到,故需先在S、O中求偏导数。

5.2.1 概率求解阶段1:求偏导数\(\frac{\alpha J}{\alpha O}\)

\(softmax()\)算法及概率的基本概念可得:

\[\tag{9} s_k=\frac{e^{o_k}}{\Sigma_{i=1}^r e^{o_i}} \]

设:

\[\tag{10} J=-ln(s_k) \]

\[\qquad\quad =-ln(\frac{e^{o_k}}{\Sigma_{i=1}^r e^{o_i}}) \]

\[\qquad\qquad\qquad =ln(\Sigma_{i=1}^r e^{o_i})-ln(e^{o_k}) \]

则有:

\[\frac{\alpha J}{\alpha O} \]

\[\qquad =\frac{\alpha [ln(\Sigma_{i=1}^r e^{o_i})-ln(e^{o_k})]}{\alpha O} \]

\[= \frac{(\Sigma_{i=1}^r e^{o_i})_O’}{\Sigma_{i=1}^r e^{o_i}}-(o_k)’_O \]

\[\qquad\qquad\qquad\qquad\qquad = \begin{bmatrix} s_1-0&s_2-0&…&s_k-1&…&s_r-0 \end{bmatrix} \]

\[\tag{11} \qquad\qquad\quad = \begin{bmatrix} s_1&s_2&…&s_k-1&…&s_r \end{bmatrix} \]