神经网络入门篇:详解多样本向量化(Vectorizing across multiple examples)
多樣本向量化
- 與上篇博客相聯系的來理解
邏輯回歸是將各個訓練樣本組合成矩陣,對矩陣的各列進行計算。神經網絡是通過對邏輯回歸中的等式簡單的變形,讓神經網絡計算出輸出值。這種計算是所有的訓練樣本同時進行的,以下是實現它具體的步驟:
圖1.4.1
上篇博客中得到的四個等式。它們給出如何計算出\(z^{[1]}\),\(a^{[1]}\),\(z^{[2]}\),\(a^{[2]}\)。
對于一個給定的輸入特征向量\(X\),這四個等式可以計算出\(\alpha^{[2]}\)等于\(\hat{y}\)。這是針對于單一的訓練樣本。如果有\(m\)個訓練樣本,那么就需要重復這個過程。
用第一個訓練樣本\(x^{[1]}\)來計算出預測值\(\hat{y}^{[1]}\),就是第一個訓練樣本上得出的結果。
然后,用\(x^{[2]}\)來計算出預測值\(\hat{y}^{[2]}\),循環往復,直至用\(x^{[m]}\)計算出\(\hat{y}^{[m]}\)。
用激活函數表示法,如上圖左下所示,它寫成\(a^{[2](1)}\)、\(a^{[2](2)}\)和\(a^{[2](m)}\)。
【注】:\(a^{[2](i)}\),\((i)\)是指第\(i\)個訓練樣本而\([2]\)是指第二層。
如果有一個非向量化形式的實現,而且要計算出它的預測值,對于所有訓練樣本,需要讓\(i\)從1到\(m\)實現這四個等式:
\(z^{[1](i)}=W^{[1](i)}x^{(i)}+b^{[1](i)}\)
\(a^{[1](i)}=\sigma(z^{[1](i)})\)
\(z^{[2](i)}=W^{[2](i)}a^{[1](i)}+b^{[2](i)}\)
\(a^{[2](i)}=\sigma(z^{[2](i)})\)
對于上面的這個方程中的\(^{(i)}\),是所有依賴于訓練樣本的變量,即將\((i)\)添加到\(x\),\(z\)和\(a\)。如果想計算\(m\)個訓練樣本上的所有輸出,就應該向量化整個計算,以簡化這列。
這里需要使用很多線性代數的內容,重要的是能夠正確地實現這一點,尤其是在深度學習的錯誤中。實際上我認真地選擇了運算符號,這些符號只是針對于我所寫神經網絡系列的博客的,并且能使這些向量化容易一些。
所以,希望通過這個細節可以更快地正確實現這些算法。接下來講講如何向量化這些:
公式1.12:
公式1.13:
\[Z^{[1]} = \left[ \begin{array}{c} \vdots & \vdots & \vdots & \vdots\\ z^{[1](1)} & z^{[1](2)} & \cdots & z^{[1](m)}\\ \vdots & \vdots & \vdots & \vdots\\ \end{array} \right] \]公式1.14:
\[A^{[1]} = \left[ \begin{array}{c} \vdots & \vdots & \vdots & \vdots\\ \alpha^{[1](1)} & \alpha^{[1](2)} & \cdots & \alpha^{[1](m)}\\ \vdots & \vdots & \vdots & \vdots\\ \end{array} \right] \]公式1.15:
\[\left. \begin{array}{r} \text{$z^{[1](i)} = W^{[1](i)}x^{(i)} + b^{[1]}$}\\ \text{$\alpha^{[1](i)} = \sigma(z^{[1](i)})$}\\ \text{$z^{[2](i)} = W^{[2](i)}\alpha^{[1](i)} + b^{[2]}$}\\ \text{$\alpha^{[2](i)} = \sigma(z^{[2](i)})$}\\ \end{array} \right\} \implies \begin{cases} \text{$A^{[1]} = \sigma(z^{[1]})$}\\ \text{$z^{[2]} = W^{[2]}A^{[1]} + b^{[2]}$}\\ \text{$A^{[2]} = \sigma(z^{[2]})$}\\ \end{cases} \]定義矩陣\(X\)等于訓練樣本,將它們組合成矩陣的各列,形成一個\(n\)維或\(n\)乘以\(m\)維矩陣。接下來計算見公式1.15:
以此類推,從小寫的向量\(x\)到這個大寫的矩陣\(X\),只是通過組合\(x\)向量在矩陣的各列中。
同理,\(z^{[1](1)}\),\(z^{[1](2)}\)等等都是\(z^{[1](m)}\)的列向量,將所有\(m\)都組合在各列中,就的到矩陣\(Z^{[1]}\)。
同理,\(a^{[1](1)}\),\(a^{[1](2)}\),……,\(a^{[1](m)}\)將其組合在矩陣各列中,如同從向量\(x\)到矩陣\(X\),以及從向量\(z\)到矩陣\(Z\)一樣,就能得到矩陣\(A^{[1]}\)。
同樣的,對于\(Z^{[2]}\)和\(A^{[2]}\),也是這樣得到。
這種符號其中一個作用就是,可以通過訓練樣本來進行索引。這就是水平索引對應于不同的訓練樣本的原因,這些訓練樣本是從左到右掃描訓練集而得到的。
在垂直方向,這個垂直索引對應于神經網絡中的不同節點。例如,這個節點,該值位于矩陣的最左上角對應于激活單元,它是位于第一個訓練樣本上的第一個隱藏單元。它的下一個值對應于第二個隱藏單元的激活值。它是位于第一個訓練樣本上的,以及第一個訓練示例中第三個隱藏單元,等等。
當垂直掃描,是索引到隱藏單位的數字。當水平掃描,將從第一個訓練示例中從第一個隱藏的單元到第二個訓練樣本,第三個訓練樣本……直到節點對應于第一個隱藏單元的激活值,且這個隱藏單元是位于這\(m\)個訓練樣本中的最終訓練樣本。
從水平上看,矩陣\(A\)代表了各個訓練樣本。從豎直上看,矩陣\(A\)的不同的索引對應于不同的隱藏單元。
對于矩陣\(Z,X\)情況也類似,水平方向上,對應于不同的訓練樣本;豎直方向上,對應不同的輸入特征,而這就是神經網絡輸入層中各個節點。
神經網絡上通過在多樣本情況下的向量化來使用這些等式。
總結
以上是生活随笔為你收集整理的神经网络入门篇:详解多样本向量化(Vectorizing across multiple examples)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用GPT4进行数据分析,竟然被他骗了
- 下一篇: 升讯威在线客服系统的并发高性能数据处理技