终于记起账号系列,接上篇。
1.神经网络表示
- 输入层 :通过输入层输入数据。
- 隐藏层 :通过隐藏的中间层对输入数据进行训练,训练过程中中间节点的真正数值无法通过训练集看到。
- 输出层 :输出模型的预测值。
2.符号约束
- 网络层数 :等于隐藏层加输出层数的和,如上图为一个双层神经网络。(注意:不算入输入层)
- 不同层数据 :采用a[i]a^{[i]}a[i]表示第i层的计算后数据。对于隐藏层而言,a[i]a^{[i]}a[i]指的是该层经过激活后的数据;对于输入层,用a[0]=Xa^{[0]}=Xa[0]=X表示。
- 同层数据 :采用aj[i]a^{[i]}_jaj[i]表示第i层第j个节点(/单元),有此可知a[i]a^{[i]}a[i]为一个维数等于该层节点数的列向量,如上图中a[1]a^{[1]}a[1]为一个四维向量。
- 参数表示 :隐藏层与输出层均有对应参数,采用w[i]w^{[i]}w[i]表示第i层参数www,采用b[i]b^{[i]}b[i]表示第i层参数bbb。
- 样本:用右上角圆括号表示样本i,如:x(i)x^{(i)}x(i),则:a[i](j)a^{[i](j)}a[i](j)表示第j个样本计算至网络第i层后的值,y^(i)\hat{y}^{(i)}y^(i)表示网络最终计算出的第i个样本的预测值。
3.计算神经网络的输出
- 计算过程
1.每层单个神经元上的计算
对于第i层的第j个神经元,该节点的计算与Logistic回归类似,分为两步,如上图圆环中左右两部分所示。
首先对该层输入的数据xxx,计算zj[i]=wj[i]Tx+bj[i]z^{[i]}_j=w^{[i]T}_jx+b^{[i]}_jzj[i]=wj[i]Tx+bj[i],然后采用激活函数aj[i]=σ(zj[i])a^{[i]}_j=\sigma(z^{[i]}_j)aj[i]=σ(zj[i])激活。,每个神经元计算过程如下图所示。
2.向量化计算
对于某层隐藏层,将该层所有神经元的参数wj[i]w^{[i]}_jwj[i]的转置竖向堆叠起来,组成该层参数w的矩阵W[i]W^{[i]}W[i],由于wj[i]w^{[i]}_jwj[i]维度与该层输入数据维度相同,则wj[i]w^{[i]}_jwj[i]为一个,将参数bj[i]b^{[i]}_jbj[i]同样竖向堆叠起来,得到参数b的列向量b[i]b^{[i]}b[i],对于单个样本x,该层激活前有:Z[i]=W[i]a[i−1]+b[i]Z^{[i]}=W^{[i]}a^{[i-1]}+b^{[i]}Z[i]=W[i]a[i−1]+b[i] ,激活后有:a[i]=σ(Z[i])a^{[i]}=\sigma(Z^{[i]})a[i]=σ(Z