2.3.1 全连接神经网络
全连接神经网络(FCNN)是在本文中广泛使用的最流行和最简单的神经网络形式之一。顾名思义,FCNN在层与层之间是完全连接的,即一层中的每个神经元连接相邻层中的每个神经元。FCNN中涉及的计算非常常规,为矩阵乘法或按元素运算。
当输入之间没有明显的相关性时,FCNN的效果比较明显。对于FCNN中的任何一个神经元,其他所有的神经元似乎都相似。换句话说,在这种类型的神经网络中没有空间结构。例如,在2.2.4节中介绍的案例研究中,神经网络需要输入某一时刻的状态,这些状态不太可能是关联的,该任务可使用FCNN处理。对于某些输入信号具有一定空间相关性的其他任务(例如图像),可以使用其他更复杂的网络结构,下一节将对此进行讨论。由于其简单性,FCNN在各种应用中取得了许多成功。即使是普通的FCNN本身也可以产生很好的效果,不过还存在其他具有特殊结构或属性的FCNN。径向基函数网络就是一个例子,该网络使用径向基函数作为其核心,正如其名称所示的[36],径向基函数的值根据输入和原点之间的距离来确定。流行的径向基函数是高斯函数、多元二次函数等,帕克和桑德伯格已经证明,具有某些核函数的径向基函数网络可以作为通用函数逼近器[37-38]。径向基函数网络在20世纪90年代得到普及[39-41]。
为了利用现代中央处理器(CPU)和图形处理单元(GPU)中的并行计算能力,神经网络的学习和推理通常都是分批进行的,图2.17说明了这一思想。在前向操作中,处于不同批次的数据将分别评估,即串行评估不同的输入向量,并且一次仅处理一个输入向量。为了利用并行计算来提高吞吐量,可以将多个输入(例如多个图像)转换为矩阵,原始的矩阵-向量乘法就变成了矩阵-矩阵乘法。在监督学习任务的实际操作中,通常使用10~100的批处理样本量,具体取决于机器的计算能力。批处理样本量大小的另一个限制来自等待时间的长短,当有足够的计算资源时,批处理计算无疑可以提高系统的吞吐量,但同时会增加计算的延迟。因此,批处理模式更适合某些非实时的基于云的计算应用程序,在这些应用程序中,延迟不是很关键,可以将来自许多用户的输入连接在一起,以利用服务器中的并行性。
图2.17 非批处理模式和批处理模式下与矩阵相关的操作的图示。在批处理模式下,几个输入向量被聚合形成一个矩阵。原始的矩阵向量乘法被重塑为矩阵矩阵乘法,可以利用现代CPU和GPU的并行处理能力
值得一提的是,即使我们使用FCNN作为例子来说明批处理的概念,批处理也不限于这种类型的神经网络。其他类型的神经网络,例如卷积神经网络(CNN)也可以以批处理模式进行训练和评估,以提高系统吞吐量。