机器学习第五章:神经网络
神经元模型
神经网络是由多个神经元组成的网络,它可以模拟生物神经系统对真实世界的物体作出的反应。但其实,我们可以把神经网络看作一个包含了许多参数的数学模型。
神经元之间通过权重(weight)相连接,这些权重是网络通过训练学习到的核心参数。这一层把接收到的信号加权求和后,再把得到的值送入激活函数,通过激活函数处理来产生神经元的输出。
激活函数的主要作用是决定一个神经元是否应该被激活,也就是说,它对输入信号进行非线性变换,从而引入非线性因素,使得神经网络能够学习和表示更加复杂的模式和函数关系。
我们常用Sigmoid函数作为激活函数。图像如下所示:

它可以轻松地把输入值,映射为0或者1。
感知机
它是一种线性二分类模型,用于解决输入空间中线性可分的问题(如逻辑与或非的运算)。
它由两层神经元组成,输入层和输出层。通过计算加权求和:z = wi * x1 + w2 *x2 + ,再送到激活函数中。
通过设置合适的权重w和阈值 ,就可以解决基本的逻辑运算。给定一个数据集,权重和阈值就可以通过模型学习得到。
具体学习的过程
-
# 权重更新 wᵢ = wᵢ + η × (y - ŷ) × xᵢ # 偏置(阈值)更新 b = b + η × (y - ŷ) ''' wᵢ:第 i 个输入的权重 b:偏置(可理解为阈值的相反数,阈值 θ = -b) η:学习率(0 < η ≤ 1,控制每次更新的幅度) y:样本的真实标签(0 或 1) ŷ:感知机的预测输出(0 或 1) xᵢ:样本的第 i 个输入特征 ''' - 初始化参数:权重
w₁、w₂初始化为 0,偏置b初始化为 0,学习率η设为 0.1 - 输入x₁ 和x₂ ,计算加权和
z = w₁x₁ + w₂x₂ + b,
再通过激活函数得到预测值ŷ(0 或 1)。
然后计算误差,误差 = 真实标签 - 预测值,即error = y - ŷ。
如果预测错误,就根据上述公式更新w₁、w₂、b;
如果误差为 0(预测正确),则不更新。 - 当所有训练样本都被正确分类(预测值 = 真实标签)时,学习过程停止。
感知机的学习过程本质是通过误差反馈不断修正参数的过程。这种 "试错 - 修正" 的学习模式,就是所有神经网络学习的基础思想。
多层神经元
对于非线性可分的问题需要使用多层神经元,也就是再输入神经元和输出神经元中还有一层隐层,这样的结构叫做多层前馈神经网络。结构如下所示:

输入神经元接收外界的输入,隐层和输出神经元对信号进行加工,最终结果由输出神经元输出。
误差逆传播算法(BP)
训练这样的模型需要用到误差逆传播算法来训练。也叫做标准误差逆传播算法这个算法是基于梯度下降算法来对参数进行调整的。
训练步骤如下:
- 把输入数据给输入神经元,再一层层地把信号向下传输,得到输出后
- 计算误差,再把误差逆向传给隐层神经元,再对权重进行调整
- 在误差达到一个很小的值的时候,停止迭代。
这是根据一个样例所做的调整。
如果把数据集中的所有样例,全部跑一遍,得到整体的累计误差后,在进行逆向传播,更新参数,就得到了 累计误差逆传播算法 。
所以在实际的训练中,我们先使用累计误差逆传播算法,当累计误差下降到一定程度后,再使用误差逆传播算法。这样训练的效果会比较好。
缓解过拟合的方法
- 早停:如果训练集上的误差降低,但是验证集误差升高,就停止训练,同时返回具有最小验证集误差的参数值
- 正则化:在代价函数里加一个“惩罚项”,可以减少参数的值,让模型参数别太极端。
通过这些算法,可以训练出一个很不错的模型。
更多推荐


所有评论(0)