前面一章我们详细讲解了神经网络的组成,工作原理,信号在网络中如何流动,以及如何求解每一个输入信号赋予的权重等计算过程;同时我们还构建了一个逻辑回归网模型来解决鸢尾花分类问题,很明显,这种网络很“浅”,但它对于分类鸢尾花数据还是非常有效的,而且不仅仅是鸢尾花,对于有需要的其他二分类问题,该模型也能表现得很好。由于这种模型太“浅”了,我们一般称这种模型为bp网络,而不直接称为神经网络,有些人甚至觉得这种网络还不配叫做神经网络。我无需去争论这些芝麻小事,我们要做的就是从这一章起,迈向深度神经网络,了解什么是深度神经网络,它结构是什么样,它如何工作,以及综合前面三章的内容,用Pytorch搭建一个三层网络实现手写数字分类。
1. 深度前馈网络 1.1 什么是深度前馈网络深度神经网络,简单来理解就是含有多个隐藏层的网络。一个深度神经网络总会有一个输入层,一个输出层,还有中间多个隐藏层,隐藏层的维数决定了网络的宽度。无论是输入层、隐藏层还是输出层,每一层都是由多个感知器组成,所以深度神经网络又称多层感知机。
前馈(feedforward)也可以称为前向,从信号流向来理解就是输入信号进入网络后,信号流动是单向的,即信号从前一层流向后一层,一直到输出层,其中任意两层之间的连接并没有反馈(feedback),亦即信号没有从后一层又返回到前一层。如果从输入输出关系来理解,则为当输入信号进入后,输入层之后的每一个层都将前一个层的输出作为输入。如下图所示的四层网络,这个图也可以称为有向无环路图。反之,当前馈神经网络中层与层之间的信号有反向流动,或者自输入时,我们则称这种网络为循环神经网络,循环神经网络在自然语言处理方面发挥着极大的作用。