Python神经求解器去耦合算法和瓦瑟斯坦距离量化评估

🎯要点

  1. 神经求解器求解对偶方程,并学习两个空间之间的单调变换,最小化它们之间的瓦瑟斯坦距离。
  2. 使用概率密度函数解析计算,神经求解器去耦合
  3. 条件正则化流使用变量变换公式的生成模型
  4. 瓦瑟斯坦距离量化评估神经求解器

🍪语言内容分比

在这里插入图片描述
在这里插入图片描述

🍇Python瓦瑟斯坦距离

在数学中,瓦瑟斯坦距离是在给定度量空间 M M M 上的概率分布之间定义的距离函数。其定义是:

( M , d ) (M, d) (M,d) 为度量空间,该空间是波兰空间。对于 p ∈ [ 1 , + ∞ ] p \in[1,+\infty] p[1,+],有限 p p p 矩的 M M M 上两个概率测度 μ \mu μ ν \nu ν 之间的瓦瑟斯坦 p p p-距离为
W p ( μ , ν ) = inf ⁡ γ ∈ Γ ( μ , ν ) ( E ( x , y ) ∼ γ d ( x , y ) p ) 1 / p W_p(\mu, \nu)=\inf _{\gamma \in \Gamma(\mu, \nu)}\left( E _{(x, y) \sim \gamma} d(x, y)^p\right)^{1 / p} Wp(μ,ν)=γΓ(μ,ν)inf(E(x,y)γd(x,y)p)1/p
其中 Γ ( μ , ν ) \Gamma(\mu, \nu) Γ(μ,ν) μ \mu μ ν \nu ν 的所有耦合的集合; W ∞ ( μ , ν ) W_{\infty}(\mu, \nu) W(μ,ν) 被定义为 lim ⁡ p → + ∞ W p ( μ , ν ) \lim _{p \rightarrow+\infty} W_p(\mu, \nu) limp+Wp(μ,ν) 并对应于最高范数。耦合 γ \gamma γ M × M M \times M M×M 上的联合概率测度,其边际分别为第一个和第二个因子的 μ \mu μ ν \nu ν。也就是说,对于所有可测量的 A ⊂ M A \subset M AM ,耦合满足
∫ A ∫ M γ ( x , y ) d y d x = μ ( A ) , ∫ A ∫ M γ ( x , y ) d x d y = ν ( A ) . \begin{aligned} & \int_A \int_M \gamma(x, y) d y d x=\mu(A), \\ & \int_A \int_M \gamma(x, y) d x d y=\nu(A) . \end{aligned} AMγ(x,y)dydx=μ(A),AMγ(x,y)dxdy=ν(A).

瓦瑟斯坦距离示例

瓦瑟斯坦距离,也称为“推土机距离”。假设 P = (0.2, 0.1, 0.0, 0.0, 0.3, 0.4) 和 Q = (0.0, 0.5, 0.3, 0.0, 0.2, 0.0, 0.0)。如果您将分布 P 视为土堆,将分布 Q 视为洞,则瓦瑟斯坦距离就是将 P 中的所有土转移到 Q 中的洞所需的最小工作量。
在每次转移中,所做的功的量是流量(移动的泥土量)乘以距离。瓦瑟斯坦距离是所做的功的总量。换言之,两个分布之间的瓦瑟斯坦距离是将一个分布转换为另一个分布所需的工作量。

瓦瑟斯坦距离有很多不同的变体。有适用于离散分布的版本,也有适用于数学上连续分布的版本。有的版本中每个数据点都是一个值,例如 0.3,有的版本中每个数据点都是多值,例如 (0.4, 0.8)。本文介绍的 瓦瑟斯坦距离版本适用于两个离散的一维概率分布,是 1-瓦瑟斯坦版本。

该演示将 my_wasserstein() 函数定义为:

def my_wasserstein(p, q):dirt = np.copy(p) holes = np.copy(q)tot_work = 0.0while True:  from_idx = first_nonzero(dirt)to_idx = first_nonzero(holes)if from_idx == -1 or to_idx == -1:breakwork = move_dirt(dirt, from_idx, holes, to_idx)tot_work += workreturn tot_work

大部分算法工作由辅助函数 first_nonzero() 和 move_dirt() 完成。简而言之,该函数先找到第一个可用的泥土,然后找到第一个未填满的洞,然后将尽可能多的泥土移到洞中,并返回已完成的工作量。每次转移时完成的工作量都会累积起来。

def first_nonzero(vec):dim = len(vec)for i in range(dim):if vec[i] > 0.0:return ireturn -1  
def move_dirt(dirt, di, holes, hi):if dirt[di] <= holes[hi]:   flow = dirt[di]dirt[di] = 0.0            holes[hi] -= flow         elif dirt[di] > holes[hi]:  flow = holes[hi]          dirt[di] -= flow          holes[hi] = 0.0           dist = np.abs(di - hi)return flow * dist          

