朗之万方程,机器学习与液体中的粒子运动

目录

  • 一、说明
  • 二、朗之万方程的诞生
    • 2.1 牛顿力学
    • 2.2 流体中的随机运动
  • 三、小质量物体布朗运动方程
  • 四、布朗运动的Python代码
  • 五、稳定性讨论
    • 5.1 波尔兹曼分布
    • 5.2 梯度下降算法
  • 六、随机梯度下降(SGD)和小批量梯度下降
  • 七、机器学习与物理,作为朗之万过程的梯度下降
  • 结论

一、说明

梯度下降算法是机器学习中最流行的优化技术之一。它有三种类型:批量梯度下降(GD)、随机梯度下降(SGD)和小批量梯度下降(在每次迭代中用于计算损失函数梯度的数据量不同)。
本文的目标是描述基于朗格文动力学(LD)的全局优化器的研究进展,LD是一种分子运动的建模方法,它起源于20世纪初阿尔伯特·爱因斯坦和保罗·朗之万关于统计力学的著作。

我将从理论物理学的角度提供一个优雅的解释,为什么梯度下降的变种是有效的全局优化器。

二、朗之万方程的诞生

在这里插入图片描述

没有迹象表明一场革命即将发生。1904年,如果阿尔伯特·爱因斯坦放弃了物理学,他的科学家同行们可能甚至都不会注意到。幸运的是,这并没有发生。1905年,这位年轻的专利职员发表了四篇革命性的论文。
m d 2 x d t 2 = − λ d x d t + R t + F m \frac{d^2x}{dt^2}=-\lambda\frac{dx}{dt}+R_t + F mdt2d2x=λdtdx+Rt+F

这里提醒大家,我们需要习惯于这种数学模型的表述。如何习惯?简单!长期接触长期体味,逐渐地,你就体会到这种简单方法的奇妙和快捷沟通,那么,该方程是到底什么意思呢?

2.1 牛顿力学

我i们知道牛顿公式 m a = F ma = F ma=F
只要对这个方程任意加入能解释的项就可以了,大致的框架如下图:
在这里插入图片描述
其中:
d 2 x d t 2 \frac{d^2x}{dt^2} dt2d2x:加速度,是位移对时间的二阶导。
− λ d x d t -\lambda \frac{dx}{dt} λdtdx: 该项是运动阻力,速度越大,阻力越大,因此成正比。
R t R_t Rt:是个力,来自高斯随机过程。
F F F:是个外力,可有可无。
其实,几乎所有的宏观物理方程框架来自牛顿,而且,框架类似,细节不同。
随机力 R t R_t Rt是一个 δ \delta δ相关的平稳高斯过程,其均值和方差如下:

在这里插入图片描述
术语“ δ \delta δ相关”意味着两个不同时间的力是零相关的。 Langevin方程是第一个描述不平衡热力学的数学方程。

2.2 流体中的随机运动

什么是布朗运动?
“布朗运动是指悬浮在流体中的小颗粒所表现出的随机运动。它通常被称为“布朗运动”。这种运动是粒子与流体中其他快速移动的粒子碰撞的结果。

布朗运动以苏格兰植物学家罗伯特·布朗的名字命名,他首先观察到花粉粒放入水中时会沿随机方向移动。下面提供了描述流体粒子的随机运动(由这些粒子之间的碰撞引起)的图示。

在这里插入图片描述

三、小质量物体布朗运动方程

先参考朗之万方程: m d 2 x d t 2 = − λ d x d t + R t + F m \frac{d^2x}{dt^2}=-\lambda\frac{dx}{dt}+R_t + F mdt2d2x=λdtdx+Rt+F
m < ε m<\varepsilon m<ε

表示:如果粒子的质量足够小,我们可以把左边设为零。此外,我们可以用某个势能的导数来表示一个(保守)力,比如引力。我们得到:
在这里插入图片描述
小质量的朗之万方程
写作:
在这里插入图片描述
其中δt是一个小时间间隔,并有移动项,我们得到了小质量粒子的离散朗之万方程:
在这里插入图片描述
用这种方式表示,朗之万方程描述了经历布朗运动的粒子的增量位移。至此,我们可以用计算机程序实现整个过程。

