1樓:南非烏雀
下面是就是神經網路中代價函式j(θ)j(θ)的表示式,看起來還是稍微有點複雜。這個表示式到底在計算什麼?下面我們先用一個簡單的例子來分開一步步計算一下。
j(θ)=−1m∑i=1m∑k=1k[y(i)klog((hθ(x(i)))k)+(1−y(i)k)log(1−(hθ(x(i)))k)]+λ2m∑l=1l−1∑i=1sl∑j=1sl+1(θ(l)j,i)2j(θ)=−1m∑i=1m∑k=1k[yk(i)log((hθ(x(i)))k)+(1−yk(i))log(1−(hθ(x(i)))k)]+λ2m∑l=1l−1∑i=1sl∑j=1sl+1(θj,i(l))2
有如下神經網路:
其中:lslk=神經網路總共包含的層數=第l層的神經元數目=輸出層的神經元數,亦即分類的數目l=神經網路總共包含的層數sl=第l層的神經元數目k=輸出層的神經元數,亦即分類的數目
假設s1=3,s2=2,s3=3s1=3,s2=2,s3=3,則θ1θ1的維度為2×42×4,θ2θ2的維度為3×33×3。
則有:xt=⎡⎣⎢⎢⎢1x1x2x3⎤⎦⎥⎥⎥,θ1=[θ110θ120θ111θ121θ112θ122θ113θ123]2×4,θ2=⎡⎣⎢⎢θ210θ220θ230θ211θ221θ231θ212θ222θ232⎤⎦⎥⎥3×3xt=[1x1x2x3],θ1=[θ101θ111θ121θ131θ201θ211θ221θ231]2×4,θ2=[θ102θ112θ122θ202θ212θ222θ302θ312θ322]3×3
先回憶一下正向傳播的計算公式:
z(j)=θ(j−1)a(j−1)……(1)a(j)=g(z(j)),setting a(j)0=1……(2)hθ(x)=a(j)=g(z(j))……(3)z(j)=θ(j−1)a(j−1)……(1)a(j)=g(z(j)),setting a0(j)=1……(2)hθ(x)=a(j)=g(z(j))……(3)
詳解戳此處
此時我們先忽略 regularized term
①當m=1時;
j(θ)=−1m∑k=1k[y(i)klog((hθ(x(i)))k)+(1−y(i)k)log(1−(hθ(x(i)))k)]j(θ)=−1m∑k=1k[yk(i)log((hθ(x(i)))k)+(1−yk(i))log(1−(hθ(x(i)))k)]
1.令a1=xt;⟹z2=θ1∗a1=[θ110θ120θ111θ121θ112θ122θ113θ123]2×4×⎡⎣⎢⎢⎢1x1x2x3⎤⎦⎥⎥⎥=[θ110+θ111⋅x1+θ112⋅x2+θ113⋅x3θ120+θ121⋅x1+θ122⋅x2+θ123⋅x3]2×11.令a1=xt;⟹z2=θ1∗a1=[θ101θ111θ121θ131θ201θ211θ221θ231]2×4×[1x1x2x3]=[θ101+θ111⋅x1+θ121⋅x2+θ131⋅x3θ201+θ211⋅x1+θ221⋅x2+θ231⋅x3]2×1
=[z21z22],⟹a2=g(z2);=[z12z22],⟹a2=g(z2);
2.給a2新增偏置項,並計算a3即hθ(x) 2.給a2新增偏置項,並計算a3即hθ(x);
a2=⎡⎣⎢1a21a22⎤⎦⎥;⟹z3=θ2∗a2=⎡⎣⎢⎢θ210θ220θ230θ211θ221θ231θ212θ222θ232⎤⎦⎥⎥3×3×⎡⎣⎢1a21a22⎤⎦⎥=⎡⎣⎢⎢z31z32z33⎤⎦⎥⎥;a2=[1a12a22];⟹z3=θ2∗a2=[θ102θ112θ122θ202θ212θ222θ302θ312θ322]3×3×[1a12a22]=[z13z23z33];
⟹hθ(x)=a3=g(z3)=⎡⎣⎢⎢g(z31)g(z32)g(z33)⎤⎦⎥⎥=⎡⎣⎢h(x)1h(x)2h(x)3)⎤⎦⎥⟹hθ(x)=a3=g(z3)=[g(z13)g(z23)g(z33)]=[h(x)1h(x)2h(x)3)]
此時我們知道,對於每一個example,最終都會輸出3個結果,那麼這時代價函式所做的就是將這3個輸出取對數然後乘以對應的預期期望值y之後,再累加起來。具體如下:
假設 input:xt=⎡⎣⎢⎢⎢1x1x2x3⎤⎦⎥⎥⎥;output:y=⎡⎣⎢100⎤⎦⎥=⎡⎣⎢y1y2y3⎤⎦⎥input:
xt=[1x1x2x3];output:y=[100]=[y1y2y3]
則有:j(θ)∗m=[−y1×log(h(x)1)−(1−y1)×log(1−h(x)1)]+[−y2×log(h(x)2)−(1−y2)×log(1−h(x)2)]+[−y3×log(h(x)3)−(1−y3)×log(1−h(x)3)]=[−1×log(h(x)1)−(1−1)×log(1−h(x)1)]+[−0×log(h(x)2)−(1−0)×log(1−h(x)2)]+[−0×log(h(x)3)−(1−0)×log(1−h(x)3)]=−log(h(x)1)−log(1−h(x)2)−log(1−h(x)3)j(θ)∗m=[−y1×log(h(x)1)−(1−y1)×log(1−h(x)1)]+[−y2×log(h(x)2)−(1−y2)×log(1−h(x)2)]+[−y3×log(h(x)3)−(1−y3)×log(1−h(x)3)]=[−1×log(h(x)1)−(1−1)×log(1−h(x)1)]+[−0×log(h(x)2)−(1−0)×log(1−h(x)2)]+[−0×log(h(x)3)−(1−0)×log(1−h(x)3)]=−log(h(x)1)−log(1−h(x)2)−log(1−h(x)3)
在matlab中,向量化之後的代價函式為:
j(θ)=(1/m)∗(sum(−labely.∗log(hθ)−(1−labely).∗log(1−hθ)));j(θ)=(1/m)∗(sum(−labely.
∗log(hθ)−(1−labely).∗log(1−hθ)));
②當m>1時;
j(θ)=−1m∑i=1m∑k=1k[y(i)klog((hθ(x(i)))k)+(1−y(i)k)log(1−(hθ(x(i)))k)]j(θ)=−1m∑i=1m∑k=1k[yk(i)log((hθ(x(i)))k)+(1−yk(i))log(1−(hθ(x(i)))k)]
此時,對於每一個example都會產生一個上面的代價,所以只需要把所有的對於每一個example產生的代價累加起來即可。
再來分解一下:
假設,x=⎡⎣⎢⎢111x11x21x31x12x22x32x13x23x33⎤⎦⎥⎥,假設,x=[1x11x21x311x12x22x321x13x23x33],
1.令a1=xt;⟹z2=θ1∗a1=[θ110θ120θ111θ121θ112θ122θ113θ123]2×4×⎡⎣⎢⎢⎢⎢1x11x12x131x21x22x231x31x32x33⎤⎦⎥⎥⎥⎥4×3=1.令a1=xt;⟹z2=θ1∗a1=[θ101θ111θ121θ131θ201θ211θ221θ231]2×4×[111x11x12x13x21x22x23x31x32x33]4×3=
=[z211z221z212z222z213z223]2×3,⟹a2=g(z2);=[z112z122z132z212z222z232]2×3,⟹a2=g(z2);
2.給a2新增偏置項,並計算a3即hθ(x) 2.給a2新增偏置項,並計算a3即hθ(x);
a2=⎡⎣⎢1a211a2211a212a2221a213a223⎤⎦⎥3×3;⟹z3=θ2∗a2=⎡⎣⎢⎢θ210θ220θ230θ211θ221θ231θ212θ222θ232⎤⎦⎥⎥3×3×⎡⎣⎢1a211a2211a212a2221a213a223⎤⎦⎥3×3a2=[111a112a122a132a212a222a232]3×3;⟹z3=θ2∗a2=[θ102θ112θ122θ202θ212θ222θ302θ312θ322]3×3×[111a112a122a132a212a222a232]3×3
⟹hθ(x)=a3=g(z3)=⎡⎣⎢⎢g(z311)g(z321)g(z331)g(z312g(z322g(z332)g(z313))g(z323))g(z333)⎤⎦⎥⎥⟹hθ(x)=a3=g(z3)=[g(z113)g(z123g(z133))g(z213)g(z223g(z233))g(z313)g(z323)g(z333)]
=⎡⎣⎢⎢⎢⎢m=1時每個example對應的所有輸出;h(x1)1h(x1)2h(x1)3m=2時h(x2)1h(x2)2h(x2)3m=3時;h(x3)1h(x3)2h(x3)3⎤⎦⎥⎥⎥⎥=[m=1時每個example對應的所有輸出;m=2時m=3時;h(x1)1h(x2)1h(x3)1h(x1)2h(x2)2h(x3)2h(x1)3h(x2)3h(x3)3]
假設 input:x=⎡⎣⎢⎢111x11x21x31x12x22x32x13x23x33⎤⎦⎥⎥;output:y=⎡⎣⎢122⎤⎦⎥=⎡⎣⎢y1y2y3⎤⎦⎥input:
x=[1x11x21x311x12x22x321x13x23x33];output:y=[122]=[y1y2y3]
該例子的背景為用神經網路識別手寫體,即y1=1表示期望輸出為1,y2=y3=2,表示其期望輸出為2。在計算代價函式的時候要將其每一個對應的輸出轉換為只含有0,1的向量y1=1表示期望輸出為1,y2=y3=2,表示其期望輸出為2。在計算代價函式的時候要將其每一個對應的輸出轉換為只含有0,1的向量
則有:y1=⎡⎣⎢100⎤⎦⎥;y2=⎡⎣⎢010⎤⎦⎥;y3=⎡⎣⎢010⎤⎦⎥⟹labely=⎡⎣⎢⎢⎢m=1100m=2010m=3010⎤⎦⎥⎥⎥y1=[100];y2=[010];y3=[010]⟹labely=[m=1m=2m=3100011000]
對於如何將普通的輸出值轉換成只含有0,1的向量,戳此處
則有(malab中的向量化形式):
j(θ)=(1/m)∗(sum(sum[−labely.∗log(hθ)−(1−labely).∗log(1−hθ)]));j(θ)=(1/m)∗(sum(sum[−labely.
∗log(hθ)−(1−labely).∗log(1−hθ)]));
加上 regularized term
regular=λ2m∑l=1l−1∑i=1sl∑j=1sl+1(θ(l)j,i)2;regular=λ2m∑l=1l−1∑i=1sl∑j=1sl+1(θj,i(l))2;
其實regularized term 就是所有每一層的引數(θlj,i,j≠0,即除了每一層的第一列偏置項所對應的引數)(θj,il,j≠0,即除了每一層的第一列偏置項所對應的引數)的平方和相加即可。
θ1=[θ110θ120θ111θ121θ112θ122θ113θ123]2×4,θ2=⎡⎣⎢⎢θ210θ220θ230θ211θ221θ231θ212θ222θ232⎤⎦⎥⎥3×3θ1=[θ101θ111θ121θ131θ201θ211θ221θ231]2×4,θ2=[θ102θ112θ122θ202θ212θ222θ302θ312θ322]3×3
regular=(θ111)2+(θ112)2+(θ113)2+(θ121)2+(θ122)2+(θ123)2+(θ211)2+(θ212)2+(θ221)2+(θ222)2+(θ231)2+(θ232)2regular=(θ111)2+(θ121)2+(θ131)2+(θ211)2+(θ221)2+(θ231)2+(θ112)2+(θ122)2+(θ212)2+(θ222)2+(θ312)2+(θ322)2
matlab中向量化為:
s_theta1 = sum(theta1 .^ 2);%先求所有元素的平方,然後再每一列相加
r_theta1 = sum(s_theta1)-s_theta1(1,1);%減去第一列的和
s_theta2 = sum(theta2 .^ 2);
r_theta2 = sum(s_theta2)-s_theta2(1,1);
regular = (lambda/(2*m))*(r_theta1+r_theta2);
神經網路的啟用函式和傳遞函式有什麼區別
理論上講任何一個連續的非多項式 常數函式都可以做為bp的啟用函式 而且這都是已經在數學上證明過的問題。那麼為什麼一般是要選作sigmoidal函式 我認為是sigmoid函式相對其他函式有它自身的優點 比如說光滑性,魯棒性,以及在求導的時候可以用它自身的某種形式來表示 這一點在做數值試驗的時候很重要...
定額裡的基價是什麼,定額裡面的基價是什麼意思
雨夢鎮魂 簡單的說,就是測定定額的基礎 譬如說,你所在地的平均工資是2000,那麼各個單位在繳納社保費用的參考基數就可以是2000,然後根據具體情況再進行調節。因此,基價就是一個原始的可衡量的尺度,就好比正負數的分界點是 0 而0就是這個基價。 就是指 人工費,材料費,機械施工費和總和。定額裡面的基...
函式公式裡面的雙引號的作用是什麼
椴 雙引號 引用文字或空值,單引號 當你引用另一個表或工作簿時,該表或工作簿名只是以數字開頭或者含有空格,非字母字元時會用到,indirect函式 只在含有空格,非字母字元時會用到 在excel的函式公式中,雙引號 起到的是一個文字定界符的作用 結合附件中下圖來說下 比如b2單元格中輸入 excel...