在設(shè)計(jì)深層網(wǎng)絡(luò)結(jié)構(gòu)時(shí)需要指定每個(gè)隱藏層權(quán)重矩陣、偏置項(xiàng)的維度,有的時(shí)候容易搞混淆铃肯,導(dǎo)致運(yùn)行時(shí)產(chǎn)生維度不對(duì)的錯(cuò)誤,特別是對(duì)于隱藏層既深又寬的網(wǎng)絡(luò)传蹈,更容易出錯(cuò)押逼。下面以一個(gè)實(shí)例來(lái)說(shuō)明怎么確保矩陣維度不出錯(cuò)誤步藕。
假設(shè)需要擬合的函數(shù)為:y=f(x)=WX+b。
損失函數(shù):J(W,b)
其中 X:輸入特征宴胧,W:權(quán)重漱抓,b:偏置項(xiàng)
正(前)向傳播的計(jì)算公式
a[0]=X,z[i]=w[i]*a[i-1]+b[i] 恕齐,a[i]=g[i](z[i])
向量化表示
A[0]=X乞娄,Z[i]=W[i]*A[i-1]+b[i] ,A[i]=g[i](Z[i])
反(后)向傳播的計(jì)算公式
dz[i]=da[i]*g[i](z[i])显歧,dw[i]=dz[i]*a[i-1]
db[i]=dz[i]仪或,da[i-1]=w[i].T*dz[i]
向量化表示
dZ[i]=dA[i]*g[i](Z[i]),dW[i]=1/m*dZ[i]*A[i-1].T
db[i]=1/m*np.sum(dZ[i],axis=1,keepdims=True)
dA[i-1]=W[i].T*dZ[i]士骤,W[i]=W[i-1]-α*dJ(W,b)
上述計(jì)算公式中范删,i:第i層(從1開(kāi)始計(jì)數(shù)),X:輸入特征拷肌,g[i]:第i層使用的激活函數(shù)到旦,A[i]
:第i層的輸出(也是第i+1層的輸入),m:樣本數(shù)量巨缘,dZ[i]:偏導(dǎo)數(shù)添忘,dW[i]:偏導(dǎo)數(shù),db[i]:偏導(dǎo)數(shù)若锁,dA[i-1]:偏導(dǎo)數(shù)搁骑,dJ(W,b):偏導(dǎo)數(shù),α:學(xué)習(xí)率又固。
網(wǎng)絡(luò)結(jié)構(gòu)圖
n[i]:第i層的神經(jīng)元數(shù)量仲器,i=0時(shí)表示輸入層的特征數(shù)目(上圖中有x1,x2兩個(gè)特征),m:樣本數(shù)量仰冠。
矩陣維度
w[i]=[n[i], n[i-1]]乏冀,n[i]行,n[i-1]列洋只,從圖中可知行數(shù)是本層神經(jīng)元的數(shù)量辆沦,列數(shù)是前一層神經(jīng)元的數(shù)量。
b[i]=[n[i], 1]木张,n[i]行,1列
a[i]=z[i]=[n[i], 1]端三,n[i]行舷礼,1列,由前面的正向傳播公式:a[i]=g[i](z[i])郊闯,可知a與z的維度是相同的妻献。
a[0]:輸入層蛛株,a[i] :第 i+1 層的輸入
在上面的神經(jīng)網(wǎng)絡(luò)圖中,w[1]是一個(gè)3行2列的矩陣育拨,b[1]是3行1列的矩陣谨履,a[1]和z[1]也是3行1列的矩陣,類(lèi)推:w[2]是一個(gè)4行3列的矩陣熬丧,w[3]是一個(gè)2行4列的矩陣笋粟,w[4]是一個(gè)1行2列的矩陣。
簡(jiǎn)單總結(jié)
w矩陣析蝴,行數(shù):本層神經(jīng)元的數(shù)量害捕,列數(shù):前一層神經(jīng)元的數(shù)量
b矩陣,行數(shù):該層w矩陣的行數(shù)闷畸,列數(shù):1
z和a矩陣尝盼,行數(shù):該層w矩陣的行數(shù),列數(shù):1
模型訓(xùn)練過(guò)程中需要注意的問(wèn)題佑菩,參見(jiàn) 深度學(xué)習(xí)之偏差與方差?