【PyTorch][chapter 22][李宏毅深度学习]【无监督学习][ WGAN]【理论二】

news2025/1/15 23:19:58

前言:

       本篇主要参考《Wasserstein GAN and the Kantorovich-Rubinstein Duality》

重点介绍一下 WGAN 的损失函数 是如何通过 Wasserstein Distance 变换过来的。

分为5步:

  1.     我们首先建立Wasserstein Distance         极小值形式,
  2.     经过对偶变换得到Wasserstein Distance  极大值形式,
  3.     通过Farkas 引理证明其二者是强对偶关系,
  4.    利用对偶形式的约束函数 对 极大值形式 进行变换,得到WGAN 损失函数形式
  5.    极大值的约束函数就是1-Lipschitz

 


   目录:

  1.         Earth Mover’s Distance
  2.         对偶形式(Dual Form)  
  3.         Farkas 引理(Farkas Theorem)
  4.         强对偶(Strong Duality)
  5.        传输成本的对偶( Dual Implementation)
  6.         对偶到WGAN
  7.          Lipschitz约束和Wasserstein 关系

一    Earth Mover’s Distance

         我们以任意两个离散的概率分布p,q 为例

     1.1 EMD 距离定义

        

           一种用来测量两个概率分布之间的距离度量。它主要应用在图像处理和语音信号处理领域。EMD问题可以通过线性规划来求解,其核心思想是将一个分布的密度通过“搬土”的方式转移到另一个分布的位置上,使得转移的代价最小。在这个过程中,每个点对之间的距离和转移的量共同决定了总的工作量,即EMD

                   

                                      

      优化的目标:  

                   求解r,使得W[p,q] 达到极小值

        其中:

                      p(x) :离散的随机分布,对应状态变量x的维度为l

                              (图像中就是对应每个像素值变化范围0-255)

                     q(y):   离散的随机分布,对应状态变量y的维度为l

                     \gamma(x,y)\sim\prod (P_r,P_{\theta}): 代表推土方案,是(P_r,P_{\theta})的联合概率分布函数

                      inf:    积分下限 ,等价于求极小值

               约束条件

                     

 

1. 2   矩阵表达形式

         

          \left \langle \right \rangle_F is Frobenius inner product: 两个大小相同的矩阵元素一一对应相乘并且相加

    1.3 EMD 向量表达形式

                

                 通过求解optimal transport plan \Gamma, 使得EMD 最小

             

              约束条件: A\Gamma =b

                  

    1.4    线性规划问题(LP: Linear Programming)

          通过上面我们可以看到EMD等价于LP问题:

        ​​​​​​​

               

  Python 有对应的LP 库,如下例子

# -*- coding: utf-8 -*-
"""
Created on Sun Mar 10 20:58:19 2024

@author: cxf
"""

import numpy as np
from scipy.optimize import linprog

def run():
    """
    数学规划模型
    scppy.optimize.linprog
    """
  
    c=np.array([-2,-3,5]).transpose()    #行列向量不影响求解
    A=np.array([[-2,5,-1],[1,3,1]])
    b=np.array([-10,12])
    Aeq=np.array([[1,1,1]])    # 单个约束也要表示为矩阵形式
    beq=np.array([7])
    x=linprog(c,A,b,Aeq,beq,method='highs',bounds=np.array([[0,None],[0,None],[0,None]]))
    print(x)

