设f是一个矢性(值)函数,若它可以表示为f(x1,x2,…,xn)=A1x1+A2x2+…+Anxn+b,其中Ai可以是标量,也可以是矩阵,则称f是仿射函数。
其中的特例是,标性(值)函数f(x)=ax+b,其中a、x、b都是标量。此时严格讲,只有b=0时,仿射函数才可以叫“线性函数”(“正比例”关系)。
就一般情形,函数f是仿射函数的充要条件是:对于任意两组向量x1,x2,…,xn与y1,y2,…,yn,对于任意0<=p<=1,如果f[px1+(1-p)y1,px2+(1-p)y2,…,pxn+(1-p)yn]==pf(x1,x2,…,xn)+(1-p)f(y1,y2,…,yn)。(“==”表示恒等)
一般称线性组合“p1x1+p2x2+…+pnxn,其中p1+p2+…+pn=1”为仿射组合;一般称所有pi>=0的仿射组合为凸组合。
其实一般意义上的仿射函数是一个矩阵函数,如果构成一个类似LMI的不等式,可以成为仿射矩阵不等式.
这是对 MIT Foundation of 3D Computer Graphics 附录B的翻译,本附录讲解了2D/3D仿射函数的基础知识。本书内容仍在不断的学习中,因此本文内容会不断的改进。若有任何建议,请不吝赐教 ninetymiles@icloud.com
已经完成的章节
在12章和13章中,我们讨论了变异变量的线性插值。要理解那种材料,我们首先需要学习关于仿射函数的一些简单的概念。
只要函数 是下列形式,我们就将函数 作为变量 和 的仿射函数
这个函数拥有常量 和 。这个表达也可以被记作
这样一种函数经常被称作“线性”,因为包含额外的附加常量项( ),我们因而使用术语仿射(affine)。相同的项-仿射(affine)-被用于第三章的仿射变换,因为那些变换允许额外的常量项,在那种上下文中,其表达了平移变换。
很明显在某个 处评估这样一种函数 的方式为只是把变量 插入方程(B.1)中。在平面中沿着某条直线(比如说沿着三角形的一条边,或者沿着一条水平线)以平均间隔的步骤前进并且在每个步骤上快速评估函数 。实际上,因为函数是仿射的,每次我们沿着一个固定的单位矢量移动,函数 以某种固定量改变。
我们已经看到了2D仿射函数的例子。回忆一下,从第11章开始,3D投射变换映射3D中的同平面物体到3D中的同平面物体。如此,给出一个3D中的三角形和一个选定的眼睛帧和投射矩阵,一个3D中三角形上的点上的值 为那个点上的值 的仿射函数。
如果我们给出值 ,针对 平面上3个点(非同线性)的函数 的值,比如说三角形的顶点,这确定了整个平面上的函数 。在这种情形中,我们说函数 为3个顶点上的值的线性插值体。评估3个顶点的线性插值体被称作线性插值。
计算3个顶点坐标 上的函数 ,我们拥有
通过反转表达式,给出 和 ,我们可以明白怎样决定 的值
如果一个函数 是下列形式的,我们就说这个函数 在变量 和 中是仿射的
这个函数具有常量 和 。这个函数被位于3D中四面体的4个顶点上的值所唯一确定。
给出3D中的三角形,假设我们指定了3个顶点上的函数值。可能存在很多在 中仿射的函数,它们在这3个函数值上一致。但是当被限制到三角形平面上时,所有这些函数会一致。如此,我们可以称三角形上这个被限制的函数为顶点上的线性插值体。我们仍然可以用方程(B.3)中的形式来记录,虽然常量不再是唯一的。
在小节6.3我们的顶点着色器中,返回3D计算机图形和变异变量(varying variable),当我们把三角形的每个顶点关联上一种色彩,最自然的解释为我们希望三角形内部点的色彩被三角形上唯一的线性插值函数所确定,这个函数在物体坐标 上是仿射的。
在计算机图形中,我们可以使用纹理映射把一个纹理粘贴到一个三角形上。在此处理中,我们关联两个值,被称为纹理坐标, ,到三角形中的每个点上。如果我们通过把纹理坐标关联到三角形的每个顶点上来指定这种粘合动作,最自然的解读是针对三角形内部点的纹理坐标我们希望使用三角形上对应的唯一的插值函数来确定,这些插值函数在 中是仿射的,
作为一种相当自我参照的例子,我们甚至将三角形中一个点的三个物体坐标的每个都当作 中的仿射函数。例如 (也就是说,当 时, )。这意味着在我们的顶点着色器中, vPosition 中的3个顶点应该被解读为在 坐标值上的3个函数。
针对这个原因,OpenGL的默认语义为插值所有变异变量为三角形上的函数,这些函数在 中是仿射的。正如我们会在下面小节B.5中会看到的,这等价于在眼睛坐标 上仿射的一个函数,但是并不等价于在标准化设备坐标 上的函数。
当被限定到3D中的一个三角形时,如果我们拥有在变量 中并行的函数 ,那么我们可以使用三角形是平面的事实将 记为只在两个变量上仿射的一个函数。例如,当被投射到 平面时,假设三角形拥有非零区域,那么,在3D中三角形的每个点上, 的值本身是变量 上的仿射函数,比方说 。对于 你可以采用这种表达式,并且你可以把它插入到针对函数 的仿射表达式中。这给出了我们下面形式的函数
这个表达式针对某种常量 。在这个步骤被完成后,对 值的依赖消失,剩下的就是 变量上的某种仿射函数。理解了这些,我们可以使用方程式(8.2)直接计算合适的 因子。
假设我们拥有下列形式的某个矩阵表达式
这种表达式针对某种 矩阵M(此处M甚至不必是仿射矩阵)。那么,只要独立地观察矩阵中的4行内容,我们就会看到 和 为 的并行函数。
如果我们拥有在变量 中仿射的函数 ,那么,给出方程(B.4)中的关系,我们可以看到函数 在 中也是仿射的(实际上是线性的)。要理解这种情形,注意:
表达式针对某种值 。
我们不得不注意的唯一时刻是当除法被完成的时候。例如,给出关系
通常不是这种情形:函数 在变量 中是仿射的也会在变量 或 中是仿射的。在第13章中我们会看到这种非仿射函数如何可以被有效求得其值。
说完了凸集,下一个要将的肯定就是凸函数啦~
凸函数的相关性质在优化中的地位不言而喻~!
是凸函数,如果 的定义域是凸集,并且 成立:
如果 时上面的不等号严格成立,那么就说这个函数是 严格凸 的。
几何上看,凸函数要求 和 这条线段位于函数图形的上方。
对应的,我们还有定义“凹函数”,当 是凸函数时, 被称为凹函数。
对于仿射函数,它是既凸又凹的。同时, 既凸又凹的函数只有仿射函数 。
如果 是凸函数,那么 也是凸函数,反过来的结论也成立。这说明,凸函数限制在任何一条直线上都是凸!凸函数的概念完全可以从欧式空间推广到一般的线性空间,在一般的线性空间上,这条性质成为我们判断凸函数的重要依据。
凸函数还具有良好的分析性质,比如,凸函数在它定义域的相对内点集上是连续的;凸函数的不连续点只可能出现在它的相对边界上。
有时候我们会把一个凸函数的定义域延拓到整个 空间中:
可以证明,这样延拓的凸函数也满足凸函数的定义。(在定义好关于 的运算后)。这样的定义在函数表示上有一定的意义。
可微的凸函数满足一阶条件:
这个不等式揭示了凸函数的局部特性,那就是在一点的切平面是整个函数的 global underestimate 。
如果上面的不等号严格成立,那么这个函数是严格凸的。这里的条件是 充分必要 的。
如果定义在 开凸集 上的二阶可微函数 满足 ,那么 是凸函数。
如果 ,那么 是严格凸的。
关于一阶条件和二阶条件的证明,要用到泰勒展开。在此从略。
定义 的 为:
易证 是凸函数的时候 是个凸集。
从而这里给出了判断凸集的另一个方法:能被写成某个凸函数的-sublevel set 的集合是凸集。反之,一个函数的 sublevel set 是凸的,并不能反推出它是凸函数(事实上这个函数是拟凸的)。
对于 是凹函数有相应的结论: 是凸集。
一个函数的 的 epigraph 是指:
是 的子集,是函数图形的上方。 是凸集当且仅当 是凸函数。 所以 epigraph 也是一种主要的判断凸函数的方法。
对应于凹函数我们定义 hypograph :
是凸集当且仅当 是凹函数。
琴生不等式是凸函数的重要性质。
对 和 成立:
这是有限个点的情况。该不等式还能扩展到无限和、积分等情况。
对某些凸函数应用琴生不等式可以得到许多著名的不等式:
比如Holder 不等式:
在 infinite 的情况下, 对 是凸的,那么也是凸的。
事实上,绝大多数的凸函数,都能够表示成一族仿射函数的上确界函数,这种方法也是判断凸函数最常用的方法。
透视操作是保持凸(凹)性的。
如果 对 是凸的, 是一个非空凸集,那么 是凸的。
另外,也可以通过 来证明凸性。
定义函数 的共轭函数为: 共轭函数是多个仿射函数的上确界,因此是一定是凸函数。共轭函数的定义域是上确界值有限的 的值。
一些例子:
共轭函数具有鲜明的几何意义:
当 是一元函数的时候,如上图所示, 表示以 为斜率且过原点的直线,与 的图像的最大距离(或者其负数)。
当 是 元函数的时候, 表示以 为法向量(n+1维)且过原点的平面,与 的图像的最大距离(或者其负数)。
非空集合 的示性函数( indicator function ) 定义为: 的共轭函数是支撑函数 :
设 代表 中的一种范数,其对偶范数为 ,我们能得到共轭函数:
根据共轭函数的定义,下式是显然的:
应用到上面的例子,还能得到:
如果 是凸函数,并且 是闭集,那么 。
如果 是凸函数并且一阶可微,那么根据凸函数的极值理论,容易得到,使得 最大的 满足:
从而我们有:
欲求 ,只需要解 得到向量
如果 ,且 都是凸函数,那么:
拟凸函数就是 所有下水平集是凸集 的函数。比如 就不是凸函数,但是是拟凸的。
很多凸函数具有的良好性质,可以推广到拟凸函数上。
一个定义在凸集上的函数是拟凸函数, 当且仅当 , ,成立:
这意味着,线段上的函数值,一定小于等于两个端点函数值最大的那一个。这个既可以当做拟凸函数的性质,也能当做拟凸函数的定义。(关于两种定义等价性的证明,看 这里 )
针对这个性质还有另一个版本:
来看一些例子。
类似于凸函数,当函数可微时,可以推导出拟凸函数需要满足的一阶条件和二阶条件。
该条件也有鲜明的几何意义。 导出了过点 的对下水平集 的支撑超平面。(高维情况很难想象,不妨考虑一维情况,这时候支撑超平面就退化为一个点,下水平集是一个区间)
虽然拟凸函数和凸函数在一阶条件上具有相似性,但是拟凸函数并不能用一阶条件来判断全局的最小值。当 时, 不一定是 global minimizer .
这个条件,意味着 在 是半正定的,同时 至多有一个负特征值。( 是一维的,从而 是维的)
简单讲, ,并且 是凹函数,那么 就称为对数凹的。
对数凹还可以用 来定义。从这里看,凸函数可以视作一种“算术平均”,对数凸则是“几何平均”。
为什么要研究对数凸/凹函数呢?
统计学中的似然函数,是一个经常要取对数的函数, 欲求参数的极大似然估计值,其实就是一个关于似然函数的优化问题 ,如果似然函数是对数凹的,那么求对数似然函数负值的最小值,就是一个凸优化问题!这是研究对数凹函数的目的所在。
事实上,很多常见的概率分布函数,都是对数凹的。
如果 具有良好的光滑性,通过 的凹凸性,我们可以得到一些关于 的性质:
因为:
于是可以得到 对数凹的一个充要条件:
在一元函数的情况,就是: 。
此外,对数凸/凹性是对乘法保持封闭的。从 容易看出。如果概率密度函数是对数凹的,那么多个密度函数相乘的结果也是对数凹的。
通过前面提到的广义不等式,可以定义函数的“单调递增”和“严格单调递增”。
例子:
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)