(神经网络基础知识有3个部分:神经网络与多层感知机、卷积神经网络、循环神经网络。)
本文从神经网络发展的时间线为向导,整理神经网络相关知识,
1943年M-P模型:
人工神经元:从人类神经元中抽取出来的数学模型。
人工神经网络:大量的神经元以某种连接方式构成的机器学习模型。
1958年P(perception)感知机:
有输入层和输出层。输入层将数据与权重相乘,再经过激活函数,得到输出。
缺点:无法解决异或问题。只能解决简单的二分类问题。P本质是一条直线。
多层感知机(MLP):
1.前向传播:
输入数据开始从前往后,逐步传递到输出层。
2.激活函数:
2.1激活函数的作用:
一是如果没有激活函数,多层感知机会退化成为单层网络。
二是 激活函数引入了非线性,使得网络可以逼近任意非线性函数。
2.2激活函数的种类:
成为激活函数需要满足:
①连续并可导。(在少数点可以不可导)
②激活函数及其导数要尽可能简单。
③导函数值域要在合适的范围。
激活函数有:
S型(Sigmoid) | Tanh(双曲正切) | Relu(修正线性单元) | |
类型 | 饱和类 | 饱和类 | 非饱和类 |
使用 | 常用于RNN中的门控单元;或者二分类中。 | 常用于深度学习。 | |
缺点 | 存在饱和区,在饱和区,函数梯度变化几乎为0,训练困难。 | 存在饱和区,在饱和区,函数梯度变化几乎为0,训练困难。 |
3.反向传播:
3.1怎么传播:损失函数从后往前传播,梯度逐步传至第一层。
3.2作用:用于权重更新,使得网络输出更接近标签。
3.3反向传播原理:链式求导法则。
4.梯度下降法:
权值沿着(权值和损失函数)的梯度负方向下降,来使损失值减少。
(在深度学习中,已知输入数据,我们要做的就是找到做合适的权重,使得输入数据能够对应到正确的输出。可通过建立权重和损失的关系,来调整权重使得损失减少。找到权重关于损失改变最大的方向,让权重按照此方向改变数据,就可达到减少损失,使得结果接近真实的目的。)
导数 | 函数在指定坐标轴上的变化率。(一般指二元函数) |
方向导数 | 指定方向上的变化率。(常指多元函数)(多元函数在多个方向上都有变化率,这些变化率都是方向导数。) |
梯度 | 一个向量。方向为方向导数取得最大值的方向。 |
5.学习率:
控制更新步长,避免震荡。常选0.1,0.01,0.001等。
6.损失函数:
6.1介绍是个桥梁,常用来衡量模型输出与真实标签之前的差距。
损失函数 | 单样本的损失计算。 | loss=f(y',y) |
代价函数 | 总体(所有样本)的损失计算求平均。 | cost=loss之和求平均。 |
目标函数 | 多了正则项,来控制模型的复杂度,要让模型不会太复杂。 | obj=cost+正则项。 |
6.2常见的损失函数:
①MSE均方误差。
常用在回归任务中。
②CE交叉熵。
常用于分类任务中。
CE与Softmax成对出现。
7.权值初始化:
7.1 好的权值有利于模型的训练。
7.2 初始化方法:高斯随机初始化。也就是从高斯分布中随机采样对权重进行赋值。
7.3选择标准差的方法:
固定标准差:高斯分布中重要的参数是均值和标准差。通常选择3准则来确定高斯分布重点中数值范围。
自适应标准差:
①Xavier初始化:由输入神经元个数和输出神经元的个数来决定标准差。
②Kaiming初始化:
8.正则化:
8.1作用:减少方差,减轻过拟合。
8.2误差
误差由偏差、方差、噪声组成。
偏差 | 算法和期望泛化误差下界之间的差距。由改善算法来改进。 |
方差 | 测试集与训练集之间的差距。差距较大时,叫过拟合。由正则项来改善。 |
噪声 | 不管多么好的算法,都与真实值有差距。也叫期望泛化误差下界。 |
8.3 正则化方法:
L1:有权值稀疏的作用。
L2:有权值衰减的作用。
DropOut:通过使神经元随机失活的办法,来减轻过拟合。(过拟合:过于完美得拟合了训练数据,而对测试数据不能拟合。)
注意事项:测试和训练两阶段数据尺度有变化。