對於 \(Softmax\) 迴歸的正向傳播很是簡單,就是對於一個輸入 \(X\) 對每個輸入標量 \(x_i\) 進行加權求和獲得 \(Z\) 而後對其作機率歸一化。html
Softmax 示意圖
下面看一個簡單的示意圖:網絡
其中 \(X\in\mathbb{R}^{n\times m}\) 是一個向量或矩陣,這取決於傳入的是一個訓練樣本仍是一組訓練樣本,其中 \(n\) 是輸入特徵的數量,\(m\) 是傳入的訓練樣本數量;此圖只是示意的一個簡單的 \(Softmax\) 的傳播單元,能夠把它理解爲一個神經單元,因此 \(W\in\mathbb{R}^{n\times k}\) 能夠當作每個 \(X\) 的特徵的權重,\(W\) 是向量仍是矩陣一樣取決於第二層(圖中第一個方框)有多少個神經單元,用 \(k\) 表示第二層的數量,\(b\in\mathbb{R}\) 爲偏置(bias)單元。函數
全鏈接神經網絡
上圖只是一個普遍的 \(Softmax\) 的示意圖,下面用一個神經網絡表示。spa
上圖是更廣義的 \(L\) 層全鏈接神經網絡,其中,\(l_1\) 表示第一層的神經元數量,\(l_L\) 表示最後一層,即第 \(L\) 層的神經元數量,根據 \(Softmax\) 模型,假設此神經網絡用做 \(C\) 分類的網絡,\(l_L\) 的數量也是 \(C\) 的數量;\(\hat{y}\in\mathbb{R}^{C\times m}\) 能夠是向量也能夠是矩陣,一樣取決因而否對一組輸入進行了 矢量化(vectorization) ,表示每個樣本的預測機率;最後將 \(\hat{y}\) 傳入損失函數 \(\ell(y,\hat{y})\) 對其計算損失,公式以下:.net
\[\ell(y,\hat{y})=-\sum_{i=1}^Cy_i\ln{\hat{y}_i} \]
最後,定義該網絡一組訓練樣本的 \(cost\) 損失函數:htm
\[J(W,b)=\frac{1}{m}\sum_{i=1}^m\ell(y^{(i)},\hat{y}^{(i)}) \]
反向傳播求導推理
下面對神經網絡進行反向傳播的求導推導。blog
首先,神經網絡前向傳播的最後一個操做是計算單個樣本上的損失度 \(\ell(y,\hat{y})\) 因此首先計算 \(\frac{\partial\ell}{\partial\hat{y}}\) 因爲神經網絡的最後一層 \(a^{[L]}\) 就是 \(\hat{y}\) 的預測輸出,因此就是對 \(a^{[L]}\) 求導:索引
\[\begin{split} \frac{\partial\ell}{\partial a^{[L]}}&=\frac{\partial}{\partial a^{[L]}}\left(-\sum_{i=1}^Cy_i\ln{\hat{y}_i}\right)\\ &=\frac{\partial}{\partial a^{[L]}}\left(-(y_1\ln{\hat{y}_1}+y_2\ln{\hat{y}_2}+\dots+y_C\ln{\hat{y}_C})\right)\\ &=\frac{\partial}{\partial a^{[L]}}\left(-(y_1\ln{a^{[L]}_1}+y_2\ln{a^{[L]}_2}+\dots+y_C\ln{a^{[L]}_C})\right) \end{split} \]
能夠從公式中看到,\(a^{[L]}\in\mathbb{R}^{C\times 1}\) 是一個向量,而 \(\ell\in\mathbb{R}\) 則爲一個標量,根據 標量對向量 求導的法則,能夠獲得:get
\[\begin{split} \frac{\partial\ell}{\partial a^{[L]}}&=\frac{\partial}{\partial a^{[L]}}\left(-(y_1\ln{a^{[L]}_1}+y_2\ln{a^{[L]}_2}+\dots+y_C\ln{a^{[L]}_C})\right)\\ &=\begin{bmatrix} \frac{\partial}{\partial a^{[L]}_1}\left(-(y_1\ln{a^{[L]}_1}+y_2\ln{a^{[L]}_2}+\dots+y_C\ln{a^{[L]}_C})\right)& \frac{\partial}{\partial a^{[L]}_2}\left(-(y_1\ln{a^{[L]}_1}+y_2\ln{a^{[L]}_2}+\dots+y_C\ln{a^{[L]}_C})\right)& \dots& \frac{\partial}{\partial a^{[L]}_C}\left(-(y_1\ln{a^{[L]}_1}+y_2\ln{a^{[L]}_2}+\dots+y_C\ln{a^{[L]}_C})\right) \end{bmatrix}\\ &=\begin{bmatrix} -\frac{y_1}{a^{[L]}_1}& -\frac{y_2}{a^{[L]}_2}& \dots& -\frac{y_C}{a^{[L]}_C}& \end{bmatrix}\\ &=-\frac{y}{a^{[L]}}\\ &=-\frac{y}{\hat{y}} \end{split} \]
獲得 \(\frac{\partial\ell}{\partial a^{[L]}}\) 後,下面就繼續對 \(\frac{\partial\ell}{\partial z^{[L]}}\) 求偏導,由於 \(a\) 是關於 \(z\) 的函數,因此使用鏈式求導法則 \(\frac{\partial\ell}{\partial z^{[L]}}=\frac{\partial\ell}{\partial a^{[L]}}\frac{\partial a^{[L]}}{\partial z^{[L]}}\) 下面計算 \(\frac{\partial a^{[L]}}{\partial z^{[L]}}\) 又由於 \(a^{[L]},z^{[L]}\in\mathbb{R}^{C\times 1}\) 都是相同維度的向量,因此根據 向量對向量 求導的法則,能夠獲得:博客
\[\begin{split} \frac{\partial a^{[L]}}{\partial z^{[L]}}&=\begin{bmatrix} \frac{\partial a^{[L]}}{\partial z^{[L]}_1}& \frac{\partial a^{[L]}}{\partial z^{[L]}_2}& \dots& \frac{\partial a^{[L]}}{\partial z^{[L]}_C} \end{bmatrix} \end{split} \]
能夠觀察上式子中,\(z^{[L]}_i\in\mathbb{R}\) 是一個標量,\(a^{[L]}\) 爲向量,因此使用 向量對向量 的求導法則:
\[\begin{split} \frac{\partial a^{[L]}}{\partial z^{[L]}}&=\begin{bmatrix} \frac{\partial a^{[L]}}{\partial z^{[L]}_1}& \frac{\partial a^{[L]}}{\partial z^{[L]}_2}& \dots& \frac{\partial a^{[L]}}{\partial z^{[L]}_C} \end{bmatrix}\\ &=\begin{bmatrix} \frac{\partial}{\partial z^{[L]}_1}\left(\frac{e^{z^{[L]}}}{\sum_{i=1}^Ce^{z^{[L]}_i}} \right)& \frac{\partial}{\partial z^{[L]}_2}\left(\frac{e^{z^{[L]}}}{\sum_{i=1}^Ce^{z^{[L]}_i}} \right)& \dots& \frac{\partial}{\partial z^{[L]}_C}\left(\frac{e^{z^{[L]}}}{\sum_{i=1}^Ce^{z^{[L]}_i}} \right) \end{bmatrix} \end{split} \]
咱們拿出來第一個元素 \(\frac{\partial}{\partial z_1^{[L]}}\left(\frac{e_z^{[L]}}{\sum_{i=1}^Ce^{z^{[L]}_i}}\right)\) 對其研究,發現是 向量對標量 求導,咱們將其展開:
\[\begin{split} \frac{\partial}{\partial z_1^{[L]}}\left(\frac{e^{z^{[L]}}}{\sum_{i=1}^Ce^{z^{[L]}_i}}\right)&=\begin{bmatrix} \frac{\partial}{\partial z^{[L]}_1}\left(\frac{e^{z_1^{[L]}}}{\sum_{i=1}^Ce^{z^{[L]}_i}}\right)& \frac{\partial}{\partial z^{[L]}_1}\left(\frac{e^{z_2^{[L]}}}{\sum_{i=1}^Ce^{z^{[L]}_i}}\right)& \dots& \frac{\partial}{\partial z^{[L]}_1}\left(\frac{e^{z_C^{[L]}}}{\sum_{i=1}^Ce^{z^{[L]}_i}}\right)& \end{bmatrix} \end{split} \]
咱們能夠從這個式子中發現一個規律,在對 \(\frac{\partial a^{[L]}}{\partial z^{[L]}}\) 求導的展開式中,每一項都會有一個分母項 \(z_i^{[L]}\) 和分子的向量中的一個元素 \(e^{z_i^{[L]}}\) 相對應,分子中的其它項 \(e^{z_j^{[L]}}\) 就與之不對應;
好比在第一個元素 \(\frac{\partial a^{[L]}_1}{\partial z^{[L]}_1}\) 中,\(a\) 和 \(z\) 的下標都相同,因此能夠獲得:
\[\begin{split} \frac{\partial a^{[L]}_1}{\partial z_1^{[L]}} &=\frac{\partial}{\partial z_1^{[L]}}\left(\frac{e^{z_1^{[L]}}}{\sum_{i=1}^Ce^{z_i^{[L]}}}\right)\\ &=\frac{(e^{z_1^{[L]}})'\sum_{i=1}^Ce^{z_i^{[L]}}-e^{z_1^{[L]}}(e^{z_1^{[L]}}+e^{z_2^{[L]}}+\dots+e^{z_C^{[L]}})'}{\left(\sum_{i=1}^Ce^{z_i^{[L]}}\right)^2}\\ &=\frac{e^{z_1^{[L]}}\sum_{i=1}^Ce^{z_i^{[L]}}-e^{z_1^{[L]}}e^{z_1^{[L]}}}{\left(\sum_{i=1}^Ce^{z_i^{[L]}}\right)^2}\\ &=\frac{e^{z_1^{[L]}}\sum_{i=1}^Ce^{z_i^{[L]}}}{(\sum_{i=1}^Ce^{z_i^{[L]}})^2}-\frac{e^{z_1^{[L]}}e^{z_1^{[L]}}}{(\sum_{i=1}^Ce^{z_i^{[L]}})^2}\\ &=\frac{e^{z_1^{[L]}}}{\sum_{i=1}^Ce^{z_i^{[L]}}}-\frac{e^{z_1^{[L]}}}{\sum_{i=1}^Ce^{z_i^{[L]}}}\frac{e^{z_1^{[L]}}}{\sum_{i=1}^Ce^{z_i^{[L]}}}\\ &=a^{[L]}_1(1-a^{[L]}_1) \end{split} \]
咱們能夠將其對推廣到其它的求導式子中,即當 \(i=j\) 時,咱們能夠獲得:
\[\frac{\partial e^{z^{[L]}_i}}{\partial z^{[L]}_j}=a^{[L]}_i(1-a^{[L]}_i) \]
若是,當 \(i\neq j\) 時,咱們獲得(因爲使用的 \(i,j\) 做爲下標,故將分母的 \(\Sigma\) 累加和的下標使用 \(k\) 替換):
\[\begin{split} \frac{\partial a^{[L]}_i}{\partial z_j^{[L]}} &=\frac{\partial}{\partial z_j^{[L]}}\left(\frac{e^{z_i^{[L]}}}{\sum_{k=1}^Ce^{z_k^{[L]}}}\right)\\ &=\frac{(e^{z_i^{[L]}})'\sum_{k=1}^Ce^{z_k^{[L]}}-e^{z_i^{[L]}}(e^{z_1^{[L]}}+e^{z_2^{[L]}}+\dots+e^{z_C^{[L]}})'}{\left(\sum_{k=1}^Ce^{z_k^{[L]}}\right)^2}\\ &=\frac{0\sum_{i=1}^Ce^{z_i^{[L]}}-e^{z_i^{[L]}}e^{z_j^{[L]}}}{\left(\sum_{k=1}^Ce^{z_k^{[L]}}\right)^2}\\ &=\frac{-e^{[L]}_ie^{[L]}_j}{(\sum_{k=1}^Ce^{[L]}_k)^2}\\ &=-\frac{e^{[L]}_i}{\sum_{k=1}^Ce^{[L]}_k}\frac{e^{[L]}_j}{\sum_{k=1}^Ce^{[L]}_k}\\ &=-a_ia_j \end{split} \]
而後咱們寫出 \(\frac{\partial a^{[L]}}{\partial z^{[L]}}\) 的 雅可比矩陣(jacobian matrix) :
\[\begin{split} \frac{\partial a^{[L]}}{\partial z^{[L]}}&=\begin{bmatrix} \frac{\partial a^{[L]}_1}{\partial z^{[L]}_1}&\frac{\partial a^{[L]}_1}{\partial z^{[L]}_2}&\dots&\frac{\partial a^{[L]}_1}{\partial z^{[L]}_C}\\ \frac{\partial a^{[L]}_2}{\partial z^{[L]}_1}&\frac{\partial a^{[L]}_2}{\partial z^{[L]}_2}&\dots&\frac{\partial a^{[L]}_2}{\partial z^{[L]}_C}\\ \vdots&\vdots&\ddots&\vdots\\ \frac{\partial a^{[L]}_C}{\partial z^{[L]}_1}&\frac{\partial a^{[L]}_C}{\partial z^{[L]}_2}&\dots&\frac{\partial a^{[L]}_C}{\partial z^{[L]}C} \end{bmatrix}\\ \end{split} \]
咱們發現除了對角線上即 \(i=j\) 時的求導爲 \(a_i(1-a_j)\) 而矩陣的其它元素即 \(i\neq j\) 時求導爲 \(-a_ia_j\) 。
至此,咱們求出來了 \(\frac{\partial\ell}{\partial a^{[L]}}\) 和 \(\frac{\partial a^{[L]}}{\partial z^{[L]}}\) 因此下面咱們就開始計算 \(\frac{\partial\ell}{\partial z^{[L]}}\) 的導數:
\[\frac{\partial\ell}{\partial z^{[L]}}=\frac{\partial\ell}{\partial a^{[L]}}\frac{\partial a^{[L]}}{\partial z^{[L]}} \]
首先咱們先看第一項,在上面咱們已經求出了 \(\frac{\partial\ell}{\partial a^{[L]}}\) 的導數即 \(-\frac{y}{a^{[L]}}\) 首先咱們從分子和分母中能夠看到 \(y,a^{[L]}\in\mathbb{R}^{1\times C}\) 兩個都是一個 \(1\times C\) 的向量,因此能夠獲得 \(\frac{\partial\ell}{\partial a^{[L]}}\) 也是一個 \(1\times C\) 向量;而式子的第二項咱們剛剛求出了其 雅可比矩陣 \(\frac{\partial a^{[L]}}{\partial z^{[L]}}\in\mathbb{R}^{C\times C}\) 是一個 \(C\times C\) 的矩陣,而在對 \(\frac{\partial\ell}{\partial z^{[L]}}\) 將向量和矩陣相乘,因此咱們獲得了一個 \(1\times C\) 的向量:
\[\begin{split} \frac{\partial\ell}{\partial a^{[L]}}\frac{\partial a^{[L]}}{\partial z^{[L]}}&= \begin{bmatrix} -\frac{y_1}{a^{[L]}_1}&-\frac{y_2}{a^{[L]}_2}&\dots&-\frac{y_C}{a^{[L]}_C} \end{bmatrix} \begin{bmatrix} \frac{\partial a^{[L]}_1}{\partial z^{[L]}_1}&\frac{\partial a^{[L]}_1}{\partial z^{[L]}_2}&\dots&\frac{\partial a^{[L]}_1}{\partial z^{[L]}_C}\\ \frac{\partial a^{[L]}_2}{\partial z^{[L]}_1}&\frac{\partial a^{[L]}_2}{\partial z^{[L]}_2}&\dots&\frac{\partial a^{[L]}_2}{\partial z^{[L]}_C}\\ \vdots&\vdots&\ddots&\vdots\\ \frac{\partial a^{[L]}_C}{\partial z^{[L]}_1}&\frac{\partial a^{[L]}_C}{\partial z^{[L]}_2}&\dots&\frac{\partial a^{[L]}_C}{\partial z^{[L]}C} \end{bmatrix}\\ &=\begin{bmatrix} -\frac{y_1}{a^{[L]}_1}\frac{\partial a^{[L]}_1}{\partial z^{[L]}_1}-\frac{y_2}{a^{[L]}_2}\frac{\partial a^{[L]}_2}{\partial z^{[L]}_1}-\dots-\frac{y_C}{a^{[L]}_C}\frac{\partial a^{[L]}_C}{\partial z^{[L]}_1}\\ -\frac{y_1}{a^{[L]}_1}\frac{\partial a^{[L]}_1}{\partial z^{[L]}_2}-\frac{y_2}{a^{[L]}_2}\frac{\partial a^{[L]}_2}{\partial z^{[L]}_2}-\dots-\frac{y_C}{a^{[L]}_C}\frac{\partial a^{[L]}_C}{\partial z^{[L]}_2}\\ \vdots\\ -\frac{y_1}{a^{[L]}_1}\frac{\partial a^{[L]}_1}{\partial z^{[L]}_C}-\frac{y_2}{a^{[L]}_2}\frac{\partial a^{[L]}_2}{\partial z^{[L]}_C}-\dots-\frac{y_C}{a^{[L]}_C}\frac{\partial a^{[L]}_C}{\partial z^{[L]}_C}\\ \end{bmatrix}^T\\ &=\begin{bmatrix} -\sum_{i=1}^C\frac{y_i}{a^{[L]}_i}\frac{\partial a^{[L]}_i}{\partial z^{[L]}_1}& -\sum_{i=1}^C\frac{y_i}{a^{[L]}_i}\frac{\partial a^{[L]}_i}{\partial z^{[L]}_2}& \dots& -\sum_{i=1}^C\frac{y_i}{a^{[L]}_i}\frac{\partial a^{[L]}_i}{\partial z^{[L]}_C} \end{bmatrix} \end{split} \]
注意第二行獲得的結果應該是一個 \(1\times C\) 的向量,因爲排版因此將其轉置成 \(C\times 1\) 的向量,不過這絕不影響推導。
因此,根據式子的最後一步,咱們能夠獲得,對於 \(a^{[L]}\) 上的全部元素 \(a^{[L]}_j\) 咱們能夠獲得一個更統一化的式子:
\[\begin{split} \frac{\partial\ell}{\partial a^{[L]}}\frac{\partial a^{[L]}}{\partial z^{[L]}}&=\begin{bmatrix} -\sum_{i=1}^C\frac{y_i}{a^{[L]}_i}\frac{\partial a^{[L]}_i}{\partial a^{[L]}_1}& -\sum_{i=1}^C\frac{y_i}{a^{[L]}_i}\frac{\partial a^{[L]}_i}{\partial a^{[L]}_2}& \dots& -\sum_{i=1}^C\frac{y_i}{a^{[L]}_i}\frac{\partial a^{[L]}_i}{\partial a^{[L]}_C} \end{bmatrix}\\ &=\begin{bmatrix} -\sum_{i=1}^C\frac{y_i}{a^{[L]}_i}\frac{\partial a^{[L]}_i}{\partial a^{[L]}_j} \end{bmatrix},j=[1,2,\dots,C]\\ \end{split} \]
咱們觀察式子的最後一項關於 \(\frac{\partial a^{[L]}_i}{\partial z^{[L]}_j}\) 咱們在上面求出了其導數有兩種狀況:
\[\begin{split} \frac{\partial a^{[L]}_i}{\partial z^{[L]}_j}=\left\{\begin{matrix} a_i(1-a_j)&&i=j\\ -a_ia_j&&i\neq j \end{matrix}\right. \end{split} \]
咱們將這個結果帶回到上面的式子中:
\[\begin{split} -\sum_{i=1}^C\frac{y_i}{a^{[L]}_i}\frac{\partial a^{[L]}_i}{\partial z^{[L]}_j}&= \left\{\begin{matrix} -\sum_{i=1}^C\frac{y_i}{a^{[L]}_i}a^{[L]}_i(1-a^{[L]}_j)&&i=j\\ \sum_{i=1}^C\frac{y_i}{a^{[L]}_i}a^{[L]}_ia^{[L]}_j&&i\neq j \end{matrix}\right.\\ &= \left\{\begin{matrix} -\sum_{i=1}^Cy_i(1-a^{[L]}_j)&&i=j\\ \sum_{i=1}^Cy_ia^{[L]}_j&&i\neq j \end{matrix}\right.\\ &= \left\{\begin{matrix} \sum_{i=1}^Cy_ia^{[L]}_j-y_i&&i=j\\ \sum_{i=1}^Cy_ia^{[L]}_j&&i\neq j \end{matrix}\right. \end{split} \]
注意雖然最後把式子推導成爲兩個部分,可是最原始的式子就是要把每一項 \(i\) 與 \(j\) 所有加起來,不過就是由於要區別對待 \(i,j\) 相不相等的狀況,這裏當 \(i=j\) 時只有一項,因此能夠將前面的 \(\sum\) 符號去掉,而後把後面的 \(i\neq j\) 的項加起來,咱們能夠獲得:
\[\begin{split} -\sum_{i=1}^C\frac{y_i}{a^{[L]}_i}\frac{\partial a^{[L]}_i}{\partial z^{[L]}_j}&= {\color{red}{-y_j+y_ja^{[L]}_j}}+{\color{green}{\sum_{i\in{\{i|i\neq j\}}}y_ia^{[L]}_j}}\\ &=-y_j+{\color{blue}{y_ja^{[L]}_j+\sum_{i\in{\{i|i\neq j\}}}y_ia^{[L]}_j}}\\ &=-y_j+{\color{orange}{\sum_{i=1}^Cy_ia^{[L]}_j}}\\ &=-y_j+a^{[L]}_j\sum_{i=1}^Cy_i\\ &=a^{[L]}_i-y_j\\ &=a^{[L]}-y \end{split} \]
首先說明一下式子的第一行,紅色的部分是 \(i=j\) 的狀況,只有一項,因此不須要用 \(\sum\) 符號表示,綠色部分是當 \(i\neq j\) 的狀況;
在第二行中,咱們能夠看到,在整個藍色的式子中,第一項是 \(i=j\) 的狀況,然後面是 \(i\neq j\) 的全部項加起來,咱們能夠發現第一項的 \(y_j\) 正好補充了後面的 \(\sum\) 求和的部分,因此將這兩項合併就到了 \(\sum_{i=1}^C\) 的項;
由於下標是 \(i\) 索引的,因此將常數項 \(a^{[L]}_j\) 提到前面來;此時觀察後面的 \(\sum_{i=1}^Cy_i\) 項,根據 \(Softmax\) 多分類的狀況,\(y\) 是由一個 \(1\) 和其它全 \(0\) 組成的,因此對 \(y\) 進行累加和,咱們獲得的是 \(1\)
最後,整理下式子,咱們就能獲得 \(\frac{\partial\ell}{\partial z^{[L]}}\) 的導數爲 \(a^{[L]}-y\)
總結
\(Softmax\) 迴歸的激活部分,和使用 \(Sigmoid/ReLu\) 做爲激活函數是有所不一樣的,由於在 \(Sigmoid/ReLu\) 中,每個神經元計算獲得 \(z\) 後不須要將其它神經元的 \(z\) 所有累加起來作機率的 歸一化 ;也就是說以往的 \(Sigmoid/ReLu\) 做爲激活函數,每個神經元由 \(z\) 計算 \(a\) 時是獨立於其它的神經元的;因此在反向傳播求導數的時候,咱們就能發現當計算 \(\frac{\partial a}{\partial z}\) 的時候,再也不是單獨的一一對應的關係,而是像正向傳播那樣,將上一層的結果所有集成到每個神經元上,下面的圖中,紅色箭頭表示了 \(Softmax\) 和 \(Sigmoid/ReLu\) 的反向傳播的路徑的有所不一樣。
在上圖中, \(Softmax\) 層的激活的反向傳播,能夠看到每個 \(a^{[L]}_i\) 都回饋到了不一樣的 \(z^{[L]}_j\) 的神經元上;其中紅色的線表示了 \(i=j\) 的狀況,其它藍色的線代表了 \(i\neq j\) 的狀況,這也說明了爲何在 \(Softmax\) 裏的求導中會出現兩種狀況;反觀第一層中的 \(Sigmoid/ReLu\) 激活中,每個對 \(z^{[1]}_i\) 的激活都是在本地的神經元中獲得的,沒有其它神經單元傳入的狀況,因此也沒有複雜的分下標 \(i,j\) 討論求導的狀況。
參考博客
- https://www.cnblogs.com/zhaopAC/p/9539118.html
- https://blog.csdn.net/xxuffei/article/details/90022008