def main():
    '''
    LINPROG_METHODS = ['simplex',
                       'revised simplex',
                       'interior-point', 
                       'highs', 
                       'highs-ds',
                       'highs-ipm']


    Returns
    -------
    None.

    '''
    print("\n ------1--------")
  
    P_r = np.array([[0.1,0.9]]).transpose()
    P_t = np.array([[0.5,0.5]]).transpose()
    D = np.array([[0.0,1.0],
                  [1.0,0.0]])
    
    L,L = D.shape
    
    C = D.reshape((L**2,1))
    print("\n  C: distance |x-y| 功能 \n",C)
    
  
    A_r = np.zeros((L,L,L))
    A_t = np.zeros((L,L,L))
    
    for i in range(L):
        for j in range(L):
            
            A_r[i,i,j]=1
            A_t[i,j,i]=1
    
    #Aeq是约束条件
    aeq = np.concatenate((A_r.reshape(L,L**2),A_t.reshape(L,L**2)),axis=0)
    print("\n 约束条件:Ax=b: \n",aeq,aeq.shape)
    #b 就是Pr,Pg 的概率分布组成一列
    beq =  np.concatenate((P_r,P_t),axis=0)
    print("\n   vec(pr,pg) :\n",beq)
    bound = np.repeat([[0.0,1.0]],L*L,axis=0)
    print("\n 0=<x<1 \n",bound)
    #x[L*L,1]
    #bounds=bound
    opt_res= linprog(C,A_eq=aeq, b_eq=beq, method='highs-ds',bounds=bound)
    emd = opt_res.fun
    #gamma = opt_res.x.reshape((1,1))
    print("\n x:\n ",opt_res.x)
    
    
    
print("\n-----------")
main()


二 对偶形式(Dual Form)

        

            原始形式 问题:

         不幸的是,这种优化在很多情况下并不实用,尤其是在通常使用 GAN 的领域。在我们的示例中,我们使用具有十种可能状态的一维随机变量。可能的离散状态的数量随着输入变量的维度数量呈指数级增长。对于许多应用,例如图像,输入很容易就有数千个维度。即使是近似值那么几乎是不可能的。
 但实际上我们并不关心。我们只想要一个数字,即 EMD。此外,我们想用它来训练我们的生成器网络,该网络生成分布,为此,我们必须能够计算梯度。自从p和q只是我们优化的限制,这不可能以任何直接的方式实现. 事实证明,还有另一种更方便的 EMD 计算方法。任何 LP 有两种方式可以表述问题:我们刚才使用的原始形式和对偶形式。

       证明:

设    A^Ty \leq c

         z=c^Tx \geq \begin{pmatrix} A^Ty \end{pmatrix}^Tx

                          \geq y^TAx

                          \geq y^Tb

           因为y^Tb 是标量,所以 \tilde{z}=b^Ty \leq z

         

   这种形式也称为弱对偶形式,那是否有强对偶使得z=\tilde{z}  


三    Farkas 引理

       强对偶形式的证明,主要用到称之为“Farkas 引理”的结论:

       对 \forall A \in R^{m\times n}, 以下两个命题是互斥的:

     3.1 引理一:   向量b在凸锥C内

          矩阵 A=\begin{bmatrix} a_1 &a_2 & ... & a_n \end{bmatrix}  由n个m维的列向量组成

          向量  x=\begin{bmatrix} \alpha_1\\ \alpha_2 \\ ... \\ \alpha_n \end{bmatrix}  由n个非负标量组成 

          Ax=\alpha_1a_1+\alpha_2a_2+...+\alpha_na_n 

          a_1,a_2,...a_n的非负系数的线性组合是一个凸锥C

      如上图:

         a_1,a_2 两个向量顶点连接起来可以组成一个凸锥C,

两者通过非负的线性系数相加得到的a_3 也一定落在该凸锥C 内

同理:   Ax=b(x\geq0) 

非负的线性组合a_1,a_2,..a_n 组成了凸锥C,b由该非负的线性组合得到,也落在该凸锥C内.

 

   3.2 引理二  :b在凸锥C外

     

          A^Ty \leq 0  :  、  A^Ty=\begin{bmatrix} a_1^Ty\leq0\\ a_2^Ty\leq0 \\ ... \\ a_n^Ty\leq0 \end{bmatrix}

                        向量y在凸锥C外,向量y与该凸锥C中任意向量夹角大于90  

          b^Ty> 0:   

                            b^Ty=|b||y|cos\theta,向量 b,y 夹角小于90度, 所以向量b 在凸锥C外

               

                     也可以用下图表示

                          

   


