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

news2024/11/20 2:37:58

目录

  • 一、说明
  • 二、朗之万方程的诞生
    • 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或小批量梯度下降算法形式上类似于朗之万过程,这就解释了为什么如果学习率按照前面提到的协议变化,它们有非常高的概率选择全局最小值。

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

结论

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 类(初篇)

类的引入 C语言中&#xff0c;结构体中只能定义变量&#xff0c;在C中&#xff0c;结构体内不仅可以定义变量&#xff0c;也可以定义函数。 而为了区分C和C我们将结构体重新命名成class去定义 类的定义 标准格式&#xff1a; class className {// 类体&#xff1a;由成员函…

练习14 Web [极客大挑战 2019]Upload

phtml格式绕过&#xff0c;burp修改content-type绕过&#xff0c;常见的文件上传存放目录名 题目就叫upload&#xff0c;打开靶机 直接上传一个图片格式的一句话木马&#xff0c;返回如下&#xff1a; 提交练习5和9中的两种可以执行图片格式php代码的文件&#xff0c;修改con…

Three.js真实相机模拟

有没有想过如何在 3D Web 应用程序中模拟物理相机&#xff1f; 在这篇博文中&#xff0c;我将向你展示如何使用 Three.js和 OpenCV 来完成此操作。 我们将从模拟针孔相机模型开始&#xff0c;然后添加真实的镜头畸变。 具体来说&#xff0c;我们将仔细研究 OpenCV 的两个失真模…

VMware提示 该虚拟机似乎正在使用中,如何解决?

VMware提示 该虚拟机似乎正在使用中,如何解决&#xff1f; 问题描述解决方法1.找到安装VMware的文件目录2.在VMware目录下.lck后缀的文件夹删除或重命名3.运行VMware 问题描述 该虚拟机似乎正在使用中。 如果该虚拟机未在使用&#xff0c;请按“获取所有权(T)”按钮获取它的所…

github生成新的SSH密钥

首先是参考官方文档 生成新的 SSH 密钥并将其添加到 ssh-agent述 当你在创建SSH密钥时遇到提示&#xff1a; Enter file in which to save the key (/c/Users/YOU/.ssh/id_ALGORITHM):这一步是让你选择保存生成的SSH密钥对的文件名和位置。如果你直接按回车键&#xff08;[Pr…

数据结构入门系列-栈的结构及栈的实现

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 栈 栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一段进行插入和删除元素操作&#xff0c;进行数据输入和删除操作的一端称为栈顶&#xff0c;另…

一、Docker部署GitLab(详细步骤)

Docker部署GitLab&#xff08;详细步骤&#xff09; 一、拉取镜像二、启动容器三、修改配置四、修改密码五、浏览器访问 一、拉取镜像 docker安装教程&#xff1a;https://qingsi.blog.csdn.net/article/details/131270071 docker pull gitlab/gitlab-ce:latest二、启动容器 …

CSS 实现航班起飞、飞行和降落动画

CSS 实现航班起飞、飞行和降落动画 效果展示 航班起飞阶段 航班飞行阶段 航班降落 CSS 知识点 animation 属性的综合运用:active 属性的运营 动画分解 航班滑行阶段动画 实现航班的滑行阶段动画&#xff0c;需要使用两个核心物件&#xff0c;一个是跑动动画&#x…

LeetCode-994. 腐烂的橘子【广度优先搜索 数组 矩阵】

LeetCode-994. 腐烂的橘子【广度优先搜索 数组 矩阵】 题目描述&#xff1a;解题思路一&#xff1a;多源广度优先搜索&#xff08;队列实现&#xff09;解题思路二&#xff1a;哈希表实现&#xff0c;先找出所有腐烂和新鲜橘子的集合{}类似于set()。每剔除一次time1解题思路三&…

代码随想录|Day32|动态规划01|509.斐波那契数列、70.爬楼梯、746.使用最小花费爬楼梯

