美文网首页深度学习-推荐系统-CV-NLP
深度学习之检查矩阵的维数

深度学习之检查矩阵的维数

作者: AIAndData | 来源:发表于2017-10-20 13:15 被阅读326次

    在设计深层网络结构时需要指定每个隐藏层权重矩阵、偏置项的维度,有的时候容易搞混淆,导致运行时产生维度不对的错误,特别是对于隐藏层既深又宽的网络,更容易出错。下面以一个实例来说明怎么确保矩阵维度不出错误。

    假设需要拟合的函数为:y=f(x)=WX+b。

    损失函数:J(W,b)

    其中 X:输入特征,W:权重,b:偏置项

    正(前)向传播的计算公式

    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])

    反(后)向传播的计算公式

    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)

    上述计算公式中,i:第i层(从1开始计数),X:输入特征,g[i]:第i层使用的激活函数,A[i]
    :第i层的输出(也是第i+1层的输入),m:样本数量,dZ[i]:偏导数,dW[i]:偏导数,db[i]:偏导数,dA[i-1]:偏导数,dJ(W,b):偏导数,α:学习率。

    网络结构图

    神经网络图

    n[i]:第i层的神经元数量,i=0时表示输入层的特征数目(上图中有x1,x2两个特征),m:样本数量。

    矩阵维度

    w[i]=[n[i], n[i-1]],n[i]行,n[i-1]列,从图中可知行数是本层神经元的数量,列数是前一层神经元的数量。

    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 层的输入

    在上面的神经网络图中,w[1]是一个3行2列的矩阵,b[1]是3行1列的矩阵,a[1]和z[1]也是3行1列的矩阵,类推:w[2]是一个4行3列的矩阵,w[3]是一个2行4列的矩阵,w[4]是一个1行2列的矩阵。

    简单总结

    w矩阵,行数:本层神经元的数量,列数:前一层神经元的数量

    b矩阵,行数:该层w矩阵的行数,列数:1

    z和a矩阵,行数:该层w矩阵的行数,列数:1

    模型训练过程中需要注意的问题,参见 深度学习之偏差与方差 

    相关文章

      网友评论

        本文标题:深度学习之检查矩阵的维数

        本文链接:https://www.haomeiwen.com/subject/ghvmuxtx.html