四 强对偶(Strong Duality)

      

             

                Farkas 两条引理:

            ​​​​​​​

            我们要利用Farkas 两条引理 , 证明的是 \hat{z}  可以无限接近 z

  证明:

      假设原始问题的最优解为z^{*}=c^Tx^*,我们定义:

   

        其中 \epsilon,\alpha \in R

    4.1 当 \epsilon =0 时,满足   Farkas case (1)

                 因为 \hat{A}x^*=\hat{b_0} 

                \begin{bmatrix} Ax^*\\ -c^Tx^* \end{bmatrix}=\begin{bmatrix} b\\ -z^*+0 \end{bmatrix}

         不满足Farkas case(2) 即

           \forall \hat{A}^T\hat{y} \leq 0,      \hat{b_0}^T\hat{y} \leq 0 ....(9)

   4.2 \epsilon >0 时,满足Farkas case(2)

               \hat{A}x=\begin{bmatrix} Ax\\-c^Tx\end{bmatrix}
.             因为z^* 已经是最小值了,不存在非负解,使得c^Tx=z^*-\epsilon(EMD为非负的值)

  所以Farkas case(1) 不成立, Farkas case(2) 成立。

               存在\hat{y}=\begin{bmatrix} y\\ \alpha \end{bmatrix} 使得 \hat{A}\hat{y}\leq 0\hat{b_{\epsilon }}\hat{y}>0

              

                 等价于: 推理2,推理3 

              ...(10)

                         \forall \hat{A}^T\hat{y} \leq 0,   \hat{b_{\epsilon }}^T\hat{y}=\hat{b_0}^T\hat{y}+\alpha \epsilon > 0 ...(11)

        当 \forall \hat{A}^T\hat{y} \leq 0,    根据式(9) \hat{b_0}^T\hat{y} \leq 0,  式(11)  \hat{b_{\epsilon }}^T\hat{y}=\hat{b_0}^T\hat{y}+\alpha \epsilon > 0

                得知\alpha>0,取\alpha=1

                         max_{y}\begin{Bmatrix} b^Ty|A^Ty \leq c & \end{Bmatrix} \geq z^*-\epsilon

                弱对偶形式:

                          z^* \geq max_{y}\begin{Bmatrix} b^Ty|A^Ty \leq c & \end{Bmatrix}

                 则:

                       z^*-\epsilon \leq max_{y}\begin{Bmatrix} b^Ty|A^Ty \leq c & \end{Bmatrix} \leq z^*

               \epsilon>0 是任意的,两者可以无限接近,从而

                      max_{y}\begin{Bmatrix} b^Ty|A^Ty \leq c & \end{Bmatrix} = z^*=min_x\begin{Bmatrix} c^Tx|Ax =b,x\geq 0\end{Bmatrix}


五:传输成本的对偶

      EMD 优化目标

            

   

      GAN 在图像处理里面,状态变量 x,和y 的范围一致,所以EMD 优化目标可以写成如下:

     

          根据约束条件:A^TF \leq C

       


六   对偶到WGAN

       我们得到最优传输成本的对偶形式

    

     因为 g(x) \leq -f(x), 同时 p(x),q(x)代表的是非负的概率(标量),所以

   

      等价于求解

    这便是我们最终要寻找的最优传输成本(1)的对偶形式了

   当c(x,y)=||x-y||,我们有 c[p,q]=W_1(p,q)

    

这就是WGAN所采用的W距离,于p,q 都是概率分布,因此我们可以写成采样形式

自然地,整个WGAN的训练过程就是


七 Lipschitz约束和Wasserstein 关系

     7.1 Lipschitz 函数定义

       当L =1 的时候 就是 WGAN的约束条件

    

         其中约束条件我们通常写为||f||_L \leq 1

参考:  

20 AI Projects for Kids That Will Blow Their Minds

https://www.cnblogs.com/yhxm/p/13047489.html

python模块:Scipy.optimize.linprog线性规划求解-CSDN博客

CSDN