完整代码

import numpy as npdef first_nonzero(vec):dim = len(vec)for i in range(dim):if vec[i] > 0.0:return ireturn -1  def move_dirt(dirt, di, holes, hi):if dirt[di] <= holes[hi]:   flow = dirt[di]dirt[di] = 0.0            holes[hi] -= flow         elif dirt[di] > holes[hi]:  flow = holes[hi]          dirt[di] -= flow          holes[hi] = 0.0           dist = np.abs(di - hi)return flow * dist          def my_wasserstein(p, q):dirt = np.copy(p) holes = np.copy(q)tot_work = 0.0while True:  from_idx = first_nonzero(dirt)to_idx = first_nonzero(holes)if from_idx == -1 or to_idx == -1:breakwork = move_dirt(dirt, from_idx, holes, to_idx)tot_work += workreturn tot_work  def kullback_leibler(p, q):n = len(p)sum = 0.0for i in range(n):sum += p[i] * np.log(p[i] / q[i])return sumdef symmetric_kullback(p, q):a = kullback_leibler(p, q)b = kullback_leibler(q, p)return a + bdef main():print("\nBegin Wasserstein distance demo ")P =  np.array([0.6, 0.1, 0.1, 0.1, 0.1])Q1 = np.array([0.1, 0.1, 0.6, 0.1, 0.1])Q2 = np.array([0.1, 0.1, 0.1, 0.1, 0.6])kl_p_q1 = symmetric_kullback(P, Q1)kl_p_q2 = symmetric_kullback(P, Q2)wass_p_q1 = my_wasserstein(P, Q1)wass_p_q2 = my_wasserstein(P, Q2)print("\nKullback-Leibler distances: ")print("P to Q1 : %0.4f " % kl_p_q1)print("P to Q2 : %0.4f " % kl_p_q2)print("\nWasserstein distances: ")print("P to Q1 : %0.4f " % wass_p_q1)print("P to Q2 : %0.4f " % wass_p_q2)print("\nEnd demo ")if __name__ == "__main__":main()

👉参阅、更新:计算思维 | 亚图跨际

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

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

相关文章

SqlSugar的where条件中使用可空类型报语法错误

SQLServer数据表中有两列可空列&#xff0c;均为数值类型&#xff0c;同时在数据库中录入测试数据&#xff0c;Age和Height列均部分有值。   使用SqlSugar的DbFirst功能生成数据库表类&#xff0c;其中Age、Height属性均为可空类型。   当Where函数中的检索条件较多时&a…

针对国产化--离线安装Nginx rpm包下载 ARM64(.aarch64.rpm) 版本下载

源地址&#xff1a;https://nginx.org/packages/centos/7/aarch64/RPMS/ 可以选择系统分别进行下载对应的rmp包

Unity 设计模式 之 行为型模式 -【中介者模式】【迭代器模式】【解释器模式】

Unity 设计模式 之 行为型模式 -【中介者模式】【迭代器模式】【解释器模式】 目录 Unity 设计模式 之 行为型模式 -【中介者模式】【迭代器模式】【解释器模式】 一、简单介绍 二、中介者模式&#xff08;Mediator Pattern&#xff09; 1、什么时候使用中介者模式 2、使用…

记一次sql查询优化

记一次sql查询优化 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 今天测试环境发现一个问题&#xff0c;就是测试同事在测试的时候&#xff0c;发现cpu一直居高不下&#xff0c;然…

SDK(2 note)

复习上一次内容&#xff1a; 把前一次笔记中的代码&#xff0c;简写一下 #include <windows.h> #include<tchar.h> #include <stdio.h> #include <strsafe.h> VOID showerrormassage() {LPVOID lpMsgBuf; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFF…

【春秋云境】CVE-2024-23897-Jenkins 2.441之前版本存在任意文件读取漏洞

一、靶场介绍 Jenkins 2.441及更早版本&#xff0c;以及LTS 2.426.2及更早版本没有禁用其CLI命令解析器的一个功能&#xff0c;该功能会将参数中’字符后跟的文件路径替换为该文件的内容&#xff0c;允许未经身份验证的攻击者读取Jenkins控制器文件系统上的任意文件。 二、P…

SSM+Vue共享单车管理系统

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 spring-mybatis.xml3.5 spring-mvc.xml3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质创作…

js中Fucntion的意义

在js中&#xff0c;我们常常如下方式写函数&#xff1a; function fn(){console.log("这是一个函数."); }; fn(); 在js中&#xff0c;函数本质就是一个对象。 那么&#xff0c;结合我的上一篇文章&#xff1a;通俗讲解javascript的实例对象、原型对象和构造函数以及…

谷歌浏览器如何更改下载文件存放的方式及其路径?

