深度神经网络(DNN)
神经网络是一些被称作感知机的单元的集合,感知机是二元线性分类器。
如上图所示,输入 x1 和 x2 分别和各自的权重 w1 和 w2 相乘、求和,所以函数 f=x1*w1+x2*w2+b(偏置项,可以选择性地添加)。
函数 f 可以是任意的运算,但是对于感知机而言通常是求和。函数 f 随后会通过一个激活函数来评估,该激活函数能够实现期望分类。Sigmoid 函数是用于二元分类的最常见的激活函数。
如果我们把单维度的感知机以各种组合算法聚合到一起,这就形成了网络似的全连接感知机,这些网络感知机(中间产物即隐层)的输出成为最后一个单元的输入,再通过函数 f 和激活函数得到最终的分类。
上面提到的神经网络也被称为前馈神经网络(FFNN),因为信息流是单向、无环的。我们可以想象,数百个输入连接到数个这样的隐藏层会形成一个复杂的神经网络,通常被称为深度神经网络或者深度前馈神经网络(DFFNN)。
卷积神经网络(CNN)
其他的变体,如 RNN、LSTM、GRU 等,基于和 CNN 类似的结构,不过架构存在一些差异。
CNN 由三种不同的层组成,即卷积层、池化层、密集层或全连接层。深度神经网络是典型的全连接层神经网络。
卷积层:通过滤波器提取多个特征(滤波器是卷积)
假设一张图像有 5*5 个像素,1 代表白,0 代表黑,这幅图像被视为 5*5 的单色图像。现在用一个由随机地 0 和 1 组成的 3*3 矩阵去和图像中的子区域做乘法,每次迭代移动一个像素,这样该乘法会得到一个新的 3*3 的矩阵。
上述的 3*3 的矩阵被称作滤波器,它的任务是提取图像特征,它使用优化算法来决定 3*3 矩阵中具体的 0 和 1。
在神经网络的卷积层中使用好几个这样的滤波器来提取多个特征。3*3 矩阵的每一个单个步骤被称作步幅(stride)。
池化层:这个层主要使用不同的函数为输入降维
最大池化层(max-pooling layer)出现在卷积层之后。池化层使用 2*2 的矩阵,以卷积层相同的方式处理图像,不过它是给图像本身降维。
池化层会损失信息,通常的做法是在卷机层中使用一个较大的步幅。
下面分别是使用「最大池化」和「平均池化」的示例。
全连接层:这个层是位于之前一层和激活函数之间的全连接层。
它和深度神经网络是类似的。