3.4 多个例子中的向量化-深度学习-Stanford吴恩达教授
| 3.3 計算神經網絡的輸出 | 回到目錄 | 3.5 向量化實現的解釋 |
多個例子中的向量化 (Vectorizing across Multiple Examples)
在上一個視頻,了解到如何針對于單一的訓練樣本,在神經網絡上計算出預測值。
在這個視頻,將會了解到如何向量化多個訓練樣本,并計算出結果。該過程與你在邏輯回歸中所做類似。
邏輯回歸是將各個訓練樣本組合成矩陣,對矩陣的各列進行計算。神經網絡是通過對邏輯回歸中的等式簡單的變形,讓神經網絡計算出輸出值。這種計算是所有的訓練樣本同時進行的,以下是實現它具體的步驟:
圖3.4.1
上一節視頻中得到的四個等式。它們給出如何計算出 z[1],a[1],z[2],a[2]z^{[1]},a^{[1]},z^{[2]},a^{[2]}z[1],a[1],z[2],a[2] 。
對于一個給定的輸入特征向量 XXX ,這四個等式可以計算出 a[2]a^{[2]}a[2] 等于 y^\hat{y}y^? 。這是針對于單一的訓練樣本。如果有 mmm 個訓練樣本,那么就需要重復這個過程。
用第一個訓練樣本 x[1]x^{[1]}x[1] 來計算出預測值 y^[1]\hat{y}^{[1]}y^?[1] ,就是第一個訓練樣本上得出的結果。
然后,用 x[2]x^{[2]}x[2] 來計算出預測值 y^[2]\hat{y}^{[2]}y^?[2] ,循環往復,直至用 x[m]x^{[m]}x[m] 計算出 y^[m]\hat{y}^{[m]}y^?[m] 。
用激活函數表示法,如上圖左下所示,它寫成 a[2](1)、a[2](2)a^{[2](1)}、a^{[2](2)}a[2](1)、a[2](2) 和 a[2](m)a^{[2](m)}a[2](m) 。
【注】: a[2](i)a^{[2](i)}a[2](i) , (i)(i)(i) 是指第 iii 個訓練樣本而 [2][2][2] 是指第二層。
如果有一個非向量化形式的實現,而且要計算出它的預測值,對于所有訓練樣本,需要讓 iii 從1到 mmm 實現這四個等式:
z[1](i)=W[1](i)x(i)+b[1](i)z^{[1](i)}=W^{[1](i)}x^{(i)}+b^{[1](i)}z[1](i)=W[1](i)x(i)+b[1](i)a[1](i)=σ(z[1](i))a^{[1](i)}=\sigma(z^{[1](i)})a[1](i)=σ(z[1](i))z[2](i)=W[2](i)a[1](i)+b[2](i)z^{[2](i)}=W^{[2](i)}a^{[1](i)}+b^{[2](i)}z[2](i)=W[2](i)a[1](i)+b[2](i)a[2](i)=σ(z[2](i))a^{[2](i)}=\sigma(z^{[2](i)})a[2](i)=σ(z[2](i))
對于上面的這個方程中的 (i)^{(i)}(i) ,是所有依賴于訓練樣本的變量,即將 (i)(i)(i) 添加到 x,zx,zx,z 和 aaa 。如果想計算 mmm 個訓練樣本上的所有輸出,就應該向量化整個計算,以簡化這列。
本課程需要使用很多線性代數的內容,重要的是能夠正確地實現這一點,尤其是在深度學習的錯誤中。實際上本課程認真地選擇了運算符號,這些符號只是針對于這個課程的,并且能使這些向量化容易一些。
所以,希望通過這個細節可以更快地正確實現這些算法。接下來講講如何向量化這些: 公式3.12:
x=[????x(1)x(2)?x(m)????]x=\left[ \begin{matrix} \vdots & \vdots &\vdots & \vdots \\ x^{(1)} & x^{(2)} & \cdots & x^{(m)}\\ \vdots & \vdots & \vdots & \vdots \\ \end{matrix} \right]x=??????x(1)???x(2)???????x(m)???????
公式3.13:
Z[1]=[????z[1](1)z[1](2)?z[1](m)????]Z^{[1]}=\left[ \begin{matrix} \vdots & \vdots &\vdots & \vdots \\ z^{[1](1)} & z^{[1](2)} & \cdots & z^{[1](m)} \\ \vdots & \vdots & \vdots & \vdots \\ \end{matrix} \right]Z[1]=??????z[1](1)???z[1](2)???????z[1](m)???????
公式3.14:
A[1]=[????a[1](1)a[1](2)?a[1](m)????]A^{[1]}=\left[ \begin{matrix} \vdots & \vdots &\vdots & \vdots \\ a^{[1](1)} & a^{[1](2)} & \cdots & a^{[1](m)} \\ \vdots & \vdots & \vdots & \vdots \\ \end{matrix} \right]A[1]=??????a[1](1)???a[1](2)???????a[1](m)???????
公式3.15:
z[1](i)=W[1](i)x(i)+b(1)a[1](i)=σ(z[1](i))z[2](i)=W[2](i)a[1](i)+b(2)a[2](i)=σ(z[2](i))}?{A[1]=σ(z[1])z[2]=W[2]A[1]+b[2]A[2]=σ(z[2])\left.\begin{matrix} z^{[1](i)}=W^{[1](i)}x^{(i)}+b^{(1)} \\ a^{[1](i)}=\sigma(z^{[1](i)}) \\ z^{[2](i)}=W^{[2](i)}a^{[1](i)}+b^{(2)} \\ a^{[2](i)}=\sigma(z^{[2](i)}) \\ \end{matrix}\right\} \Rightarrow \left \{\begin{matrix} A^{[1]}=\sigma(z^{[1]}) \\ z^{[2]}=W^{[2]}A^{[1]}+b^{[2]} \\ A^{[2]}=\sigma(z^{[2]}) \\ \end{matrix}\right. z[1](i)=W[1](i)x(i)+b(1)a[1](i)=σ(z[1](i))z[2](i)=W[2](i)a[1](i)+b(2)a[2](i)=σ(z[2](i))??????????????A[1]=σ(z[1])z[2]=W[2]A[1]+b[2]A[2]=σ(z[2])?
前一張幻燈片中的for循環是來遍歷所有個訓練樣本。 定義矩陣 XXX 等于訓練樣本,將它們組合成矩陣的各列,形成一個 nnn 維或 nnn 乘以 mmm 維矩陣。接下來計算見公式3.15:
以此類推,從小寫的向量 xxx 到這個大寫的矩陣 XXX ,只是通過組合 xxx 向量在矩陣的各列中。
同理, z[1](1),z[1](2)z^{[1](1)},z^{[1](2)}z[1](1),z[1](2) 等等都是 z[1](m)z^{[1](m)}z[1](m) 的列向量,將所有 mmm 都組合在各列中,就的到矩陣 Z[1]Z^{[1]}Z[1] 。
同理 a[1](1),a[1](2),……a[1](m)a^{[1](1)},a^{[1](2)},……a^{[1](m)}a[1](1),a[1](2),……a[1](m) ,將其組合在矩陣各列中,如同從向量 xxx 到矩陣 XXX ,以及從向量 zzz 到矩陣 ZZZ 一樣,就能得到矩陣 A[1]A^{[1]}A[1] 。
同樣的,對于 Z[2]Z^{[2]}Z[2] 和 A[2]A^{[2]}A[2] ,也是這樣得到。
這種符號其中一個作用就是,可以通過訓練樣本來進行索引。這就是水平索引對應于不同的訓練樣本的原因,這些訓練樣本是從左到右掃描訓練集而得到的。
在垂直方向,這個垂直索引對應于神經網絡中的不同節點。例如,這個節點,該值位于矩陣的最左上角對應于激活單元,它是位于第一個訓練樣本上的第一個隱藏單元。它的下一個值對應于第二個隱藏單元的激活值。它是位于第一個訓練樣本上的,以及第一個訓練示例中第三個隱藏單元,等等。
當垂直掃描,是索引到隱藏單位的數字。當水平掃描,將從第一個訓練示例中從第一個隱藏的單元到第二個訓練樣本,第三個訓練樣本……直到節點對應于第一個隱藏單元的激活值,且這個隱藏單元是位于這 mmm 個訓練樣本中的最終訓練樣本。
從水平上看,矩陣 AAA 代表了各個訓練樣本。從豎直上看,矩陣 AAA 的不同的索引對應于不同的隱藏單元。
對于矩陣 Z,XZ,XZ,X 情況也類似,水平方向上,對應于不同的訓練樣本;豎直方向上,對應不同的輸入特征,而這就是神經網絡輸入層中各個節點。
神經網絡上通過在多樣本情況下的向量化來使用這些等式。
在下一個視頻中,將證明為什么這是一種正確向量化的實現。這種證明將會與邏輯回歸中的證明類似。
課程板書
| 3.3 計算神經網絡的輸出 | 回到目錄 | 3.5 向量化實現的解釋 |
總結
以上是生活随笔為你收集整理的3.4 多个例子中的向量化-深度学习-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3.3 神经网络的输出-深度学习-Sta
- 下一篇: 3.5 向量化实现的解释-深度学习-St