【AI-21】深度学习框架中的神经网络

神经网络的作用

  1. 特征提取与表示学习
    神经网络能够自动从原始数据中提取有效的特征。在图像领域,卷积神经网络(CNN)可以提取图像的边缘、纹理、形状等特征。例如,在人脸识别任务中,CNN 可以通过卷积层提取人脸的五官轮廓等特征,这些特征比原始像素更具有代表性和区分性。在自然语言处理中,循环神经网络(RNN)或其变体(如长短期记忆网络(LSTM)和门控循环单元(GRU))可以学习单词的语义、句子的语法结构等特征。通过这种自动的特征提取,神经网络能够将原始数据转换为更有利于分类、回归等任务的特征表示。
  2. 复杂函数逼近
    神经网络可以看作是一个复杂的函数逼近器。它能够学习到输入和输出之间的复杂非线性关系。例如,在时间序列预测任务中,如预测股票价格,神经网络可以学习到历史价格数据与未来价格之间的复杂函数关系。通过足够的训练数据和合适的网络结构,神经网络可以逼近几乎任何连续函数,从而实现对各种复杂系统的建模和预测。
  3. 决策与分类任务
    在分类任务中,神经网络可以根据提取的特征对输入数据进行分类。例如,在垃圾邮件识别任务中,神经网络可以学习到垃圾邮件和正常邮件的特征差异,将邮件分为垃圾邮件或正常邮件两类。在图像分类任务中,神经网络可以区分不同种类的物体,如猫、狗、汽车等。通过在大量标注数据上进行训练,神经网络能够在各种分类任务中取得很高的准确率。同时,在决策任务中,神经网络可以根据输入的多种因素做出合理的决策,如在自动驾驶系统中,根据传感器的数据(如摄像头图像、雷达距离等)决定车辆的行驶方向、速度等。

神经网络的运算过程

  1. 前向传播(Forward Propagation)
    (1)输入层接收数据:神经网络的运算从输入层开始,输入层的神经元接收外部数据,这些数据可以是图像的像素值、文本的词向量等各种形式的数据。例如,在一个用于图像分类的卷积神经网络(CNN)中,输入层接收图像的像素矩阵。如果是彩色图像,通常每个像素点有 RGB 三个通道的值,所以输入的维度会根据图像的大小和颜色通道数而定。
    (2)隐藏层进行计算:数据从输入层传入隐藏层,隐藏层中的神经元通过加权求和与激活函数处理输入数据。以一个简单的全连接层为例,每个神经元会对输入数据进行加权求和,假设神经元接收的输入为,对应的权重为,则加权求和的结果为,其中为偏置项。然后,将这个结果通过激活函数(如 Sigmoid、ReLU 等)进行非线性变换,得到神经元的输出。例如,使用 ReLU 激活函数,输出。这种非线性变换是非常关键的,它使得神经网络能够学习到复杂的非线性关系。
    (3)输出层生成结果:经过多个隐藏层的处理后,数据最终到达输出层。输出层的神经元根据任务类型产生相应的输出。在分类任务中,输出层可能会使用 Softmax 函数将神经元的输出转换为类别概率。例如,在一个多类别图像分类任务中有个类别,输出层有个神经元,经过 Softmax 函数处理后,每个神经元的输出代表输入图像属于相应类别的概率,这些概率之和为。在回归任务中,输出层的神经元直接输出预测的数值。
  2. 反向传播(Backward Propagation)
    (1)计算损失函数:在神经网络有了输出之后,需要衡量输出与真实目标之间的差距,这通过损失函数来实现。常见的损失函数有均方误差(MSE)用于回归任务,交叉熵损失(Cross - Entropy Loss)用于分类任务等。例如,在分类任务中,假设真实类别标签为(通常是一个 one - hot 向量,只有对应正确类别的位置为,其他位置为),网络输出的类别概率为,交叉熵损失函数为。
    (2)梯度计算与参数更新:通过反向传播算法,计算损失函数对每个参数(权重和偏置)的梯度。从输出层开始,根据链式法则,逐步计算每个神经元的梯度。例如,对于一个权重,计算其梯度。然后,使用优化算法(如随机梯度下降(SGD)、Adam 等)根据计算得到的梯度更新参数。以随机梯度下降为例,更新公式为,其中为学习率,决定了参数更新的步长。通过不断地重复前向传播和反向传播过程,神经网络逐渐调整参数,使得损失函数的值不断减小,从而提高模型的性能。

前向传播和反向传播

  1. 前向传播(Forward Propagation)
    类比理解 :可以把神经网络想象成一个工厂的生产流水线。输入数据就像是原材料,从流水线的开头(输入层)进入。
    具体过程
    输入层接收数据:这些原材料(数据)首先被送到输入层。例如,在一个用于识别手写数字的神经网络中,如果是识别一张 28×28 像素的手写数字图像,那么输入层就有 784 个神经元来接收这 784 个像素点的值。
    隐藏层加工数据:输入层把数据传递给隐藏层,隐藏层的神经元就像是流水线上的工人。每个神经元会对收到的数据进行加工。加工的方式是加权求和(每个输入数据乘以一个权重,再把这些乘积相加),然后通过一个激活函数进行非线性变换。比如,一个神经元收到三个输入数据、、,对应的权重是、、,那么加权求和就是。然后通过激活函数,如 ReLU 函数(如果,输出;如果,输出)得到这个神经元的输出。这样的操作在隐藏层的每个神经元中都会进行,就好像每个工人都在按照自己的规则加工原材料。
    输出层产生结果:经过隐藏层的加工后,数据被送到输出层。输出层会根据任务产生最终的结果。如果是分类任务,比如识别手写数字是 0 - 9 中的哪一个,输出层可能有 10 个神经元,每个神经元的输出代表这个数字是对应数字的概率。例如,输出层第一个神经元输出 0.1,第二个神经元输出 0.05,以此类推,概率最高的那个神经元对应的数字类别就是模型预测的结果。
  2. 反向传播(Backward Propagation)
    类比理解 :还是以工厂流水线为例,现在我们要检查最终的产品(输出结果)是否合格。如果不合格,我们需要沿着流水线反向查找是哪个环节出了问题。
    具体过程
    计算损失函数:首先,我们需要一个标准来衡量输出结果的好坏,这就是损失函数。比如在手写数字识别中,如果真实的数字是 5,但是模型预测是 3,那就说明模型有误差。损失函数会根据输出结果和真实结果计算出这个误差的大小。常见的损失函数有均方误差(MSE),如果输出是,真实值是,那么均方误差就是。
    梯度计算与参数更新:计算出损失后,我们要沿着神经网络反向查找是哪些参数(权重和偏置)导致了这个损失。这就像是沿着流水线找是哪个工人的操作有问题。通过链式法则,我们可以计算出损失函数对每个参数的梯度(可以理解为每个参数对损失的 "贡献程度")。例如,对于一个权重,我们算出它的梯度是(是损失函数)。然后,我们根据这个梯度来更新参数,就好像告诉工人如何调整他们的操作。一般使用像随机梯度下降(SGD)这样的优化算法来更新参数,更新公式是,其中是学习率,它决定了参数调整的步长。通过不断地反向传播和更新参数,神经网络就会逐渐调整自己的参数,让输出结果越来越接近真实结果,就像工厂不断改进生产流程,让产品质量越来越好。
相关推荐
NAGNIP8 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab9 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab9 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP13 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年13 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼13 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS14 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区15 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈15 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang15 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx