计算均值的新方法

有两种方法。第一种方法很直接,即收集所有样本后计算平均值;但这种方法的缺点是,若样本是在一段时间内逐个收集的,我们必须等到所有样本都收集完毕。第二种方法可避免此缺点,因为它以增量迭代的方式计算平均值,来几个就计算几个,不需要等了。

步骤

假设

由此可得

则有

最终推导出 增量更新公式

一般性替换

此算法是一种特殊的 SA 算法(随机近似算法),也是一种特殊的 随机梯度下降算法

Robbins-Monro 算法 

随机梯度下降算法是 RM 算法的特殊形式

RM算法的目的是在不知道方程表达式、只进行采样的前提下求方程的解

为了求解g(\omega)=0的解,我们采用\omega_{k+1}=\omega_k-a_k\widetilde{g}(\omega_k,\eta_k)(*),其中\widetilde{g}(\omega_k,\eta_k)是第k次带噪声的观测

具体的实现步骤是,输入一个\omega_1,我们可以得到一个带噪声的观测值\widetilde{g_1},通过(*)式可以得到\omega_2,又可以据此我们可以得到一个带噪声的观测值\widetilde{g_2},由\widetilde{g_2}通过(*)式可以得到\omega_3......

如果我们能证明这样的序列\omega_k,k=1,2,3\dots会收敛于g(\omega)=0的解\omega^*,那这样的一个算法就是可行的

下面我们引入Robbins-Monro定理来证明这个序列\omega_k,k=1,2,3\dots收敛于g(\omega)=0的解\omega^*

Robbins-Monro定理

若有

满足\sum_{k = 1}^{\infty} a_k = \infty, \sum_{k = 1}^{\infty} a_k^2 < \infty的一个典型序列是\frac{1}{k},其无穷级数发散,其无穷平方和=\frac{\pi^2}{6},实际常把a_k选为足够小的常数,这虽然违反条件,但是可以避免\frac{1}{k}带来的后端序列权重过低的问题

是一种特殊的RM算法

随机梯度下降

Stochastic Gradient Descent (SGD)

随机梯度下降算法是为了解决一个优化问题 \begin{aligned} \min_{w} J(w) = \mathbb{E}[f(w, X)] \end{aligned}

我们要优化\omega来使J(\omega)的值最小

X是随机变量,f\omegaX的函数;X这个随机变量的概率分布已经给定但是暂时是未知的,\begin{aligned} \mathbb{E}[f(w, X)] \end{aligned}\begin{aligned} \mathbb{E} \end{aligned}就是对X求期望;\omegaX既可以是向量也可以是标量,f的值是标量

方法一:梯度下降GD

\begin{aligned} w_{k+1} = w_k - \alpha_k \nabla_{w} \mathbb{E}[f(w_k, X)] = w_k - \alpha_k \mathbb{E}[\nabla_{w} f(w_k, X)] \end{aligned}

随机梯度下降通过在每次迭代中,沿着目标函数期望梯度的负方向来更新参数 \omega ,逐步逼近目标函数的最小值点。实际应用中,由于计算整个数据集上目标函数的期望梯度(全量梯度)计算量过大,通常会采用小批量数据或者单个数据来近似计算期望梯度,从而实现高效的参数更新。

方法二:批量梯度下降BGD

\begin{aligned} \mathbb{E}[\nabla_{w} f(w_k, X)] \approx \frac{1}{n} \sum_{i = 1}^{n} \nabla_{w} f(w_k, x_i) \quad w_{k + 1} = w_k - \alpha_k \frac{1}{n} \sum_{i = 1}^{n} \nabla_{w} f(w_k, x_i). \end{aligned}

当 n = 1时,就是每次只用一个样本进行梯度更新,即SGD;当 n 为整个数据集样本数时,就退化为批量梯度下降。 这种基于样本近似计算梯度的方式,在大规模数据场景下极大地降低了计算复杂度,使得优化算法能够高效运行

方法三:随机梯度下降SGD

\begin{aligned} w_{k + 1} = w_k - \alpha_k \nabla_{w} f(w_k, x_k) \end{aligned}

式子等号右边,原来的X变成了对X的随机采样x_k;true gradient\begin{aligned} \mathbb{E}[\nabla_{w} f(w_k, X)] \end{aligned}变成了stochastic gradient\begin{aligned} \nabla_{w} f(w_k, x_k) \end{aligned}。这就是BGD里令n=1的情况

例子

考虑一个优化问题\begin{aligned} \min_{w} J(w) = \mathbb{E}[f(w, X)] = \mathbb{E}\left[ \frac{1}{2} \| w - X \|^2 \right] \end{aligned}

其中\begin{aligned} f(w, X) = \frac{\| w - X \|^2}{2} \quad \nabla_{w} f(w, X) = w - X \end{aligned}

其最优解为\begin{aligned} w^* = \mathbb{E}[X] \end{aligned}

GD

\begin{aligned} w_{k + 1} &= w_k - \alpha_k \nabla_{w} J(w_k) &= w_k - \alpha_k \mathbb{E}[\nabla_{w} f(w_k, X)] &= w_k - \alpha_k \mathbb{E}[w_k - X]. \end{aligned}

SGD
\begin{aligned} w_{k+1} = w_k - \alpha_k \nabla_{w} f(w_k, x_k) = w_k - \alpha_k (w_k - x_k) \end{aligned}

收敛性

从GD到SGD:

\begin{aligned} w_{k + 1} &= w_k - \alpha_k \mathbb{E}[\nabla_{w} f(w_k, X)] \\ &\Downarrow \\ w_{k + 1} &= w_k - \alpha_k \nabla_{w} f(w_k, x_k) \end{aligned}

\begin{aligned} \nabla_{w} f(w_k, x_k) \end{aligned}可以看作是\begin{aligned} \mathbb{E}[\nabla_{w} f(w_k, X)] \end{aligned}的带噪声的观测值:

\begin{aligned} \nabla_{w} f(w_k, x_k) = \mathbb{E}[\nabla_{w} f(w, X)] + \underbrace{\nabla_{w} f(w_k, x_k) - \mathbb{E}[\nabla_{w} f(w, X)]}_{\eta} \end{aligned}

下面我们证明SGD是一个特殊的RM算法,由此来证明SGD在满足某些条件的情况下是收敛的

proof:

SGD是要解决一个优化问题:\begin{aligned} J(w) = \mathbb{E}[f(w, X)] \end{aligned},令J(w)最小。这样的优化问题可以转化为寻找\begin{aligned} \nabla_{w} J(w) = \mathbb{E}[\nabla_{w} f(w, X)] = 0 \end{aligned}的根,因为其梯度为0是取得极小值的必要条件。

下面即求\begin{aligned} g(w) = \nabla_{w} J(w) = \mathbb{E}[\nabla_{w} f(w, X)]=0 \end{aligned}的根

我们用RM算法来求g(w)=0的根

\begin{aligned} \tilde{g}(w, \eta) &= \nabla_{w} f(w, x) \\ &= \underbrace{\mathbb{E}[\nabla_{w} f(w, X)]}_{g(w)} + \underbrace{\nabla_{w} f(w, x) - \mathbb{E}[\nabla_{w} f(w, X)]}_{\eta} \end{aligned}

\begin{aligned} w_{k + 1} = w_k - a_k \tilde{g}(w_k, \eta_k) = w_k - a_k \nabla_{w} f(w_k, x_k) \end{aligned} 这实际上就是SGD算法

SGD算法的有趣性质

由于随机梯度是随机的,因此其近似并不精确,那么随机梯度下降法(SGD)的收敛过程是缓慢的还是随机的呢?

\begin{aligned} \delta_{k} \leq \frac{\left| \nabla_{w} f(w_k, x_k) - \mathbb{E}[\nabla_{w} f(w_k, X)] \right|}{c \left| w_k - w^* \right|} \end{aligned}

上述等式揭示了随机梯度下降法(SGD)一种有趣的收敛模式:

BGD & MBGD & SGD

\begin{aligned} w_{k + 1} &= w_k - \alpha_k \frac{1}{n} \sum_{i = 1}^{n} \nabla_{w} f(w_k, x_i), & \text{(BGD)} \\ w_{k + 1} &= w_k - \alpha_k \frac{1}{m} \sum_{j \in \mathcal{I}_k} \nabla_{w} f(w_k, x_j), & \text{(MBGD)} \\ w_{k + 1} &= w_k - \alpha_k \nabla_{w} f(w_k, x_k). & \text{(SGD)} \end{aligned}

总结

参考文章

