3.6 权值初始化-机器学习笔记-斯坦福吴恩达教授
權值初始化
0值初始化
在邏輯回歸中,我們通常會初始化所有權值為 0 ,假如在如下的神經網絡也采用 0 值初始化:
則可以得到:
a1(1)=a2(2)a^{(1)}_1=a^{(2)}_2a1(1)?=a2(2)?則δ1(1)=δ2(1)則 δ^{(1)}_1=δ^{(1)}_2則δ1(1)?=δ2(1)?則??Θ01(1)J(Θ)=??Θ02(1)J(Θ)則\frac ?{?Θ^{(1)}_{01}J(Θ)}=\frac ?{?Θ^{(1)}_{02}}J(Θ)則?Θ01(1)?J(Θ)??=?Θ02(1)???J(Θ)則更新后的權值:Θ01(1)=Θ02(1)則更新后的權值:Θ^{(1)}_{01}=Θ^{(1)}_{02}則更新后的權值:Θ01(1)?=Θ02(1)?
亦即,每次迭代,所有權值的數值都一樣,這意味著,隱含層的神經元激活值也將一樣,也就是無論隱含層層數有多少,各層的神經元有多少,由于各層的神經元激活值大小一樣,也就相當于各層只有一個有效神經元(特征),這就失去了神經網絡進行特征擴展和優化的本意了。
隨機初始化
我們看到了固定值初始化將會是神經網絡喪失其特性,因此,對于各層的權值矩陣,采用隨機初始化策略。隨機值產生的區間我們定義為 [??,+?][??,+?][??,+?] ,并假定:
Θ(1)∈R10×11,Θ(2)∈R1×11Θ^{(1)}∈R^{10×11},Θ^{(2)}∈R^{1×11}Θ(1)∈R10×11,Θ(2)∈R1×11
在 matlab 中,隨機初始化權值的代碼如下:
Theta1 = rand(10,11) * (2 * INIT_EPSILON) - INIT_EPSILON; Theta2 = rand(10,11) * (2 * INIT_EPSILON) - INIT_EPSILON;在 python 中,隨機初始化權值的代碼如下:
import numpy as np # ... Theta1 = np.random.rand(10,11) * (2 * INIT_EPSILON) - INIT_EPSILON Theta2 = np.random.rand(1,11) * (2 * INIT_EPSILON) - INIT_EPSILON總結
以上是生活随笔為你收集整理的3.6 权值初始化-机器学习笔记-斯坦福吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3.5 梯度校验-机器学习笔记-斯坦福吴
- 下一篇: 3.7 感知器-机器学习笔记-斯坦福吴恩