十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

深度学习入门:从神经网络到反向传播的完整解析

深度学习入门:从神经网络到反向传播的完整解析 1. 深度学习概述深度学习Deep Learning简称 DL是机器学习Machine Learning简称 ML领域中一个新的研究方向。它属于人工智能的一个子领域基于人工神经网络的概念和结构通过模拟人脑的工作方式来执行机器学习任务。深度学习的主要特点是使用多层次的神经网络来提取和学习数据中的特征并通过反向传播算法来优化网络参数从而实现对复杂数据的建模与分类。目前深度学习在图像识别、语音识别、自然语言处理等领域取得了显著的成果并被广泛应用于各种实际场景。在理解深度学习之前需要先厘清几个核心概念之间的关系机器学习让计算机从数据中自动学习规律的一类方法的总称。神经网络一种由大量节点或称“神经元”及其相互连接构成的计算模型模拟生物神经系统中神经元之间的连接方式。深度学习使用多层神经网络进行特征提取与建模的机器学习方法是机器学习的一个重要分支。2. 神经网络的基本构造神经网络是一种由多个神经元或称为节点组成的计算模型它模拟了生物神经系统中神经元之间的连接方式。一个典型的神经网络由输入层、隐藏层和输出层组成其中输入层用于接收外界的输入信号输出层用于输出预测结果隐藏层则用于处理输入信号并产生中间结果。在神经网络中每个节点代表一种特定的输出函数称为激励函数或激活函数activation function。每两个节点间的连接都代表一个对于通过该连接信号的加权值称之为权重weight这相当于人工神经网络的记忆。以输入层神经元为例外部传入的信号为 x1、x2、x3、x4、x5……这些电信号在传入途中可能会有所损耗损耗后实际传入神经元的值用 w1x1、w2x2、w3x3、w4x4、w5x5……来表示其中 w 称为权重。神经元的计算过程可以概括为对输入信号进行加权求和再经过激活函数如 sigmoid得到输出。从数学角度看神经元的计算可以类比线性方程。例如从 y kx b 出发可以逐步推导出 0 kx b - y、k1x k2y b 0、w1x1 w2x2 b 0最终写成 w1x1 w2x2 1 * w3 0 的形式。这一系列推导展示了如何将线性分类问题转化为神经网络中权重与输入的点积运算。3. 感知器与多层感知器3.1 感知器由两层神经元组成的神经网络称为“感知器”Perceptron。感知器只能对数据进行线性划分其计算公式本质上是线性代数方程组因此可以用矩阵乘法来表达。例如输入向量 x 与权重矩阵 W 相乘后再经过激活函数 g即可得到输出 z即 g(W * x) z。输出的结果与训练集标签进行损失函数计算其思路与逻辑回归基本一致。神经网络的本质是通过参数与激活函数来拟合特征与目标之间的真实函数关系。但在一个神经网络的程序中并不需要显式地画出神经元和连线其本质上是矩阵的运算。因此实现一个神经网络最需要的是线性代数库。3.2 多层感知器多层感知器Multi-Layer PerceptronMLP在感知器的基础上增加了一个中间层即隐含层。隐藏层是神经网络能够做非线性分类的关键。假设我们的预测目标是一个向量那么与前面类似只需要在“输出层”再增加节点即可。3.3 偏置单元在神经网络中需要默认增加偏置神经元节点这些节点是默认存在的。它本质上是一个只含有存储功能、且存储值永远为 1 的单元。在神经网络的每个层次中除了输出层以外都会含有这样一个偏置单元。偏置节点没有输入前一层中没有箭头指向它。一般情况下我们都不会明确画出偏置节点。4. 神经网络设计要点在设计一个神经网络时有几个要点需要牢记输入层与输出层的节点数往往是固定的中间层则可以自由指定。神经网络结构图中的拓扑与箭头代表着预测过程时数据的流向跟训练时的数据流有一定的区别。结构图里的关键不是圆圈代表“神经元”而是连接线代表“神经元”之间的连接。每个连接线对应一个不同的权重其值称为权值这是需要训练得到的。关于中间层的节点数如何确定业界目前没有完善的理论来指导这个决策一般是根据经验来设置。较好的方法就是预先设定几个可选值通过切换这几个值来看整个模型的预测效果选择效果最好的值作为最终选择。其中输入层的节点数与特征的维度匹配输出层的节点数与目标的维度匹配。5. 训练方法与损失函数5.1 模型训练的目标模型训练的目的是使得参数尽可能与真实的模型逼近。具体做法分为两步首先给所有参数赋上随机值使用这些随机生成的参数值来预测训练数据中的样本。计算预测值 yi 与真实值 y 之间的误差定义一个损失值 loss用于判断预测结果和真实值的误差误差越小越好。5.2 常用的损失函数常用的损失函数包括0-1 损失函数均方差损失平均绝对差损失交叉熵损失合页损失5.3 多分类情况下的损失计算在多分类的情况下如何计算损失值呢以猫、狗分类为例如果传入一张猫的照片猫对应的神经元输出数值相比其他类别越大计算出的损失值会越小表明越靠近真实结果如果训练时类别分错了则会出现大的损失值。具体计算时先对各个神经元的输出进行归一化softmax得到各个结果的概率使值落在 0 到 1 之间然后对正确类别的概率取 -log 运算得到最终的损失值。取 -log 的原因是当概率越接近 1 时-log 值越接近 0损失越小当概率越小时-log 值越大损失越大从而能够有效衡量预测与真实结果的差距。6. 正则化惩罚正则化惩罚的功能主要用于惩罚权重参数 w一般有 L1 和 L2 正则化两种方式。L1 正则化的形式为对所有权重取绝对值求和即 ∑|wi|。为什么需要正则化考虑两种不同的权重值输入为 x [1,1,1,1]w1 [1,0,0,0]w1 与输入的乘积为 1但 w1 只和第 1 个输入信息有关系容易出现过拟合现象。w2 [0.25,0.25,0.25,0.25]w2 与输入的乘积同样为 1但 w2 与每一个输入数据都进行了计算使得 w2 能够学习到每一个特征信息效果会比 w1 更好。正则化惩罚项鼓励“雨露均沾”让每一个输入数据的特征信息都被获取到从而抑制过拟合提升模型的泛化能力。7. 梯度下降7.1 偏导数与梯度我们知道一个多变量函数的偏导数就是它关于其中一个变量的导数而保持其他变量恒定。例如计算像 f(w0, w1) w0x1² * w1x2 这样的多变量函数的求导过程可以分解为对 w0 和 w1 分别求偏导。其中x1、x2 是数据集中的特征b0、b1 是随机赋值且后续会更新x 是常量。梯度可以定义为一个函数的全部偏导数构成的向量梯度向量的方向即为函数值增长最快的方向。7.2 梯度下降法梯度下降法Gradient Descent是一个一阶最优化算法通常也称为最陡下降法。要使用梯度下降法找到一个函数的局部极小值需要沿着梯度的反方向迭代更新参数。步长学习率决定了我们采取步长的大小梯度可以确定移动的方向学习率则决定移动的步长。学习率不宜过小也不宜过大。至于如何解决全局最小的问题一种常见做法是产生多个随机数在不同的位置分别求最小值从而尽可能逼近全局最优。8. BP 神经网络与反向传播BPBack-propagation反向传播神经网络的核心思想是前向传播得到误差反向传播调整误差再前向传播再反向传播一轮一轮迭代得到最优解。具体步骤如下计算正向传播输出的结果g(W * x) yp。计算损失函数并加入正则化惩罚项。计算 w 值的梯度下降对多层隐含函数求偏导。误差反向传播将每个维度的偏导数导入本次的 w 值初次 w 值为随机初始化并乘以步长即得到新的 w 值。循环调整 w 的值直到损失值小于允许的范围。至此整个神经网络从前往后的数据计算方法已经全部完成同时通过反向传播实现了 w 的更新构成了一个完整的训练闭环。9. 总结本文从深度学习的定义出发系统梳理了神经网络的基本构造、感知器与多层感知器、偏置单元、网络设计要点、损失函数、正则化惩罚、梯度下降以及 BP 反向传播等核心概念。理解这些基础内容是进一步学习卷积神经网络、循环神经网络以及各类深度学习框架的重要前提。深度学习本质上是通过多层神经网络对数据进行特征提取与建模其底层实现依赖矩阵运算与线性代数库。掌握神经网络的构造原理与训练方法能够帮助我们在实际项目中更好地设计模型、调试参数并优化效果。
返回列表