1、点击谷歌浏览器右上角的【三个点】 2、选择【设置】&#xff0c;再选择【下载内容】 3、打开【下载完成后显示下载内容】开关&#xff0c; 则&#xff1a;下载网页上的东西之后&#xff0c;会显示在【谷歌浏览器】的右侧&#xff0c;并显示具体下载文件在右侧&#xff1a;…

探索OpenAI的全新里程碑:o1模型

近期&#xff0c;人工智能领域迎来了一项重要突破——OpenAI发布了其最新的语言模型o1。作为一款专为解决复杂问题设计的新一代大语言模型&#xff08;LLM&#xff09;&#xff0c;o1标志着该公司在智能推理能力方面迈出了重要的一步。尽管这个新系统仍处于初步阶段&#xff0c…

系统架构师-面向服务架构(SOA)全解

1、为什么需要SOA架构 1.1 系统集成问题 异构系统整合 例如&#xff0c;一个企业可能同时拥有用 Java 开发的企业资源规划&#xff08;ERP&#xff09;系统、用 C# 开发的客户关系管理&#xff08;CRM&#xff09;系统以及用 Python 开发的数据分析系统。通过 SOA&#xff0…

WebRTC中的维纳滤波器实现详解:基于决策导向的SNR估计

目录 1. 维纳滤波器的基本原理2. WebRTC中的维纳滤波器实现3. 代码逐步剖析4. 总结 在WebRTC的噪声抑制模块中&#xff0c;维纳滤波器&#xff08;Wiener Filter&#xff09;是一种非常常见且重要的滤波器&#xff0c;用于提高语音信号的清晰度并抑制背景噪声。本文将详细解释维…

Flask学习之项目搭建

一、项目基本结构 1、 exts.py 存在的目的&#xff1a;在Python中&#xff0c;如果两个或更多模块(文件)相互导入对方&#xff0c;就会形成导入循环。例如&#xff0c;模块A导入了模块B&#xff0c;同时模块B又导入了模块A&#xff0c;这就会导致导入循环。 比如在这个项目中…

【第二十章:Sentosa_DSML社区版-机器学习之自动建模】

目录 20.1 自动回归 20.2 自动分类 20.3 自动聚类 20.4 AutoARIMA 20.5 自动数据准备 【第二十章&#xff1a;Sentosa_DSML社区版-机器学习之自动建模】 20.1 自动回归 1.算子介绍 为了方便用户在不了解每个具体回归算法原理&#xff0c;及每个算法参数设置具体含义的情…

Threejs绘制圆锥体

上一章节实现了胶囊体的绘制&#xff0c;这节来绘制圆锥体&#xff0c;圆锥体就是三角形旋转获得的&#xff0c;如上文一样&#xff0c;先要创建出基础的组件&#xff0c;包括场景&#xff0c;相机&#xff0c;灯光&#xff0c;渲染器。代码如下&#xff1a; initScene() {this…

[Linux]从零开始的Minecraft服务器搭建教程

一、前言 学习Linux有一段时间了&#xff0c;当然&#xff0c;我们要把学习的知识运用到实际生活中去。最近朋友们都在玩我的世界&#xff0c;网易版的我的世界联机非常不稳定&#xff0c;用起来也算是非常难受了。所以还是准备转战JAVA版。为了联机&#xff0c;可以考虑一个人…

HBase DDL操作代码汇总(namespace+table CRUD操作)

HBase DDL操作 DDL操作主要是关于命名空间和表格的内容增删改查。 注&#xff1a;如果出现无法连接到zookeeper等的相关错误&#xff0c;可以将以下代码打jar包&#xff0c;在HMaster节点上执行 错误提示&#xff1a; Exception in thread “main” java.net.SocketTimeoutExc…

DVWA 靶场环境搭建

作者&#xff1a;程序那点事儿 日期&#xff1a;2024/09/15 09:30 什么是DVWA: 是OWSASP官方编写的PHP网站&#xff0c;包含了各种网站常见漏洞&#xff08;漏洞靶场&#xff09;&#xff0c;可以学习攻击及修复方式。 PHP环境包含了&#xff0c;Windows/Apache/Mysql/Php g…

公安局软件管理平台建设方案和必要性,论文-2-———未来之窗行业应用跨平台架构

一、平台方略 随着gov信息化建设的不断推进&#xff0c;各类ZW软件的应用需求日益增加。为了提高ZW软件的获取便利性、AQ性和规范性&#xff0c;建设一个专门的GOV软件管理平台具有重要意义。 集中提供各类ZW软件&#xff0c;方便工作人员快速获取和安装&#xff0c;减少因软…

开放原子开源基金会OPENATOM

AtomGit_开放原子开源基金会代码托管平台-AtomGit 开放原子开源基金会是致力于推动全球开源事业发展的非营利机构&#xff0c;于 2020 年 6 月在北京成立&#xff0c;由阿里巴巴、百度、华为、浪潮、360、腾讯、招商银行等多家龙头科技企业联合发起。 精选项目&#xff1a; 比…