本周的主要学习了如何搭建一个多层神经网络。涉及较多的理论知识,因此本编博客将对自己所学的有关神经的知识做一个总结。
图1展示的是具有4个隐藏层的神经网络结构。它的输入由x1,x2,x3构成,表示样本X具有三个特征,随后进入第一个隐藏层,该层分别进行z=wx+b a=g(z)的运算,其中w和b的取值不是一次就能确定好的,而是需要梯度下降算法(反向传播)来不断优化,从而找到最优解。将得到的z输入到激活函数后,即可得到该层的输出a,a也是下一层的输入,之后隐藏层的运算同上。
所有的隐藏层运算完后,最后再经过一个激活层运算,这里的激活函数并不是固定的,要具体问题具体分析,例如对于二分类问题来说,这里的激活函数可以选用Sigmoid。 最后就可得到预测结果y帽。
因为采用的是监督学习机制,所以在实验过程中是知道样本的真类别,由此也可以在得到预测值y帽后计算损失函数,对损失函数求导,进行反向传播(梯度下降算法)就可以不断调整参数w,b的值,从而得到最优解。
图1
如果在写代码的过程中频繁使用for循环,那么代码效率是十分低下的,因此可以引入向量化来弥补这一问题。特征x1,x2,x3可表示为3行1列的向量。如果数据集中有m个样本,那么整个输入可表示为3行m列的向量。如果该神经网络有多个隐藏层,那么一般是采用for循环来编写代码。图2展示的是神经网络中的矩阵的维度,如果代码出现bug,可以通过核对矩阵维数来调试。
图2
为了更方便理解,上述知识点的总结可由图3来表示。上面的箭头表示前向传播,下面的箭头表示反向传播。
图3
参考资料:https://blog.csdn.net/u013733326/article/details/79767169