509.斐波那契数列 动规五步曲&#xff1a; 确定 dp[i] 含义&#xff1a;第 i 个斐波那契数值为 dp[i]递推公式&#xff1a;dp[i] dp[i - 1] dp[i - 2]dp数组初始化&#xff1a;dp[0] dp[1] 1遍历顺序&#xff1a;从前向后打印dp数组 class Solution:def fib(self, n: int) …

1.Spring Boot框架整合

Spring Boot项目创建&#xff08;约定大于配置&#xff09; 2.1.3.RELEASE版本示例 idea创建 从官网下载&#xff08;https://start.spring.io/&#xff09;单元测试默认依赖不对时&#xff0c;直接删除即可 Web支持&#xff08;SpringMVC&#xff09; <dependency>&…

在线考试|基于Springboot的在线考试管理系统设计与实现(源码+数据库+文档)

在线考试管理系统目录 目录 基于Springboot的在线考试管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、前台&#xff1a; 2、后台 管理员功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主…

FFmpeg与zlmedikit流媒体服务器

流媒体服务器 zlmediakit 运行流媒体服务器后的日志&#xff0c;可以看到rtsp默认端口554&#xff0c;rtmp默认端口&#xff1a;1935&#xff0c;http默认端口&#xff1a;80&#xff0c; FFmpeg rtsp推流 ffmpeg -re -stream_loop -1 -i “1.mp4” -vcodec h264 -acodec …

神经网络汇聚层

文章目录 最大汇聚层平均汇聚层自适应平均池化层 最大汇聚层 汇聚窗口从输入张量的左上角开始&#xff0c;从左往右、从上往下的在输入张量内滑动。在汇聚窗口到达的每个位置&#xff0c;它计算该窗口中输入子张量的最大值或平均值。计算最大值或平均值是取决于使用了最大汇聚…

Vue 样式技巧总结与整理[中级局]

SFC&#xff08;单文件组件&#xff09;由 3 个不同的实体组成&#xff1a;模板、脚本和样式。三者都很重要&#xff0c;但后者往往被忽视&#xff0c;即使它可能变得复杂&#xff0c;且经常导致挫折和 bug。 更好的理解可以改善代码审查并减少调试时间。 这里有 7 个奇技淫巧…

光猫桥接模式详细步骤

目录 一、前言 路由模式 &#xff08;宽带默认&#xff09; 桥接模式 二、桥接模式步骤 &#xff08;一&#xff09;图片记录备份 设备信息图 网络侧信息 远程管理密码 宽带上网设置 &#xff08;二&#xff09;桥接模式开始 光猫设置 路由器设置 一、前言 重点&a…

vue-cli打包 nodejs内存溢出 vue2.x Last few GCs

遇到这种情况百度各种博客&#xff0c;什么改package.json里的配置&#xff0c;什么安装increase-memory-limit &#xff0c;都尝试了并没什么用处&#xff0c;最后解决方案为执行下方名单&#xff0c;再次打包就成功了&#xff1a; export NODE_OPTIONS--max_old_space_size4…

(源码+部署+讲解)基于Spring Boot和Vue的大学生快递代取服务平台的设计与实现

一、引言 本报告旨在详细阐述基于Spring Boot后端框架和Vue前端框架的大学生快递代取服务平台的设计与实现过程。该平台旨在为大学生提供便捷的快递代取服务&#xff0c;解决因时间冲突或距离过远而无法及时取件的问题。通过该平台&#xff0c;用户可以发布代取需求&#xff0c…

十个排序算法

目录 冒泡排序(Bubble Sort) 选择排序(Select Sort) 插入排序&#xff08;InsertSort&#xff09; 希尔排序&#xff08;ShellSort&#xff09; 计数排序&#xff08;CountSort&#xff09; 快速排序&#xff08;QuickSort&#xff09; 归并排序&#xff08;Merge Sort&a…