5.1 神经网络模型
什么是神经网络?
“简单单元”:神经元模型
神经网络中最基本的成分是神经元(neuron)模型,即上述定义中的“简单单元”.在生物神经网络中,每个神经元与其他神经元相连,当它“兴奋”时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个“阈值”(threshold),那么它就会被激活,即 “兴奋”起来,向其他神经元发送化学物质.
[McCulloch and Pitts, 1943]将上述情形抽象为图5.1所示的简单模型,这就是一直沿用至今的“M-P神经元模型”.在这个模型中,神经元接收到来自几个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”(activation function)处理以产生神经元的输出.
神经元的“激活函数”
理想中的激活函数是图5.2(a)所示的阶跃函数,它将输入值映射为输出值 “0” 或 “1” ,显然“1” 对应于神经元兴奋,“0” 对应于神经元抑制.然而,阶跃函数具有不连续、不光滑等不太好的性质,因此实际常用Sigmoid函数作为激活函数.典型的Sigmoid函数如图5.2(b)所示,它把可能在较大范围内变化的输入值挤压到(0,1)输出值范围内,因此有时也称为“挤压函数” (squashing function)
1.没有激活函数,神经网络是线性函数,不能解决任何非线性问题
线性函数在二维空间,A表现为一条直线。B图表现为线性不可分,说明一条直线不能解决任何线性不可分的问题,也不能很好的拟合曲线。
2.如果不用激活函数,神经网络每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合(线性函数),这种情况就是最原始的感知机(Perceptron)。而且,因为卷积层也是线性运算,所以如果没有激活函数,卷积神经网络也是线性函数(详见5分钟理解卷积神经网络中的卷积 )。所以,没有激活函数,神经网络就是线性函数,不能解决任何非线性问题。这里有一个简单的数学证明,证明任何线性函数的线性组合仍然是线性的
3.“分段”是神经网络能逼近任何函数的关键
其实,你只需要知道2点:
1)任何函数,可以用“分段”线性函数来逼近;
2)激活函数,让线性的神经网络具备了**“分段”表达**的能力。
多层前馈网络结构
5.2 万有逼近能力
神经网络万有逼近:
仅需一个包含足够多神经元的隐层,多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数
5.3 感知机
分类模型
模型:
感知机(Perceptron)由两层神经元组成,输入层接收外界输入信号后传递给输出层,输出层是M-P神经元,亦称“阈值逻辑单元” (threshold logic unit)
策略(策略就是找出损失函数,看作一个优化问题,然后求它的最小值点):
损失函数是分错的时候才算损失
5.4 神经网络
神经网络有一种特征工程的能力,会自己对输入的特征做一个加工组合,
前面学习的线性回归和对数几率回归有两个上限,一个是数据量,还有一个是特征;而神经网络/深度学习在调整x*的时候就相当于在自动提取有用的特征,因此神经网络不需要大量人工提取特征了
随机梯度下降针对的是单个样本而不是全部样本,因此此处计算损失也是针对单个样本
学习率n属于 (0,1)控制着算法每一轮迭代中的更新步长,若太大则容易振荡,太小则收敛速度又会过慢
求梯度的话用前面讲的矩阵微分公式即可,但本质上还是链式求导,因为神经网络就是复合函数一层套一层
Ek是一个关于vih的函数:
相邻层之间是全连接的,所以就导致j不管是1还是到l,我们这个yjkhat都是与vih有关的,都受vih影响。因此这个求和符号是不能扔的
5.5 缓解过拟合
正是由于其强大的表示能力,BP神经网络经常遭遇过拟合,其训练误差持续降低,但测试误差却可能上升.有两种策略常用来缓解BP网络的过拟合.
第一种策略是“早停”(early stopping):将数据分成训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但
验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值.