四、布朗运动的Python代码

为了模拟二维离散布朗过程,采用了两种一维过程。步骤如下:

首先,选择时间步数“steps”。
坐标x和y是随机跳跃的累积和(函数np.cumsum()用于计算它们)。
中间点X和Y通过使用np.interp()插值计算。
然后使用plot()函数绘制布朗运动。
代码是:

import numpy as np
import matplotlib.pyplot as plt
import random

steps =5000
random.seed(42)

x,y = np.cumsum(np.random.randn(steps)), np.cumsum(np.random.randn(steps))
points = 10
ip = lambda x, steps, points: np.interp(np.arange(steps*points),np.arange(steps)*points,x)
X, Y = ip(x, steps, points), ip(y, steps, points)
fig, ax = plt.subplots(1, 1, figsize=(10, 10))
ax.set_title('Brownian Motion')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.plot(X, Y, color='green',marker='o', markersize=1)
plt.show()

在这里插入图片描述

五、稳定性讨论

布朗运动图解
朗之万动力学与全局极小值
朗之万动力学的一个重要性质是随机过程x(t)(其中x(t)服从上面给出的Langevin方程)的扩散分布p(x)收敛于平稳分布,即普遍存在的波尔兹曼分布(BD)。
在这里插入图片描述

5.1 波尔兹曼分布

它集中在势能E(x)的全局最小值附近(从它的函数形式,我们可以很容易地看到BD峰在势能E(x)的全局最小值上)。更准确地说,如果温度按照离散步骤缓慢降至零:

在这里插入图片描述
那么p(x)在n的大值时收敛于玻尔兹曼分布(x收敛于E(x)的全局最小值)。朗之万方程的时变温度通常被解释为描述亚稳态物理状态的衰减到系统的基态(这是能量的全局最小值)。因此,我们可以使用朗之万动力学来设计算法,使其成为潜在非凸函数的全局最小化。

这一原理是模拟退火技术的基础,用于获得近似的全局最优函数。模拟退火在寻找极大值中的应用。

5.2 梯度下降算法

现在我将转到机器学习优化算法。

梯度下降是一个简单的迭代优化算法最小化(或最大化)函数。在机器学习的背景下,这些函数是损失函数。为具体起见,考虑一个多元损失函数L(w),定义了一些不动点p周围的所有点w。GD算法基于一个简单的性质,即从任何点p开始,函数L(w)在其负梯度方向上衰减最快:

在这里插入图片描述
损失函数的负梯度。
​人们首先猜测最小值的初始值,然后计算序列:

在这里插入图片描述
遵循迭代过程:
在这里插入图片描述

梯度下降法递归。
其中,γ为学习率,允许在每次迭代n时改变学习率。如果损失函数L及其梯度具有一定的性质,按照一定的协议选择学习率变化,保证局部收敛(只有当L是凸函数时才保证收敛到全局最小值,因为对于凸函数,任何局部最小值也是全局最小值)。

六、随机梯度下降(SGD)和小批量梯度下降

基本的GD算法在每次迭代时都扫描完整的数据集,而SGD和小批量GD只使用训练数据的一个子集。SGD在每次迭代中使用单个训练数据样本更新梯度,即在扫描训练数据时,对每个训练示例执行上述w的更新。小批量GD使用小批量的训练示例执行参数更新。

让我们用数学的方式来解释。用于一般训练集:
在这里插入图片描述
n个样本的训练集。
​损失函数的一般形式为:
在这里插入图片描述
一般损失函数。
在小批梯度下降的情况下,总和仅在批内的训练示例。特别是SGD只使用一个样本。与普通的GD相比,这些过程有两个主要优势:它们速度更快,并且可以处理更大的数据集。

定义G和g如下所示,在这种情况下我们有:

在这里插入图片描述

在下面的动画中,SGD的收敛和其他方法一起展示了(这些其他方法,本文没有提到,是SGD的最新改进)。

在这里插入图片描述

七、机器学习与物理,作为朗之万过程的梯度下降

下一个步骤对于论证是至关重要的。为了让读者理解主要思想,我省略了一些较为严格的细节。