从Wasserstein距离、对偶理论到WGAN - 科学空间|Scientific Spaces

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

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

相关文章

QGIS 开发之旅二《构建插件工程》

上一篇文章写了二次开发环境的构建&#xff0c;这一章我们从零开始构建插件工程&#xff0c;并理解下QIGIS 如何识别插件程序的。 1、创建QGIS 工程 新建项目&#xff0c;选择下面的空工程 工程创建成功后&#xff0c;是下面的样子&#xff0c;没有任何文件 2、配置QGIS工程 …

掼蛋-掌握出牌权

掼蛋游戏中&#xff0c;出牌权往往能决定一局牌的走向&#xff0c;掌握出牌权可以主动控制局势。出牌权是指在每一轮的出牌环节中谁先出牌。出牌权的重要性主要体现在以下两个方面&#xff1a; 一、控制节奏 出牌权可以让我们主动控制游戏的节奏&#xff0c;可以根据自己的出牌…

VUE3项目学习系列--项目基础配置(四)

目录 一、环境变量配置 二、SVG图标配置 三、注册组件为全局组件 四、集成sass 1、安装依赖 2、添加文件 3、配置 一、环境变量配置 项目开发过程中会经历开发环境、测试环境、生产环境三种状态&#xff0c;对与环境变量的配置需求不同&#xff0c;因此需要在项目中进行环…

移动端研发技术的进化历程

移动端研发技术 移动端研发技术主要分为原生开发和跨平台开发。本章主要介绍一下移动开发技术的过去、当下和未来&#xff0c;一步一步介绍移动技术的进化历程。 原生开发 原生应用程序是指某一个移动平台&#xff08;比如iOS或Android&#xff09;所特有的应用&#xff0c;使…

【漏洞复现】CERIO DT系列路由器 远程代码执行漏洞

0x01 产品简介 CERIO DT系列路由器是中国台湾智鼎资讯&#xff08;CERIO&#xff09;公司的一款无线路由器。 0x02 漏洞概述 CERIO DT系列路由器在特定版本中存在操作命令注入漏洞。未授权的攻击者可利用该漏洞进行远程代码执行&#xff0c;从而控制服务器。 0x03 测绘语句…

电脑数据守护神:备份文件的重要性与实用方案

一、备份文件&#xff1a;数据安全的第一道防线 在数字化时代&#xff0c;电脑已成为我们生活和工作中不可或缺的一部分。无论是个人用户还是企业组织&#xff0c;电脑中存储的各类文件都承载着重要的信息。然而&#xff0c;随着电脑使用频率的增加&#xff0c;数据丢失或损坏…

R语言复现:如何利用logistic逐步回归进行影响因素分析?

Logistic回归在医学科研、特别是观察性研究领域&#xff0c;无论是现况调查、病例对照研究、还是队列研究中都是大家经常用到的统计方法&#xff0c;而在影响因素研究筛选自变量时&#xff0c;大家习惯性用的比较多的还是先单后多&#xff0c;P&#xff1c;0.05纳入多因素研究&…

第五节:使用SMB开发WebSocket通信

一、概述 本节主要讲解在SMB中如何进行websocket快速开发&#xff0c;实现客户端连接、关闭、消息通讯等功能。 示例下载&#xff1a;https://download.csdn.net/download/lllllllllluoyi/88949743 二、创建WebSocket服务器 1、在csdnProject工程中新建一个消息流。 添加W…

MySQL实战:问题排查与监控

常见问题 有更合适的索引不走&#xff0c;怎么办&#xff1f; MySQL在选取索引时&#xff0c;会参考索引的基数&#xff0c;基数是MySQL估算的&#xff0c;反映这个字段有多少种取值&#xff0c;估算的策略为选取几个页算出取值的平均值&#xff0c;再乘以页数&#xff0c;即…

经验分享:专业知识库的搭建秘诀都在这里啦!

