神经网络优化计算公式
好的,我们来用中文解释神经网络优化中核心的计算公式。
神经网络的训练本质上是一个优化问题:我们试图找到一组网络参数(权重 w 和偏置 b),使得损失函数 L 的值最小化。损失函数衡量了模型预测值 ŷ 与真实值 y 之间的差距。
实现这个目标的核心过程是梯度下降及其变种算法(统称为优化器)。以下是关键的计算公式和概念:
1. 损失函数 (Loss Function) - 定义优化目标
损失函数 L 计算整个训练集(或一个批次)的平均误差。常见的损失函数有:
- 均方误差 (MSE) - 回归任务:
L = (1/N) * Σ_{i=1}^{N} (y_i - ŷ_i)^2(N是样本数量或批次大小) -
交叉熵损失 (Cross-Entropy Loss) - 分类任务:
L = - (1/N) * Σ_{i=1}^{N} [ y_i * log(ŷ_i) + (1 - y_i) * log(1 - ŷ_i) ](二分类)L = - (1/N) * Σ_{i=1}^{N} Σ_{c=1}^{C} y_{i,c} * log(ŷ_{i,c})(多分类, C是类别数,y_{i,c}是one-hot编码的真实标签,ŷ_{i,c}是预测概率)目标: 最小化
L(w, b)。
2. 梯度计算 (Gradients) - 反向传播 (Backpropagation)
优化器工作的核心是需要知道参数朝哪个方向调整可以降低损失。这通过计算损失函数 L 相对于每个参数(每个 w_jk 和 b_k)的偏导数(梯度)∇L 来实现。
关键输出: 对于网络中的每一个权重 w 和偏置 b,计算:
∂L / ∂w(损失L对权重w的偏导数)-
∂L / ∂b(损失L对偏置b的偏导数)计算方法: 反向传播算法通过链式法则高效地从输出层逐层反向计算这些梯度。虽然具体计算涉及多层复合函数求导,但最终我们会得到每个参数的梯度值。
3. 参数更新规则 - 梯度下降及其变种
知道梯度后,我们就可以按照梯度指示的反方向更新参数,因为梯度方向是函数值上升最快的方向,反方向就是下降最快的方向。
-
基础梯度下降 (Gradient Descent, GD / Batch GD):
w = w - η * (∂L / ∂w)b = b - η * (∂L / ∂b)η(学习率, Learning Rate):一个非常重要的超参数,控制每次更新的步长。太小收敛慢,太大可能震荡或不收敛。- 这里
∂L / ∂w和∂L / ∂b是使用整个训练集计算得到的梯度(批量梯度下降)。计算开销大。
-
随机梯度下降 (Stochastic Gradient Descent, SGD):
w = w - η * (∂Lⁱ / ∂w)b = b - η * (∂Lⁱ / ∂b)∂Lⁱ / ∂w和∂Lⁱ / ∂b是仅使用单个样本i计算得到的梯度(近似)。更新频繁,噪声大,可能震荡,但能跳出局部极小点(对非凸函数有利),计算开销小。- 通常在实践中指代小批量梯度下降 (Mini-batch Gradient Descent):使用一个小的样本子集(批次, Batch)来计算梯度。这是最常用的方法。
w = w - η * (1/B) * Σ_{i in batch}^{B} (∂Lⁱ / ∂w)(近似等于该批次平均损失的梯度∂L_batch / ∂w)b = b - η * (1/B) * Σ_{i in batch}^{B} (∂Lⁱ / ∂b)B是批次大小 (Batch Size),也是一个重要的超参数。
改进的优化器 (Adaptive Optimizers)
基础的SGD存在学习率难以选择和山谷/鞍点附近效率低下的问题。更高级的优化器通过引入动量、历史梯度信息自适应调整学习率:
-
动量法 (Momentum):
v_{dw} = β * v_{dw} + (1 - β) * (∂L / ∂w)v_{db} = β * v_{db} + (1 - β) * (∂L / ∂b)w = w - η * v_{dw}b = b - η * v_{db}v_{dw}, v_{db}:指数加权平均的梯度,模拟速度(或动量)。β是动量超参数(常取0.9)。- 效果:在一致方向上加速更新,抑制振荡。
-
RMSProp:
s_{dw} = β * s_{dw} + (1 - β) * (∂L / ∂w) * (∂L / ∂w)(计算平方梯度的指数加权平均)s_{db} = β * s_{db} + (1 - β) * (∂L / ∂b) * (∂L / ∂b)w = w - η * (∂L / ∂w) / (sqrt(s_{dw}) + ε)b = b - η * (∂L / ∂b) / (sqrt(s_{db}) + ε)s_{dw}, s_{db}:指数加权平均的平方梯度。β(一般不同于动量的β, 常取0.999)。ε是一个极小值(如1e-8)防止除以0。- 效果:在梯度较大的方向上(
s值大),分母变大,减小该方向的更新步长(自适应降低该方向的学习率);在梯度较小的方向上(s值小),分母小,相对增大更新步长。
-
Adam (Adaptive Moment Estimation): 结合动量和RMSProp的思想,最为常用: 初始化:
v_{dw}=0,s_{dw}=0,v_{db}=0,s_{db}=0迭代 t:v_{dw} = β₁ * v_{dw} + (1 - β₁) * (∂L / ∂w)(估算一阶矩 - 有偏动量)v_{db} = β₁ * v_{db} + (1 - β₁) * (∂L / ∂b)s_{dw} = β₂ * s_{dw} + (1 - β₂) * (∂L / ∂w)^2(估算二阶矩 - 有偏平方梯度)s_{db} = β₂ * s_{db} + (1 - β₂) * (∂L / ∂b)^2偏差校正 (Bias Correction):v_{dw}^{corrected} = v_{dw} / (1 - β₁^t)v_{db}^{corrected} = v_{db} / (1 - β₁^t)s_{dw}^{corrected} = s_{dw} / (1 - β₂^t)s_{db}^{corrected} = s_{db} / (1 - β₂^t)参数更新:w = w - η * v_{dw}^{corrected} / (sqrt(s_{dw}^{corrected}) + ε)b = b - η * v_{db}^{corrected} / (sqrt(s_{db}^{corrected}) + ε)β₁(一阶矩衰减率,常取0.9)β₂(二阶矩衰减率,常取0.999)ε(防止除0,常取1e-8)- 效果:兼具动量加速收敛的优点和RMSProp自适应调整步长、适合处理稀疏梯度的优点,是许多场景的默认选择。
总结关键公式
- 定义目标:
L(w, b)(损失函数) - 计算方向:
∂L / ∂w,∂L / ∂b(梯度,通过反向传播计算) - 更新参数:
w = w - η * ...,b = b - η * ...- 基础:
... = ∂L / ∂w(或批次均值) - Momentum:
... = v_{dw}(其中v是动量项) - Adam:
... = (v_{dw}^{corrected}) / (sqrt(s_{dw}^{corrected}) + ε)(结合动量和自适应学习率)
- 基础:
理解这些公式背后的思想(最小化损失、利用梯度信息、通过优化器智能更新)比死记硬背符号更重要。实际在代码中使用时,深度学习框架(如TensorFlow, PyTorch)会通过自动微分(Autograd)自动计算步骤2(梯度),开发者主要需要选择损失函数、优化器类型(如 SGD, Adam)并设置相关的超参数(学习率 η, 批次大小 B, Adam的 β₁, β₂ 等)。
如何训练和优化神经网络
神经网络是人工智能领域的重要分支,广泛应用于图像识别、自然语言处理、语音识别等多个领域。然而,要使神经网络在实际应用中取得良好效果,必须进行有效的训练和优化
2024-07-01 14:14:06
电机扭矩的计算公式和转速计算公式
在电机学中,电机转速和扭矩是非常重要的参数,在实际应用中,电机转速和扭矩的计算公式也使用得非常频繁,本文详细介绍扭矩的计算公式和转速计算公式
2023-12-25 09:41:59
BP(BackPropagation)反向传播神经网络介绍及公式推导
BP(BackPropagation)反向传播神经网络介绍及公式推导(电源和地电气安全间距)-该文档为BP(BackPropagation)反向传播神经网络
资料下载
靓仔峰
2021-07-26 10:31:32
神经网络移植到STM32的方法
将神经网络移植到STM32最近在做的一个项目需要用到网络进行拟合,并且将拟合得到的结果用作控制,就在想能不能直接在单片机上做神经网络
卷积神经网络一维卷积的处理过程
inference在设备端上做。嵌入式设备的特点是算力不强、memory小。可以通过对神经网络做量化来降load和省memory,但有时可能memory还吃紧,就需要对神经网络在memory使用上做进一步
【案例分享】ART神经网络与SOM神经网络
今天学习了两个神经网络,分别是自适应谐振(ART)神经网络与自组织映射(SOM)神经网络。整体感觉不是很难,只不过一些最基础的概念容易理解不清。
【案例分享】基于BP算法的前馈神经网络
}或o koko_{k})的误差神经元偏倚的变化量:ΔΘ ΔΘ Delta Theta=学习步长η ηeta × ×imes 乘以神经元的误差BP神经网络
卷积神经网络如何使用
卷积神经网络(CNN)究竟是什么,鉴于神经网络在工程上经历了曲折的历史,您为什么还会在意它呢? 对于这些非常中肯的问题,我们似乎可以给出相对简明的答案。
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览