神经网络:梯度下降法更新模型参数

作者:CSDN @ _养乐多_

在神经网络领域,梯度下降是一种核心的优化算法,本文将介绍神经网络中梯度下降法更新参数的公式,并通过实例演示其在模型训练中的应用。通过本博客,读者将能够更好地理解深度学习中的优化算法和损失函数,为学习和应用深度学习打下坚实的基础。


文章目录


一、概念

1.1 交叉熵损失函数

了解梯度下降方法更新参数之前,需要先了解交叉熵损失函数,可以参考《损失函数|交叉熵损失函数》,讲的很详细。交叉熵可以理解为模型输出值和真实值之间的差异,交叉熵损失越小,表示模型预测结果与真实情况越接近,模型的精度也就越高。

梯度下降更新参数的过程其实就是在反向求导减小梯度的过程中找到差异最小时的模型参数。

1.2 梯度下降

在机器学习和深度学习中,经常需要通过调整模型的参数来使其在训练数据上表现得更好,而梯度下降是一种常用的方法。

梯度下降的基本思想是沿着目标函数的负梯度方向进行迭代,以找到函数的局部最小值。具体而言,对于一个多维函数,梯度下降通过计算目标函数在当前参数位置的梯度(即偏导数),然后按照梯度的反方向更新参数,使得函数值不断减小。这个过程重复进行,直到达到某个停止条件,比如达到了指定的迭代次数或者目标函数的变化小于某个阈值。

梯度下降的核心公式:

θ n e w = θ − η ∂ L O S S ∂ θ (1) θ^{new}=θ-η \frac {∂LOSS}{∂θ}\tag{1} θnew=θηθLOSS(1)

其中, θ n e w θ^{new} θnew表示新的权重, θ θ θ表示旧的(初始/上一次迭代)权重, η η η 是学习率(learning rate)。

在这里插入图片描述

图片来自“Gradient Descent Algorithm: How does it Work in Machine Learning?”

梯度下降算法有多种变种,如批量梯度下降(Batch Gradient Descent)、随机梯度下降(Stochastic Gradient Descent)和小批量梯度下降(Mini-batch Gradient Descent)等,它们在计算梯度的方式和参数更新的规则上略有不同,但核心思想相似。

二、梯度下降更新模型参数

了解了交叉熵损失函数的概念之后,我们来看看梯度下降如何利用这个损失函数来更新模型参数。

这个过程是神经网络的核心,能看懂这个过程,也就基本懂深度神经网络了。

2.1 定义模型

首先,假设模型为下式,其中, T r u e True True为模型的真实输出值, ω ω ω b b b是模型需要更新的参数,分别为权重和偏置。
T r u e = Σ ω i ⋅ x i + b (2) True=Σω_i⋅x_i+b\tag{2} True=Σωixi+b(2)

2.2 损失函数的定义

接下来,我们定义一个损失函数。在这个例子中,我们假设损失函数是交叉熵损失,因为这个函数简单且容易推导,但是 L O S S LOSS LOSS函数使用均方差MSE(Mean Squared Error)的形式,这可能有些混淆。不管混淆不混淆吧,我们就用该函数来描述梯度下降更新参数的过程。

损失函数的定义:
L O S S = ( 真实输出值 − 期望输出值 ) 2 (3) LOSS=(真实输出值−期望输出值)^2\tag{3} LOSS=(真实输出值期望输出值)2(3)
L O S S = ( T r u e − P r e d ) 2 (4) LOSS=(True−Pred)^2\tag{4} LOSS=(TruePred)2(4)

其中, T r u e True True 是真实输出, P r e d Pred Pred 是模型预期输出。

L O S S LOSS LOSS T r u e True True求偏导,得

∂ L O S S ∂ T r u e = 2 ( T r u e − P r e d ) (5) \frac {∂LOSS}{∂True }=2(True-Pred)\tag{5} TrueLOSS=2(TruePred)(5)

2.3 对于权重 w i w_i wi的更新

先对 w i w_i wi求偏导,这里公式(6)是梯度下降方法的定式,得
w i n e w = w i − η ∂ L O S S ∂ w i (6) w_i^{new}=w_i-η \frac {∂LOSS}{∂w_i }\tag{6} winew=wiηwiLOSS(6)
其中, w i n e w w_i^{new} winew表示新的权重, w i w_i wi表示旧的(初始/上一次迭代)权重, η η η 是学习率(learning rate)。

通过链式法则, ∂ L O S S ∂ w i \frac {∂LOSS}{∂w_i } wiLOSS可以表示为:
∂ L O S S ∂ w i = ∂ L O S S ∂ T r u e ∂ T r u e ∂ w i (7) \frac {∂LOSS}{∂w_i }=\frac {∂LOSS}{∂True} \frac {∂True}{∂w_i }\tag{7} wiLOSS=TrueLOSSwiTrue(7)
因为 T r u e True True Σ ω ⋅ x i + b Σω⋅x_i+b Σωxi+b计算得到的,所以:
∂ T r u e ∂ w i = x i (8) \frac {∂True}{∂w_i }=x_i\tag{8} wiTrue=xi(8)
因此,权重 w i w_i wi的更新规则为:
w i n e w = w i − η ⋅ 2 ( T r u e − P r e d ) ⋅ x i (9) w_i^{new}=w_i-η·2(True-Pred)·x_i\tag{9} winew=wiη2TruePredxi(9)

2.4 对于偏置 b b b的更新

b n e w = b − η ∂ L O S S ∂ b (10) b^{new}=b-η \frac {∂LOSS}{∂b }\tag{10} bnew=bηbLOSS(10)

其中, b n e w b^{new} bnew表示新的偏置, b b b表示旧的(初始/上一次迭代)偏置, η η η 是学习率(learning rate)。
同样的,通过链式法则, ∂ L O S S ∂ b \frac {∂LOSS}{∂b } bLOSS可以表示为:
∂ L O S S ∂ b = ∂ L O S S ∂ T r u e ∂ T r u e ∂ b (11) \frac {∂LOSS}{∂b }=\frac {∂LOSS}{∂True} \frac {∂True}{∂b}\tag{11} bLOSS=TrueLOSSbTrue(11)
因为 T r u e True True Σ ω ⋅ x i + b Σω⋅x_i+b Σωxi+b计算得到的,所以:

∂ T r u e ∂ b = 1 (12) \frac {∂True}{∂b }=1\tag{12} bTrue=1(12)
因此,偏置 b b b的更新规则为:
b n e w = b − η ⋅ 2 ( T r u e − P r e d ) (13) b^{new}=b-η·2(True-Pred)\tag{13} bnew=bη2(TruePred)(13)

三、举例推导

3.1 样本数据

下表中, X 1 X_1 X1 X 2 X_2 X2分别为自变量,可以理解为特征变量,期望输出就是分类或者回归时用到的目标变量,可以理解为标签数据。

ID X 1 X_1 X1 X 2 X_2 X2期望输出
10.10.80.8
20.50.30.5
3.2 初始化模型

因为模型是 T r u e = Σ ω ⋅ x i + b True=Σω⋅x_i+b True=Σωxi+b ,分别设置模型的初始参数: η η η为0.1, w 1 w_1 w1为0, w 2 w_2 w2为0, b b b为0。

3.3 第1次迭代

将样本1( x 1 x_1 x1为0.1, x 2 x_2 x2为0.8,期望输出为0.8)代入模型,经过 w 1 ⋅ x 1 + w 2 ⋅ x 2 + b w_1⋅x_1+w_2⋅x_2+b w1x1+w2x2+b,得 0 ✖ 0.1 + 0 ✖ 0.8 + 0 0✖0.1+0✖0.8+0 0✖0.1+0✖0.8+0,最终输出值为0,然而期望输出值为0.8,根据损失函数 L O S S = ( T r u e − P r e d ) 2 LOSS=(True−Pred)^2 LOSS=(TruePred)2,得 L O S S = ( 输出值 − 期望输出值 ) 2 LOSS=(输出值-期望输出值)^2 LOSS=(输出值期望输出值)2,即 ( 0 − 0.8 ) 2 (0-0.8)^2 (00.8)2,那么 L O S S LOSS LOSS 0.64 0.64 0.64
根据公式(9), w 1 n e w = w 1 − η ⋅ 2 ( T r u e − P r e d ) ⋅ x 1 w_1^{new}=w_1-η⋅2(True-Pred)⋅x_1 w1new=w1η2(TruePred)x1,先来更新 w 1 w_1 w1,得 0 − 0.1 ✖ 2 ✖ ( 0 − 0.8 ) ✖ 0.1 0-0.1✖2✖(0-0.8)✖0.1 00.1✖2✖(00.8)✖0.1,最终得到新的权重 w 1 w_1 w1为0.016。
同样的更新 w 2 w_2 w2 w 2 n e w = w 2 − η ⋅ 2 ( T r u e − P r e d ) ⋅ x 2 w_2^{new}=w_2-η⋅2(True-Pred)⋅x_2 w2new=w2η2(TruePred)x2,得 0 − 0.1 ✖ 2 ✖ ( 0 − 0.8 ) ✖ 0.8 0-0.1✖2✖(0-0.8)✖0.8 00.1✖2✖(00.8)✖0.8,得到新的权重 w 2 w_2 w2为0.128。
接着根据公式(13), b n e w = b − η ⋅ 2 ( T r u e − P r e d ) b^{new}=b-η·2(True-Pred) bnew=bη2(TruePred),更新偏置 b b b,得 0 − 0.1 ✖ 2 ✖ ( 0 − 0.8 ) 0-0.1✖2✖(0-0.8) 00.1✖2✖(00.8),得到新的偏置 b b b为0.16。

3.4 第2次迭代

经过3.3节第1次迭代更新的参数,现在新的参数为: η η η为0.1, w 1 w_1 w1为0.016, w 2 w_2 w2为0.128, b b b为0.16。

接着基于这一组新的参数继续训练模型。

将样本2( x 1 x_1 x1为0.5, x 2 x_2 x2为0.3,期望输出为0.5)代入3.3节更新的模型中,经过 w 1 ⋅ x 1 + w 2 ⋅ x 2 + b w_1⋅x_1+w_2⋅x_2+b w1x1+w2x2+b,得 0.016 ✖ 0.5 + 0.128 ✖ 0.3 + 0.16 0.016✖0.5+0.128✖0.3+0.16 0.016✖0.5+0.128✖0.3+0.16,最终输出值为0.2064,然而期望输出值为0.5,根据损失函数 L O S S = ( T r u e − P r e d ) 2 LOSS=(True−Pred)^2 LOSS=(TruePred)2,得 L O S S = ( 输出值 − 期望输出值 ) 2 LOSS=(输出值-期望输出值)^2 LOSS=(输出值期望输出值)2,即 ( 0.2065 − 0.5 ) 2 (0.2065-0.5)^2 (0.20650.5)2,那么 L O S S LOSS LOSS 0.0862 0.0862 0.0862
根据公式(9), w 1 n e w = w 1 − η ⋅ 2 ( T r u e − P r e d ) ⋅ x 1 w_1^{new}=w_1-η⋅2(True-Pred)⋅x_1 w1new=w1η2(TruePred)x1,先来更新 w 1 w_1 w1,得 0.1 − 0.1 ✖ 2 ✖ ( 0.2064 − 0.5 ) ✖ 0.1 0.1-0.1✖2✖(0.2064-0.5)✖0.1 0.10.1✖2✖(0.20640.5)✖0.1,最终得到新的权重 w 1 w_1 w1为0.04536。
同样的更新 w 2 w_2 w2 w 2 n e w = w 2 − η ⋅ 2 ( T r u e − P r e d ) ⋅ x 2 w_2^{new}=w_2-η⋅2(True-Pred)⋅x_2 w2new=w2η2(TruePred)x2,得 0.128 − 0.1 ✖ 2 ✖ ( 0.2064 − 0.5 ) ✖ 0.3 0.128-0.1✖2✖(0.2064-0.5)✖0.3 0.1280.1✖2✖(0.20640.5)✖0.3,得到新的权重 w 2 w_2 w2为0.14562。
接着根据公式(13), b n e w = b − η ⋅ 2 ( T r u e − P r e d ) b^{new}=b-η·2(True-Pred) bnew=bη2(TruePred),更新偏置 b b b,得 0.16 − 0.1 ✖ 2 ✖ ( 0.2064 − 0.5 ) 0.16-0.1✖2✖(0.2064-0.5) 0.160.1✖2✖(0.20640.5),得到新的偏置 b b b为0.21872。

3.5 第n次迭代

和前面的方式一样,用户设置迭代次数n,迭代n次结束以后就可以得到一组模型参数,作为本次训练的最终模型。以后只要有新的 X 1 X_1 X1 X 2 X_2 X2输入,就会计算一个 输出 Y 输出Y 输出Y,这个过程就是模型应用(推理)。当然,并不是说迭代的次数越多,模型精度就越高,有可能会过拟合。

四、其他

模型精度也和学习率有关,学习率影响着模型在训练过程中收敛速度以及最终的收敛状态。