S. Zhao. Mathematical Foundations of Reinforcement Learning. Springer Nature Press, 2025.  【【强化学习的数学原理】课程:从零开始到透彻理解(完结)】

https://www.bilibili.com/video/BV1sd4y167NS/?  p=2&share_source=copy_web&vd_source=52164f68a5f27ac2e86f0e7963ea966c 

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

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

相关文章

PHP `implode` 深度解析:从基础到高阶实战指南

文章目录一、基础语法与底层原理执行过程解析&#xff1a;二、性能关键&#xff1a;避免隐含陷阱1. 类型转换黑盒2. 大数组内存优化3. 关联数组处理三、高阶应用场景1. SQL语句安全构建2. CSV文件生成3. 模板引擎实现四、多维数组处理方案1. 递归降维2. JSON转换桥接五、性能对…

开发语言中关于面向对象和面向过程的笔记

开发语言中关于面向对象和面向过程的笔记市面主流语言分类面向过程面向对象市面主流语言分类 面向过程编程&#xff08;Procedural Programming&#xff09;&#xff1a;C语言&#xff1b;面向对象编程语言&#xff08;Object-Oriented Programming, OOP&#xff09; &#xf…

AI产品经理面试宝典第3天:技术分层、边界与市场全景系列面试题

面试指导 面试官:请从技术实现效果的角度,解释AI技术分层。 你的回答: AI技术分为三层。 第一层是认知层:通过图像处理、语音识别、自然语言理解等技术,让机器感知环境。比如摄像头识别行人动作,麦克风捕捉用户指令。 第二层是预测层:基于行为数据预判下一步需求。例如…

Intel英特尔ICH7R/ICH8R/ICH9R/ICH10R系列下载地址--intel_msm_8961002 下载 Version 8.9.6.1002

Intel英特尔ICH7R/ICH8R/ICH9R/ICH10R系列下载地址intel_msm_8961002 下载 Version 8.9.6.1002https://xiazai.zol.com.cn/detail/66/653449.shtml通过网盘分享的文件&#xff1a;intel_msm_8961002.zip 链接: https://pan.baidu.com/s/13N9ZLXWkaWaEHQ5P90Jt0g?pwd3790 提取码…

AI(学习笔记第五课) 使用langchain进行AI开发 load documents(web)

文章目录AI(学习笔记第五课) 使用langchain进行AI开发 load documents(web)学习内容&#xff1a;1.load documents&#xff08;web&#xff09;1.1 学习url1.2 提前安装python的package1.2 使用WebBaseLoader进行webpage的load1.3 使用BeautifulSoup4进行webpage的部分截取1.4 …

使用macvlan实现容器的跨主机通信

使用环境&#xff1a; 两台运行docker的服务器 A机器网段&#xff1a;192.168.86.61 B机器网段&#xff1a;192.168.86.62 运行的容器需装有ping指令&#xff0c; 实验参数解释&#xff1a; -d macvlan 指定创建网络驱动类型 --subnet 指定子网范围 -gateway 指定网关地址 -o p…

深度学习_全连接神经网络

1.什么是神经网络神经网络中信息只向一个方向移动&#xff0c;即从输入节点向前移动&#xff0c;通过隐藏节点&#xff0c;再向输出节点移 动&#xff0c;网络中没有循环或者环。其中的基本构件是&#xff1a; 输入层&#xff1a;即输入x的那一层 输出层&#xff1a;即输出y的那…

OpenLayers使用

初学ol&#xff0c;实现了高德地图不同图层的切换、交互性地图飞行以及加载本地JSON数据。说一下不同图层切换的想法&#xff1a;1.对于标准地图和卫星地图&#xff1a;二者最初便挂载到map上&#xff0c;两个图层是叠加显示的&#xff1b;当点击按钮时&#xff0c;其实是使用 …

day4--上传图片、视频

1. 分布式文件系统 1.1 什么是分布式文件系统 文件系统是负责管理和存储文件的系统软件&#xff0c;操作系统通过文件系统提供的接口去存取文件&#xff0c;用户通过操作系统访问磁盘上的文件。 下图指示了文件系统所处的位置&#xff1a; 常见的文件系统&#xff1a;FAT16/FA…

极矢量与轴矢量

物理量分为标量和矢量&#xff0c;矢量又分为极矢量和轴矢量。 矢量是既有大小又有方向并按平行四边形法则相加的量。矢量有极矢量和轴矢量两种&#xff0c;其间的区别是在镜像反射变换下遵循不同的变换规律,许多物理量都是矢量,同样,其中也有极矢量和轴矢量的区分,在力学中,例…