我们可以把小批量梯度写成全梯度和正态分布的η之间的和:

在这里插入图片描述
现在将这个表达式代入GD迭代表达式中,我们得到:

在这里插入图片描述

小批量梯度下降迭代步骤
一个优雅的联系
将小批量梯度下降迭代的表达式与朗之万方程进行比较,我们可以立即注意到它们的相似性。更准确地说,它们通过以下方式变得相同:
在这里插入图片描述
用γ代入δt,我们发现:
在这里插入图片描述

因此,SGD或小批量梯度下降算法形式上类似于朗之万过程,这就解释了为什么如果学习率按照前面提到的协议变化,它们有非常高的概率选择全局最小值。

这个结果并不新鲜。事实上,有许多证据表明,在通常的梯度下降递归中添加一个噪声项会使算法收敛到全局最小值。

结论

在这篇文章中,我展示了将随机或小批量梯度下降看作是朗之万随机过程,并通过学习率包括额外的随机化级别,我们可以理解为什么这些算法可以作为全局优化器工作得如此好。这是一个很好的结果,它表明从多个角度检查一个问题通常是非常有用的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Centos8/linux/虚拟机安装docker

docker分为ce版和ee版&#xff0c;个人使用ce版就行了&#xff0c;别问为什么&#xff0c;问就是ee版收费。 这是在线版的&#xff0c;离线版的请参考Centos8离线下载安装docker 1.首先切换到root用户 2.为确保安装时出现不必要的问题&#xff0c;先更新一下yum包 sudo yum…

【turtle海龟先生】神奇的“圆”,画,太极圈,铜钱古币

turtle画圆三步法 步骤: 1、导入turtle库 2、确定半径&#xff0c;画圆(circle ) 3、结束(done ) turtle 库中提供一个直接画圆的函数 turtle.circle&#xff08;半径&#xff09;#半径单位为像素 例&#xff1a; turtle.circle ( 100 ) 表示绘制一个半径为100像素长度的圆形 …

面试题 之 vue

1.vue里怎样实现双向数据绑定&#xff1f; Viewmodel 中的Domlisteners 工具会帮我们检测页面上Dom元素的变化&#xff0c;如果有变化&#xff0c;则更改Model中的数据&#xff0c;更新model中的数据时&#xff0c;数据事件绑定工具会帮我们更新页面中的Dom元素 2.Vue的响应式原…

3个 JavaScript 字符串截取方法

在 JavaScript 中&#xff0c;可以使用 substr()、slice() 和 substring() 方法截取字符串. substring() substring() 方法返回一个字符串在开始索引到结束索引之间的一个子集&#xff0c;或从开始索引直到字符串的末尾的一个子集。语法如下&#xff1a; str.substring(inde…

【linux】lsof命令使用

1. 功能 lsof list open files, 列出被进程所使用的文件名称。 2. 基础语法 3. 参数含义 参数含义-a过滤出多个选项要同时满足的文件-U仅列出UNIX-like系统的socket文件类型。-u指定用户&#xff0c;比如-u atiaisi&#xff0c;会把用户atiaisi相关的进程使用的文件列出来。…

华为OD面试手撕算法-合并排序数组

题目描述 本题是leetcode一道简单题&#xff1a;合并两个有序数组&#xff0c;但是对于时间和空间复杂度面试官明确给出了限制。 // 给定两个排序后的数组 A 和 B&#xff0c;其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法&#xff0c;将 B 合并入 A 并排序。 // 初始化…

【解决问题】排查linux文件手动删除文件,但是文件标记为deleted,资源未释放

背景&#xff1a; 生产环境我们把程序生成的数据文件手动删除后&#xff0c;但是空间并没有释放&#xff0c;导致硬盘被占用&#xff0c;不够用 问题排查&#xff1a; 1.查看占用文件状态 使用命令&#xff1a; lsof | grep deleted 查看 文件已经删除了&#xff0c;但是都是…

element-ui tableData导出为xlsx文件