下图来自https://www.kdnuggets.com/2020/05/5-concepts-gradient-descent-cost-function.html。

在这里插入图片描述

如上图右下图示所示,学习率过大可能导致参数在优化过程中发生震荡,甚至无法收敛;而学习率过小(上图右上图示)则可能导致收敛速度过慢,耗费大量的时间和计算资源。因此,需要在学习率和模型精度之间取一定的平衡。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/572830.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SPU赋能PSI:探秘隐私集合求交核心技术与高级调度架构实践

1.SPU实现的PSI介绍 1.PSI的定义和种类 隐私集合求交(Private Set Intersection, PSI)是一种在密码学和安全多方计算(MPC)领域中的关键技术,允许两个或多个参与者在不泄露各自输入集合中非交集部分的前提下&#xff…

搭建机器人产业发展重要展示平台“2024南京国际机器人展览会”

2024南京国际智能机器人展览会 2024 Nanjing Intelligent Robot Expo 时间:2024年11月22-24日 地点:南京国际博览中心 南京,这座历史悠久的文化名城,如今正站在机器人产业发展的前沿。随着全球科技的飞速进步,机器人产业已经成为推动经济社…

jupyter lab 自动补全

命令行执行: pip install jupyter-lsp pip install python-lsp-server[all] jupyter lab直接搜索,并安装,重启后生效

开源AI引擎:文本自动分类在公安及消防执法办案自动化中的应用

一、实际案例介绍 通过文本分类算法自动化处理文本数据,快速识别案件性质和关键特征,极大地提高了案件管理和分派的效率。本文将探讨这两种技术如何帮助执法机构优化资源分配,确保案件得到及时而恰当的处理,并增强公共安全管理的…

excel使用技巧-自动计算过滤后的数据(=SUBTOTAL(109,B2:B110))

语法:SUBTOTAL(function_num,ref1,ref2, …) Function_num 为 1 到 11(包含隐藏值)或 101 到 111(忽略隐藏值)之间的数字,指定使用何种函数在列表中进行分类汇总计算。对应的含义如下面表格所示&#xff1…

国内ip怎么来回切换:操作指南与注意事项

在数字化时代,互联网已经成为我们日常生活、学习和工作中不可或缺的一部分。然而,随着网络应用的不断深化,用户对于网络环境的稳定性和安全性要求也越来越高。其中,IP地址作为网络中的关键标识,其切换与管理显得尤为重…

逆向案例9--小鹅通视频m3u8内容解密--含简单webpack

视频网址:https://app4nseessp8638.h5.xiaoeknow.com/v2/course/alive/l_65b9e8dfe4b064a83b90e102?type2&app_idapp4nseessp8638&channel_id&res_type4&pro_id&res_idl_65b9e8dfe4b064a83b90e102 按照惯例,刷新网站,搜…

Adobe推出20多个,企业版生成式AI定制、微调服务

3月27日,全球多媒体领导者Adobe在拉斯维加斯召开“Summit 2024”大会,重磅推出了Firefly Services。 Firefly Services提供了20 多个生成式AI和创意API服务,支持企业自有数据对模型进行定制、微调,同时可以与PS、Illustrator、Ex…

艺术统计图表绘制方法(双环套图)

艺术统计图表绘制方法(双环套图) 在网络科技发展进步的当下,原来一些传统的统计图表都有了进一步的创新。以前企业的PPT都依赖微软的各应用软件来制作图表,现时企业的PPT展示的图表应用不再满足于Excle,Word等的图表绘…

stitcher类实现多图自动拼接

效果展示 第一组: 第二组: 第三组: 第四组: 运行代码 import os import sys import cv2 import numpy as npdef Stitch(imgs,savePath): stitcher cv2.Stitcher.create(cv2.Stitcher_PANORAMA)(result, pano) stitcher.st…

大语言模型(LLM)token解读

1. 什么是token? 人们经常在谈论大模型时候,经常会谈到模型很大,我们也常常会看到一种说法: 参数会让我们了解神经网络的结构有多复杂,而token的大小会让我们知道有多少数据用于训练参数。 什么是token?比…

阿里云 -- 连接云服务器ECS、管理云服务器ECS、WordPress 页面配置

连接云服务器ECS 1. 远程连接云服务器ECS,点击实例最右侧操作列的远程连接按钮,并在弹出的对话框中点击立即登录 2. 登录云服务器ECS,通过密码认证方式,输入用户名和密码 提示:新创建的ECS实例状态即使为运行中&#…