zoukankan      html  css  js  c++  java
  • 线性分式变换(linear fractional transformation)

    线性分式变换(linear fractional transformation)的名称来源于其定义的形式:

    (ax+b)/(cx+d),

    其中分子分母是线性的,然后最外层是一个分式形式,所以叫做这个名字,但是这个名字其实基本没有对其几何的或者(可能的)物理内涵进行任何的解释或者表达。

    根据《Convex Optimization》中Remark 2.2对其的解释,这个线性分式变换可以分解为:P^-1QP(x),其中x就是初始的n维变量,首先P是一个逆透视变换(perspective transformation是透视变换,会将一个维度,那么逆透视变换自然是升一个维度了),称为投影变换(projective transformation,很明显这里的投影变换是升维度变换,和我以前常遇到的降维度变换不同,或许投影变换既可以表示升维度也可以降维度),经过第一个P就变成了n+1维变量,然后Q是一个矩阵变换,既然是矩阵变换那就存在非常多的可能性了,其中可以包括(平移、旋转、缩放、倒置等),然后将变换后的n+1维变量再进行一次透视变换(降一个维度,既然P是逆透视变换,那么P^-1自然就是透视变换了),又变成了n维的变量。可见这个线性分式变换的目的就是把变量提高一个维度(以统一的方式,也就是透视变换的方式,这种方式可以维持凸性和仿射性),然后在这个高维度的空间中对其进行一些处理(这个就需要由Q=[a,b;c,d]来决定了),然后再用同样的方式将其送回到原来的维度空间。这个过程,特别是透视变换中对变量最后一项元素必须等于1的强调,让我想起了在黄家祥论文中看到过的四元数变换,其实归根结底他想做的是,对三维空间变量进行一系列的操作(平行、旋转、缩放等),但是却硬是将变量变成了四维的(这个过程很简单,原来的三维变量最后加一项元素,这个元素就是1),这样的好处是什么呢,据我观察就是变换矩阵变得简单了。这其实是很有道理的,一个直观的理解就是,例如在二维平面xy(空间)中,我们想把一个封闭圆形内的一个三角形移到圆形外,这几乎是不可能的任务,非常难,但是如果在三维空间中这就非常简单了,只要将这个三角形在第三个维度z进行一个平移,然后再在二维平面xy的任意方向上进行平移, 然后再将这个三角形在z方向进行平移,将其还原到原来的xy平面内,就实现了二维平面内无法完成的任务。这个例子说明,在低维空间内很难(甚至不可能)的事情,在高维(甚至只需要高一个维度)空间中就会变得简单很多。我们将这个例子与线性分式变换进行对比发现了一些非常相似的地方,首先由二维空间到三维空间的出现,其实就是将变量进行了升维操作,也就对应于逆透视变换P,然后再三维空间的一系列操作就对应于Q,再然后由三维空间的消失恢复到二维空间就对应于透视变换P^-1,可以发现,在这个过程中,透视变换的主要作用其实就是一个规范化的升维(降维)操作。其实关于这个例子,我最初想到的是刘慈欣先生《三体》里地球的远航舰队碰到四维时空碎片时的情节,通过”四维空间通道“,一艘舰船里的人神不知鬼不觉得到了另一艘舰上,真是让人神迷的描述啊。后来由此很自然得想到了《兔子洞里到底是什么》里关于高维空间与低维空间关系的介绍。

     
    一些问题,可以等价的转化为凸优化问题。例如 Linear-Fractional Programming (LFP),目标函数是两个仿射函数(Affine Function)的比,约束是一个多面体。这种目标函数具有既是拟凸又是拟凹的性质,通过一个叫做 Charnes-Cooper transformation 的转化,可以变成一个线性规划。同时,如果我们要最大化 LFP 的目标函数,且其约束仅是一个0-1整数约束(这显然不是一个凸集),我们可以将其直接松弛(Relax)成0到1的约束,并且和原问题等价。因为最大化拟凸函数,最优值一定可以落在可行域的极点上。这个结论可以用来帮助解决 Multi Nomial Logit(MNL)选择模型下的商品搭配问题( Assortment Optimization)。


     
     
    好文要顶 关注我 收藏该文  
  • 相关阅读:
    哈工大中文篇章关系语料
    MongoDB学习笔记~关于官方驱动集成IQueryable之后的一些事
    MongoDB学习笔记~为IMongoRepository接口更新指定字段
    MongoDB学习笔记系列
    MongoDB学习笔记~为IMongoRepository接口添加了增删改方法,针对官方驱动
    MongoDB学习笔记~为IMongoRepository接口添加了排序和表达式树,针对官方驱动
    Android NDK入门实例 计算斐波那契数列二生成.so库文件
    Spring Autowire自动装配
    在gem5的full system下运行 alpha编译的测试程序 running gem5 on ubuntu in full system mode in alpha
    工厂三兄弟之抽象工厂模式(二)
  • 原文地址:https://www.cnblogs.com/wt869054461/p/7150374.html
Copyright © 2011-2022 走看看