下载 npm i / yarn add file-saver、xlsx库 引入 import FileSaver from “file-saver”; import XLSX from “xlsx”; const simexport (data) > {// if (data.create_time && data.create_time.length > 0) {// data.start_time parseTime(data.create_tim…

蓝桥杯相关算法学习(Python)

一、排序 排序算法是指将一组数据按照某种规则重新排列&#xff0c;使得数据呈现出递增或递减的顺序。常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。 1.冒泡排序 解释&#xff1a; 冒泡排序通过不断交换相邻两个元素的位置&#xff0c;使…

JavaScript中什么叫深拷贝?

在 JavaScript 中&#xff0c;深拷贝指的是创建一个新的对象&#xff0c;这个新的对象与原始对象完全独立&#xff0c;没有任何共享的属性或者数据&#xff0c;它们不共享同一块内存地址。深拷贝会复制原始对象的所有属性和嵌套对象的所有属性&#xff0c;包括嵌套对象中的属性…

golang语言系列:学习路线图

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 golang语言系列 文章&#xff0c;主要展示golang语言学习的全路线图 参考&#xff1a;https://github.com/darius-khll/golang-developer-roadmap/blob/master/i18n/zh-CN/ReadMe-zh-CN.md

[NSSRound#8 Basic]MyPage

[NSSRound#8 Basic]MyPage 打开页面后什么都没有 尝试使用php伪协议 //读取文件源码 filephp://filter/readconvert.base64-encode/resourceindex.php 显示&#xff1a;空白一片 filephp://filter/readconvert.base64-encode/resource/var/www/html/index.php 显示&#xff1…

【SQL Server】1. 认识+使用

1. 创建数据库的默认存储路径 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft SQL Server 2008 R2 当我们选择删除数据库时&#xff0c;对应路径下的文件也就删除了 2. 导入导出数据工具的路径 3. 注册数据库遇到的问题 ??? 目前的问题就是服务器新建…

组合总和-java

题目描述: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被…

孙崧-回归祖国的数学天才谈国外学习研究感受

孙崧&#xff0c;这位37岁的美国加州大学伯克利分校数学系教授&#xff0c;今年正式回归祖国&#xff0c;担任浙江大学数学高等研究院杜建英讲席教授、博士生导师。在此&#xff0c;知识人网小编就经历过国外就读、从事博士后研究及任教的这位数学天才是怎么说的&#xff0c;或…

世优科技上榜2024年度《中国虚拟数字人影响力指数报告》

日前&#xff0c;第三期《中国虚拟数字人影响力指数报告》在中国网络视听大会上正式发布。本期《报告》由中国传媒大学媒体融合与传播国家重点实验室&#xff08;以下简称“国重实验室”&#xff09;、中国传媒大学数字人研究院编制&#xff0c;中国网络视听协会、人民日报智慧…

c++类里面声明的static变量,static方法,必须添加类名才能调用

上面没有加类名&#xff0c;无法识别 下面加类名&#xff0c;可以识别原因&#xff1a;头文件->static

每日五道java面试题之消息中间件MQ篇(二)

目录&#xff1a; 第一题. RabbitMQ的工作模式第二题. 如何保证RabbitMQ消息的顺序性&#xff1f;第三题. 消息如何分发&#xff1f;第四题. 消息怎么路由&#xff1f;第五题. 如何保证消息不被重复消费&#xff1f;或者说&#xff0c;如何保证消息消费时的幂等性&#xff1f; …

WebGIS 地铁交通线网 | 图扑数字孪生

数字孪生技术在地铁线网的管理和运维中的应用是一个前沿且迅速发展的领域。随着物联网、大数据、云计算以及人工智能技术的发展&#xff0c;地铁线网数字孪生在智能交通和智慧城市建设中的作用日益凸显。 图扑软件基于 HTML5 的 2D、3D 图形渲染引擎&#xff0c;结合 GIS 地图…

热板测痛和冷热板测痛功能比较

简单介绍&#xff1a; 安徽耀坤ZL-020大小鼠热板测痛仪热板法是镇痛**筛选&#xff0c;检测中常用的一种方法&#xff0c;也是一种能确定区分**神经和末梢神经镇痛机理的方法&#xff0c;有较宽的使用范围&#xff0c;过去由于在使用中温度控制不严格&#xff0c;计时不准确和…