文章发布易优CMS(Eyoucms)网站技巧

为了更快的上手数据采集及发布到易优CMS(eyoucms)网站&#xff0c;特地总结了些新手常常会遇到的操作问题与技巧&#xff0c;如下&#xff1a; 免费易优CMS采集发布插件下载&#xff0c;兼容火车头、八爪鱼、简数采集等 目录 1. 发布到易优CMS指定栏目 2. 发布文章到易优CM…

INA226 数据手册解读

INA226是一款数字电流检测放大器&#xff0c;配备I2C和SMBus兼容接口。该器件可提供数字电流、电压以及功率读数&#xff0c;可灵活配置测量分辨率&#xff0c;并具备连续运行与触发操作模式。该芯片通常由一个单独的电源供电&#xff0c;电压范围为 2.7V 至 5.5V引脚说明​​引…

Linux 中替换sed

以下是关于 sed&#xff08;Stream Editor&#xff09;的深度详解和日常高频使用场景&#xff0c;结合实用示例说明&#xff1a;一、sed 核心概念 流式编辑器&#xff1a;逐行处理文本&#xff0c;不直接修改源文件&#xff08;除非使用 -i 选项&#xff09;正则支持&#xff1…

ADB 调试日志全攻略:如何开启与关闭 `ADB_TRACE` 日志

ADB 调试日志全攻略&#xff1a;如何开启与关闭 ADB_TRACE 日志 ADB&#xff08;Android Debug Bridge&#xff09;是 Android 开发的核心工具&#xff0c;但在排查问题时&#xff0c;默认日志可能不够详细。通过设置环境变量 ADB_TRACE&#xff0c;可以开启 全量调试日志&…

实现druid数据源密码加密

生成加密密码集成了druid链接池的&#xff0c;可以实现数据源密码加密。加密方式如下构建单元测试&#xff0c;并输入密码即可生成加密密码以及加密公钥Test public void testPwd() throws Exception {String password "123456";String[] arr com.alibaba.druid.fi…

【TCP/IP】20. 因特网安全

20. 因特网安全20. 因特网安全20.1 安全威胁20.2 安全服务20.3 基本安全技术20.3.1 密码技术20.3.2 报文鉴别技术20.3.3 身份认证技术20.3.4 数字签名技术20.3.5 虚拟专用网&#xff08;VPN&#xff09;技术20.3.6 防火墙技术20.3.7 防病毒技术20.4 IP 层安全20.5 传输层安全20…

数据结构之位图和布隆过滤器

系列文章目录 数据结构之ArrayList_arraylist o(1) o(n)-CSDN博客 数据结构之LinkedList-CSDN博客 数据结构之栈_栈有什么方法-CSDN博客 数据结构之队列-CSDN博客 数据结构之二叉树-CSDN博客 数据结构之优先级队列-CSDN博客 常见的排序方法-CSDN博客 数据结构之Map和Se…

Web攻防-PHP反序列化魔术方法触发条件POP链构造变量属性修改黑白盒角度

知识点&#xff1a; 1.WEB攻防-PHP反序列化-序列化和反序列化 2.WEB攻防-PHP反序列化-常见魔术方法触发规则 3.WEB攻防-PHP反序列化-反序列化漏洞产生原因 4.WEB攻防-PHP反序列化-黑白盒&POP链构造 一、演示案例-WEB攻防-PHP反序列化-序列化和反序列化 什么是反序列化操作…

C# VB.NET多进程-管道通信,命名管道(Named Pipes)

要向已运行的进程发送特定命令&#xff08;如/exit&#xff09;&#xff0c;而不是启动新进程&#xff0c;需要使用进程间通信&#xff08;IPC&#xff09;机制。以下是几种常见的实现方法&#xff1a;一、使用命名管道&#xff08;Named Pipes&#xff09;如果ABC.EXE支持通过…

C++ 右值引用 (Rvalue References)

右值引用是C11引入的革命性特性&#xff0c;它彻底改变了C中资源管理和参数传递的方式。下面我将从多个维度深入讲解右值引用。一、核心概念1. 值类别(Value Categories)lvalue (左值): 有标识符、可取地址的表达式int x 10; // x是左值 int* p &x; // 可以取地址rvalue…