1. FCNN 全连接神经网络
全连接神经网络(FCNN, Fully Connected Neural Network)是最朴素的神经网络,其参数最多,计算量最大。一般可用下图表示:
网络由若干层组成,第一层为输入层(Input Layers),最后一层为输出层(Output Layers),中间为隐藏层(Hidden Layers)。每一层都以前一层的输出作为输入,再经过计算输出到下一级。每一个圆圈为一个神经元,内部为如下的计算组合:
① z = wx + b,最小化损失函数,其中 w 为权值,b 为偏置
② f(z) = 1 / e ^ (-z),激励函数(Activation Function),将输出值域压缩至 (0, 1),即数据归一化
神经网络的训练是有监督的学习,对于输入值 X,有着与之对应的实际值 Y,而输出值 Y' 与实际值 Y 之间的损失 Loss 即反向传播的内容。整个网络的训练过程就是不断缩小 Loss 的过程。
2. 点积
对于两个向量 u = [u1, u2, ..., un], v = [v1, v2, ... vn],其点积为:
u · v = u1 * v1 + u2 * v2 + ... + un * vn。
3. 卷积
对于两个离散信号 f, g,其卷积结果为一个信号倒序后在不同位置和另一个信号中一段相同长度的部分求点积的集合。
假设前者信号为 f,后者为 g,则 f 又被称为卷积核(Kernel)。f 和 g 可以交换,结果不会变化。
下面为一个一维信号求卷积的例子,其中卷积核信号 f 为 [1, 2, 1],倒置后仍为 [1, 2, 1],信号 g 为 [1, 2, 3, 0, 1, 0]。
其中,在信号 g 前后分别加上 2 个 0,它们被称为零填充(Zero Padding)。
卷积核每次移动的距离叫做步长(Stride),本例步长为 1。
卷积有三种类型,设卷积核信号 f 长度为 n,待卷积信号 g 长度为 m,有:
① Valid
不对信号 g 进行零填充而求卷积,即卷积核起初与待卷积信号由左对齐至右对齐,卷积长度为 m - n + 1;
② Same
对信号 g 的边缘共添加 n - 1 个 0,使得卷积结果与信号 g 长度一致,即 m;
③ Full
对信号 g 的边缘再添加 n - 1 个 0,使得卷积核能够划过的位置最大,即由卷积核右边缘与待卷积信号左边缘对齐至卷积核左边缘与待卷积信号右边缘对齐,卷积长度为 m + n - 1。
二维卷积同理。
4. CNN 卷积神经网络
FCNN 用于所有层级之间都是全部相连的,结构复杂,收敛缓慢,效率很低,会处理大量的冗余数据。而 CNN 是解决效率问题的一种办法。
卷积神经网络(CNN, Convolutional Neural Network),相比 FCNN 结构增加了卷积层(Convolutional Layers),池化层(Pooling Layers),输出层由全连接层和 Softmax 层构成。
① 卷积层
卷积层至少有 1 层,之间为局部连接,且权值共享,大幅减少了 (w, b) 的数量,加快训练速度。卷积层的作用,简单来说就是通过压缩提纯,来提取特征。
对于 CNN 而言,权值 w 即卷积核。
在卷积核之后一般会加上一个叫做线性整流函数(ReLU, Rectified Linear Unit)的激励函数,在全连接网络中使用的是 sigmoid 激励函数。
② 池化层
一般来说,卷积层后面都会加上一个池化层,它是对卷积层的进一步特征抽样,用于压缩数据与参数量,减小过拟合(overfitting)。其具体操作与卷积层基本相同,但只取对应位置的最大值与平均值(最大池化、平均池化)。
池化过程强调特征不变性。比如在图像处理时,一张狗狗的图像被缩小一倍后我们还能看出这是一只狗狗,那么说明这种图像在压缩时保留了狗狗的特征,而移除了无关紧要的信息。
下图为一个池化的例子,卷积核大小为 2 * 2,步长 stride = 2,采用最大池化法,得到如下结果。
5. 超参数
超参数指在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。
过拟合(Overfitting),指为了得到一致假设而使假设变得过度严格,其反义词为欠拟合。如下图所示。
一个更贴近生活的理解是,高中生 kk 刷了一大堆理综的题目,他对那些做过的题滚瓜烂熟,但一到考试碰到类似却不同的题一脸懵逼,也可以认为是一种过拟合。
对于卷积神经网络,过拟合一般指经过训练得到的超参数与训练数据集匹配度过高,而测试数据集的结果精确度远低于训练数据集。
正则化:
C 为当前神经网络的损失,C0 为之前的损失,a 为惩罚因子。
优化器(Optimizer):
略
学习率(Learning Rate):
激励函数(Activation Function):
激励函数的作用是让神经网络模型能够逼近非线性函数。
① Sigmoid 函数
② Softmax
③ ReLU 线性整流函数
损失函数
其他超参数
epoch
BatchSize
卷积神经网络的常用框架:
① TensorFlow,Google 开发的深度学习框架
② Torch,Facebook 卷积神经网络工具包,还有专用于 Python 的 PyTorch
③ Caffe,不太了解
参考:
https://zhuanlan.zhihu.com/p/107822685
https://www.cnblogs.com/skyfsm/p/6790245.html
https://blog.csdn.net/weixin_38145317/article/details/89310404