我想必每个人都有过被一堆纷繁复杂的信息搞得头疼不已的时候&#xff0c;对吧&#xff1f;那么你是否想过&#xff0c;如果我们有一个专门收藏整理这些信息的地方&#xff0c;会变得多么方便呢&#xff1f;这就是知识库的作用。所以&#xff0c;接下来我就要向大家分享如何搭建…

如何设计一个高并发的系统--简谈

设计一个高并发系统可以从下面这些角度来考虑。 所谓设计高并发系统&#xff0c;就是设计一个系统&#xff0c;保证它整体可用的同时&#xff0c;能够处理很高的并发用户请求&#xff0c;能够承受很大的流量冲击。 我们要设计高并发的系统&#xff0c;那就需要处理好一些常见…

【MySQL】-知识点整理

1、存储引擎 -- 查询数据库支持的存储引擎 show engines; -- 查询当前数据库使用的存储引擎 show variables like %storage_engines%; 主要的存储引擎说明&#xff1a; 1&#xff09;MyISAM&#xff1a;无外键、表锁、所有索引都是非聚簇索引、无事务、记录表总条数、删除表…

Realsense 相机SDK学习(一)——librealsense使用方法及bug解决(不使用Ros)

一.介绍 realsense相机是一个intel开发出来的一款深度相机&#xff0c;我之前使用他来跑过slam&#xff0c;也配置过他的驱动&#xff0c;在此附上realsense的相机驱动安装方法&#xff1a;Ubuntu20.04安装Intelrealsense相机驱动&#xff08;涉及Linux内核降级&#xff09; …

支持S/MIME证书的邮件客户端有哪些?

S/MIME证书&#xff0c;也叫做邮件安全证书&#xff0c;支持安全/多用途互联网邮件扩展协议&#xff08;S/MIME协议&#xff09;&#xff0c;是通过加密和数字签名来确保电子邮件的安全性、保密性和完整性的数字证书。GDPR、HIPAA、FDA等多个行业都要求邮件发送方在发送邮件时对…

EasyPoi 教程

文章目录 EasyPoi教程文档1. 前传1.1 前言 这个服务即将关闭,文档迁移到 http://www.wupaas.com/ 请大家访问最新网站1.2 Easypoi介绍1.3 使用1.4 测试项目1.5 可能存在的小坑 2. Excel 注解版2.1 Excel导入导出2.2 注解注解介绍ExcelTargetExcelEntityExcelCollectionExcelIgn…

如何在群晖NAS部署WPS容器并实现无公网IP远程访问本地office软件

文章目录 1. 拉取WPS Office镜像2. 运行WPS Office镜像容器3. 本地访问WPS Office4. 群晖安装Cpolar5. 配置WPS Office远程地址6. 远程访问WPS Office小结 7. 固定公网地址 wps-office是一个在Linux服务器上部署WPS Office的镜像。它基于WPS Office的Linux版本&#xff0c;通过…

Express学习(四)

使用Express写接口 创建基本的服务器 创建API路由模块 编写GET接口 编写POST接口 CORS跨域资源共享 什么是CORS CORS由一系列HTTP响应头组成&#xff0c;这些HTTP响应头决定浏览器是否阻止前端JS代码跨域获取资源。浏览器的同源安全策略默认会阻止网页“跨域”获取资源。但如…

AI论文速读 | TPLLM:基于预训练语言模型的交通预测框架

论文标题&#xff1a;TPLLM: A Traffic Prediction Framework Based on Pretrained Large Language Models 作者&#xff1a;Yilong Ren&#xff08;任毅龙&#xff09;, Yue Chen, Shuai Liu, Boyue Wang&#xff08;王博岳&#xff09;,Haiyang Yu&#xff08;于海洋&#x…

【Linux进程的知识点】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档文章目录 前言 操作系统的知识补充 我们来理解一个用户操作接口&#xff1a; 进程的理解 进程的基本概念 描述进程-PCB task_struct-PCB的一种 task_ struct内容分类 …

【四】【算法分析与设计】贪心算法的初见

455. 分发饼干 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff0c;都有…