GAMES 图形学系列笔记(十四)

GAMES001-图形学中的数学 - P10:场论初步 - GAMES-Webinar - BV1MF4m1V7e3

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好啊,同学们好,今天我们来讲场论初步这一节课,呃首先我们来看一下什么是场呃,在物理学当中,我们是把某个物理量在空间,一个区域内的分布都称为常,比如说我这里举的几个例子,像是温度场,密度场,引力场,电场。

磁场,它们其实都是场,然后呃其实长这个概念说起来玄乎,但是其实我们完全可以把它理解为一个定义在,自变量是空间中的位置,因变量是标量或向量的一种特殊的多元函数,凡是这样的多元函数,我们都把它叫做场。

然后形成这个函数呢就是场函数或者额场,是个物理学的概念,我们可以这样理解,然后场函数我们把变成一个数学的概念,一般来说最简单的常函数的例子,就是二维的常函数额,我们可以把它写成FR。

然后这个R是一个向量,是一个二维向量,当然我们也可以把它展开写成X坐标和Y坐标,就是FXY3维也是同理,可以写成FXYZ,然后我们所谓的场论,初步呢我们其实更多的是指一种数学的,而非物理的去研究这个场。

因为我们知道在物理上也有一个场论,而物理上的场论它往往是涉及到呃,类似于量子场论,经典场论这样的一个区分,它的目标是研究物理场的变化,以及在这个变化当中所激发出来的,各种各样的呃能量之类的东西。

而我们不涉不会涉及这些,我们这里所说的场论初步,其实完全可以理解为一种矢量分析,但是因为啊经典的高等数学教科书上,就是叫场论初步嘛,所以我们这里也叫常论初步呃,和大家在高数当中学到的知识做一个衔接吧。

首先我们考察最简单的厂,最简单的厂就是标量场,标量场一般来说呃,我们把它用F字母F来表示,它有三个自变量,也就是XYZ,这也就是说它是一个三维当中的标量场,在三维当中的标量场呢。

我们首先希望来看一下这个标量场上,某一个点在某个方向上的导数,也就是方向导数,这个相信大家在学多元函数,微积分的时候也都有所接触,我们这里就简要回顾一下,方向导数,是说给定某个方向D。

这个D我们也可以把它写成什么样的形式,然后在四这个直角坐标系中展开成DXD,Y d z,然后所谓的偏F比偏D是什么意思呢,是说我们对于T趋于零,然后X加上TDXY加上TDYZ,加上TDZ之后。

再减去FXYZ,再除以刚刚我们说的这个T然后取一个极限,这个取极限的操作,就是我们一般求导数的定义也是一样的对吧,我们要有一个取极限的操作,然后取完这个极限之后。

我们自然地根据这个呃多元函数微积分的原理,我们就会把它得到它等于什么呢,它等于DX,也就是刚刚我们这个方向D的X坐标,X方向坐标乘以偏F偏X加上DYY乘以偏F,偏Y加上DZ比偏F偏Z。

我或者我们把上面这个东西,写成一个矢量的形式,就是一个方向D的矢量乘上F的,这个我们把它记作倒三角F这样的一个矢量,这个倒三角F呢,他的每个分量就分别是偏F偏X偏F,偏Y偏偏Y偏F偏Z。

这个倒三角F我们读作gradient,f grain是这里的gradient的缩写,也就是F的梯度的意思,它的性质是沿着梯度方向的方向,导数是最大的,或者说梯度方向是导数增长最快的方向,为什么呢。

我们只需要去考察这个不等式就可以了,我们任取一个向量ABC,用它去点乘这个刚刚我们说的这个gradient f,它一定是小于等于gradient f的平方,除以绝对值的,当当然这个是也就是小于等于呃。

gradient f肯定是小于等于这个的啊,这这个事情很好理解,因为你在一个向量长度不变的情况下,让他去这个向量去点成另外一个向量,它们的点击最大的情况,也就是这两个向量方向完全相同的时候。

所以我们刚刚用到的这个倒三角算子呢,它的学名叫做向量微分算子,我们把它形式化的写一下,它其实就是偏偏X5不知道偏什么,先留个空,然后偏偏Y我也不知道偏什么,留个空,偏偏Z不知道偏什么,留个空。

我们称它叫做P型算符,然后在这个打公式的时候,比如说在latex或者word当中,你需要敲nebula,它叫nba operator,或者有一个简单的说法叫deo operator,为什么呃。

我们把它形式化的写成这样一个倒三角的形式,是合理的呢,我们看呃,如果我们认为这个倒三角是一个矢量,看成一个矢量,然后这个矢量往右边叠加一个标量的话,根据矢量和标量的运算法则。

我们应该直接把标量给乘到矢量的,每个分量当中去,所以就自然而然的把这每一个,不知道偏什么的地方都填上了这个标量,看完了标量场的梯度以后,我们来看向量场的通量,所谓通量呢它的英文是flux,举个例子。

在流体的速度场当中,我们取了一个有向的曲面S,所谓有向就是说呃我随便画一个曲面,比如说一个正方形的面,我还同时规定了它的正方向,比如说我们认为这个这个方向是朝外的,那么这个就叫有向曲面,我们要求什么呢。

求单位时间内穿过该曲面的流体体积,那么根据初中物理的知识,如果这个速度,流体的速度是始终垂直于这个曲面的,那么显然有单位时间内穿过这个曲面的体积,就等于什么呀,等于U的大小。

这个速度的大小乘以DA做积分对吧,这样我们就能求出来,因为速度是始终垂直于曲面的嘛,所以我们就能直接能求出来,这个单位时间内穿过该曲面的流体体积了,但是呢如果这个曲面和速度之间有夹角。

比如说这个流体速度长这样哎,这个地方它有一个夹角,这夹角可能是theta,这时候怎么办呢,这时候我们说我们在单位时间内,穿过该曲面的流体体积是要小于当流速流,流速场和曲面完全垂直的时候,穿过它的体积的。

这个时候它穿过的流体体积是多少呢,我们给它计算一下,它其实是等于速度U点乘上法向N,也就是速度U点乘一个法向N,这样算出来一个流体体积,单位时间内超过曲面的流体体积,或者我们把NDA写成DA这个矢量。

也就是我们定义曲面的面积,微圆是它的面积大小乘以它的法向量,如果我们这样定义的话,我们就可以把这个积分式给改,直接写成U点成DA,然后我们再来看一下,物理中常见的一些通量,首先在渲染当中。

大家可能会接触到所谓光通量的概念,它的意思是每单位时间到达,离开或通过曲面的光强度,那么也是一样的,我们要把这个光强的去乘以,它和曲面之间的夹角,夹角的余弦值,这个通量和速度场通量其实是几乎是一回事。

所以大家应该都能理解,但是磁感应强度,这个也就是我们在高中物理当中会学到的,表示磁场的这个符号B它是磁感应强度,这个磁感应强度呢它也是一个通量,它的英文呢如果你直接看磁感应强度的话。

它英文是magnetic induction density,但事实上它还有一个名字叫magnetic flux density,也就是说所谓磁感应强度,它本质上是磁通量强度。

因为我们说磁感线我们会数磁感线的条数对吗,所谓磁感线这个条数的概念,就是一个对于额通量大小的一个形式化的表述,我们把它称之为条数,那么看完了这个常见的通量以后呢,我们再来看一下呃。

通量所引引入的这个圆和汇的概念,首先我们说圆和会是一对相反的概念,其中呢会,我们可以把它看成是某种意义上的复原,就汇合圆,我们完全可以把它看成一回事,它是个复原,那么圆是什么意思呢。

就是对于这个物理场来说,源是制造这个物理量的一个源头,什么叫制造物理量呢,比如说呃在这个空间当中有一个地方,它在不停的往外生成水,它在凭空的产生水,那么它会发生什么呢,我们如果取定一个闭合曲面。

把空间包住,如果其中没有源,就没有一个地方在制造水,那么通量一定是零,为什么呢,因为流进曲面的水总是会流出,除非水在该封闭曲面内出现或者消失,当然我这么说是有一点不严谨的。

因为我这里假设流体的这个体积是不变的,但流体体积有可能是会变的,但是呃我们可以这样去思考,我们可以把它看成是这个呃M7乘以V对,我们可以把它看成是M就乘上一个额,这个这个地方的密度肉围。

如果这样去写的话,那那这个就是下面这么说就是对的了,就是你不可能凭空的去生成一个质量,所以你的只要你一个闭合曲面内没有圆,也就是说也同时也说明没有会,那么此时通量就必然为零,因为流进曲面的水总是会流出。

定义完了通量以后,我们就可以定义散度了,散度在英文当中称之为divergence,他的考察对象是一个向量场,这个向量场呢我们把它的分量形式都给写出来,它的分量形式是FXFYFZ。

然后这个时候我们定义散度的表达式是什么呢,它等于在空间中某一点附近,取一个无穷小的体积,然后我们看这个无穷小体积的表面,在这个算这个无穷小体积的表面的通量,这个行向量场的通量,然后算完通量以后。

再除以这块空间的体积,并且呢我们这里说体积趋于零,它是什么意思,它是要求在任何方向上的直径都一致的趋于零,为什么要加这样一个限制条件呢,因为体积趋于零,你完全可以诶,比如说我让一个长方体的体积趋于零。

我完全可以只在高上把他这个高,无限的压缩变成零,然后它底面积呢还是一个有限大的数,如果是这样的话,它就不是我们这里所说的一致区域零,我们要求的是,这个德尔塔V要在这个点附线附近无限的收缩。

各个维度上都无限的收缩,那么如果做如上定义之后,我们可以形式化的说散度到底是什么东西,它就是在某一点附近,包含该点的无穷小封闭曲面的平均通量,那么上面这个定义它的表达式,在直角坐标系当中该如何表达呢。

我们取一个立方体,右下角所说的这样一个立方体,然后我们去计算一下它这个立方体的通量,因为我们要求散度存在的时候,是只要在任何方向上的直径一致的趋于零,那么散度都应该是相等的,如果做这样的定义。

我们可以直接推导出来,散度等于什么呀,散度等于偏FX比偏X加偏FY,比偏Y加偏FZ比偏Z,那么这时候我们就会神奇的发现,我们刚刚引入的这个P型算子,它有一个妙用,就此时这个式子看起来在形式上。

就是这个P型算子点乘一个F这个矢量,所以表现为一个点乘的形式,这也是为什么,这个地方我们写了一个点乘的符号,定义完了散度以后,我们来看散度的相对大小的意义,首先什么叫无伞,我们刚刚已经说过。

通量的概念是通量为零的时候,说明什么,说明在这一个区间内没有圆,没有汇,或者圆和会相抵,就是在这个空间在这块体积内生成的水,又在这块体积内消失了,所以我们把这一块体积给圈起来,就会发现没有水流出。

也没有水流入,就流出和流入是相等的,这块体积里的水没有增多,也没有减少,那么散度它只是无穷小的通量,无穷小的平均通量,所以无散和这个通量为零之间,应该是有某种联系的,也就是说无散。

其实它所表达的含义就是所度量的这个点,这个所度量散度的这个点,它的附近没有圆,这就叫无散,记作就是F的divergence等于零,什么意思呢,就是说场线不在该点处产生或者消失,对于流场而言。

这就意味着它的体积是不变的,那么有散的概念呢,就与无散正好相反,它对于流产而言意味着什么呀,在该点附近是有体积增加或者减少的,我们来看右边这幅图上面,红色的圆圈圈中的地方,这个速度场是向中心聚集的。

如果你考察这个,把这个红圈看成是这个外面取得一一块,这个曲面的话,我们会发现,这个曲面上所有的流速都是朝曲面内的,因此是什么呀,因此这个曲面所包含的体积,里的水是一直在增多的,比如这个这个地方是什么。

这个地方有会,我们再看绿绿色的这块,这个圈所包含的地方,这里的水都是从里面往外流的,那这说明什么呀,说明这个绿色的空间所包含的地方,它有圆,如果我们把这个红圈不断的缩小,缩小成半径为零。

把这个绿圈也不断的缩小,缩小成半径为零,那么我们就会得到上面红圈的地方,它的散度diversions是小于零的,而上面下面绿圈的地方求出来,它的散度是大于零的,那么根据上面我们的分析。

因为散度它本身就是无穷小的平均通量,那么我们把无限个无穷小的平均通量加在一起,正负相抵,就会得到有限大的通量,有限有限的一个区间内的通量,所以我们就自然的有自然的推导出了,当然不是非常严格的推导出了。

这里的高斯散度定理,他的意思就是说,我给定空间中任意一块体积,我们求这块体积内的向量场的散度的积分,等于什么呢,等于我们求这个体积的表面表面,然后在这个表面上求向量场的通量,这两个东西一定是相等的。

为什么,因为散度本身就是平均通量,案例是呃,大家如果学过普通物理的话,应该会知道,在静电场和静磁场当中,都是有这个高斯定理的应用的,在静电场静电场当中呃,他的写法是,右边应该是这个呃。

好像Q比XC用零吧,对大大概是这样一个形式,它意思就是说这个呃,电场强度的散度等于什么呢,就是说如果这是电厂,我们对这个东西做一个积分,就这个表面上求电场强度的通量,它等于什么。

它等于这个闭合曲面内包含的电荷,电荷量乘以一个一个因子,这个因子应该是FCM0分之一,这是静电场当中的高斯定理,而静磁场当中的高斯定理说的是什么,说的是它等于零,也就是说磁场是没有圆的。

没有一个地方可以生成磁场,没有个地方可以小小事磁场,此外还有这个流场不可压条件,流场不可压条件是说当流体是不可压的时候,我们有速度场的散度为零,那么这个东西是怎么来的呢,就是我们考察一团流体。

我们校这里的体积不增多,也不减少,那么也就是意味着这个流体的通量要是零,就是流体在这个这块区域内的通量要是零,通量是零,每任何任取一块,它的通量都是零,也就意味着它在上面的散度处处都得为零。

也就是得到流畅的不可压场解,就是高斯散度定理,讲完了向量场的散度以后,我们再来看向量场的环量,环量英文叫做SECURATION,或者我们称它为涡量,也是vertex,它的这个最直观的例子是。

我们在流体速度场中取一个闭合的曲线,然后我们要求流体沿着该曲线旋转的强度,这个旋转的强度如何定义呢,我们是这样定义的,如果速度始终平行于曲线的切向,比如说我们在取了一个闭合的曲线。

如果这块闭合曲线上的流体的速度场,也和这个曲线的走向完全一致,也就是速度始终平行于曲线的切向,我们就直接用伽马等于什么呢,等于沿着这个曲线做一次积分,然后流体的速度乘以这个曲线威严的长度。

那么如果速度与曲线的切向之间是有夹角的呢,我们跟之前算通常的时候一样,我们要去乘上这个夹角的余弦,就是我们用U点成tall,tall就是这个切方向,那么这里也就是u tall乘以。

它们俩之间加到余弦对吧,然后类似的,我们可以把这个曲线微元的写成它的大小,DL乘以它的方向,tour这个单位矢量写成U点DL的形式,有了这个环量的概念以后,我们再来看我们旋度是什么。

首先我们来看二维的旋度,旋度我们把记作rotation或者car,他的考察对象是一个向量场,然后这时候我们给定的是一个二维的向量场,也就是PXYZ,QXYZ这样组成的这样一个向量场。

那么这个向量场呢一样的,我们现在先来看看,这个向量场是如何计算环量的,我们在空间当中留任取一个闭合的曲线,然后我们来求这个曲线的环量,也就是F点乘DL再除以德尔塔S,德塔S是什么。

德塔S是因为我们现在考察是一个二维的对吧,所以我们这曲线一定是画在二维平面上,我们在二维曲明面上任画了一个闭合曲线,那么这个闭合曲线一定围成了一个面积,这个面积就是德尔塔S,跟之前一样。

当这个面积一致的趋向于,在各个维度上一致的趋向于零的时候,它怎么计算呢,我们发现因为F是等于这个X方是PY方是Q,那么DL呢我们可以看成X方向是DX,Y方向是DYY,我们直接把点乘写开。

就是PDX加QDY,这个PDX加QDY的积分要怎么算呢,还是一样,因为我们既然德尔塔X趋于零是一致的,趋于零,不管我们取这个曲线是如何取的,我们干脆就把这个曲线取成一个方形,一个矩形取成这样一个曲线。

这最最外面这个就是这个曲线,然后我们来计算这个环路的积分,这个积分计算的结果是什么呢,可以一条边一条边的给他算一下,一条边一条边的算一下,然后再除以这个面积4AB,最后得到的结果就是偏Q比偏X减去。

偏P比偏Y这样我们就定义了二维的咸度,定完二维的选度以后,我们自然要看看三维的选度是什么,那么三维的旋度呢我们怎么定义呢,我们可以把它看成是我们取这个环路的时候,我们把这个要求。

这个环路始终是和某它的环路的法向,法向量始终是与某一个方向平行的,比如说我们首先我们刚刚算的这个,这个是什么呀,这个相当于,如果我们把这个屏幕看成是XOY平面的话。

那么这个XOY平面的法向法向就指向Z项,对吧,所以我们刚刚算的其实是这个刚算,其实这个这个在哪儿呢,在这儿我们刚刚测出算的是这个回路,那么类似的我们再把各个回路都算一下,X方。

X方的回路是这个他解出来的结果是偏R比,偏Y减偏Q比偏Z,然后Y方向的回路是这个,它解出来结果是偏P比偏Z减,偏R比偏X我们把答案都写下来,就得到了这个向量场的旋度的表达式。

我们记住curl f等于root f等于什么呢,等于刚刚我们说的每个方向的这个环环量,给额选度给他加放在一起,哎我们又发现一件神奇的事了,这个P型算符我们刚刚定义过,是偏偏X偏偏Y。

它在形式上就等于P型算子去叉乘一个F,得到的结果就刚好是这个选人选度的表达式,那么我们在刚刚推导二维旋度的时候,我们其实用了这样得到了这样一个结果对吧,这个公式呢它本身又称之为格林公式。

我们怎么去更细节的去理解格林公式呢,比如说我我们他其实是说在,我们把空间划分成一个小区域,哎每个区域呢都有一个这样的环,他们都在绕,如果我把这些小区域给叠加起来会怎么样啊,我们就只剩下最外面一个环。

这就是这个二维显度,就是二维旋度,我们在推导的时候所发现的这个东西,注意我们这里称之的格林公式呢,和微分方程当中的格林公式恒等式,它不是一回事呃,微分方程我们应该会在下下下下节课讲到。

然后我们刚刚在推导的时候,就右上角,这里我们发现这个因为定义是,我们求这个旋度的时候,我们不是有一个德尔塔X趋于零,然后使得一个环量变成了旋度嘛,和我们刚刚推导这个高斯定理一样。

我们也把这个无限个这样小的旋度加在一起,他理论上说就应该变成一个环量了,对吗,呃答案也是这样的,他其实就是刚刚我在右上角所画的这个回事,我们把无限个这样小的旋度加在一起,它每个其实都是一个环量。

这些环量叠加在一起会正好消掉,这个比如说我们考察这个线,我们会发现左边的环量在这个位置是朝上的,右边的环量在这个线上是朝下的,这两个地方正好抵掉了,最后剩下的东西就就是沿着最外层的这个环流。

那么它写下来之后结果是什么,就是F点tall乘以DL等于什么呢,等于这个旋度,就像这个这也是旋度乘以面积乘以面积,然后因为这个时候呃,刚刚我们是二维的,我们能保证,能保证这个法法向量一定是沿Z方向的。

那现在我们不能保证这件事情,我们的取法的法向量方向是不确定的,所以啊我们需要加上这个法向量的方向的点乘,也就是所谓斯托克斯旋度定理,它就是二维的格林公式在三维当中的推广,如果我们将斯托克斯公式。

在XOY平面上做投影,我们就立刻得到了,我们刚刚上面所列的这个格林公式,好以上的内容都是大家在高数的这个市场分析,或者说长论初步的这一章节当中,应该已经接触过了,接触过的内容,然后接下来的东西呢。

就是我们从以上的内容出发,所要给大家补充的一些知识了,首先我们来看拉普拉斯算子,拉普拉斯算子它的定义是什么,它的定义是先拿先求一个梯度,再求一个散度,因为是点乘的形式呢,简记起来就是这个P型算子的平方。

那么如果是标量场的话,哎我们把标量场先求个梯度,它变成一个矢量场,实际上场再求一个散度,他又变回了一个标量场,而如果给定的是一个向量场呢,向量场的梯度是一个二阶的张量,这个二阶的张量去求散度呢。

求出来的结果还是一个矢量,或者我们在直角坐标系下,可以把这个求梯度求散度的过程给展开,展开的结果就是求X方向的二阶导数,Y方向上的二阶导数,Z方向的二阶导数,然后这个东西直接作用在phi上。

直接作用在phi上,啊这这个写法,这有啊,这有写错,它不是,它不再是一个矢量,就P型算子的平方,它形式上应该等于这个对吧,我一会儿改一下,毕竟算子平方应该等于这个,也就是说,如果你把作用在标量场上。

它其实是等于求的这个东西作用在矢量场上,孔里,好这是补充的一个定义,也就是拉普拉斯算子,它就是我们刚刚一直在用的,这个P型算子的平方,然后我们刚刚定义的散度,旋度梯度,它们之间有很多很神奇的矢量恒等式。

比如说首先我们求这个一个向量场的,刚刚我们说他的拉普拉拉斯算子的作用之后的,结果等于什么呢,它等于这个向量场的散度,求梯度,再减去这个向量场的旋度的旋度,哎,这个东西是为什么呢,然后这个还有一个结论是。

标一个标量场的梯度,再对它求旋度,结果一定是零,然后一个标量场的旋度再对它求散度,一个矢量场的旋度再对它求散度,结果也一定是零,这样式子非常重要,我们一会儿再证明亥姆霍兹分解定理的时候。

是需要用到这样的结论的,然后至于他们怎么证明呢,其实大家完全可以以为暴力展开的方式,尝试证明一下,当然我们这节课最后会告诉大家,有一种简便的计算方式好,除了刚刚那几个基本的以外,如果是有多个场的话。

那么这些场函数的组合,它们之间也会有一些在矢量微分上的恒等式,而这些恒等式在证明一些基本定理,或者是去开发一些算法的时候还挺有用的,当然呃这个说实话,我也不是很能完全把这些公式都给记下来。

所以呃我今天把都列在PPT上,是如果大家以后需要的话,也可以翻看我的PPT,然后这上面基本上是列举了所有大家常见的,需要用到的矢量微分的恒等式,就你就把它当表查就可以了,我们简要的回顾一下。

它其实是一个呃两个标量场相乘的梯度,两个矢量场点击的梯度,然后一个标量场乘一个矢量场的散度,一个矢量场和另一个矢量场差成的散度,然后一个标量场和一个矢量场相乘以后的旋度,和两个矢量场叉乘以后的旋度。

它们分别都可以展开,他们展开方式,建右边这个式子,另外还需要补充的一个知识点是所谓wish wish,什么是位置,位就是位置矢,就是矢量,wish就是位置矢量,它是一种特殊的场函数。

一般呢我们把它写成啊XYZ这里呃,这里我用一个R带一个呃,实际上箭头的方式来表示一个手写体,是因为等会我们可能既要出现矢量哪儿,又要出现标上哪儿,为了避免大家这个引起不必要的困扰,所以我们这底下。

这这些没有用这个粗体的R来表示向量,然后他等于什么呢,就是啊XYZ等于XYZ本身,然后未十场有一些非常特殊的微分运算的规则,微分运算的结论,比如说未时场的散度等于三,且很好验证啊,未十场的梯度呢。

未十场啊,注意这个地方没有上面的这个向量符号了,它是它等于R等于我们把它展开,它其实是等于这个的对吧,然后我们可以证明这个R,它的梯度等于R向量除以它的大小,也就是得到的是R所对应的方向向量。

然后这个R向量的旋度呢是零,然后我们对这个东西求一个倒数,比如说R分之一,它也有一些性质,R分之一的梯度哎,等于这个,然后如果我们是把这个,就是呃未使的大小,R呢作为一个自变量放进一个函数里。

那么这个FR的梯度是什么呀,它等于F本身的导函数F1撇,再乘以这个未使的方向向量,然后额也可以对1/2求上这个额,拉普拉斯做应用一个拉普拉斯算子,它的结果是四派德尔塔啊。

这个东西又超出了我们今天课程的内容,因为我们这里涉及到一个狄拉克德尔塔函数,然后我们会在微分方程那一节当中啊,更加详细的给大家说明这件事情啊,类似的还有这个F2乘以啊,方向的R的方啊。

未使的这个旋度它也是等于零的,然后这个位是R的,直接求梯度,我们知道他应该得到的是一个张量,然后这个张量是什么呢,也就是单位张,这个张量是单位张量,或者是呃我们任取一个长矢量AAH点。

成wish之后再去求梯度,它等于什么呢,它等于A先去形式上的点乘这个P型算子之后,把R放在右边,那么结果等于什么,结果就是A向量本身,或者是呃E的IA点R次幂,我给他去求这个gradient。

它等于什么,它等于我把这个系数给提到前面去,然后变成I乘上A乘上ERADC,这都是一些非常常用的这个矢量场的,微分的恒等式,好现在我们已经有了基本的关于这个矢量,微积分的一些基本知识了。

现接下来我们要看一下,在矢量分析当中非常重要的一个定理,也就是汉姆霍兹分解定理,首先我们来看这个影,看影里一引里一是对无缘场而言,无缘也就是无散,我们刚刚已经说明过这件事情,首先有个结论叫有事必无散。

什么叫有势必无散呢,就是说对于某一个向量场,A如果存在一个向量的势函数pros,使得A是这个pros的旋度的话,那么A的散度为零,那么它的逆定理也是成立的,如果无散必有事,也就是说如果A的散度是零。

那么必然存在一个向量的势函数,POS使得A等于cos的选度,如何证明呢,如何证明一定存在这个向量式函数呢,这就涉及到还是涉及到微分方程相关的知识啊,大家感兴趣的同学可以课后去了解一下啊。

这里我们要说明的是,cos是不唯一的,我们会有很多当满足这个使得A等于cos的旋度,这样的pros,所有满足条件的菩萨之间,相差一个gradient的five,而five是一个任意的变量差。

这事情怎么证明,这其实是这个其实是为什么啊,为什么这个事情,因为我刚刚已经说了,有这样一个恒等式对吧,有这样一个很冷事好,下面给出的就是一个额,满足这个无伞的庇偶式的这样一个厂,对它大概长右边这个形状。

它的形式是X方是负YY方是X,你可以去考察一下它的旋度,散度,迷你2002是对无旋场而言的,首先他的第一个陈述是有势必无旋,是说,如果存在一个标量的势函数,F使得A这个向量场是five的梯度的话。

那么A的旋度一定是零,其实我刚刚已经说过了对吧,他为什么呀,他是因为这个东西一定等于零,他的逆定理也是挺成立的,无旋必有式,如果A的旋度等于零,那么就一定存在一个标量的势函数,F使得A是five的梯度。

如何证明也依然是涉及到这个微分方程的知识,同时Y也是不唯一的,所有满足条件的phi之间是相差常数的啊,这个事情可能大家都考证明一些,因为偏five加C,如果C是一个常数的话。

在求梯度的时候是不会参与到计算当中,然后一样,下面也给了这样一个例子,然后考考虑过无旋场,也考虑过无源场以后我们来看这个无弦无延场,如果A的旋度是零,并且A的散度也是零,A是一个向量场啊。

那么既存在一个标量的势函数F,使得A等于gradient f,也存在一个实样的势函数,普S使得A等于这个root,Ps,所以呢就显然有以下的恒等式。

也就是首先five的散gradient的divergence等于零,也就是拉普拉斯方程,拉普拉斯算子phi等于零,同时cos的旋度的旋度也等于零,也就是双旋度方程。

并且此时一定满足gradient fine等于POSIROTATION,这是无选无盐场,下面也给了这样一个例子,好最终我们要得到的结论是什么呀,是任意的一个场,也就或者我们称它为有弦有连场。

对于一般的矢量场呢,它有可能既有圆又有悬,此时呢我们的亥姆霍兹分解定理是说,它可以将其分解为,一个无旋场和一个无源场的叠加,我们把它写下来,就是首先它有一个呃,无弦场AP和一个无缘场A2。

那么无弦场就是因为无弦嘛,所以你把它可以写,根据之前我们的定理,可以把它写成gradient的five,因为无缘,我们可以把它写成这个rotation和S,我们来看一看这个亥姆霍兹分解。

为什么一定是存在的,因为方程five的拉普拉氏就是拉布拉斯算子,作用在phi上,等于这个我们要分解的向量场的divergence,这个方程是有解的,那么这方程有解说明什么,说明。

这个gradient f减去A然后外面再去,divergence等于零是有解的,那么此时根据引理一知道一定存在一个pros,使得gradient f减A等于PRESIROTATION,所以我们在移下项。

就会得到A等于grad的fine加上呃减啊,对A等于这个就等于A等于这个,也就证明完毕了,然后我们还可以证明唯一性,就是如果存在两个F1,一个phi1,满足这个上面这个方程,F2也满足上面这个方程。

那么一定会得到F1减F2的拉布拉乘等于零,也就是说,fine1减FI二一定是一个常数,啊当然就是如果我在有边界条件的情况下,它不一定是个常数啊,这叫拉拉方程,但是这个地方它没有边界条件。

我没有给边界条件,所以它之间应该是肯定是只能差一个常数,所以也就是说AP呢,因为我们又可以写成F1的gradient,又可以写成F2的gradient,所以它是唯一的。

因为这两个东西的gradient也是唯一的,因为他们两之间差的是一个常数,然后同时呢因为AR等于A减AP嘛,所以这个分解也是唯一的,但是由于刚刚我们的盈利一知道呢。

就是对于任何满足POS1和POS2之间相差,是某一个变量场的gradient的两个cos它都有,它的旋度是相同的,所以cos是不唯一的,也就是分解为一,但是式函数是不唯一的,不管是标量式还是矢量式。

他都是不是唯一的,那么能不能让这个势函数也为一呢,是可以的,怎么让势函数为一,我们我们刚刚知道这个英语一,知道这个pros减一减cos2,它是某一个标量场的gradient嘛。

然后我们现在想解这样一个方程,这个方程叫做F的拉普拉斯的散子,作用之后的结果等于cos的散度减去一个G,当我们比如说一般情况下,我们把G取零,也就是说我们要解这个方程,这个这个方这个时候继取零。

我们称之为洛伦兹规范,这样我们会解出来一个标量场F,我们把cos减去这个标量场F,得到一个生成一个新的佛S,这个活塞一定是唯一的,这个时候我们就把分解给规范化了,我们把做到了。

让这个让这个矢量式process,也变成了一个唯一的结果,讲完了以上的内容以后呢,我们要稍微拓宽一下我们的视野,去看一下这个外微分的概念,因为呃可能很多刚开始接触,实际上分析的同学。

最头大的地方就在于它有很多个三个吧,偶尔会大于三三个市值梯度散度旋度大于三,是前面里面可能还会有拉普拉神算子,这个双显度算子之类的,各种各样的算子,可能看到这么多算子,然后这么多不同的概念混在一起。

整个人头脑就不清楚了,然后就在想有没有一种统一的概念,能把这些算子给它合并一下,这些算子之间是否有某种微妙的联系,为什么,比如说为什么这个P型算子既能拿来表示梯度,又能拿来表示散度,又能拿来表示旋度呢。

那么有没有这样一种数学可以去概括,我们在在这之前说的这么多概念呢,答案是肯定的,这个概念就是微Y微分的概念,这个是超出了大家学的高数的相关内容的,外微分的概念从哪来呢,是从积分的定向当中来。

积分的定向是什么意思,在线积分的定向是说,这个A左端点A到右端的点B上去积分FX,它等于什么,它等于我把积分上下限交换之后取负号,这个事情就这是定义对吧,就是这个限积分上下限的定义。

那么在面积分当中有没有类似的呢,答案是肯定的,在面积分当中,我们去求FXY对XY这个重积分,DXDY这样一个重积分,如果我去换元,换元之后结果是什么呀,换元之后是相当于FXXUVYUV。

然后我们要把DSDY变成DODY之后,我们要乘以一个雅克比矩阵,它在形式上写成偏XY比偏UV,然后最右边是DODV这东西雅克比几啊,牙科比行列式,它展开之后是什么结果呢,是偏X偏U偏X偏V。

偏Y偏U偏Y偏V写成一个22的行列式,这个行列式计算之后的结果乘在DUDV上,就等于DXDY,这个就是我们大家高等数学当中在讲多元函数,微积分的时候已经接触过的内容,但是大家有没有想过。

我们在学行列式计算的时候,有一个很重要的性质,就是如果我们把某一行和某一行交换,或者某一列和某一列交换,行列式是要变号的,也就是说某种意义上说,如果你把它写成偏XY,偏UV。

偏VUDUDV这个东西和它结果是不一样的,对吧,他们俩之间应该差一个负号,这个事情很反直觉,就是我们在做换元的,在做积分换元的时候,为什么居然会和这个换的圆的先后顺序有关,这个先后顺序决定了什么。

这个先后顺序决定的东西,就和我们刚刚的说的线积分的上下限一样,它决定的是这个面积分的方向,就是哪一面哪一个方向,哪一个方向是这个面的正方向,它其实是决定了这一回事,如果我们就认为上面所给出的这个东西。

它是一个定理,它是一个已经被验证过的东西,我们看看接着往下推导,能得到什么,他能得到DXDX,也就是说我们如果,就是硬换它会等于什么,它等于偏xx偏UVDODVA。

因为两个X同时出现在这个雅克比行列式的分,分子上,结果会怎么样,结果一定是零,也就是DXDX等于零,然后DYYDX呢像我们刚刚所说的,他会和DXDY之间应该差一个负号对吧。

DYDX和DXDY应该差一个负号,这告诉我们什么,告诉我们,在普通的微分乘积应该是具有交换力的,你DXDY乘和DYDS应该没有区别,但是你在重积分当中,你不能交换顺任意交换顺序,你把这个积分谁写前。

写后可能会改变符号,可可能会改变最后积分结果的符号,那么有没有一个运算能表达,我们刚刚所说的这种交换性质呢,这个运算就叫外积运算,外界影响他写作这个一个三角是一个缺陷,缺口的三角。

它的英文叫做wedge符号,它的定义就是哎我们刚刚所说的每一条性质,DXY值DX是零,DY外置DY是零,DZY置DZ是零,DXY置DY是和DYDX连差负号叉符号,差符号,然后它同时它还要有结合律。

DXY轴,DYY再外置dz和DXY轴,DYY轴ZZ的结果应该要相等,那么我们定义这样一个运算,这个运算叫它外积运算,那么利用外经运算呢,我们就可以很容易的去导出,我们刚刚所说的面积分定向了。

首先DX是什么,Dx,我们把它用一一元的这个呃呃,不是我们把它用这个呃链式法则展开,它等于PX偏U乘DU加偏X偏V乘DV,而DY是什么呢,是偏Y偏U乘DU加偏Y偏V乘DV好,我们说面积微元从哪来。

它从DX这个V方向这个长度为圆,wedge dy y这个长度为,原来它等于什么,它等于这个的东西,wedge这个东西,然后我们把它展开展开之后,在应用上面的这些运算律,我们就会直接得到。

它等于PX偏U偏Y偏V减去TX偏V,偏Y偏U外面乘DU乘DV,大家可以验证一下,这个其实不难验证,好,那么现在呢我们给定一些在啊,三空间当中的一些被积项,就是我们要知道Y微分这个概念,它我们叫它Y微分。

那它其实是在积分当中得来的这样一个概念,那么在这个R3当中,我们在做积分的时候,其实这个线被积项是有规律的,我们可以整理一下不同的被积项的规律是什么,那么被积项有零次形式,零次形式的被积项是被积项。

就是FXYZ,它不成一个微元,还有依次形式,依次形式,比如说我们刚刚所说的环量积分,依次形式的环绕积分就是,X方向乘DX加上Y这个乘DYY加Z乘dz,这都是一个标量函数啊,X大X大Y大Z都是标量函数。

这个环绕积分你给它展开一定是上面这个形式,我们记他做欧米伽一,然后还有二次形式,我们记它做欧米伽二,它等于什么呀,它等于一个某一个未知的标量函数,然后乘以DIY外置DZ。

然后一个未知的变量函数乘以DZY的DX,加上某个未知的根号函数,乘以DXYDYY,比如说我们在求通量积分的时候的F点乘DA,它就是二次形式,因为我们求通量的时候,你我去,你如果取这个面是一个立方体的话。

它就是DYYDZDZYHDS,DSYHDY对吧,这是同样积分,然后最后还有一个三次形式,三次形式是只有一个未知的变量函数,我们叫它入XY,然后他的这个VN是什么呢,是DXY值DYYY值dz。

比如说体积分,我们要求某一个标量函数,当然有可能是矢量在这个体积内的积分,那他就是这个体积,微元表达方式就是DXYHDYYGTC,然后下面我们来看一下,这个某一个向量的这个外微分形式,比如说。

A向量我们记它的三个分量分别是XAYAZ,B向量三个分量分别是BXBYBZ,那么A的一次形式是什么呢,也就是说如果我们把这个A作为被积项去考察,它的依次形式是什么,是XDX加AYDY加AZDZ。

那么它的二次形式什么一样的,我们把刚刚PQR都代入成A对吧,就这是一个很非常简单直观的定义,定义完以上内容之后,我们来看欧米伽a e wet,欧米伽BE是什么结果,其实大家可以用这个我们刚刚定义的这个。

外积的运算法则去验证一下欧米伽A1Y值,欧米伽B1,它等于欧米伽A叉乘B的二次形式,也就是说两个向量的一次外微分形式,做外积会得到它们这两个向量的差,乘的二次Y微分形式,这是一个很重要的性质。

可以帮助我们去证明很多,刚刚我们提到的矢量微分恒等式,同样的这个A的一次外微分形式,和B的二次外微分形式做外积呢,它会得到A和B的点乘的三次Y部分形,外微分形式我们已经说过了。

下面我们再来看外微分到底是什么,我们是怎么过来的,我们是先讲讲了什么叫外机,然后讲了什么叫Y微分形式,最后我们来看什么叫外围分,Y微分和微是微分的推广,它的符号和微分一样,也是D。

我们首先把去考察零次形式的Y微分,零次形式是什么,是FXYZ,这个时候他应该因为他是我们普通微分的推广,普通微分就是作用在零次形式上,就作用在某一个函数上,所以零四形式就是偏F偏X偏X乘DX加。

偏F偏Y乘DY,Y加偏F偏Z乘dz,这和高等数学当中的定义是完全相同的,也就是说同时我们看到右边得到这个东西,就是我们刚刚定义过的一次形式对吧,也就是说零次形式的外微分,要产生一个依次形式。

哎我们同时又发现这里的依次形式是什么,它是向量gradient f所生成的一次形式,也就是说D欧米伽F0等于omega gradient f1,那么我们再来看对于一次形式去做Y微分,会得到什么。

我们依次形式就是ax b x加AYDY加AZ,DZ去对它做Y微分,它等于什么呢,它等于DAXY值,DX加上DAYY,直DYY加DAZY者DZ哎,这个为什么是这样定义的呢,其实是这样的。

对于两个不同的东西的乘积,他的外微分我们认为它和普通的微分一样,具有这样的定义,只不过中间我们要把这个点乘符号,给改成外积符号,同时呢又因为我们等会会跟大家跟大家说,有一个啊POINCARE。

盈利是任何形式的外微分的,对它做两次,就是地方欧米伽要等于零,所以我们看到这个地方,ax它不是一个Y微分形式,或者说它是一个这个零次Y分形式,而DS呢它它已经有一个D在这了,然后D方X1定等于零。

所以这样我们把前面这个式子展开,就自然会得到这个结果,然后DAX这东西又可以什么又可以展开对吧,最终我们得到什么,最终我们得到的就是A的旋度的二次形式,因为因为我们注意这里的DIX还是可以展开成。

偏IX偏XDX加上偏AY偏YDYY,呃呃加上偏X的,加上偏爱X,偏ZDESIG的对吧,我们是拿这个东西外置DX,这东西外置DX里面这一项一定没有,因为DXY值DX等于零。

所以最后我们得到是偏ax比偏Y乘上DYY,外置DX加上偏IX比偏Z乘上DZY是DX,我们再把后面每个东西都展开,最后再整理一下,得到的结果就是A的旋度的二次形式,也就是结论是一次形式的外微分。

会产生对应的向量场的旋度的二次形式,同时那么我觉得到这里为止,大家可能已经有一点感觉,我如果直接跟你说,二次形式的外微分,会产生对应向量场的散度的三次形式,大家可能都已经不会觉得有什么奇怪的。

然后这件事情也确实很容易证明结论,就是说,因为因为我们发现这个地方,DX后面有DYYY是DZ,而DAX根据这个地方你给他D1下之后,它仍然是一个有一个DS有个DY有个DZ。

不管你是出DY出DYY还是DZ,因为后面都有了DYYY就DYY等于零,DZY就DZ等于零,所以你只会留下偏X比,偏X乘DXY置DIY外置dz这一个结果,也就是说,二次形式的外微分。

产生对应向量场之散度的三次形式,刚我在这里这么说,大家肯定会觉得很抽象,这个这个关于外微分的理解,强烈建议大家,就根据我们之前对于外微分的定义,一步一步的去推这些恒等式,当你自己把这些恒等式。

在草稿纸上给它推出来之后,你才能真正掌握这个Y微分这一套运算的规则,就你听我这么讲,我只能把最终的结论正确答案告诉你,就是这个中间这个推导过程是不能省的,就我在这里简要的推导一下。

可能也也没有帮助大家去理解这个事情,还是大家要自己去尝试去退,刚刚我们以上的推导是用到了这个POINCARE,引理的,他是说对于任意形式的外微分D方,欧米伽都等于零,这个引理是有逆定理的。

对于P次形式的Y微分欧米伽,如果D欧米伽等于零,那么必然存在一个P减一形式的阿尔法,使得D阿尔法等于欧米伽,Y微分有什么用呢,它第一个用处就是我们可以用Y微分来证明,矢量分析的恒等式。

首先我们实际上分析的恒等式,刚刚我们说了一个对于一元场的恒等式,gradient fied的旋度等于零和rotation,PRESI散度等于零,这两个性质对吗,这两个性质怎么证明啊。

哎我们知道这个梯度是什么,梯度是,梯度是依次形式对吧,梯度是,是这里D欧米伽F0等于omega,gradient的F1对吧,然后D欧米伽A1又等于欧米伽gradient a,rotation2对吧。

呃omega a rotation2对吧,也就是说,我们这里的gradient f的旋度是什么呀,它等于D方,地方five等于什么,地方Y等于零啊,因为地方等于零,所以这个东西等于零,那么类似的。

这个posse旋度是什么呢,它是对于一次形式求Y微分会得到旋度,依次请示D1下会得到宣读,散度呢又是对旋度再去求一次Y分,同样的,因为地方five等于零,也就是说先求旋度再求散度等于零。

同时刚刚这个我们还可以用它来证明,一些多元场函数放在一起的,实际上分析和等式,比如说F和G的差乘求散度,我们说它等于G的G点乘上F的旋度,减去F点乘上G的旋度,这事儿怎么证明呢,我这里写了一下。

首先我们根据之前已经给出的结果,F和G差乘的二次形式等于什么,等于F的一次形式,和G生成的一次形式之间去做外积,那么我们来考察一下这个右边这个等式,右边的这个Y积对它求一次外微分的结果。

它等于D欧米伽F1取Y积,一个欧米伽G1加上欧米伽F1,取Y值,一个D欧米伽G1,然后我们刚刚已经说过了,一次形式,求Y微分会生成二次形式,二次形式代表旋度,所以它代表的是F的差城的二次。

F的旋度的二次形式,然后这里也一样是G的旋度的二次形式,那就等于这个东西,而我们又知道什么呢,我们又知道这个F叉乘G求散度的三次形式,等于什么呢,它等于F叉乘G的二次形式的Y微分,也就是,也就是什么。

也就是F的旋度的二次形式,Y者欧米伽即加欧米伽F1,Y者欧米伽即选入二次形式,所以我们把这个东西,这个东西再利用我们刚之前说的一个一次形式,和一个二次形式外积到一起,等于点乘,这个性质利用起来。

他就会得到这样的结论啊,这里是减号,这里是减号,就会得到这样的结论,大家可以自己在草稿纸上推一下,其实很很神奇,你第一次用外微分证明沈阳分析恒等式的时候,你会觉得很神奇,Y微分的第二个用处。

就是通过外微分这样的方法,我们可以把这个之前我们说的高斯公式也好,格林公式也好,斯托克斯公式也好,全部统统的写成这样一个形式,也就是某一个积分域上对欧米伽做积分,等于什么呢,等于在这个积分E上。

在这个积分域内部包含的这个空间上,对D欧米伽做积分,那么如果你这样去看的话,你会发现高斯公式它是符合这个特征的,为什么,因为高斯公式是说什么,高斯公式是说我对于呃,通量的积分等于内部的散度的积分。

通量是什么,通量积分是,二次形式对吧,也就是它等于三次形式的一个体积分,三次形式它的散度的一个体积分,那么斯托克斯定理是什么呢,他是说环量积分等于这个旋度的面积分对吗,那么环量积分是个一次形式。

而旋度的这个面积分是个二次形式,然后其实零次形式和一次形式也是对应起来的,那么零次形式是什么,我们的牛顿莱布尼茨公式说FB减FA等于,这个东西它其实就是说这是一个零次形式,这是一个依次形式的积分。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好以上就是我们今天课程的内容,当然我很快的把这一节整节课的知识,给大家都回顾了一遍,但是不能保证大家能够在课上一直能跟得上,这个,尤其是后面外微分部分的推导,然后本节课也和之前一样。

准备了练习题供大家去呃,在温习我们课上所教的内容的基础上,去检验一下自己,是否真的理解了矢量分析以及外微分的知识,然后这一些知识对于你去实现,或者开发图形学相关的算法当中,都有着很重要的应用。

其实而且它最最直接的应用,就会在我们接下来的两节课,也就是呃古典微分几何以及偏微分方程,这两节课当中用到,当然如果大家不是很喜欢这个Y微分,这一套运算的法则的话,其实我用我们在这个这学期。

这个games001第一节课的线性代数,最后的部部分里面所讲述的,这种张量运算的方法去验证指标运算,去证明上面的那些恒等式也当然是可以的,只不过用指标运算的方法要更加的复杂。

而且要更加的缺乏几何直观一些,如果大家真的能运用熟练的话,Y微分会成为大家做相关的场定义,在场上的这样的研究不可缺少的工具,好以上是本节课的内容,我们就讲到这里,大家有什么问题吗。

看很多同学都觉得有一点懵,可能确实可能确实因为我们课时的关系,没有办法特别展开的,详细的给大家去推导,这个Y微分的每一个呃细节,但是我个人备课感觉下来这个外围分呃,你仅仅是从应用的角度上来说。

你从那几条定义出发,去推导之后的运算并没有那么困难,并没有那么困难,如果感觉刚刚听的不是特别懂的同学,课后我们可以对照PPT和这个课程的回放,来做一下作业试一试啊,相信大家做完作业之后就基本上能掌握了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

GAMES001-图形学中的数学 - P11:古典微分几何 - GAMES-Webinar - BV1MF4m1V7e3

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好的呃行,能听到我们就进入今天的内容,然后今天我们要讲的这课题是古典微分几何,首先我们来解释一下为什么微分几何,还有古典微分几何的说法,我们说所谓的古典微分几何,是和现代微分几何相对的啊。

古典微分几何是一种外运方法,什么叫外运呢,它是就我们身处在一个三维的世界当中,我们就研究镶嵌在这个三维空间中的,二维的曲面,而曲面的研究曲面的概念和方法呢,又是从研究三维空间中的一维曲线派生而来的。

所以呢古典微分几何,本质上就是三维空间中的曲线论和曲面论,而现代微分几何呢它是一种内运方法,它的意思是我们就是在所处的这个流行之内,我们研究的就是任意维度的流行,它本身我们并不是站在一个超越这个流行。

或者说这个曲面的一个空间当中,而是就在这个曲面当中,就在这个流行当中,然后去研究它本身的方法,所以呢这种研究的对象就呃是更多的是那种,人类无法在我们的三维空间当中去想象的,这样的一种呃流行。

比如说广义相对论,因为他研究的是这个四维的时空,那么它我们没有办法在三维空间内,给它做一个呃映射,很简单的去做一个映射,所以我们没有办法去用外用的方法去考察,而微分几何,它和图形学来说。

最大的联系也就在古典微分几何这一边,因为我们图形学的研究对象,其实是在三维欧几里德空间的可视化,呈现在这个空间里呢,有各种各样的几何体,然后我们要把这些几何体它的运动画出来。

我们无非图形学就是在干这样的事,而这恰好对应于古典微分几何的范畴,所以为了进行图形学的研究和这个呃编程呢,我们很多时候需要一些古典微分几何的知识,然后今天这堂课呢,我们就来简要回顾一下。

古典微分几何当中的一些重要的概念,呃然后因为我们课时是非常紧的,所以呃可能我们接下来所涉及到的内容,更多的是希望大家接触到有这样的一个概念,这样一个说法,至于其中详细的这个定理的证明。

以及呃一些直接的推论呢,大家可能还要参考这个本科,数学系的相关的书籍,首先我们来看曲线,讲曲线呢要从参数曲线来讲起,因为在这个三维欧几里得空间呢,它的曲线和我们在纸上画的曲线是不一样的。

它它的走向可能并不是在一一个平面当中,所以我们可以用一个从区间AB到,三维欧几里的空间的连续映射来表示一个曲线,或者呢我们这样的,我们也可以把这样的曲线称之为参数曲线,参数曲线呢它就是一个向量函数了。

然后这个向量函数也被称之为参数方程,它定义方法就是就是我们给一个参数T,然后呃我们会给在每一个T的这个参数下,这个时候曲线上点的位置坐标是什么,然后写成向量函数XTI加YTJ加ZTK。

或者写成一个向量的形式,就是RT等于XYZ,然后我们称如果XTYTZT它是连续可微的,我们就称这整个曲线啊T是连续可微的,而这里的I1撇T呢,呃这里我忘加一撇了,I1撇T也就是这个X1撇T。

Y1撇TZ1撇T呢是曲线的切向量,满足I1撇T不等于零,向量的点称为曲线的正则点,那我们根据高数上多元函数微积分的知识,我们还可以得到这个切线方程,它就是XUU又是另一个这个参数。

等于RT加上UI1撇T,这样我们就得到了一个直线的方程,这个直线就是过曲线上一点所产生的切线,我们称一个参数曲线是正则的,当且仅当它处处是正则点,并且它的参数方程是它自变量T的三次以上。

连续可微函数为什么是三次以上,一会我们会看到在曲线论当中,我们所考察或者说研究的曲线呢,它需要具有一定程度的连续可微的性质,于是我们就可以定义曲线的弧长,曲线的弧长呢呃可以直接写成积分。

就是从这个参数从一个端点到另一个端点,然后我们将中中途呢这个I1撇TDT,I撇T的绝对值,就或者说模长乘以DT成为曲线的弧长,为什么,因为因为显然有DR等于DRBDT,因为显然有这样的等式。

所以我们的弧长的积分式就这样,这样的形状我们也可以把这种形式拆开,也就是把它还原回来,里面写成DR就是DXDYDZ,定义了弧长以后,我们可以对每一个曲线,定义一个特殊的参数方程。

这个参数方程是用它的弧长作为参数的,比如说我们可以令s st表示,从A1直到这个参数T这一段的弧长,那我们就可以用这个弧长为参数,构建一个新的曲线方程,那么我们会发现呢。

这里的DS它就等于R1撇TDT它是弧长微元,并且与坐标系的选取是无关的,我们可以看到曲线参数是弧长参数的,充要条件是I1撇T它的模长等于一,为什么呢,因为如果I撇T的模长等于一的话,DS就等于DT。

也就是说DT就是弧长参数,的微分,然后这个时候呢,我们的切向量场同时也是单位向量场,我们可以看到切什么是切向量场,我们刚刚说的切向量场I1撇T对吧,I1撇T如果你满足I1撇T的模长都等于一。

那么它显然就是一个单位的向量场,那么我们可以把这个I1撇,我们现在就不妨用这个S来表示,以曲线的弧长为自变量的参数,参数方程的参数方程,然后我们记他为rs,刚刚我们说到曲线的切向量是IPS。

我们把IPS用一个特殊的这个呃向量函数记下来,叫它阿尔法S,那么这个时候呢,我们可以定义曲率,卡帕等于阿尔法对S求导的结果,同时我们会发现呢,这个卡帕它等于D阿尔法比DS的模长。

这个东西它又恰好等于曲线,我们在沿着曲线走的时候,上面的转角,也就是我们在这个呃之前所了解的曲率的概念,就是二维上我们了解曲率的概念,比如说我们一开始在S这个点这个点的时候。

它的切线的角度是朝阿尔法S这个方向,然后我们在曲线上往前前进一段距离,到S加德塔S,这时候曲线的角度,曲线切线的角度变成阿尔法S加德尔塔X,然后我们来考察一下阿尔法S。

加德尔塔X减阿尔法S也就是这样一段长度,然后这段长度的对应的夹角是德尔塔西塔,然后我们显然可以证明这个德尔塔,theta比德尔塔S,当德尔塔X趋于零的时候,它就正好等于迪阿尔法比DS。

因此呢我们如果刚刚我们看到这个区域,是对第二化DS取得一个模长之后得到的,如果我直接去把那个模长给去掉,D阿尔法比DS等于阿尔法一撇S,这个阿尔法一撇S是什么呢,我们叫它称之为曲线的曲率向量。

它叫曲率向量,也就是它的模长是曲率,它本身还有一个方向,他们俩的组合叫曲率向量,然后啊我们很显然可以得到这样的结论,就是曲线C为直线,当且仅当卡帕始终等于零,因为只有卡帕始终等于零的时候。

这个曲线在前进的过程中,才不会发生角度的弯折,同时我们发现,既然我们刚刚说S是弧长参数,那么阿尔法S的模长也就始终等于一,始终等于一,意味着我们也就是说阿尔法一撇四,本该这么写。

比如说阿尔法方S它也始终等于一,我们对这个东西求对S求一次等式,两边对X求一次导数,左边就会变成二,阿尔法一撇S点乘阿尔法X等于零,所以我们就得到了这个式子,阿尔法一撇S点乘阿尔法S等于。

也就是曲率向量和它的单位切向量之间的夹角,一定是90度,我们将阿尔法EPS称之为是曲线C的一个法向量,并且呢如果卡帕S也就是曲率不等于零,那么阿尔法一撇S的方向其实是什么,其实是唯一确定的。

我们直接可以把定义一个新的向量函数,叫贝塔S,它就是阿尔法一撇S,做一次单位单位化之后的结果,这个方向贝塔S的方向我们就是称它为主方向,那么贝塔斯就称之为主法向量,然后我们写一下就会得到阿尔法一撇S。

它相当于是卡尔法S,也就是曲率乘上贝塔S,也就是这个曲率的方向,也就是我们把曲率向量写成了,曲率乘上一个曲率方向的这样一个结果,这个曲率方向呢也就是主主方向,主法向量,定义了曲率以后。

我们刚刚已经得到了两个特殊的方向,一个是切向量,一个是主法向量,那么我们还发现这个切向量和主法向量啊,它还是垂直的,那么由这两个垂直的向量,我们立刻可以生成一个新的方向,叫伽马S。

它就等于刚刚这两个互相垂直的向量,叉乘的结果,而且我们看到这个阿尔法S和贝塔S,它的模长都是一,所以伽马S的模长也显然是一,也就是说,在正则曲线上,所有曲率不等于零的点。

都有一个完全确定的右手单位正交坐标系,这个单位正交坐标系的原点是S,然后它的三个方向的单位向量分别是阿尔帕斯,贝塔S和伽马S,我们称这样组成的一个单位,正交坐标系呢叫啊friend标价。

然后由切线主法线,次法线我们刚刚生成的贝塔S啊,生成的伽马S就是次次次法向量,它叫次法线为法向量的平面,以这三个这个切法呃,以这三个向量为法向量的平面,又分别称之为法平面,从切平面和密切平面啊。

这个就是一个概念,大家不需要去记忆啊,然后呃因为我们刚刚看到的都是这个定义,在参数就是弧长参数的曲线下所给出的,曲率的可以及曲率向量之类的表达式,那么如果是在一般参数曲面,就是我们每这个它就是T。

我们不这个T并不满足阿尔法一撇,S的模长等于一,如果不满足这个性质的话,我们可以讨论一下,在一般情况下,他的卡帕和伽马分别应该长什么样,然后这个时候他的额这里有个向量符号。

这时候它的曲率可以写成是参数方程的,一次导叉乘二次导取模长除以一次导的三次方,然后伽马也就是刚刚我们说的这个次法向量呢,就是分子不变,但是把模长去掉,然后分母写成这个一次导叉乘二次导的模长。

刚刚我们定义了一个什么,定义了这个一个finance坐标系,然后我们会发现我们多定义了一个次法向量,伽马是这个切向叉乘主主法线方向,主法线方向也就是区域所指向的方向,这样差乘完结果得到一个次法向量。

那么这个次法向量它到底是什么呢,我们其实有一个直觉,因为我们的这个次法向量的所在的平面,次法向量以次法向量为法向量的平面,其实是由切线和主法线章程的这样一个平面,切线和主法线章程的一个平面,所以。

他还满足什么性质呢,假如这个曲线一直在一个平面内,假如这个曲线就在比如说就在我们这个直面内,那么我随便考察一个点,它的切线朝这样,他的主法线朝这样哎,那么这个密切平面它就正好是我们的纸面对吧。

那我们会看到在每个点它的主法线,它的切线全都是在这个纸面内,所以如果曲线是,平面曲线,那么说明什么,说明它的密切平面始终是不变的,也就是说我们有一个直觉是次法向量的变化率。

实际上刻画了曲线偏离平面曲线的程度,也就是我们看到的说就是这个伽马一撇S,伽马一撇S,也就是我们刚刚把这个呃次法线再给,对于这个弧长参数求一次导数,它等于什么呀,它因为我们知道。

这个伽马本身是阿尔法叉乘贝塔,所以它的导数就是阿尔法一撇叉乘贝塔,加上阿尔法叉乘贝塔一撇,然后我们又知道这个阿尔法一撇,和贝塔一定是垂直的,因为因为阿尔法一撇就是呃呃,阿尔法一撇一定和贝塔是平行的。

因为我们知道贝塔就是从阿尔法一撇的,这个做了这个单位化之后得到的,所以最后我们就得到伽马一撇是什么呢,是阿尔法叉乘贝塔一撇,而由于贝塔叉乘伽马一撇等于什么呢,它其实我们可以把它在,呃就是刚我们看到说。

2fs,啊对我们可以把它展开,就是用这个向量恒等式把它展开,上节课我们讲到了这个点,就是我们可以用,我们相当于要去展开这样一个东西,用这个矢量二重积的恒等式,我们可以把它写成贝塔点贝塔一撇。

阿尔法减去贝塔点阿尔法,贝塔一撇,然后这东西我们又发现这个贝塔点,贝塔一撇是啥呀,因为贝塔也是单位的,也始终是保证模长为一的,所以它等于零,然后贝塔和阿尔法是垂直的,所以它也是零。

最后我们就会发现贝塔叉乘伽马一撇,它是零,所以呢所以我们的伽马一撇,它就可以写成某一个东西,就它一定和贝塔方向是这个平行的,伽马一撇一定和贝塔方向是平行的,因为它们它因为这两个方向的差乘等于零。

所以它一定是平行的,那我们可以记伽马一撇等于负tall乘贝塔,那么这个tall是什么呢,tall我们又可以因为贝塔是单位的,我们可以把伽马一撇直接投影到贝塔上去,得到t tall就是负伽马一撇点乘贝塔。

我们把这个东西叫做挠率,那么,平我们刚刚看到的这个结论,就是说平面曲线它的密切平面始终不变,对应为挠率始终为零,对应为脑力始终为零,对我们这里可以证明一下,就是当这个脑力始终为零的时候。

我们可以去考察R点乘伽马零,这个这个标量的对S求偏导的结果,求导数的结果,然后它就又等于R点成伽马,因为,对因为因为这个拓一撇等于零嘛,然后最最终我们就会发现它相当于说是I撇,点伽马等于零。

也就是它始终在一个平面内,同样的我们会发现呢这个,tall也就是劳力,它等于什么,它等于参数方程的一次导数,就如果这个单位这个自变量是T不是S的话,这个脑力可以写成参数方程,一次导叉乘二次导。

点乘三次导,再除以一次导和二次导叉乘的平方,当然如果你这么写之后,你就会发现再用上面这个结论,我们会发现这个曲一个曲线它是平面曲线,当且仅当什么呀,当且仅当它的参数方程,一次导数,二次导数。

三次导数所形成的行列式是零,就是一次,因为行列式是什么,就是这个一次导构成的行列式X1Y1Z一,然后二次导的X2Y2Z2X3Y3Z3,这个就是说它要等于只有它等于零的时候,这个曲线才是一条平面曲线。

好那么最后呢我们来看一下这个FLANNE的公式,它是说什么,就是我们现在把这个我们刚刚所定义的几个量,全部都给写下来,第一个是单位切向量,这个IPS它是我们把它定义成阿尔法S。

然后阿尔法APS呢它等于什么,它等于曲率乘上这个曲率方向,那就开发S乘以贝塔S除法线方向,然后啊我们有这个挠率呢等于什么,伽马APS等于负T乘以贝塔,然后我们现在可以在这个FNATE坐标系下。

用阿尔法贝塔伽马这个基底来展开贝塔一撇S,因为前面的我们都已经就是别的量,我们都已经展开过了,现在我们就来展开一下这个贝塔,一撇S它它是什么样的,然后因为他是基底嘛,我们就直接考察点乘就完事了。

然后贝塔一撇,它的S点阿尔法呢就得到负KA贝塔一撇S点,贝塔得到零,贝塔一撇S点伽马得到透,所以综上我们得到的是什么,综上得到贝塔一撇X等于负卡帕乘阿尔法,加上T乘伽马,然后我们把写成一个矩阵的形式。

就长这样,也就是说我们刚刚所得到的这个哎,这里没有一撇,这里没有一撇,也说我们得到的这个FANNE坐标系的标价,矢量的导数等于一个反对称矩阵,乘上friend坐标系的标价本身。

也就是说这个标价本身沿着曲线的运动方程,就由这个形式给出了,我们会发现这运动形式只涉及到曲线的曲率,和这个曲线的脑力,这还是很神奇的,在曲线论的最后呢,我们要交代一下这个曲线论的基本定理。

曲线论的基本定理是说,我们刚刚既然已经定义了这个曲线的曲率,和曲线的挠率这两回事了,我们给出的定理是,如果曲率和挠率分别是相等的,则这个曲线是全等的,这个概念怎么理解呢。

就是说如果我们有两个这个正则参数曲线,一个叫R等于RES,一个是R等于R2S,如果它们的曲线啊,如果他们的曲率初数都不为零,并且曲率和挠率分别都是相等的,也就是说卡帕1S和卡等于卡帕2S。

toe s等于托2S那么这说明什么,说明在这个三维空间中一定存在一个刚体运动,西格玛可以将曲线RES变为rs,也就是说IES和R在形状上看是完全相同的,只不过它们的朝向,它们整体可以做一些旋转。

做一些平移,但是它们的形状是完全一致的,刚体运动就是只有旋转和平移的运动,然后呃这里我们还给大家一个结论,就是说由曲率和挠率可以唯一确定曲线的形状,这个曲率和挠率可以任意一个给定。

你可以任意给定一个连续的曲率,一个人连续的挠率,然后我们就可以唯一的确定一个曲线,它长什么样了,这事情怎么做到呢,因为我们可以列一个常微分方程组,对,我们可以把这个曲率和每个这个曲率和挠率的。

表达式写写成一个常微分方程组,然后我们把这个常用方程组给解一下就行,然后呃因为我们刚刚取了这个frame内的标价嘛,然后在这个标价下呢,其实这个曲线还有一个近似形式,就是在曲线上某一点附近。

这曲线可以被写成线线的方程,可以被写成这个就是SS是阿尔法零方向啊,就是S2分之卡帕S方,六分之卡帕托S3方,然后这个这个近似的曲线呢,我们可以看到他是其实是一个三次函数啊,这个近似的曲线在原点处。

和原曲线有相同的区域,脑绿和friend的标价,然后同时我们可以定义相切相切,就是说如果这个曲线C1和C2,相较于这个一点,在C1上有点P1,在C2上有点P2,所以相切,就是说他们两个的接近。

是几阶和这个期限一致的,就是说这个P1和P2的长度,除以这一段弧长的K次幂是等于零,但是如果你给它加一次幂,它就不等于零,这个时候我们就说他是这个,这个N阶切除了。

也就是从在一到N在这个地方它都是极限为零,但是如果是N加一,它极限就不为零,这个就叫N阶切除啊,这个概念呃不是特别重要,但大家知道这个相切,它其实和曲面上的就是和在就是说曲线的相切,和这个曲线有多相似。

在这个点附近有多相似有关就可以了,然趋力语言这个概念,可能大家在就是高中物理里面,我们在求额角加速度的时候,其实已经用到这个概念了,就是我们刚刚已经定义了一个这个去绿了嘛,然后还定义了一个主法线方向嘛。

然后我们如果说我们在将圆心rs0,加上贝塔S0除以开发S0,这个地方画做一个圆,然后这个半径呢是一比卡帕S0,那么我这个圆周在圆与圆曲线,一定在rs0处是相切的,并且它的密切平面和曲率都是重合的。

所以说明二者呢有在这个点有二阶以上的切除,那我们称这个一比开帕S0就叫做曲率半径,就叫区域半径,区域半径是在物理当中,我们是把它用来决定这个呃角加速度的大小,就是圆周运动的加速度的大小。

好我们接下来就要从曲线来拓,拓展到曲面的概念了,然后呃我们来看一下这个弹幕,然后有同学说能讲一讲纹理映射的原理吗,然后我们这个啊这里就呃说明一下,我们这个001的课程。

它是补充图形学学习过程中所需要的数学知识,而纹理映射它本身是图形学的一个部分啊,大家可以去参考后面的这个课程,应该是在101和202当中,有提到关于纹理映射的相关的原理,有相关书籍推荐吗。

就是推荐这个呃,微分几何应该是北大有一本这个微分几何的,大家可以去搜索这个微分几何,北京大学出版社,好我们接着去讲这个参数曲面,刚刚我们已经定义过参数曲线了对吧,参数曲线是在一个一维的区间上。

到这个三维欧几里得空间的连续映射,那么参数曲面呢就是在一个二维的区区域,到三维的连续映射,因为一维是区间嘛,那么二维是一个连通的开子集地,我们我们可以把它叫做区域啊,还有可以加个区域,这就是我们一样的。

那么现在我们也要有两个参数坐标了,因为我们的定义域是在二维上,所以我们这个两个参数坐标分分别叫U和V,然后呃一样的,它也它还可以写成XUVYUV,ZOV这样的形式,那么我们会显然会发现。

如果我们固定其中一个坐标不变,然后另一只动另一个坐标,我们会生成一条参数曲线对吧,然后这些曲线呢都是在这个D中,平行于坐标轴的直线的映射的结果,所以我们又把UV又称为驱蚊坐标,比如说这个是定义域。

定义域是在二维空间,UV这个空间当中的一个棋盘格,而这个棋盘格,如果我们把它映射到三维的曲面上呢,诶他们就会,他们显然不一定在不一定还互相垂直了,也不一定还是一条直线,然后呃。

我们就把这个刚映射过来的这一些棋盘格上,每一条线呢都称为这个驱蚊线,然后呃这个UV呢可以看出来就是驱蚊坐标,然后啊和这个曲线类似的,我们也一样,有这个正则的定义,正则是说什么呢。

是说我们要求这个定义域中的点,和曲面上的点要是一一对应的,我们不能是曲线上有好几个点,对应曲面中一个点也不能反过来,然后如果呢呃满足这样的性质,并且我们还要定义切向量,切向量是在每个点处的这个参数方程。

对它的每一个自变量的偏导数,比如说我们就记作R下标,URURU等于偏R比偏U好,RV等于偏R比偏V,我们要求这两者必须是线性无关的,也就是RU叉乘RV要不等于不等于零。

也就是are you不能和are we平行,同时与曲线类似呢,我们要求这个参数方程是三次以上连续可微的,当然这个性质其实在曲面当中,我们往往给他这个放宽到两次了啊,往往给他放宽到两次了。

然后处处满足这个正则条件的参数曲面,我们就称之为正则参数曲面,那就是我们可以去研究的这样的参数曲面,是我们研究对象,但是呃这里要注意就是正则曲线,我们刚刚说了,正则曲线它是等价于正则参数曲线。

但是正则曲面它不等价于正则参数曲面,这是为什么呢,就这个参数,因为我们可以考虑有一些曲面它是正则的,但它不是正则参数的,比如说球面球面就无法表示为正则参数曲面,因为球面有几点在球面的极点的这个地方。

你没有办法把它写成一个连续可微的形式,所以呃球面并不能直接写成一个,完全的正则参数曲面,所以呢我们但是球面又是可以被我们研究的,如何研究呢,我们可以发现球面的每一上面的每一个点。

它在领域内都可以写成正则参数曲面对吧,因为我们的球坐标只要你不在极点就完事了,那当然是一个球上的每一个点,它都可以不是极点,当然也都可以是几点,所以我们只要在每个点附几点附近,重新做一个参数化。

然后是这附近的这一片变成正则参数曲面,然后这些正则参数曲面,它之间可以拼在一起就可以了,那我们我们这个曲面论研究的正则曲面,也包括这种由正则参数曲面拼接得来的曲面,然后呃同时呢我们还就是参数曲面呢。

那既然是参数嘛,你的参数可能可以变换,就是我们可以定义这个U等于YOUTUBE的,VTUL的函数,然后V等于也是YOUTUBE的VTUL的函数,那么额他什么时候它是容许的呢。

那我们只要求他的这个啊雅克比矩阵的行列式,只要它不等于零,那么它就是容许的,同时啊,我们会发现这个曲面呢呃它其实是有方向的,一个曲面,一个三维空间中的曲面,其实有可以决定两个方向,一个是曲面正方向。

一个曲面的这个呃反方向对吧,因为曲面的法向量它只能朝向曲面的一侧,所以我们一般是将URU叉乘RV的结果,作为法向量的方向,所以如果你希望这个在参数变换之后,反方向不变,你同时还要满足什么呀。

你还要满足这个上面这个行列式的结果,是大于零的,因为你小于零就会改变这个反方向,然后我们再来看这个呃,曲面上定义的一些基本概念,第一个我们来看这个曲面的切向量和切平面,刚刚我们其实已经定义过曲面的切方。

切向量了对吧,他就是这个曲面参数方程,对它的每个自变量的偏导数,然后呢啊这里我们给出一个结论是,参数曲面上过一点的任意一条,连续可微曲线的切向量,也就是曲面在该点的切向量,都是曲面在该点的切向量。

为什么呢,因为我们刚刚说到,曲面对它的两个自变量的偏导数,分别是RU和RV,这AU和RV在该点处一定都是曲面切向量,因为RU点乘N等于零,RV点乘N也等于零,那么由AU和av的任意线性组合。

得到的这样的向量呢,它也肯定是曲面的切下来,那么如果我给定曲面上一个曲线,UT等于U0加AT,VT等于V0加BT,然后这这个东西哎,我们把他对于这个DT求一下导数,我们会发现它就等于A2U加上BRV。

那么根据刚刚我们说的这个定理,曲面上过一点,任意一条连续可微的切向量都被定义成曲面,在该点的切向量的话,那么我们就能证出来,ARU加BRV也是这个曲面的切向量,当然这两个定理是可以互相定义的。

就是你要么定义上面这个东西,你就会证明证得下面这个结论,你要么定义下面这个东西,你会证得上面这个结论,这样是可以互相证明,总之它是关于切向量如何定义这样的一个问题,引入的一个问题,那么什么叫切平面呢。

切平面就是由切所有的切向量,所形成的一个空间,也就是RU和RV所张成的空间,因为我们刚刚说过,由RU和RV的任意线性组合得到的向量,它都是切向量,也就是说X拉姆达缪就是这个曲面的参数啊。

这个曲面参数它在RUV加上拉姆达美的RU,加上MB的RV,这个也就是这个曲面,这里我们可以看到这中间这个方块,它是曲面在P这个地方切平面,那么切平面和曲面在这个点处,它的法向量是相同的。

就是说这个切实实上,事实上,这个切平面就是由曲面在这点的法向量所唯一,确定的啊,有同学问会有录屏吗,是会有的,我们这个games系列的课程,每一节课都是有录屏的,那么与刚刚我们说的参数曲线呢。

finite标价一致啊,这个曲面呢也也有个自然标价,这个自然标价就是呃在曲面上一点,然后它沿某个方向的单位切向量,沿这个自变量U方向的单位切向量,沿自变量V方向的单位切向量呃,它不一定是啊,不好意思。

它不一定是单位的啊,沿U方向的切向量,沿V方向的切向量以及这个点处的法向量,由它们构成的东西叫做自然标价,但这个自然标价和我们刚刚说的参数,期限的自然标价不同,你们可以看到,首先它不是单位的。

这个不是单位的,这个也不是单位的,然后N虽然是单位的,但是前面两个都不是,并且N虽然和AU和av都垂直,但AU和RV不一定垂直,然后续我们事实上都在研究的是自然标价下,曲面所满足的一些性质。

然后呃我们来介绍一下影视曲面的概念,影视曲面其实就是它由隐函数来定义,就如果FXYZ,它是定义在R3这个空间上的连续可微函数,只要偏F偏X偏F偏Y偏F偏Z,也就是F的梯度它不为零,那么我任取一个常数C。

它FXYZ在这个常数C的等值面,它就一定是一个正则曲面,然后同时呢这个偏F偏X偏F偏Y偏F偏Z呢,一定是垂直于等值面上的曲线的,所以它是一个法向量,他是一他是这个正则曲面的法向量啊。

这个其实好像啊高等数学这个呃课的上册的,最后好像是有这个相关的内容啊,至少北大版是有的,关于影视曲面的这个定义,我们就不在这里赘述,现在我们来看这个曲面一些最重要,最重要的性质。

也是大家可能在接触微分几何的概念之前,不会听到的这样的一些定义,首先我们来考察正则参数曲面,它的微分就是我们把参数方程做一个微分,然后先用全微分公式,正则参数曲面DR等于什么呀。

等于RU乘以DU加上RV乘以DV,这意味着什么,其实就意味着下面这个这个极限的式子,就是其实是微分的定义啊,这是二元函数微分的定义,就是说那么我们知道DR是什么,DR其实是一个线的微圆,是一个限元。

我们可以考察这个线圆的长度,也就是说我们可以将考察DR的这个模长的平方,就是DR点乘DR,我们把它展开,用他的微分式展开,你会发现它等于这个东西点成这个东西,然后我给他暴力的展开,展开之后。

它会它可以写成E,我们记一个符号叫EUV乘上DU方,加上2FUV乘上DODV,加上GUV乘上DV方,这里的E是什么呢,它其实是RU点乘RU,然后这里的F是什么呢,是RU点乘RV,这里的G是什么呢。

是RV点乘RV,也就是说我们的EFG刚定义的这三个函数,相当标量函数,其实给出了基底RU和RV下曲面的线,圆点基的一个度量,因为我们刚是才求点击的时候,得到的这三个函数的。

或者呢我们可以把刚刚我们求点击这个过程呢,给它写成一个这个,矩阵的形式也就是DX方等于DODV,乘上这个矩阵,再乘上一个DODV,这是前面是行向量,后面是列项,那么我们将这个刚定义的这三个函数。

EFG或者写成矩阵形式的这个对称矩阵,称之为曲面的第一基本型,它叫曲面的第一基本型,第一基本型决定了什么呢,它决定了曲面下线圆点击,也就是决定了曲面线圆的长度,第一基本型决定了曲面线圆的长度。

我们来考察一下,这个第一基本形构成的矩阵的行列式,比如说我们写成这个矩阵,然后对它求一个行列式,它等于1G减F方,我们把它展开就会发现他是RU方,点成RV方,然后后面是一减上cos方的。

RU和RV之间的夹角啊,这个大家可以展开一下,然后一减cos方是什么,就是sin方对吧,也就是说它是什么,它其实是are u叉乘RV的模长的平方啊,U差上RV的模长的平方,所以一定是大于零的。

也就是说这个中间的曲面,第一基本型所构成的矩阵是一个正定矩阵,它意味着长度一定是非负的,唉这些都是很好理解,然后最后我们还会看到说啊,在这个are u和RV如果它是正交的,也就意味着这个F要始终为零。

也就是说参数曲线网啊U0T和RTV0,如果它是正交的,那么就一定F始终为零,或者如果F始终为零呢,那么那个参数曲线也是相互正交的,也就是说are u和RV始终是正交的,然后刚刚我们已经知道。

如这个曲线把曲面上取一个线圆,怎么去计算它的长度啦,就是用这个第一基本形去计算它的长度,那么如果我在切面上任何画一个曲线,我怎么算这个曲线的长度呢,我们就只要对它的这个线圆做积分就好了嘛。

就限元做积分就好了嘛,然后我们就把它写开,哎,我们这个曲线是定义为这个自变量T的函数的,那这个就啊是一个很直接的推论,那么现在来看曲面面圆的面积,就是说呃如果我在曲面上去取一个取一个面。

也就是说我如何把一个曲面的面积,写成DU和DV的函数呢,那么我们看到你沿着DU方向走一截,沿着DU方向走一截,就是are u德尔塔U,你沿着这个DV方向走一截,就是av德尔塔V。

它们两个所形成的这个平平行四边形的面积,其实就是曲面面圆的面积,这个平行四边形的面积是怎么给出的,其实是are u叉乘RB给出的对吧,因为我们知道这个两个向量叉乘,得到的是两个向量构成的平行四边形。

就是它大小,它的面积在大小上和它差乘是相同的,那我们刚刚已经给给出这个are,U叉乘RV平方是什么,就在前移啊,U叉乘RV的平方就是EG减F方嘛,所以也就是我们同时证明了。

漆面面圆也可以写成这个D1基本型的行列式,开根号之后,点乘DU点乘DV的结果,这也是一个很重要的结论,第一基本型揭示了一个概念,叫做揭示了两个概念,一个叫保长,一个叫保角,就是因为一个正则参数曲面。

你不可能只有一种参数方法,参数化的方法,你其实往往对应了好多种不同的参数方程,比如说我们现在有两个这个正则的参数取名,第一个是R等于R1U1V一,第二是R等于R2U2V二,然后我们现在呢存在一个变换。

它使得U2可以写成U1V1的函数,V2也可以写成U1V1的函数,那么我们就可以我们对这个变换呢,我们怎么去考察这个变换呢,也就是说有一种变换叫保长变换,它可以将曲面S2的参数,就是你现在是U2V2嘛。

我们把这个曲面S2的参数也给变换为,U 1v1,同时呢我要保持它切向量的长度不变,那么你保切向量的长度意味着什么,就保长度必然是保内积的,为什么,因为内积是什么呀,我们把内积写开,我们把内基做一个展开。

内基其实是这两个向量相加的长度的平方,减去每一个向量长度的平方对吧,所以如果你在变换前后,这个三个长度都是不变的,那么你的内每你的内积也是不变的,也就是说你切向量的,如果你切向量长度都不变。

你切向量的内积液肯定不变,也就是说在曲面上保内积,那么保长意味着保内基,保内积意味着保第一基本型,因为刚刚我们已经知道,这个第一基本型是在算内积的时候,算出来的东西,也就是也就是说这个E1U1V一。

要等于E2U1V一,比如说如果这两个切面之间是保持,这他们俩存在一个变换,这变换是保长的,那么他们俩要有共同的第一基本性,共同的E共同的F共同的G,除了保长以外呢,这个变化还可以是保角的。

也就是说将曲面S2的参数给它变换为U1,V1之后呢,它切向量的夹角是不变的,刚刚我们说切向量长度不变强,它要求切向量夹角不变,那么夹角怎么算,夹角两个向量的夹角是他们俩的点乘,除以每个向量的模长对吧。

那么我们这里给出两个定理,第一个定理是保角的,充要条件是D1基本形成正比例,啊这事情就是我们可以考察一下原因,就是呃因为我们可以先看RU和RV的夹角,AU和RV的角角,要是它是F1除以呃。

根号下E1G1,那么这个东西在变换前后得是不变的对吧,那它在变换前后不变,就意味着12F2除以根号下122,它也等于这个东西,那同样的我们可以取这样一个切向量,这样这一对切向量的夹角啊。

他就得到这样一个恒等式,再取这一对切向量的夹角,就要得到这样一个恒等式,这两个东西相等,然后我们把这个东西给求解一下,求解之后,我们就必然要满足什么呀,要满足E1等于K倍的E2,F1等于K倍的F2。

G1等于K倍的G2,并且K2是大于零,所以如果两这个变换之后,两个曲面的参数方程满足这个性质,我们就称这个这这个变换是保角变换,定理二是说,任意两个正则曲线参数,曲面在区局部上都可以建立一个保角的对应。

这个定理其实呃在统计学当中应用很广泛啊,因为我们这这就和纹理映射有关,我们在做纹理映射的时候,我们其实希望这个呃我们的纹理,因为我们纹理是一张,一张这个平面上的贴图。

而我们映射到的额是一个三维式中的曲面对吧,那我们希望它映射过来之后,不要丢失太多的信息,不要尤其是我们希望在存储的时候要尽量均匀,就你参数化要尽量均匀,因为其实存纹理贴图的这个过程。

就是曲面的参数化的过程,我们希望这个参数化减量均匀,那怎么去衡量这个均匀呢,那一个指标就是保角的,就是说这个纹理到曲面的映射是保角的,我们在同心学当中建立了很多种方法,来给定一个曲面。

生成它的一个倒角的参数化方式啊,这个大家可以去看这个games系列的后续课程,以及相关的这个图形学的论文,介绍一下这个可展曲面的概念,什么叫可展曲面呢,就是我们先看直吻面。

一条曲线在空间中运动所产生的曲面,它就叫直纹面,这个曲线可以任意的方式运动啊,但是他必须以一个整体来运动,比如说呃我们可以用这个数学的形式来讲一下,什么叫做直纹面,直纹面可以写成一个向量函数。

加上V乘上另一个向量函数这样的形式,那V就是曲线运动的速度啊,你可以这样去理解,然后呃就是我们称之为前面的这个东西叫准线,然后V乘上LU这东西叫做直母线,就是它运动的方向,比如说柱面呢。

它就等于直母线的直母线是一个子母线,后面这个东西的U干掉了,也就L始终是一个定值,那么就会产生注明,然后如果前面的A是个定值,就会产生锥面,就是从一个点出发,就会产生锥面,这个就是柱面,这是柱面。

柱面就是L始终朝一个方向对吧,L始终朝一个方向,以沿这个这个这里这个曲线沿这个方向动,就会形成柱面啊,这个就是说呃我这里我我这个曲线,沿这个沿这个方向不断这样一条从这个点出发,然后我会发出无无数条射线。

然后然后这些射线之间,你也可以把它看成是个运动的关系嘛,然后这些它运动结果就会产生一个锥面,然后第三个就是切线面,切线面是说我给一个空间上的曲线,然后它的切线不断的不断的有,它的切线可以形成一个面。

我们注意到这是空间曲线啊,就我们的这个切线,它这些切线它是,它它不一定落在一个平面内,如果落在一个平面内,那你可能就构不成一个这个,你给你构成了这个曲面,它可能就跟柱面没什么区别了。

就它不一定在一个平面内,什么叫可展曲面呢,我们先把可展曲面定义为,如果直纹面的切平面,沿每一条直母线都是不变的,也就是说我们他是说A撇ULUL1撇U,我妈写成行列式,这个行列式的结果是零。

然后有一个定理是说,可展曲面一定是柱面,锥面,切线面,以及三者以充分连续可微的方式拼接的结果,它叫可展曲面,可展曲面在局部上呢,都是可以和平面建立保长对应的,或者我们可以把这个可展曲面就定义为。

在局部上,在每个局部上都可以和平面建立,保长对应的曲面,叫做可展曲面,我们也可以完全可以这样去定义啊,这这这其实是什么意思呢,就是我们可以想象,如果有一有一块布料,这个布料是处处不可拉伸的。

什么叫不可拉伸,就是布布料上任意两个点,当这个布料被揉成揉成一个布团以后,我们在这个曲面上去看这两个点之间的距离,就沿着曲面去看这两点的距离,它是不变的,也就是说,曲面上任意两个点之间的距离是不变的。

那么它就是和可以和平面建立了一个保,他就是和平面建立一个保长对应,或者我们就可以把可展曲面的几何,看成是不可拉伸的,布料,运动的结果,他就是不可拉伸的布料,你能解的,因为不可拉伸的布料,你放平的时候。

它它就是一个平面嘛,然后你运动之后,它又揉成了一个东西,这个东西需要是可展曲面,曲面刚我们考察了他的第一基本性,那他既然有第一基本型了,也就必然还会有第二基本性,曲面的第二基本性是什么呢。

它是对曲面弯曲程度的刻画,我们知道第一基本型,它是对曲面上的长度的刻画,那么第二基本型就是在曲面上某一点附近,弯曲程度的刻画,事实上他是什么样,就是曲面上取一点,我们看到这个这是个曲面啊。

这个S这是一个曲面,这是个曲面上面这个东西它是一个曲面,我们考察漆面上一点U0V0,我们在在曲面上,在附近再取一个点,叫U0加德尔塔UV0,加德尔塔V,然后我们考察这这两个点之间的距离,那就是RU0。

加德塔UV0,加德尔塔V减去RU0V零,然后我们把这个距离呢向曲面的法方向,投影法向量方向投影,投影之后的结果,我们可以把它整理一下,它等于什么呢,它等于12的L乘德尔塔U方。

加上2M乘德尔塔U德塔V加上N乘德塔V方,也就是说,如果他在取极限的时候,这个德尔塔也会变成微分微分,就是长这样的形式,就刚刚我们给出的结论是D方R点N等于什么,等于LDU方加IMDUDV加NDV方。

然后D方R点N呢又可以写成是负,DR点乘DN的形式,这就是一个微分运算,是个微分运算,那可以看一下这个为什么是为什么是等价的,其实我们看考察的就是DR点N,你给它取D取微分之后会是什么。

因为DR我们刚刚知道,N其实是由DR得到的是吧,我们这RU插上RV得到的N,所以DR点N1定是零,也就是说DDR点N1定是零,我们就会发现D方R点N加上DR点DN等于零,也就是这个也就是这个恒等式。

前面这个恒等式,刚我们这里涉及到了三个曲面上的这个量,LMN这里的L是什么呀,它是对U方向取二阶导数啊,UU点乘N或M呢是在UU方向取一次导数,在V方向再取次导数的二阶混合偏导数。

RUV点成NN呢是在V方向取二阶偏导数,点乘N,然后同同样的类似于这样底下的这个恒等式,类似于这个恒等式,我们可以把L写成RU点成NU,把M写成RU点成NV或者是RV点成NU,而N写成RV点乘NV。

这里的下标都不表示对这个方向求偏导,那么这个第二基本形有什么用呢,我们先来看两个特殊的曲面的第二基本型,第一个特殊的曲面就是平面,我们知道平面的第二基本形式是什么呢,我们可以算一下。

我们会发现平面的第二基本形啊,它恒等于零,为什么我们看这个定义,如果这个东西它是一个平面的话,你在平面上取一个附近取一个长度,这个长度是不是还是跟N完全垂直的呀,所以你你算出来的这个长度有长度。

在N方向上的投影也一定是零,所以说平正则曲面是平面的一部分,当且仅当它的第二基本形式恒等于零,然后我们已经证明了这个啊必要性,下面我们也可以证明充分性啊,充分性是类似的啊,就是说就是我们在一组基底上。

然后我们得到了一个这样的结果,还是DR点N等于零,就是说一个方向和一个法方向,他们俩点乘一定是始终,他们俩点乘始终等于零,也就是他们俩始终是垂直的,根据平面的定义,我们就会发现这样会生成一个平面。

类似的呢,我们可以看球面的第二基本形,那么球面的第二基本型有什么特征呢,它始终是该球面自己第一基本形的非零倍,它始终是自己低基本型的非零倍,也就是说D方R等于什么,等于负DR点DN等于负球面的半径。

负R分之一的DR变成DR,我们刚刚知道这个,这里有个地方啊,点N看点N,他说D方R点N也就是第二基本型,是第一基本型的DR点DR的负R分之一倍,然后我们来看曲面的曲率是什么。

我们刚刚定义了曲线的曲率对吧,那么我们可以用曲线的区域,去派生一个曲面的曲率出来,假设在曲面上有一个曲线,曲线有个参数方程,也就是说U是S的函数,V是S的函数,那么这个曲线呢有一个单位切向量。

它是RU乘U1撇S加上RV乘上V1撇S,那么同时它就会有个区域向量,曲对向量是阿法阿尔法S的,这个导数就是阿尔法一撇S,阿尔法一撇S等于KA乘以贝塔,这都是之前的定义呀,它等于什么呢。

它等于RUU然后U1撇方2RUVU1撇,V撇加啊VVV1撇方加RUU两撇,加RVV两撇,我们把这个曲率向量向曲面的法向做一个投影,投影完之后,我们就会发现卡帕N等于阿尔法一撇,点点乘N等于什么呢。

它就等于L乘上U1撇方,加上2M乘上U1撇V1撇,加上N乘上V1撇方,这时候我们将卡帕N就称为曲面上,刚刚我们考察这条曲线的法曲率,并且我们发现法曲率止于曲面的第二基本型,LMN和曲线的单位切向量有关。

单位切向量有关,就是这里的U1撇V1撇,只和这两个量有关,只和一个第二基本型,一个U1撇V撇有关,然后梅尼埃定里给出了是说,如果曲面上两条曲线,在某一点有相同的单位切向量,那么它的法曲率是相等的。

这定理,其实从我们刚刚这个计算结果,已经完全可以看到了是吧,你有两条切线在某一点有相同的单位切向量,说明你的U1撇和V1撇是分别相等的,你U撇V撇分别相等,你计算的区域向的法向投影。

也就是法区域就一定是对应相等,同时呢我们发现这个U1撇,这东西挺有意思的对吧,这是什么呀,就是U1撇是DU比DS,它也就是上面是DU方夹,是这个DS方类似的呢,上面是DODV以下也是DS方。

上面是DV方,底下也是DS方,DS方是什么,DS方就是第二方,就是第一基本形,就是EDU方加2FDUDV加上GDV方,这是它的分母,这分母是第一基本型,分子是第二基本型,这个东西就叫法区。

这个东西就叫法区,那么既然法区律只和这个第二基本型以及,也就是说,我们现在就发现这个法区域,只和第二基本型以及一个曲面的切向量有关,所以呢我们不妨把法曲率就定义成切放。

用切某一个切方向DUDV来定义法曲率,我们就抛弃那条曲线,直接这样去定义法曲率,这时候呢我们就会发现呢在法截面上,法结线的平面区域与法区域在数值上是相等的,法截面是什么。

法截面就是我们刚刚取了一个切方向嘛,这个切方向和曲面的法方向一起,它会构成一个平面,这个平面我们叫它法截面,而法截线呢就是法截面与曲面的交线,就是比如说这曲面就是一个平的,然后我在这个地方取了一个方向。

叫它这个切方向啊,这个前面有一个这个法方法法向反方向嘛,然后他们俩所得到的法界线就长这样,这就是法界线,刘刷,我在法截线,这是二维吗,这在二维的一个线,它显然会有一个平面区域,这个平面区域就是法区域。

法器律会成立一个欧拉公式,欧拉公式是说在正则参数曲面上,在任意一个固定点呢,它的法区域,因为法区域我只要给一个切方向,我就能生成一个法区域,这个法确率必然在两个彼此正交的切方向上,分别取最大值和最小值。

而且呢我们把法区域取最大值的,可或最小值的方向呢称为曲面,在该点的主方向,相应的法区域呢称为曲面,在该点的主区域,那么主区域就是卡帕一,卡帕二,然后取最大值的这个法方额。

法法方向呢我们可以取一个这个角度参量,角C塔零,那么欧拉公式其实给出了,就是说在这一点任取一个反方向,任取一个法方向,我都会得到一个法曲率,这个法曲率等于卡帕一乘cos方,theta减theta0。

加上卡A2乘sin方,theta减CA0,卡帕一和卡帕二分别都称之为主曲率,且开帕一大于等于卡帕二,这个欧拉公式怎么证明呢,其实有一个比较简单的方法去证明,但这个方法呢需要一个额稍微深入一点的数学。

我们来考察高斯映射,高斯映射它把任意一个曲线啊,曲面上的点呢映射为这一点的法向量长,右边这样这个曲面上有一点R,它有一个法向量N我们从R映射到N,从R映射到N有,那么我在曲面上的一个区域呢。

都会映射到三维空间中,球面上的一个区域,因为这些法方向之间应该是连续过渡的,这些法向量之间应该是连续过渡的,那么从这个映射叫高斯映射,就是右边这幅图这个的映射叫高斯映射。

从高斯映射呢我们可以得到一个诱导的切映射,诱导切映射是说,我对于每一个这个诱导牵引式,要满足什么性质呢,满足g star r u等于NU,也就是啊,在U方向的偏导数会生成N在U方向的偏导数。

而在V方向的偏导数会生成N,在V方向的偏导数,这是从高斯映射得到的诱导切映射,这个诱导切映射取一个负号,有个名字叫做位因因加藤映射叫未因加藤映射,回音加藤一首,这里还有个点成V1加藤映射。

是说第二基本型它等于什么,它等于负DR点DN嘛,刚刚我们已经说出了第二基本型,它就等于负DR点DN,那么既然我这个魏因加藤映射,具有把DR映射成DN的能力,映射成负DN的能力。

所以我们利用位因加成映射吧,记住W的话,这个第二基本型就可以写成WDR点乘DR,也就是说他是这个时候,这个微因加等映射是一个线性映射,这个线性映射呢那它就会有特征值,特征值。

就是使得魏因加藤映射作用在一个切向量上,它等于拉姆达直接乘这个切向量的结果,那么这个时候得到的DR呢就称之为特征向量,这个特征向量呢,我我们这个特征值会发现发现什么呀。

特征值它就是卡帕N等于WDR点DR,除以DR点DR,那么WDR点DR是第二基本型,DR点DR是第一基本型,第二基本形式一旦你写成WDR的形式,你就会发现它等于第一基本形成一个兰姆达。

就是说兰姆达就是这个特征向量方向的法区域,同时我们发现这个微因加藤映射具有共轭性,就如果我任取两个这个呃切向量,一个叫DR,一个叫德尔塔,我不管是把W作用在DR上,还是作用在德尔塔R上。

他俩点乘的结果都是相同的,这说明微因加层映射具有共轭型,那么二维向量空间到自身的自共轭映射呢,一定有两个十字特征值,一定有两个十的特征值,我们把它分别记作兰姆达一和兰姆达二。

并且我们假设拉姆达一是大于等于兰姆达二的,那么根据这个线性代数的相关知识,当兰姆达一不等于兰姆达二时,这个特征向量一定是正交的,否则呢,也就是说兰姆达一等于兰姆达二的时候呢,任何向量都是特征向量。

这个时候我们就可以证明这个欧拉公式了,因为我们假设这个拉姆达一不等于拉姆达二,也就是我们还会有两个特征向量,特征向量一个是WE1等于拉姆达111,W12等于兰姆达212,那么任何切方向呢。

我们都可以把它用这两个特征向量展开,因为这个特征向量是正交的嘛,特征向量正交,也就是说特征向量E等于cos theta,一一加sin thet12,那么WE是什么,就作用在这两个特征向量上。

变成拉姆达1cos theta11,加上兰姆达2sin西塔一二,于是我们可以去计算E方向的法曲率,卡帕西塔等于WE,点E除以E点E又是兰姆达1cos方形,加上兰姆达2sin方Y,这里的兰姆达一。

也就是卡帕一是比较大的那个主曲率,兰姆达二是等于卡A2,等于比较小的那个主曲率,这样都是主区域,也就是主曲率其实是未因加藤映射的特征值,那么如果拉姆达一等于拉姆达二,那就更好证明了对吧。

这个时候他任意方向的法系列相同,所以欧拉公式仍然是一定是成立的,这时候我们把这样的点呢就称为起点,也就是说如果在某一个点处,它的法曲率的最大值和最小值相等,或者说它的特征值两个特征根重合。

那么这样的曲面上的点我们叫做起点,在起点处呢,第一基本型和第二基本型的呃,就是第二,基本型和第一基本型的比值呢是恒定的,就是卡帕,所以呢LMN和EFG是成比例的,这个比例如果是零,我们称之为平点。

如果比例不是零,那我们称之为圆点诶,我们刚发现,我们考察的平面和曲面的第二基本型,这时候我们也可以用更简单的形式表述了,就曲面是平面,当且仅当它上面的点都是平点,曲面是球面,当且仅当它上面的点都是圆点。

然后利用这个主曲率,一个主曲率,一个大主曲率,一个小主曲率嘛,我们取它们的平均值叫做平均曲率,平均曲率可以写成,第二基本型和第一基本型的函数和高斯曲率,高斯曲率就是这个两个主曲率相乘。

它也可以写成第二基本型和第一基本型的函数,我们可以看到这里的分母是第二基本型的函数,分子是第一基本型的函数,这个是二,这个是一,这个定义叫平均曲率和高斯曲率,然后曲率的概念在我们做这个物理模拟的时候。

其实就很重要了,因为我们在这个很多,比如说表面张力定义的是平均距离的函数对吧,它是等于西格玛H就是表面就是决定表面张力,然后同时呢,我们在这个呃定义布料的弯曲的能量的时候。

我们也可以往往把它写成这个平均曲率的,某一个次幂一倍卡帕啊,K乘上H方倍魔王也这样去定义,而高斯曲率呢,高斯曲率其实是这个曲面一个更重要的性质,我们一会来说这个高斯曲率它意味着什么。

刚刚我们在讨论曲线的时候,给出了一个曲线的唯一性定理是说,如果曲线的呃,这个曲率和挠率是始终对应相等的,这个时候我们曲线的形状也是完全相等的,那么对曲面来说,情况稍微复杂一些,是说。

如果第一基本型和第二基本型是分别相等的,那么这会构成这两个曲面是完全相等的,两个曲面间都只差一个刚体运动,但是不一样的地方在于曲线,我们刚刚说你给出任意一个连续的曲率,任意一个连续的脑力。

你都可以生成一个曲线,并且这个你你想怎么给怎么给,但曲面并不是这样,曲面的第一基本型和第二基本型,你是不能乱给的,它的第一基本型和第二基本型是互相耦合的,也就是说,你不是任意给EFGLMN。

都能构成合法曲面的,那么什么样的EFGLMN能构成合法曲面呢,它是有一个充要条件,这个充要条件叫高斯柯达齐方程,然后这个方程就超出了我们今天所说的内容,大家有感兴趣的话,可以去看一下。

用这个方程呢可以证明一个非常漂亮的结论,叫高斯绝妙定理,高斯绝妙定理说,曲面的高斯曲率是由其第一基本型完全决定的,也就是说它是由EFG完全确定的,如果我知道曲面上任何一个点能第一基本型。

我同时就也知道了,曲面上任何一个点的高斯曲率,当然大家可能会问啊,我上一页给出的这个高斯曲率的表达式,明明它的分子是第二基本型,分母才是第一基本型,那你凭什么就是只知道低基本型。

你就能给出这个高斯曲率呢,因为我们发现它的分母是什么分母啊,分子是什么,分子是LN减M方,我们用这个高斯柯达系方程可以证明,LN减M方,事实上它可以写成EFG以及EFG的,对于UV的偏导数。

用它们的函数来表达LN减M方,这个东西只和第一基本性有关,那么我们知道这个当第一基本型不变的时候,称之为保长变换对吧,那么第一基本型,而低基本型完全决定了高斯曲率,也就是说高斯曲率是保常变换下的不变量。

那么一个这个可展曲面,我们刚刚是说可展曲面一定要在局部能够保长,变换到一个平面,而一个平面的高斯曲率是什么,高平面的高斯曲率是零对吧,而平面的高斯曲率等于零,所以说无起点一个曲面。

或者我们说无起点的曲面,它是可展曲面的充分必要条件,又可以写成高斯曲率始终为零,高斯曲率使用为零,高斯曲率为零,说明这个曲面至少在,至少它的两个主曲率中有一个得是零,它的高斯曲率才始终为零。

这个定理它为什么叫高斯绝妙定理呢,因为他给出了一个非常重要的性质,是说我们研究曲面的弯曲程度,并不需要站在曲面之外,因为第一基本型给出的是对长度的度量,就是在我们这个传统曲面论的曲平面。

曲面论的概念当中,第一基本型给出的是关于长度的,而第二基本型看关呃,考察的是关于弯曲的,同时曲率考察也是关于弯曲的,有平均曲率H高斯曲率K这都是关于弯曲的,这是平起,这是高曲。

而我们说这个K居然完全是由长度来决定的,其实这个结论说明,我们可以站在一个曲面之内来考察,这个曲面的弯曲性质,这也就是我们刚刚所说的现代微分几何,或者说黎曼几何,它的源头,就是一个曲面的弯曲。

并不需要站在曲面之外才能看出来,我们只要在曲面之内测一测它的长度,测一测它上面微圆的程度,我们就能得到关于曲面弯曲的性质,这是这就是为什么这个定理叫做高斯绝妙定理,这其实是一个非常神奇。

非常漂亮的一个性质,最后呢我们来看一下,刚刚我们已经大体上介绍了,关于曲线和曲面的相关的一些定义和一些定理,最后我们来看一个,大家可能比较关心的一个问题,在前几集呃。

我看见在我们的QQ群当中也有同学在讨论,就是关于曲线和曲面的连续性问题,在图形学当中,我们广泛涉及到的是几何连续性,而几何连续性呢,它并不是一个非常显然的连续性,非常显然的连续性叫参数连续性。

参数连续性是,因为我们曲线我们给定了一个参数方程,这个参数方程既然它是一个方程,我们就可以很容易地定义它是几阶连续的,比如说这个连接连续,就是说RT是连续的,一阶连续呢是说这个R1撇T是连续的。

就他对T求一次导数之后就连续的,二阶连续呢是说R两撇T是连续的,这些东西都非常好好理解,但是参数连续性存在一个问题,就你的连续性是依赖于参数的选择的,你在有一些情况下,有些参数的选择下,它可能是连续。

但有些参数的选择下可能就不是连续了,这其实是不利于计算机辅助设计或者说cad的啊,这叫CAAD,我举一个最简单的例子,就是刚刚我们说的这个呃曲面的例子,这个球面的例子,球面的极点处。

它参数方程是不连续的,但是这个几点选取是有任意性的,事实上我们看一个球面,我们感觉它非常光滑对吧,他不应该不连续,于是呢在同学当中,大家就定义了一种连连续性叫做几何连续性,对于曲线来说。

两段曲线是连接连续的,意味着什么,意味着它有公共的连接端点,这个和C0是一样的,比如说G0,我们往往不把它和C0做区分诶,在这个点处左边有一段曲线,右边有段曲线,它们俩只要在这一点重合了。

我们就叫它连接连续的零阶几何连续的,那么一阶几何连续呢是说对于,两段曲线在这个点下处相交,它们在相交处会有两个切方向,两个这个切向量,我们需要这两段曲线,在连接处的单位切向量是公共的,他们俩要是要重合。

当然有人可能会杠说啊,那这个东西它是G1的吗,就是说这个点处单位切向量朝这个方向,这个点处单位切向量朝这个方向,那么它就不是G1的,这样就不及这个单位向量是反平行的,它不是平行的,这时候它不是记忆的啊。

这种情况不非记忆这种情况,飞机必须像上面这个它才是记忆的,也就是说这个点,这个我沿着某一个固定的方向去考察这个曲线,在这个点处,它单位切向量左端和右端得是重合的,那么二阶连续是什么,是什么呢。

就是这个连接处不仅有公共的单位,且向量切向量,它还有公共的曲率向量,它还有公共区域想,也就是在这点处,你的单位圆,因为你我们的单位圆,是拿曲率和主法向量来决定的对吧,或者我们可以换一种方法理解。

就是两段曲线在连接处有公共的区域相连,有公共区域向量,那么类似的啊,去公共的切立项意味着公共的单位圆,但如果你的连接方式是说你的,你有一个大小相同但方向相反的单位圆,你是不是G2的呀,你不是G2的。

你不是jr的啊,G2他这个也是非G2,G2要要求单位圆是重合的,就是说你只能这样,G2要求单位圆是重合的,但额不是不是单位圆是曲率,语言是重合的,G2要求曲率语言重合,这是对于曲线来说的。

那么对于曲面来说也是一样的,曲面的连接连续是说这个参数方程连续,一阶连续,就是说参数方程的两个偏导数都是连续的,二阶点是二阶连续,是说这个二阶偏导数,二阶混合偏导数都是连续的。

同样的它我刚已经举了球面的例子了,这个参数连续性不好用,我们还要定义曲面的几何连续性,曲面的几何连续性是说,我两块曲面在它连接的地方有公共的连接线,它可以正好拼到一起,那么它和C0是一样的,一阶联系。

是说两块曲面的连接线上有公共的单位法向量,公共的单位法啊,嗯单位法向量就是N等于这个啊U差RV,然后给它做一个正交化啊,做一个单位化就等于这个,就是单位法向量是一致的,也就是啊。

如果有同学说这个单位含量有的是朝这边,有的是朝另一边,那这个东西它是不是是不是几何连续的,它也不是几何连续的,就其实几何连续它更多是在你的肉眼直觉上,你肉眼直觉上觉得他不够连续,它一定不是连续的。

它一定不是联系的,这个单位法向量一定得是重合的,当然你可能说,这里只和这个参数化的方向有关嘛,所以只和这个参数化的方向有关,这个参数化决定了这个N是沿着就是这个方,对左边这块曲面来说。

我可能也以这个方向为正方向,对右边我可能以这个方向为正方向,但其实你看起来他好像还是应该是连系列,这个时候其实是说明,你右边这个曲面的参数化的,这个选择的参,这个参考系和左边的这个属性是相反的。

比如说左边左边是右手型,右边可能选择左手系,那这样是不对的,这样是不对的,就这个这两个曲面从在几何连续性上看,他应该是几何连续的,只不过你这个参数化的方式,使得它的单位法向量朝向了不同的方向啊。

这这这个事情是和你的这个参数化有关的,我们需要首先保证这个参数化是属性相同的,当然一个反反面例子是,如果这样去定义一个曲面,也就是这个点这个法法向量朝这,这个点法向量朝这,它那这个东西是不是几何连续啊。

你这肉眼看它不够连续,就他一定不是几何连学,它不是几何连学,它不是几何这个一阶连续,那么什么是二阶几何连续呢,就是两段曲面在连接线上,不仅有公共的单位法向量,它还有公共的法曲率,这个法曲率是沿任意方向。

在两个平面上都会返回,我给我一个相同的法区域,这就叫二阶连续,所以我们可以看到曲面的几何二阶连续,其实是一个非常非常要求,非常非常高的这样一个性质,要求非常非常高的一个性质。

好好以上呢就是我们今天课程的内容,大家有什么问题吗,对几何一阶连续需要是同向的,我们刚刚已经说过了,这个几何一阶连续,说的这个单位切向量一定得是同向,就是你在你在肉肉眼上看,如果你觉得它不够连续。

那它一定不是几何连续的,就几何连续,它是一个几何的概念,是一个你肉眼上应该有,在直觉上看它很连续的这样一个概念,所以就是如果他是不同项,其实这东西非常不连续对吧,就我们刚举的这个例子,你在这个地方。

它是这个切向,切方向是相反的,但看起来非常不连续,好的好的,那我们今天的课程就到这里,然后错过了课的小伙伴,可以之后去看我们直播的回放,然后我们下节课的内容是关于微分方程,然后今天这节课也是有作业的。

然后之后主教会在群里给大家下饭。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

GAMES001-图形学中的数学 - P12:微分方程 - GAMES-Webinar - BV1MF4m1V7e3

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好的啊,同学们好,今天我们来讲这个图形学中的数,学的微分方程的部分,然后本次课程是我们这个连续,数学的最后理解,就如果大家去看我们的大纲的话,可以看到我们我们是之前讲了什么呀,我们讲了这个场论。

讲了这个微分几何,今天是这个微分方程,对这个是连续数学的,就是这个部分的最后一节课了,然后今天这节课之后呢,我们就会进入离散的部分,我们会去讲一些这个线性求解器,然后最优化,以及这个机器学习。

或者可以简单地理解为这以上的部分它是数学,更偏数学,这以下的部分更偏计算机,对,今天这节课就是要起到这样一个,承上启下的作用,那我们下面就来看这个微分方程的相关内容,呃。

我们说这个图形血液当中的微分方程,其实相当多啊,就是从常微分方程到偏微分方程,有各种各样的方程,都是图形学需要去求解的,额所以呢作为一个总结呢,今天这节课呢,就是首先他大家要把定义成这个目录。

就是挂一漏案,我这里肯定没有办法把所有的这个图形学,涉及到的微分方程知识,都给大家在一节课当中讲到啊,有些地方可能就会讲的比较快,大家之后再用到关于微分方程的,相关内容的时候,应该去。

到时候根据我们今天讲的内容,去查阅相关的资料,然后更详细的学习,我们今天可能就会从这个,最简单的微分方程出发,然后一步一步到比较复杂的微分方程好,那我们首先来看什么是微分方程,这个其实呃。

如果大家修的修了这个高等数学的话,两学期的高等数学的话,应该都涉及到微分方程,当然如果大家是这个修的三学期的数学分析,那么对于一个大一的同学来说,可能就还没有学到五分方程,那么我们说的微分方程呢。

它表示的是未知函数,未知函数的导数,当然这里的导数可能是一阶导数,二阶导数,各种各种阶的导数啊,与自变量之间的关系的方程,然后求解微分方程是要干什么呢,就是我们要从这个方程里去,求解出这个未知函数。

求解这个未知函数的过程就叫求解微分方程,微分方程的分类,最基础的分类就是根据这个常微分方程和偏,微分方程来分类,所谓常微分方程就是这个未知函数是一元函数,那么这里面涉及到的未知函数的导数呢。

也就全都是全导数,就是如果您看到的这个里面涉及符号都是D,那么他就是个常微分方程,如果未知函数是个多元函数呢,就是里面涉及到的导数呢都是偏导数,大家可以看到就是这个偏导符号par手。

那么这个时候呢它就是个偏微分方程,微分方程有很多种求解方法,然后今天我们会大体上去讲,以下这四种求解方法,第一种就是通解法,通解法是一些非常简单的特定的微分方程,它会存在一个通解。

也就是说是满足这个形式的微分方程的,所有的解我都给你找到了,你只需要去代值就能决定它的解究竟是什么,这个是通解法,然后第二个求解方法是这个分离变量法,分离变量法也是求解微分方程当中,一个非常重要的手段。

然后它其实呃,在常微分方程和偏微分方程当中,的表现形式是有所不同的,这个我们一会会说,然后就是格林函数法,格林函数法呢,它其实我个人认为,它更多的其实可以用在数值当中,就分离变量法,它是一种分析的手段。

它往往的还是呃就是数学家,物理学家他们也会去用的,而格林函数法呢,就是是一个从数学到计算机的桥梁,因为在计算机当中很多时候,求解方程需要利用这个格林函数,而最后我们就会看到数值法。

那么数值法求解微分方程,事实上就本,它本身就是计算机图形学研究的核心之一,就如果你用这个数值法,发明了一种更好的数值法去求解微分方程的话,那么你是可以去投稿计算机图形学相关的论文,好。

那我们就开始今天的课程啊,有同学问会有录播吗,games系列的课程都是有录播的,首先我们来看这个最简单的分离变量,就是在常微分方程当中的分离变量,分离变量的标准形式是比额等式,左端是普SYDY等式。

右端是PHXDX,那么如果我们将等式两边都做积分呢,我就可以得到方程的通解,就是左边积分成普SYDY,右边积分成这个FXDX的积分,找到它的原函数,找到它的原函数,那么找到原函数呢,这中间一定加一加。

减一个乘数是不会影响方程的解的,对这个,所以我们来看一个例题,就是比如说我要求方程X乘一加Y方,DX减去Y乘一加X方DYY等于零,这个方程的通解,那么首先我们会发现。

我如果想把它整理成我们上面所有所说的这个,标准形式,我要怎么办呢,我要在等式两边同时去除,以一加Y方和一加乘以一加X方,那么左这个时候左式就会变成Y除以一加Y方,DY等于什么呢,等于X除以一加X方DX。

这时候等式两边就都可以积分了,等式左端积分是什么呀,是二分之1LN1加Y方等式,右端积分是二分二分之1LN1加X方,然后这个时候呢他还差一个常数对吧,这个常数呢我们可以把它写成。

我们把这个令这个常数等于二分之1LNC,注意到这个LNC的取值是负无穷到正无穷的,所以1/2,LNC和上面我们这个写的一个某一个常数,C1撇是等价的,这样整理一下会得到什么呢。

会得到LN1加Y方等于LNC乘一加X方,那么我我们在等式两边同时取指数E的,指数次幂就会左边变成这个一加Y方,右边变成C1加X方,就是左边变成这个右边变成C1加X方,然后我们再移一下项。

就会得到这个式Y方等于C1加X方减一,这就是我们求得的这个圆方程,当然你如果想把写成Y是X的函数的形式,也没有关系,你可以把它写成Y等于这个正负根号下,C1加X方,减一,这都是可以的。

这是最简单的求解微分方程的办法,那么我们来看一下稍微复杂一点的情形,首先来看这个一阶的线性微分方程,一阶线性微分方程它是有标准形式的,就是Y对X的导数,加上某一个这个呃函数乘以Y等于另一个函数。

如果呢这个等式右端是恒等于零的,那么这样的方程我们称它为其次的,如果等式右端不等于零呢,这样的方程我们称它为非齐次的,那么下面我们就来看这个线性齐次方程的解法,那么线性齐次方程的解法是。

就是它本身长这样的形式,这个形式是很容易分离变量的对吗,我们首先因为这个一阶偏导数具有线性性,我们可以是等式两边先乘以DX,然后再除以Y,这样就会得到什么结果呢,就是DYY除以Y等于负PX乘DX。

然后等式两端做积分,左边变成LN绝对值,Y右边变成负的PX的积分,加上C然后我再求E的指数幂,就会得到Y等于C乘E的负,上面是PX的积分次幂,然后这里的C是等于正负E的C次幂对,就是分离变量。

然后做积分就可以了,这个在图形学当中是有应用的,最典型的应用就是体渲染当中,我们来求解,这个光线在具有这个透射率的体介质当中,散射的时候,它的这个呃就是辐照度的这个衰减量。

然后这时候我们再来看这个线性非齐次方程,它跟之前上一页,我们看到的线性齐次方程的唯一区别就是等式,右端现在有一个函数QX它不再是零了,那么如何去求解呢,我们使用待定系数法去求解,我们令什么呀。

我们令Y等于你们看到这前面,刚刚我们这里是一个常数C,现在我们令这里变成一个函数CX,首先那么我们假设Y等于这个东西,然后我把这个假设得到的结果去代值,代值的话,因为这个DY除以DX。

我们首先要求Y对X的导数,求出来的结果就是CPX乘以,这个加上CX乘以,这个这个就是一个简单的积分啊,微微分练习求导练习啊,可以自己做一下,做完以后把这个式子给代入到上面的线性,非齐次方程当中去。

那我们就会得到这个呃,展开一下就是Y撇加PXY等于什么,等于刚刚我们令它等于这个,然后呢整理一下就会变成C1撇X的积分,等于QX乘以后面这个东西的积分,然后CPX的积分就是CX。

所以我们就会得到CX等于这个东西,cs等于这个东西,那么Y呢最后我们就会整理出来,它等于这个形式,这里我们会发现它和上一页,我们得到的齐次方程的解,只是多了这一项,如果我把这一项去了。

他就是上述这个线性非齐次方程,所对应的齐次方程,就把这个等式右边变成等于零,它的通解,那么如果我去掉这一项,去掉这个加C这一项,只留下这个多出来的这一项,它也就是这个东西。

它呢其实是这个非齐次方程的特解,也就是说你加不加这个C其实是不影响结果的,就这个地方你加不加这个C是不影响结果,你可以把它去了,它就是这个非齐次方程的特解,然后有一个这个定理就叫非齐次方程的。

通解等于什么呢,它等于其次的通解,加上非齐次的特解,那么什么叫通解,什么叫特解,那这时候就可以有另一种理解方式了,凡是一个简单的记忆方法,凡是在这个解的表达式里面,有某一个不确定的常数C的,它就是通解。

没有这个不确定常数C的,它就是特解,好,我们刚看到的都是线性一阶的线性方微分方程,下面我们来看这个一阶的非线性微分方程呃,最简单的例子是这个伯努利方程,它和我们刚刚看到的式子最大的差别是等式。

右端现在不仅有QX这一项,还要乘以YN啊,这时候我们说N不等于零或一,N不等于零或一,为什么呢,如果N等于零,它就会变成一阶这个呃线性非齐次方程,如果N等于一呢,那其实它就会等于一阶线性齐次方程。

那么怎么去求解伯努利方程呢,简单的做法是这个变量代换,量代换的结果是,我们可以去呃考察这样一个事情,我们把等式左右两端都去除以Y的N次幂,那么左边就会变成Y的负N次幂,然后这里呢就会变成Y的一减N次幂。

右边就没有Y的N次幂了,而这时候我们发现对于Y的一减N次幂,对X求导数会得到什么呢,他会得到Y的负N次幂DYDX,然后只是多了一项系数,所以我们把这个系数给约掉,那么我们就可以把上面这个式子给写成。

底下这个东西,就他们俩是一样的,把上面这个式子写下,写成这个东西,然后这时候自变量我们发,发现就会变成Y的一减N次幂,别的都没有变,那么我们令Z等于Y的一减N次幂,然后在等式两边再同时乘以一减N。

就会得到这样一个式,这个式子它就是一个一阶线性非齐次微分方程,那我们把刚刚的这个通解表达式给代入带下来,就会得到布罗利方程的解,这就是变量代换法,事实上我们已经展示了,求解微分方程的几种方法。

一个分离变量法,一个待定系数法,一个变量代换法,刚刚我们看到的都是一阶的微分方程,现在我们来看高阶的微分方程,高阶微分方程,最简单的情形就是可以降阶的高阶微分方程,比如说啊Y的N次N阶导数等于FX。

那么我们怎么求Y本身,我们只要做N次不定积分就可以求得通解了,然后另一种情况是Y的二阶导数等于FX,Y的一阶导数,就是X和Y的一阶导数的函数是Y的二阶导数,我们可以怎么办呢,我们可以设P等于Y1撇。

那么就有P1撇等于什么呢,P撇就是Y两撇,P1撇等于X和P的函数,那么我们假设一阶方程P1撇是FXP的函数呢,有通解,这时候它是一阶方程有通解,P等于PXC1,那么我们直接积分这个这个通解。

就会得到Y等于什么式子,然后类似的,如果Y两撇,Y的二阶导数等于Y,等于Y和Y的一阶导数的函数的话,我们就设P等于Y1撇,然后这时候我们会得到Y两撇,等于P乘DPDY。

也就是说P乘TBDY等于右边这个东西,我们依然可以解得这个在这个式子里面去解,得Y1撇等于P等于一个phi y c1,这个啊某一个通解,然后我们再把这个东西给做一次积分,就会得到原函数。

在高阶微分方程里面,最重要的是这个二阶微分方程,因为它很具有典型性,并且呢在这个二阶微分常微分方程,在扩展到二阶偏微分方程以后呢,也应用非常的广泛,二阶分常微分方程的标准形式是长这样长,这样就是呃。

Y的二阶导数加上Y的一阶导数,乘以一个X函数,加上Y乘以一个X函数,等于一个X函数,然后一样的,如果等式右端恒等于零,这个方程就叫做其次的,如果等式右端不等于零呢,这个方程就叫做非齐次的,那么一样的。

我们要先去看,其次方程与齐次方程总是更好解的,二阶线性的齐次方程长这样,然后这时候我们可以呃给出一个定理,定理是,如果上述二阶线性齐次方程,有两个线性无关的解,一个叫Y1X,一个叫Y2X嘛的话。

那么Y等于C1乘以Y1X,加上C2乘以Y2X就是方程的通解,换句话说,对于二阶线性齐次方程来说,如果你能找到两个线性无关的解,两线性无关的特解,就是满足这个方程的任意两个函数,只要这两函数是线性无关的。

那么这两函数的线性组合,就得到了所有的二阶线性齐次方程的解,这个定理是可以拓展到N阶线性齐次方程的,就是说啊当你的最高阶的导数是N次的时候,这时候这个方程,你只要能找到N个线性无关的解。

你就可以组合出它所有的解,那么呃对于二阶线性非齐次方程来说呢,就我们刚刚已经说过了,如果你能找到对应的齐次方程的通解,再加上这个非齐次方程的一个特解,那么你就找到了这个非齐次方程的通解。

来看一个具体的例子,二阶常系数齐次线性微分方程就是常系数,就是这个地方的P这个地方的Q它是固定的,不再是X的函数了,这里的解法我们依然用待定系数法,我们假设Y等于E的2X次幂是方程的解。

那么为什么这么去猜这个解呢,因为我们发现就是E的X次幂,不管求多少次导数,它都会保留这个因子对吧,这个性质我们觉得很好,这样的话额我们把Y等于E的X次幂带入,这个方程。

会得到R方加PR加Q乘以E的X次幂等于零,然后因为E的X次幂不可能等于零,所以它只可能是R方加PR加Q等于零,那么这个方程就叫做特征方程,我们把这个特征方程用这个呃,一元二次函数求根的公式就得到了。

这个它就是称为特征根R1和R2,然后这时候我们来看判别式,如果判别式P方减4Q是大于零的,我们是得到两个线性无关的特解呀,一个是Y1,一个是Y2,那我们就已经找到解了,那么如果是等于零的呢。

我们只只导照了一个特解,Y1等于E的二分之PX次幂,然后我们还想找到另一个特解,怎么找呢,我们依然猜,我们,设Y2等于UX乘以一个E的二分之P,X次幂,然后我们把这个Y2去代入原方程,然后整理一下。

我们会得到什么呢,我们会得到Y2等于有一个特解,是Y2等于X乘以E的二分之PX次幂,那我们就找另一个特解,那这样这个所有的通解就都找到,然后特殊的情况是小于零,因为小于零的时候,这个方程是没有实根的。

我们会解得两个负根,也就是I我们设置两负根,因为这两复根一定是共轭的,我们剩下这两个复根是R1R2,等于阿尔法正负I贝塔,那么利用欧拉公式,E的2X次幂等于cos x加上i sin x的话。

我们可以消掉这个虚部,得到Y1等于E的阿尔法X,cos贝塔XY2等于E的FX sin贝塔X,那么我们又找到了两组特解,也就是找到了这个方程的所有的通解,上述论证过程也可以向高阶的常系数。

注意这个常系数啊,注意这个常系数,其次线性微分方程去扩展就是一样的,我们是去解一个特征方程,这个特征方程等于RN加上P1的RN减,一直叫PN减12加上偏等于零,然后这个特征方程的每一个K重根。

R对应于一个通解项,这个通解项是C1加C2X,一直加到CK的乘上X的K减一陈EX,这是一个一个解,一个通解,因为通解会是一个通解里面的一项,他就是特解,然后它的每一个K重的共轭复根。

阿尔法正负I贝塔就对应一个通解项,E的阿尔法X乘以,这前面这前面是因为有K重所造成的,然后这是因为有复根所造成的,只是因为有K重所造成,就是因为有复根所造成,回到二阶。

刚刚我们其实相当于给出了一个二阶常系数,齐次线性微分方程的解法,那么现在我们要看二阶常系数,非齐次线性微分方程该怎么去做,也就是等式右端现在开始有一个函数了,那么我们令这个FX等于E的兰姆达X。

乘以PMX,这里的PMX是一个最高M次的多项式,那么我们会得到这个方程有一个特解是Y星,它等于X的,这个X的K次幂,然后啊MX是某个M4的多项式,然后乘以E两分的X。

假如FX的形式是等于E的兰姆达X乘上一个啊,P l x,这也是一个多项式啊,最高L次的多项式乘以cos欧米伽X,加上QNX乘以sin,欧米伽X呢啊,那这时候我们会觉得他特解长这样的情况。

然后这个时候这个多项式的最高次,是取L和N的最大值,然后呃我们可以看到这前面还有一个SK次幂,这个K次幂的K是怎么决定的呢,就在于第一种情况,上面这种情况就是第一种情况,这里的K次幂的K是由兰姆达。

是不是特征方程的根来决定的,如果拉姆达不是特征方程的根,K就等于零,是特征方程的单根,K就等于一是特征方程的重根,K就等于二,下面也是一样的,下面这个情况也是一样的,我们看兰姆达正负。

欧米伽ARI是不是特征方程的根,如果不是K就等于零,如果是K就等于一,以上就是常微分方程相关的内容,其实这些就是呃高数上的内容,相当于带大家回顾一下,然后下面我们就要走入这个偏微分方程。

而这部分的话其实就是相对来说会啊,超出呃,计算机专业要掌握的数学的基础课的水平,首先我们来看这个二元二阶的线性偏微分方程,它有一个标准形式,就是我们令原函数是U,那么假设这个ABCD。

EGF都是自变量X和Y的函数,那么这个标准形式可以写作,A乘上U的二阶导数加上二,B乘上U的混合导数,加C乘上这个U对Y的二阶导数,加上D乘U对X1阶导数,加E乘U对Y的一阶导数。

加上继承U本身等于一个F然后啊,我们直接在这里给出结论吧,我们如何对二元二阶线性偏分方程分类呢,我们是主要是看它的判别式,判别是B方减AC呃,当然可大家可能会提问,这个为什么不是B方减4ac啊啊。

那是因为我们我们把这个四这个量已经给放,提前放在这个2B这里,如果判别式德尔塔是在于对于任意的X,任意的Y都是大于零的,我们称方程是双曲型偏分方程,如果对于任意X任意YJ的,德尔塔就是等于零的。

我们称方程为抛物型偏微分方程,如果对于任意X任意Y德尔塔都是小于零的,我们称方程为椭圆形偏微分方程,为什么会这么这样呢,因为其实呃如果这里是上面这个地方,不是偏导数,而是这个函数值本身U方或者是U。

类似于这样啊,或就是是比如说我如果是什么X方Y方XY,就如果如果是这样的一个情况,假如啊这问题还不并不完全din,就如果你写成这样一个东西,那么它其实是个圆锥曲线的标准形式。

所以我们这里的这个命名就是根据圆锥曲线来,额如果是刚刚我们给的是二元二阶,如果是多元二阶怎么办呢,他的判断方法其实是啊,我们先列出来它的标准形式,标准形式是U对,先对SI求偏导啊,先对XJ求偏导。

再对XI求偏导,它的系数是AIJ,然后U对xi求偏导,系数是BI然后加上CU等于F,我们是把AI界构建成一个二次型,构建一个二次型,然后我们把这个二次型做标准化,我们可以按照系数的符号去判断。

偏分方程的类型,可以判断这个系数的符号是不是啊都等于零啊,或者是都大于零啊,类似于这样的来判断这个偏微分方程的类型,有哪些典型的二阶偏分方程呢,我们可以看一下,在物理上几种非常典型的偏分方程呃。

双对于双曲形二阶偏分方程来说呃,波动方程就是一个典型的例子,波动方程形式是偏方U它啊它有两个自变量,一个自变量是T,一个自变量是XT就是时间,X就是位置是一尾的一个振动啊,偏方U比偏T方减去A方。

乘上偏方U比偏次方等于零,这个方程我们叫它波动方程,那么呃这个是方程式,其次的右边右向右端项等于零,当然如果这个方程是非齐次的,也就是说我们这个震动,我们时刻在给他一些激励,给他一些外力的话。

它叫受迫振动,受迫振动的方程就是在上面,其次的方程加上一个游览项啊,这个方程就额是可以拓展到三维的,三维就是这是个一维的波动,当然他是二元二阶分分方程,然后这是一个三维的波动。

但它其实已经是一个啊四维二阶平衡方程啊,那么只是把上面的偏方,U比偏X方给换成了一个拉普拉斯拉普拉SION,啊抛抛物型的二阶偏分方程,最典型的例子就是这个热传导方程啊,也是一样的。

就是我们可以观察一下它和上面的这个,函数有什么区别,我会观察他一下,还有什么区别,就是主要区别就在于额,关于时间T这一项,它的偏导是几阶的,额波动方程关于T的偏导是二阶的。

而传导热传导方程关于T的偏导是一阶是一阶,然后这个方程也可以把改成负非齐次,我们在等式右端加上非齐次的原项,它表达的是什么意思呢,是说这个方程当中有热源,就我们在所考虑的区域当中有热源。

这些热源会往外辐射热量,这是热传导方程,而椭圆形二阶偏分方程,最典型的例子就是拉普拉斯方程,它其实可以看成我们刚刚给定的热传导方程,的一个稳定问题,就是假如我们这个不停的传热,不停的传热。

这个他他不可能就是停不下来,他到最后空间会形成一个稳定的热的分布,也就是说这项干掉嗯,剩下的就是U的拉普拉,CTION等于零移过来,就是啊一尾就是偏方,U比偏X方等于零,三维就是U的拉普拉斯等于零。

这个方程就叫拉普拉斯方程,它是椭圆形的二阶平分分方程,如果我们给它加上圆,像加上原项,它就这个方程叫波松方程,这个方程叫波松方程,也就是说空间中有圆和热传导方程是一样的,比如说这个圆可能是什么呢。

可能是一个热源,也有可能是电场方程中的电荷,我们一会儿会具体来看这个电场方程的,写成波松方程的形式,然后如果在波动方程当中的UXYZT,这个波动呢,我们知道它长这样的形式。

等于VXYZ乘上E乘E的负I欧米伽T次方,我们假设我们知道这个波动长这样的形式的话,那么上面这个波动方程会变成一个,亥姆霍兹方程,这个方程等于一个先是一个拉普拉伸,加上K方乘上一个VXYZ等于零。

那么我们如何去求解偏微分方程呢,啊我们又要回到这个分离变量法,首先我们来考虑如何使用分离变量法,求解波动方程,波动方程是偏方U比偏T方减去A方乘上偏方,U比偏X方等于零,我们给定初始条件。

初始条件是T等于零时,U等于负X且偏U比偏T等于cos x,那么下面我们要开始分离变量了,所谓分离变量,我们很呃在这个其实在偏分方程当中,分离变量有的时候就是在拆解,对他其实就是来拆解。

我们假设UXT它长什么样呢,它的X和T是可分离的,它等于一个关于X的函数,和一个关于T的函数相乘,我们将这个假设去代入到波动方程当中呢,就会得到X乘上T的二阶导数,大X乘上大T的二阶导数。

减去A方大X的二阶导数乘以大T等于零,然后分离变量等式,左端变成了T的大T的二阶导数,除以T除以A方,等于X的大X的二阶导数,除以大X,那么我们可以看到等式左端只和T有关,等式右端只和X有关。

这两个事情还得相等,那这个事情成立,就当且仅当等式两端都得为常数了,我们就设这个常数为负,拉姆达可能有同学会问这里为什么会有负号啊,那主要是因为这个解,我其实我已经知道正确答案是什么了。

就是你可以猜它等于正朗姆达,但那样的话你会解除矛盾,所以这里只能假设它是负拉姆达,假设负兰姆达的话,等式左端就会写成T大T的二阶导数,加上兰姆达乘上A方乘大T等于零,就变成了一个这个什么呀。

变成了一个二阶线性齐次常微分方程,它有一个通解,通解是a sin根号下兰姆达AT加上b cos,根号下兰姆达AT,然后类似的等式右端解出来是什么呀,是大X等于C乘sin。

根号下兰姆达X加上D乘cos根号下兰姆达X,好我们现在再加上这个边界条件来求解,刚刚我们说的这个波动方程,你刚分离变量求出来的结果已经等于这个了,我们假设UXT等于大X乘大于T的话。

我们可以解出来这样一个解,现在我们来定解,因为这里我们有很多未知系数,这里的大A大B大C大D都是未知量,我们假设这个波动有边界条件,你可以看成是绳子在震动的时候,我给他捏住两端。

这个边界条件是在任意时刻X0呃,X等于零和X等于L的位置都不发生震动,这两个点的位移都不会发生改变,那么定这个定解条件就是X大X0等于大,XL等于零,那么这意味着什么呢。

这意味着C乘sin0加上D乘cos0也就等于D,它得等于零,还意味着什么呢,等于C乘sin根号下兰姆达L它要等于零,那么我们来看C乘根号sin,根号下兰姆达L等于零是什么意思呢,也就是说。

根号下兰姆达L要等于这个派的整整数次幂,也就是兰姆达N等于N派除以L的平方,然后这里的N可以取变任何自然数,于是呢我们就可以把N作为一个参量,我们会得到啊,取第N个参量时的分离变量去解。

UNST等于sin l分之N派X乘以a an sl,二分之a an派T,加上BN乘以cos l分之a an派T,然后啊这里我们不加证明的给出这样一个定理,对于任何满足这个波动方程的解。

上述这个波动方程的解,它都可以写成分离变量解的线性组合,还都可以看成分离变量解的线性组合,那么我上面还有一些未决定的系数,也就是这个大a an和大BN他们还没决定,他们是由谁决定呢。

他们就是有这个初始条件,U等于FX和偏U偏T等于cos x由他们来决定的,我们只需要把这个T等于零代入,然后同时使用复列展开,就能决定大AN大B其实分离变量法,它背后蕴含的思想就是傅列展开。

它其实相当于说是我们给一个偏微分方程,给出了他的傅立叶展开形式下的解,有了分离变量法,这个求解偏微分方程的手段以后呢,我们就可以定义球谐函数了,我们知道在这个本系列课程。

本呃就是games001课程的前几节课呢,大家就已经接触到求解函数了啊,这里我们就来详细稍微详细的说明一下,这个求解函数它是怎么来的,分函数其实它就来自于拉普拉斯方程,但是呢我们是在求坐标系下。

给出了拉普拉斯方程,这里我们直接给出求坐标系下拉普拉斯方程长,这样,这比额拉布拉斯方程是什么,是他的零,哎不对,是这个等于零对吧,然后在直角坐标系下它很简单,因为直角坐标系下拉布拉升就等于这个。

但是在求坐标系下,拉普拉斯方程啊就比较麻烦了,因为这里的它求坐标系的三个参量啊,THETF它不是对称,那么一样的,我们现在来对它做分离变量,我们首先假设我们解出来的这个URCAF。

它等于一个关于R的函数,乘以一个关于theta和phi的函数,关于R的函数用大R表示,关于C塔和F的函数,我们用Y来表示,然后这样分离变量的结果是什么呢,跟之前是一样的。

我们会得到说这个等式左端只和R有关,然后中间只和YTHETF有关,那么他们俩要时刻相等,只有可能是什么呀,只有可能它永远等于一个常数,我们设这个常数等于负阿尔法,设置个常数等于负阿尔法。

而现在我们来考察中间这一项,就这一项这一项等于负阿尔法是什么,也就是等于我们又得到了一个偏微分方程,又得了个偏分方程,那我还是不会解呀,不会解怎么办呢,遇事不决,我们继续分离变量。

我们把大YTHETF给分解成大西塔乘以大范,然后再做一次分离变量,这一次分离完的结果是什么呢,是这个是长这样,哎我们可以发现这一项只和,只和这个这项的导数里面只和theta有关。

这项的导数里面只和Y有关,当然我们可以看到这里还有sin方,theta啊,这个sin方SA没法把它消掉,然后加法等于零,事实上我们第一次分离完变量以后,得到的仅和theta和phi有关的这个方程呢。

它就叫做求解函数方程,我们把这个方程解出来,得到的这个函数Y呢就叫做求解函数,但是求解函数本身又可以进行进行分离,变量展开,我们怎么怎么展开这个事情呢,我们先把上面的这个就是刚刚展开的结果,写下来。

就是我们把这个地方分离变量的结果给写下来,写下来可以写成是啊,这一端加上阿尔法等于这一项等于这一项,然后呃我们发现呢,就是这两项他如果要时刻相等,又意味着什么,这两项要时刻相等,又意味着什么。

又意味着说,就是他们得等于一个常数除以sin方theta,为什么要除以sin方西塔呀,因为等式右端也就是这一端项里面,如果你给它等式两边同时乘以sin方theta的话,你就可以消掉等式右端。

所有跟三方theta有关的量,所以它一定这个这个等式一定有也有一个值,这个值就等于贝塔除以sin方C,然后我们把与FI有关的量一下来,就变成了一个线性的,其次的二阶常微分方程,那么我们可以解除它的解。

它有两个特解,第一个解是cos根号下贝塔F,第二个特解是sin根号下贝塔F,然后由于我们知道这个球坐标里面的phi等于,0~2派是一个周期对吧,零和二派应该是一回事,也就是说我们用周期性边界条件。

大法零等于大法二派又可以得到呢,得到什么呢,得到贝塔一定等于M平方,贝塔一定等于N平方,因为只有这样的话,你才能满足大法零等于大法阿派啊,这里的M是取变这个自然数集合的,然后我们再来看theta这边。

theta这边我们整理完之后,它等于这样的一个结果,它等于这样的结果,然后这时候呢我们令什么,我们令X等于cos theta,令Y等于大范,我们会惊奇的发现上面这个这个方程呢。

它可以写成一个只和X和Y有关,没有三角函数的这样一个形式,没有三角函数的这样一个形式,这个方程这个方程我们还可以继续去考察,因为我们其实就是我们会发现,当X取正一的时候,这个方程其实是发散的。

因为这里会有个M平方除以1-1,M平方除以零这样的一个东西,我们根据自然边界条件以及它的展开呢,我们可以解得这个时候为了使Y有界,阿尔法一定可以写成L乘上L加一的形式,这里的L是曲变展数几何的。

那么总之我们在球坐球坐标系下,解除了拉普拉斯方程的解分离变量解,他有径向方程,也就是只和R有关的径向方程长这样,这方程是一个二阶线性齐次微分方程,他他的解释什么呢,他的呃,好像不太其次啊,好像不太其次。

但是你可以做一些这个呃啊它啊它是其次的,它是其次是其次的,是其次,我们可以把这个解解出来,这个解解出来是大R等于一个一个一常数,我们可以看成这个常数和L和M相关,再乘以R的L次幂。

加上一个常数B然后乘以R的负L减一次幂,就是大R所满足的这个分离变量方程,分离变量的解得额,分离变量的减函数,然后呃five我刚刚已经解过了,大法一等于cos MF,大F2等于SMF。

那么最最终呢跟theta有关的量呢,我们把L和M都带进来,也就是说这个阿尔法和贝塔两个系数,我们都决定了,这就是得到了这个方程,我们称它为连带勒让德方程,连带这样的方程。

这的L和M都是我人为指定的一个整数,一个非负整数,或者我们把它写成这个X和Y没有三角函数,这样的形式,这个方程就叫连带勒,让德方程,这个连带勒,让德方程呢解出来的多项式呢称为连带勒,让德多项式。

连带勒让德多项式,那么我们刚刚已经说过,就是YTHETF,也就是求斜函数,它等于什么,它等于大西塔乘以大F对吧,所以我们现在来把大西塔和大F乘在一起,在复数域下,我们往往还要要求这个求解函数是归一化的。

所谓归一化就是在整个立体角内,因为如果你在球坐标系中不看R的话,theta和F其实相当于曲变整个单位球面,如果我们要认为认为这个积分满足规划条件,就等于德尔塔KL德塔MN这个规划条件的话。

我们可以解得YLM等于什么呢,它等于一个这个规划系数乘以,连带勒让德多项式再乘以E的i m five次幂,这是负数的负数域的求解函数,那么往往是需要整数域的求解函数啊,啊实数域的求解函数啊。

实数域的求解函数是长这样的,我们需要根据M大于零,M小于零,M等于零去做一个这个讨论啊,注意到我们刚求解的过程当中,其实是认为M1定是大于等于零的对吧,但是我们刚刚在求解当中是说他有两个通解。

一个叫cos m法,一个叫SM法,这时候我们发现这个,我们不如把M小于零的情况也给利用起来,把M小于零的情况利用起来,认为M大于等于零的时候是取上面这个结,M小于零的时候是取下面这个结。

如果你这样去做的话,就可以得到左边我们给出的规划,求线函数的表达式,我们会根据M的符号去讨论一下,那么求解函数就分别有以下的三种形式,以下三种形式,也就是说所谓的球谐函数它是什么。

它是连带勒让德多项式乘以规划系数,再乘以一个三角函数,那么勒让德函既然它叫连带勒让德函数,那么必然还会存在勒让德函数,存在勒让德方程对吧,那么勒让德方程就是连带勒让德方程,在MN取零的时候的特殊情况。

那么它对应的物理图像是什么呢,是说我们的物理解出来的结果与phi无关,与five无关,不管你five怎么变,你得到的结果是相同的,那么它就是满足LN的方程,也就是说我们的解函数绕极轴旋转是对称的。

这种情况下,连带勒让德方程会变成洛朗德方程也就长这样,我们少了这个M方有Y的两,这时候这个方程也会有解,它解出来的解也就是PL0,我们把零省略掉,PLX称为L阶的勒朗德多项式,L阶勒让德多项式。

浪得多项式要怎么计算呢啊,首先它有个级数的表达,这集数的表达可以直接带值算啊,因为这是完全是个多项式,这多项式系数是可以直接直接,你用这个阶乘去计算,或者你写成微分的形式。

微分的形式就是X方减一的L次幂,这个东西你给他去求L阶的导数,这是他的微分表示,洛朗的多项式有一些很好的性质,首先第一个性质是它有L个零点,并且这些零点都是十的,而且它们都在-1~1之间。

同时呢呃连带勒朗德呃,这个勒朗德多项式要么是奇函数,要么是偶函数,是跟L有关的,然后第二个性质是long的多项式,具有这个呃正交性,也就是说当N和L不同的时候,你把两个量能样式相乘。

并且才-1~1上做积分,积出来会是零,如果他们俩是相同的时候,记出来是根号下二,L加21,知道如何计算勒让德多项式,你就会知道如何去计算求解函数,那么球形函数有什么作用呢,在图形学当中。

求弦函数最重要的作用就是作为基底,去展开一个球面函数,比如说我们在做渲染的时候,我们会用一个天空盒,一个球形的天空盒来表达环境光,表达这个我们所渲染的物体周围的环境,光照长什么样。

但是如果你要存一个环境球的贴图的话,就需要非常大的空间去,而且你得做差值,做寻址,这些都是很大的计算量,那么如果你用求解函数去展展开,只用比较低阶的L,比较低阶的M只取这些项。

那我们他其实就仅是若干个系数对吧,因为求解函数的每一项前面只只和系数有关,对这和系数有关,求原函数是固定的,求函数就长这样,求原函数就长这样或者长这样,切函数就长这样。

任何一个球面函数都可以用全面函数去展开,所以我们只需要记前几项的展开系数,就可以近似的表达一个环境光照和贴图了,那么我们想用这个环境光照贴图的时候,就直接在求解函数上去算一下值就可以了。

这时候你就不需要去存储一个非常巨大的环境,光的贴图,而且效果也已经非常的好,好刚刚我们所说的就是这个分离变量法,在求解偏微分方程当中的应用,下面我们来看格林函数法,格林函数要讲格林函数呢。

格林函数法呢我们就干脆先来看这样一个问题,给定空间中的电荷密度分布,我们现在要求电场强度,我们来考虑这个问题,那么首先我们用场论那一节的知识,电场的高斯定理的积分形式是什么呀,是长右边。

这样就是在空间中任意划分一个区域,对这个区域的表面做电场强度的面积分,它等于区域内包含的电荷总量,除以一个物理常量,这个物理常量叫真空介电常数,我们或者叫app系统零,那么上面的这个东西。

用这个高斯定理的微分形式呢,你又可以把它写成是E的,也就是电场强度的散度等于什么呢,等于RO除以F形,RO是什么,RO就是电荷密度,不就是电荷密度,这两个形式是等价的,只不过第一个是积分形式。

第二个是微分形式,但是积分形式还好说,如果空间中有一个点电荷的话,积分形式还好说,你只要把这个点电荷包起来去,算这个面积分就可以了,那你考虑这样一个问题,如果是微分形式呢,你在这个点电荷附近会发生什么。

会发生这个电荷密度变成无穷大了对吗,因为点电荷是物理中,我们认为点电荷是没有体积的,他就在聚焦在空间当中的一点,这个点有一个有限大的电荷,也就是说电荷密度这时候是发散。

但是事实上我们已经知道空间中有一个点电荷,这个时候的电场强度的分布长什么样了对吗,其实在高中的时候我们已经给出来了,高中的时候我们就给出来说,在空间R0处存在一个大小为Q的点电荷。

那么这个时候空间中的场强是由一个系数,K乘以一个这个电荷大小,Q再乘以乘以什么乘以R减去R0,这个矢量再除以R减R0的三方,或者写成大家更熟悉的形式,就是ER等于等于什么,等于KQR减R0的平方对吧。

然后它的方向呢由R减R0这个矢量去决定,或者你可以写成量形式,在大学的物理里面呢,我们又给出了在空间某一点处,大小为Q的点电荷的电势,它可以由啊K乘上K,直接除以R减R0的这个距离来计算。

有时我们其实知道这个解,所以这说明什么,说明点电荷处的电荷密度在无穷的情况下,我们是知道这个电场分布的解的,于是这启发了我们去定义这样一个东西,定义一个狄拉克函数,所谓狄拉克函数就是在三维当中。

迪亚克函数是当R不等于零的时候,德尔塔R就取零,当R等于零的时候,德尔塔就取无穷,但这样不够,我们还要补充一个积分定义,积分定义是在空间当中做一个体积分,对DOTA2做一个体积分。

如果这个取的区域包含原点,那么体积分结果为一,如果取的区域不包含零点,那么取得积分为零,我们设这个狄拉克函数,或者叫迪亚克德尔塔函数,满足这样的性质,那么这时候我们就可以定义点电荷的密度了。

就是等于无穷,这件事情它是没有办法直接定义的,因为就是无穷是一个概念,你这无穷可以有好多阶,有更高阶的无穷,但现在有狄拉克函数之后,我们知道点电荷的密度,就是Q乘德尔塔R加二零,也就是说我们把它带下来。

用散度的形式可以写成呃,E的散度等于Q乘德尔塔R减R0,除以F系统零,或者呢我们令E等于某一个标量式的负梯度,那么就会写成这个标量式phi的拉普拉,CTION等于负Q乘德尔塔R减R0除以F型零。

这个方程是什么呀,它是一个泊松方程对吧,泊松方程,也就是说波松方程的,在等式右端是一个德尔塔函数情况下的解,我我们是知道的,这个知道是怎么知道,是我们在人类做实验的时候,在电场这个特殊的情形下。

我们已经把它这个结找到了,我们把它形式化表达一下,泊松方程,格林函数解标准形式是five的拉普拉升,等于右边是一个迪亚克德尔塔函数,它的解是phi等于四派分之1R减R0分之一。

或者啊我们在等式右端乘以Q除以F系统零,也就是把它写成这个电场的所满足的泊松方程,那么解读的解就等于Y等于四派xx0分之一,Q除以220,这说明什么,我们刚知道,这前面我们是用一个K来表达的对吧。

我们在高中物理里面,这前面是一个K,也就是说四派XX0分之一,就是这个K就是这个K,或者我们称之称称什么呢,乘U等于四派分之一,R减R0分之一,是波松方程,U的拉普拉斯等于迪亚克德尔塔函数。

在无穷远边界条件下的格林函数解,或者我们把它称之为它波松方程的基本解,泊松方程基本解,格林函数解是要指定边界条件的,是要指定边界条件的,而波松方,而基本解释不需要指定边界条件的基本解。

里蕴含了你取得无穷远的边界条件,什么叫无穷远的边界条件,就是当R趋向于R的长度趋向于无穷的时候,这个原函数的值等于零,那么由叠加原理呢,我们就可以求得在无穷远边界条件下。

U的拉布拉CTION等于某一个函数,F的解是怎么算的呀,就相当于你给定电荷密度分布求电势,我们刚刚是给定了空间中有一个点电荷,你去求电势,如果你改成电荷密度分布求电式的话,你就做一个积分嘛对吧。

就做一个积分嘛,就是U等于四派分之一,做一个体积分,这个体积分是FDV除以220啊,这样他就相当于说是你比如说这里有个导体,这导体上面均匀带电的导体进一道两道题,然后你这每个地方它就你考察他的一小段。

这个DV对吧,这个DV它的这个电荷密度就是Q比V嘛,然后你再用这个呃,库伦定律去算一下电场电势嘛,然后给他做积分,其实就是格林函数解的意思,刚刚我们给出的都是无穷远边界条件下,的格林函数解。

现在我们来看看非无穷远边界条件下,格林函数解长什么样,那么首先我们还是举静电学当中的例子,在空间中有一个无穷大的平面,满足电势为零,这这个竖的竖直方向的,这个就是无穷大的一个平面,它的电势为零。

这个地方要以这个或者我写成five,然后呢F要等于零,F要等于零,在左端呢有一个点电荷,我们给他形式化一下,就是先是电场的波动方程长这样,然后满足一个边界条件是X等于零的时候,Y等于零。

那么上述方程的格林函数解等于什么呢,我们可以直接给出来这个方程的格林函数解,等于四派XX0分之一,一个是R减去R0分之Q,再减去四派F系统10,Q除以R减去哎,我们看到他相当于在R0当中。

去把X0做了一个反号,它等同于电荷的电势,加上右侧镜像位置的异号电荷产生的电势,就是说在左侧产有一个,比如说有个正电荷,那么由这个正电荷形成的场强,由于我有个边界条件,是这个无穷大的平面电势为零。

它就会在右端产生一个镜像电荷,这镜像电荷的这个带电量,比如说设这也是正Q的话,那么这就是负Q,它带电量与左边的电荷相反,并且距离呢与它是镜面关系,那么类似的呢,如果是左端不是一个点电荷。

而是一个电场分布的话,我们就可以啊,一个电荷分布的话,我们就可以用这个镜像法的格林函数解,加上叠加原理去求解这个方程,注意我们刚刚给出的所所有的这些,格林函数也好,这个呃对格林函数也好,无穷远的也好。

这个非无穷远的也好,它们都是三维的,在二维的情况下,泊松方程U的拉普拉伸等于迪亚克德尔塔函数,R减R0,它的无穷远边界条件减,不是刚刚我们说的这个R减R0分之一,而是二派分之一的LNR减R0。

LIN啊前要注意这个区别,格林呢他不仅提出了这个格林函数法,去求解平分分方程,同时呢他还证明了三个以他名字命名的恒等式,这个恒等式呢是设区域V内有连续,可微的标量函数场phi和pros。

然后第一恒等式给出了phi和pros,满足的一个体积分的关系,等于这个面积分就是这样的一个体积分,这样一个特殊的体积分,等于在这个体积的面上去做这样的面积分啊,第二恒等式也是类似的。

就是这样的一个体积分等于这样一个面积分,然后前两个恒等式相对来说,就是你可以把两个定义在某个区域上的,标量函数场去找到它们俩之间的关系,那么格林第三恒等式呢,相对来说会比较重要一些。

在对我们同学来说比较重要一些,我们现在假设GRR0是波松方程的基本解,那么波塞尔在区域内满足拉普拉斯方程,也就是说在我们所考察的区域内,普塞这个普塞满足这个东西,满足这个东西,那这个时候我们会发现。

我们会得到普塞尔的一个表达式,普赛尔等于我们所取的区域的边界上,去做一个面积分,去做一个面积分,这个面积分只和cos cos的偏导数,cos在对于这个区域的面上反方向的偏导数,然后波斯方程的基本解。

以及不分方程基本解的偏导数有关,我们可以用这样的方式去得到一个,它相当于说是啊,我在空间当中,我任取一个区域,如果我知道这个区域上的值,以及这些区域上的偏导数,我就能得到任何一个位置里面的cos。

我就能估算这点的菩萨是等于多少,它就相当于对这个区域边界做一个积分,那么这个方程呢就构成了边界元法的基础,边界元法的基础啊,我们今天不会在这里讲边界圆,因为这个偏微分方程的离散化。

本身也是图形学研究的内容之一,好,最后我们简要的来看一下,微分方程是要用什么样的方法去做数值解,那么先看看常微分方程,常微分方程的数值解释,最简单的形式就是Y1撇,X等于X和Y的某个函数。

然后YX0等于Y0,那么欧拉法说I加一时间部的Y等于I,事件部的Y加上FXIYI乘以HH就是步长,步长就是XI加一减去XI,这个方法只有一阶精度,然后可以通过一些手段去提升它的精度。

然后额就会产生高阶方法,我们称之为龙格库塔法,然后详细的内容呢关于这个常微分方程呢,大家就可以看GMC203可以加一下,然后关于偏微分方程呢,以二我们以还是以二维的拉普拉斯方程为例。

我们假设这个空间中有一些格点,这些格点之间都是均匀分布的,这些都是不均匀分布的,然后这些格点上呢都存储了这个拉普拉斯啊,这个这个函数的值就是U这个函数的值,我们假设空间中有这样的一些格点。

那么这个格点就IJ对吧,这个格点就是I加一键,这就是IJ减一,这就是IJ加一,这个就是I减一减,并且我们假设这些矩形的边长都是德尔塔X,这些都是德塔X,他们都是正方形,那么现在来看,如果我们用有限差分。

呃去计算拉普拉CTION这个算子的话,它等于什么,那么有限差分是说呃我们可以用UI加1J,UI加1J减去UI界除以德塔X去计算UI,去近似估算这个位置的U的一阶偏导数,那么类似的。

我们可以用UIJ加一减UIJ这些来算啊,UI界减,UI减1J,来算这个位置的这个位置的一阶偏导数,那么我们又得到这个位置一阶偏导数,这个位置一阶偏导数好,我这些一阶偏导数在一起再求一次,一阶偏导数。

是不是就得到原原来U的二阶偏导数了呀,也就是说我们把它相减,再去做一次有限差分的计算,最后我们把这个左边这这个式子给做一个简化,它就等于相当于说是中间这一点的,拉普拉伸算子等于什么呢。

等于它所有相邻的格点的U的值相加,再减去四倍的中心,这个点的值除以德尔塔X平方除以德塔X平方,那么拉普拉斯方程式说,这个每个格点处的拉普拉斯算子,作用后的结果都等于零,所以我们令这个东西等于零。

令这个东西等于零,也就是说我们跟大叉S无关,我们大S可以约掉了,那么UI界就等于什么呀,等于它所有周围邻居相加,再除以四,所有邻居相加,再除以四,这东西怎么解呢,我们可以用迭代法去求解。

首先牙科比迭代就是在每个时间步内,我们认为U就用它周围的四个格点处的值,除以四来更新,用上移时间时刻,它周围四个格点的值的平均来更新,然后这个方法的收敛效率要稍微慢一些,如何提升呢,其实非常简单。

我们就会得到这个高斯赛德尔迭代,高斯赛德尔迭代是说我们可以直接for循环额,就是我们一半的值用上一次的结果,一半的值用这一次的结果,一半值就是我们刚刚已经更新过的值,我们就用新纸,没有更新过的值。

我们就用旧纸,这也就是旧纸,左边是旧纸,右边是新纸,我们给他去求平均得到UIJN加一,那么什么时候我们知道这个方程解完了呢,就是你可以去估算UIJN加一减去UIJN,你给它取个绝对值,然后取个西格玛。

当这个东西小于你给定的某一个tolerance之后,你就让这个算法停止就可以了,这样你就给出了求解二维拉普拉斯方程,的一个最简单的数值法,数值解法,然后这个是我们今天的这个编程作业。

这个是我们今天的编程作业,上述解法呢额在分类的情况下,他称之为邮件差分离散化下的点迭代法,这里我们会看到他给了一个一个离散化的方式,一个这个求解的方式,那么有没有其他离散化方式呢,是有的。

除了有限差分法以外,会有有限体积法,有限元法边界元法,这些都可以去参见这个games系列的其他课程,然后有关线性系统求解呢,除了我们上面给出的点迭代法以外呢,还有共轭梯度下降法,多重网格法等等。

然后这呢这些呢就是我们下一节课的内容,下一节课要讲这个线性系统,下节课我们了解信息系统,今天这节课之所以是承上启下,就是在于我们巧妙的把什么呀,我们巧妙的把一个二维的拉普拉斯方程,给转换成了这个形式。

转换成一个这个形式,就是它自变量都是格点格点处的值,然后它们之间要满足一些恒等式的关系,这他就是一个线性系统对吧,一些离散的值,这些离散的值之间要满足一个巨大的矩阵方程,也就是说我们通过离散化。

通过这个空间离散化的方式,我们把一个偏微分方程转化成了一个线性系统,那么有关这个线性系统,具体要怎么求解的问题呢,就欢迎大家来到我们的下一次课好,以上是我们今天课程的内容,大家有什么问题吗。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好没有问题的话,我们就到这里啊,作业之后,助教会在群里发布。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

GAMES001-图形学中的数学 - P13:线性系统 - GAMES-Webinar - BV1MF4m1V7e3

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

OK那我们就开始嗯,那个今天非常抱歉,我有点感冒,所以这个声音可能听起来有点奇怪,哼然后我尽量给大家讲清楚一些呃,今天给大家介绍这个线性系统求解的相关东西,然后其实解的问题非常简单对吧。

我们就是要解决一个ax等于B的这样一个,矩阵方程的问题,那么这个问题在图形学中其实是非常重要的,它会出现在各个地方,比如在几何处理中,我们可能需要做这个影视的LAUTION,smoothie对吧。

那这涉及到解方程,在物理模拟中,那更不用说了,我们每一步每一个时间步内,都,一般来说都需要去解一个很大的一个系数的,线性方程组,然后在全局渲染中也有,像这种radiosity based method。

基于这个辐照度的算法,它也是需要去解方程的,所以如何去呃针对不同的问题,然后选择合适的矩阵求解器,能够让它解的又稳定,又快又好,就是我们今天要讨论的一个中心的问题。

那我们先看这个最直接的方法就是直接求解,那大家在学习这个呃线性代数的时候呢,应该会涉及到这个高斯消元法,去解一个方程对吧,比如说我们这里举一个3×3的矩阵的例子,我们有这样一个矩阵。

AX等于B那么高斯消元法呢,会第一步会用第一行的这个二去消掉,二层三行的这个三和二,具体做法就是我把第一行,整个矩阵方程的第一行乘以3/2,加到第二行上,那么这个2×2分之3±3,它就变成零了对吧。

相应的这个8×2分之3±11,这地方就会变成一,那么这个那同样的我也可以把第一行乘以一,然后加到最后一行,把这个二消掉对吧,那变成下面这样一个矩阵方程,这个矩阵方程跟上面这个矩阵方程是等价的。

那么下面这个矩阵方程呢,你就看到它下面有两个零,那么它就可以有更好的这个求解的方法,我们进一步往下做下去,比如说这一方第二行,这里有个0。5,我们可以把0。5×-4加到第三行上来。

那么这样的话就可以把第三行的这个二消掉,就变成下面这个样子,那么下面这个样子,它就会变成一个上三角矩阵对吧,那么这个上三角矩阵呢我就可以先解最后一行,然后再解倒数第二行,然后再解第一行,通过这种方式呢。

先解X2,先再减X1,再减X0,把所有的这个值求出来,那么这个回去的过程,也可以看成是一个逆向的高斯消元法的过程,比如说我把最后一行,比如说这个地方应该是乘以0。5,加到第二行上来。

然后乘以一加到第一行上来,然后第二行也乘以二加到第一行上来,就把这这这边的一-10。5都消掉,那么最后就变成这样一个对角矩阵的方程,那么这样一个方程,它就告诉我们最后的这个解就是多少了。

那就是X0等于二,X1等于三,X2等于一,所以这就是一个高斯消元法,最基础的求解一个矩阵方程的一个整个过程,那么这样一个过程,其实我们可以换一个角度来看,怎么看呢,就是我们其实干的事情。

就是不断的在进行这个防乘以,某一行乘以某一个常数,然后加到另外一行上来,通过这种方式去消掉矩阵里面的一些变量,那么每一次的行变换呢,其实可以等价于左乘上一个矩阵,比如说这样一个行变换。

我们把第一行乘以1。5,也就是3/2加到第二行上来,它其实等价于我们在把这个矩阵,把原来这个矩阵分解成了右边这两个样子,左边呢是一个下三角的矩阵对吧,他对角线是一,然后只有这个负对角线。

这个地方有个零-1。5,然后右边是我变换之后的矩阵,那么怎么验证这个事情呢,你只需要把对吧,把这个-1。5看它对应的那个那个位置,把它乘回去对吧,比如说这个复印1。5是第二行第一列。

那么它作用到这个上面来,就会是把它的把这个第二行乘以到啊,第二行乘以这个额-1。5啊,把第一行乘以-1。5加到第二行上来对吧,那这样就恢复出了这个额,第二行的这个这个这个原本来原来的这个值。

嗯有没有问题对没问题,是这样的,所以说行变换其实等价于左乘上这样一个,对应的这个系数矩阵,那如果我一直在进行这个行变换的时候呢,那么这个系数矩阵就会一直在左边乘对吧,那么一直在左边乘,它一直是下三角的。

所以这个下三角矩阵一直乘他,最后还是一个下三角矩阵,换句话说高斯消暗法,它整个过程其实我可以写成下面的这样一个,矩阵的LU分解的形式,为什么叫LU呢,叫L矩阵,就是一个下三角的矩阵。

U矩阵就是一个上三角矩阵,上三角的矩阵,然后这个L矩阵对角线是一,然后它的负对角线这些数,其实就是我们每一次做这个高斯消元法时候,的那个系数对吧,比如说你可以我们可以倒回去,看我们到底用了哪些系数。

我们用了1。51对吧,还有四,那么在这个地方它就会出现-1。5,一和四,对吧,所以说这样一个下三角矩阵,其实反映的是我们对后面这样一个矩阵,做了一系列的行变换,然后整个高斯消元导消元法的过程呢,其实是。

我们把原来这个矩阵分解成了一个下三角矩阵,L乘以一个上三角矩阵U,并且这个L矩阵的对角线都是一,那么换成这样一种表示方法之后呢,它就能够帮助我们理解说,高斯消元法,为什么能够去帮助我们解这个矩阵方程呢。

因为我其实是把ax等于B这样一个矩阵,方程呢给它拆分成了LUX等于B对吧,那就是那我就可以先去解什么呢,先去解L这个矩阵方程,然后把U和X作为一个整体去解,它解出来之后呢,我再用哦。

我再把刚才那个解作为我的右手项,然后就解UX等于刚才那个右手项,就把这样一个ax等于B的方程,换成了两步方程去解,而中间的每一步呢,L我去解L的方程和U的方程,它都是可以直接去便利解的,对于对于L来说。

我可以先解第一行,然后再把第一行代入第二行,再去解第二行,然后再代入第三行去解解第三行对吧,U矩阵我就倒过来先去解第三行,然后再代入代入回第二行,然后再去会代入回第一行,所以说。

一旦我把这个A分解成了一个下三角矩阵和上,三角矩阵之后呢,那么原来这样一个矩阵方程,就可以通过这样的两次便利就给它解出来思,所以说这个就是高斯消元法去解方程的一个呃,更形式化的一个表达。

那么这样一个形式化的表达呢,它就可以去转化成一种算法,那么对应的就是我们就要称之为这个,LU分解算法,他长成这个样子,然后这个LU分解算法呢,他还利用了一点是什么呢,就是它其实是把这个L矩阵和U矩阵呢。

并没有把它另外存成两个矩阵,而是就存在A矩阵里面,相当于我们称之为叫一个in place的一个操作,也就是说我的呃,我的这个输入是A经过了这样一个算法,锁完之后,我的输出还是A只不过呢输出的这个A矩阵。

它的下三角部分对应的就是这个L矩阵,上三角部分的对应就是U矩阵,那么中间的算法就是可以写成这样一个,简单的一个形式,这个就是这个额LU分解的一个基本算法,那么这个算法反映的就是我们刚才去推的那个。

劳斯消元法的整个流程,那么这种算法呢呃它的复杂度是多少呢,其实也非常容易看出来,你就看这里有三个for循环,对不对,那么它的复杂度就是N的三次方了,所以啊LU分解算法是一个复杂度,相对来说比较高的算法。

它是一个跟矩阵维度的立立方,成正比的一个复杂度,但是呢他也可以去设应对呃,设计对应的并行算法,来进一步提高它的这个速度,额那么对于LU分解来说的话,它还有一个小地方需要注意在什么地方呢。

就是比如说我们进行到这个中间的某一步,高斯效应的某一步的时候,假如这个地方不是0。5,而是零,这个是有可能发生的对吧,就是你刚好第一行消第二行的时候,不光把第一个元素消掉了,还把第二个元素消掉了。

所以这个0。5,比如说我们假设这个银方0。5的地方是零,那么这个时候如果我用刚才的这个算法,用第二行去消第三行的时候,那么这个0。5那就是作为分母,二是作为分子,那这时候就出现了一个除零的操作。

那这样就会导致这个数值的不稳定,所以为了让这个LU分解算法更稳定,一般来说我们可以进行一个操作,就是在选择这个用哪一行去消掉哪一行的,这个过程中呢,我们可以每次都选那个,用绝对值最大的那一行去消掉。

剩下的好,比如说在这个例子中,我们就不用0。5去消二,而是反过来用二去消0。5,通过这种方法,只要整个矩阵是满质的,那么就可以保证在算法的过程中,我们是不会除以一个小量,而导致这个数值不稳定的情况。

那么这种呃这种啊,这种方法呢就一般称之为这个呃,列主元高斯消去法,或者是部分选主元高斯消去法,简写就是个GEPP,这是一个需要注意的一个小问题,OK那么这个高斯消元法或者说LU分解。

它在对于这个对称半正定的矩阵中,它其实有一个更为简单的算法,也是非常常用的一种算法,叫这个啊,科列斯基分解就choleski decomposition,也称之为LLT分解,为什么呢。

因为这个分解它其实干的事情,就是把A矩阵分解成了L乘以L的转置,那么L是一个下三角矩阵,L的转置呢就是一个上三角矩阵,所以我依然还是把A矩阵分解成一个,下三角矩阵,乘以一个上三角矩阵,只不过这个时候呢。

由于A矩阵是对称半正定的矩阵,那么这个下三角部分和上三角部分,其实它就是一个转置的关系,利用这个关系其实可以去简化,我们的这个LU分解的算法,怎么简化呢,我们就可以把这个LLT对吧。

假设我们额这些L里面的这些未知数,都是带球的,我们来看一看LOT乘出来会是什么对吧,我们把它写出来,写出来之后变成下面这个样子,然后我们希望这个LLT等于A对吧,我们就要一个一个去解这个啊。

LI比如说L22L1L二三,这些值到底是多少,那怎么去解呢,你观察就会发现,其实我们可以按照这样一个顺序,去一个一个的求出来,首先L11的平方,就这一项它是只跟L1相关的,然后它等于A11。

所以L11我就可以直接解出来,就是根号A11,有了L11之后,我把它带入到下面这个式子里面,那我就可以得出来L21对吧,这就是A21除以L11,然后L21有了,我就可以把它代入到后面这个式子来来。

得出这个L22,让它变成根号A22减去L21的平方,所以我可以一系列这么带下去对吧,我可以就这么走,走完之后呢,我就可以得到整个L里面的各个系数,到底是多少,对吧,那么它相比于L1分解的好处是什么呢。

好处就在于说,由于这个A矩阵是对称正定的,所以我只需要知道一个L就够了,我不需要同时知道L和U对吧,那相应来说的话,计算量expect我们是可以减小一半的,对吧,那么是克里斯基分解的。

他的这个额算法我们也呃列在这个地方对吧,这跟刚才那个长得会比较像,但同时注意这个地方,它也是有一个三重的for循环的这个地方,所以它的复杂度也是一个ON的三次方,OK吧。

那么对于对称半径定理的矩阵来说的话,所以四级分解是一个非常常用的,或者LOT分解是一个非常常用的算法,OK那么到这里我们就介绍了两种,这个直接求解的直接矩阵的一个方法,一个是LU分解,一个是LLT分解。

LU分解呢可以啊,LCLU分解直接对应这个高斯消元法,那么它可以求解任意的这个矩阵方程,只不过在为了保证这个算法的鲁棒性,我们需要对这个我们需要在选择主圆的时候,来保证我们不会出现这个除零的情况。

那么对于LT分解来说呢,它只适用于对称半正定的情况,但是呢相应的它的速度也会比LU分解,更快一点,那么这两种算法,它的时间复杂度都是在这个ONN的三次方,所以一般来说只适用于求解小的矩阵,方程有多小呢。

一般是这个呃,这个矩阵的大小是100~1000,那就是1000以下,那么这个量级用LU分解,LOT分解一般是能够解的很快的,那么再往上走呢,然后U由于这个ON3次方的复杂度。

那么这直接这两种直接求解方法,它的速度就会大大的这个减慢,在图形学中,比如说我们经常需要在mesh上解方程对吧,或者去构建一个场景的一个方程,那么这个时候呢这个是这个矩阵的大小。

一般来说是会非常非常大的,比如在图中展示这个mesh,它轻轻松松就会有超过这个10万个顶点,那么如果你对,如果你建出来这个矩阵方程,它就是一个10万×100000的一个矩阵方程,这个时候你再用LU分解。

还有LOT分解,那么它就会非常非常慢,可能需要几10分钟甚至几个小时去解,那么这样的速度显然是不可以接受的,所以对于更大规模的这个矩阵方程而言的话,我们一般来说使用的是这个迭代求解的方法。

那么迭代条迭代方法它整个的流程是什么呢,一个大的框架是说,我们先有一个初始的拆解X0对吧,这X0我们可以随便给一呃,如果你完全没有任何信息的话,你可以直接把X0制成零,然后如果有一些信息。

你如果有一些信息,比如说你大概知道ax等于B的,这个X大概可能是多少,那你就把这个所能的那个值作为我们的初始值,然后反复去执行某一个步骤,从XK推到SK加一,不断这样迭代下去,然后我们期望说迭代到额。

设定某个步数的时候呢,这个SK它放进这个矩阵方程里,它的残差R等于B减AX,它的模长足够小了,那么这个时候我们就认为这个迭代可以终止了,我们得到的这个解差不多就是一个精确的解。

比如说我们可以选择这个啊散发的这个上界,比如我们可以选选择成这个E的六次方,作为呃,就是float的这个精度对吧,那我们已经达到这个数值精度的话,那我们再往下解,再往下迭代也没有意义了对吧。

但是很多情况我们甚至都不需要达到这么小,我们什么E的三次方,四次方也够了,那么这样迭代方法解,跟这个我们刚才说的这个直接求解,还有哪些好处呢,首先是对迭代方法而言,我们始终可以把这个迭代停下来。

然后拿到一个差不多的解,而不需要在比如说像这个直接方法里面,我们需要等待一个算法全部跑完了之后,我们才能拿到一个非常准确的解,那么这个东西就是一个优势,因为很多时候呢。

我们其实并不需要一个非常非常精确的解,我们需要一个差不多的解就可以了,那同时呢,如果我们这个初始拆解给的非常的好的话,那么这个迭代次数呢就会大大减小,我们就不需要迭代多少步,就可以达到一个真世界啊。

那么并且对于很多特定的问题,比如说是这个矩阵是个稀疏矩阵,或者说这个矩阵是一个对称正定的矩阵,那么对于呃类似于这样的问题的话,我们有专门的这个迭代算法,去解决这样的矩阵方程。

那么它的速度就会明显优于我们去直接求解,以及说在很多时候也不是很多时候,在某些时候,我们的矩阵方程ax等于B,它并没有显示的存下来,我们其实只拿到了一个接口,就是我输入X然后返回拿到A乘以X。

然后基于聚于额,至于这个A矩阵到底长什么样子,其实是一个黑盒,那么这个时候呢,迭代算法就会比这个直接算,直接求解要更有优势,因为在很多的迭代方法里面,我们其实用到的也只是这样一个接口。

就是输入X输出ax,所以迭代方法相比于这个传统方法啊,不不是什么传统啊,相比于这个直接速写的方法,它有很多的这个优点,那并且这地方我们给出一个例子,那对于这样一个,比如说我们这里有一个弹性模型对吧。

那我们要求解它的这个矩阵方程,那么这个矩阵方程会有多大呢,在图中这个match里,他一共有这个20万个节点,那么其实对应的我们这个矩阵方程的自由度啊,矩阵方程的维数就是一个60万维的一个矩阵。

这个矩阵是非常大的,但是呢如果我们这个算法这个迭代的这个,我们我们这个迭代求解器设计的好的话,那么我们其实是可以在几10ms的,几10ms内就可以把它解的差不多,但是呢如果我们直接求解的话。

那可能就需要几10分钟甚至更长的时间,所以迭代算法如果设计的好的话,他这个速度是非常的可观的,OK那我们下面就来看这个,今天要介绍的第一类迭代方法,称之为这个不动点迭代,那不动点迭代是什么呢。

我们这里给一个非常简单的例子,就大家如果呃玩过这个卡西欧计算器的话,那么可以试试这样一个操作,就是呃我们可以呃随便给一个初值,比如说初值X等于零,然后不断的执行cos answer这个这个这个方程。

这个函数,就是每一次都把这个cos answer的结果放到cos,然后一直往下算,那么你一直按这个等于号,它最后呢,这个这个值会收敛到某一个特定的值上,那么这个值是什么呢。

这个值反映的其实就是X等于cos x的解,它对应的就是图中的这条绿色的线对吧,我们这个蓝色的线是Y等于X,橙色的线是Y等于cos x,那么我假设我们一直按这个等于号呢,那第一步X0等于零。

然后再算呢就是X等于一,然后再算这个X它变成了0。54,然后再算变成了0。85,然后一直这么算,一直这么算,它就会慢慢的收敛到这个Y等于X和,Y等于cos x这两条曲线的交点上来。

那么收敛的这个解就是这个X减去cos x等于零,这个方程的它的这个解,整个的过程你就称之为不动点迭代的过程,为什么这么叫,原因也非常的直观,就是你这个点他一直在迭代的过程中呢,他最后会呃收敛到这个呃。

收敛到这个呃这个真正的解上来,他最后就不动了,OK所以这个就是呃不动点迭代的一个呃,一个基本的一个原理,那么换到这个X等于B的这样一个矩阵方程,来说的话,它的不动点迭代我们可以怎么来写呢。

我们可以假设A可以分解成两个矩阵,一个是M1个是N,然后M和N的差就是A,那么对于X等于B这个解决方程,我们可以把它改写成MX减去N,X等于B这样一个方程,那么这个方程我们还可以做一下变换。

把这个NX移到右边去,然后把M额两边同时乘一个M逆,那么就可以变成下面这个X等于m-1乘以N,X加B那这个方程跟X等于B是等价的,那么由于这个好,这个方程呢左右两边同时都出现了X。

我们就可以把它改写成下面这样一个,不动点迭代的形式,每一次我有一个SK的时候,我都把它代入到方程的右边,然后让他输出的这个结果等于XK加一,然后到下一步的时候呢,我接着把XK加一再带入到方程右边。

然后得到的结果变成XK加二,如此往复进行,我就可以迭代下去了,那么这样一个迭代过程我们可以验证,如果他收敛了,也就是SK它趋向了一个固定的值X星,那么我们带回去其实一定会有这个啊。

M减去N乘以X星等于B,也就是A乘以X星等于B,所以说如果它收敛的话,那么收敛的这个值一定是这个X等于B的解,所以这个就是一个不动点迭代的一个,基本的一个过程,那么这里有很显然的几个问题。

第一个问题是说,这个m-1M的逆这个矩阵我们要怎么去算,对吧,M矩阵是我任意取得一个矩阵,那么M的逆或者说M去求解后面这样一个东西,它的这个解到底是多少,这个到底怎么算呢对吧。

然后其次就是这样一个不动点迭代,它的收敛效率到底会有多快呢,以及,他到底能不能保证收敛呢,有没有可能这个不动点迭代迭代下去了之后呢,这个X会越变越大,越变越大,最后直接炸药呢,呃有这样几个问题对吧。

那我们可以举一个最简单的例子,也就是这个牙科比迭代的例子叫copy eration,Jo viration,他的选择M的方式就非常的直接,我们直接取M作为M为A的对角部分D,然后把剩下的东西。

把剩下的非对要部分扔到N里去,那我们的迭代就会变成下面这样一个形式对吧,比如说如果我们的A矩阵长成这个样子,那么呢D就是A的对角部分,N就是它的A的非对角部分,然后取反,然后在迭代的时候呢。

我只需要比如说X从零开始,然后每次算NX加B拿个向量出来,然后D的逆,因为D是一个对角矩阵对吧,那么D的逆就是一个很好求的东西,所以D逆乘以后面这一坨东西拿出来,这个东西拿出来的一个向量。

就把它塞回这个XK加一里面去,所以假货币iteration是一个非常简单的这样一个,迭代的算法,我们写成这个算法的形式就可以啊,就是这样对吧,我们就一直迭代,然后在每个迭代里面。

我们只需要进行一个这样的操作对吧,那么对于我们给出的这个例子对吧,如A矩阵是这样的话,那么我们去看这个jo iteration,它的这个收敛的情况,你会发现它确实是可以收敛的对吧。

随着这个ITTIVATION数的增大,整个额矩阵方程的残差,也就是B减去A乘以SK的模长,我们这个东西称为残差,它是在不断的减小对吧,初始有个很大的值,然后后面的不断减小,减小到零,减减到零。

意味着B等于A乘以YX那最后就收敛了对吧,所以他确实可以收敛,那同时大家可以看到说对于这样一个呃,A是一个33的矩阵,那么JOVIERRATION,他需要跑十几步对吧,差不多才能收敛,是。

那么我们换一种情况,比如说我们把刚才的那个我们呃,讲这个LU分解的这个A矩阵拿过来,然后把它套进这个JOVIERRATION里面去,那这时候就会发现一个问题是什么呢,就是整个东西它就没有收敛对吧。

这个residual随着这个iteration的增大,这是在不断变大的,并且这个变大过程是就就是一直会变大,但不会到后面有个地方就会减下来,它会一直这样变大,也就是说这个这个雅克比贾克比特ration。

对于这样一个矩阵来说,他就失败了,它永远不可能达到这个矩阵的一个真实解,那么这个地方就展示了这个角号币的原神,他的失败的情况,所以说啊即使就有呃这个不动点接带,虽然它非常简单。

但是呢在某些情况下它是可能失败的,那么具体是哪些情况他会失败呢,我们就希望有一个这个这样一个准则,能够告诉我说到底什么情况下,这个不动点迭代它是可以收敛的,那我们就可以分析一下对吧。

我们把不动点迭代的形式写出来,然后呢把上面这个形式改写成下面这个形式,怎么改呢,就是把N我们不是有M减去N等于A吗,那我们就把N用M和A表示出来,N就等于M减去A把这个东西带进来,那么带完之后呢。

下面这个形式就只跟M和A有关了,对吧,然后我们可以去定义一个量叫误差,它反映的是这个我在每步迭代的时候,这个SK与真实解X星之间的这个差距,就是EK等于X星减去SK,那同时我们还有残差对吧。

我们残差定义RK它定义成B减去A乘以SK,那么残差和误差是两个不同的概念,它们之间的关系呢就是下面这个式子给出对吧,RK等于B减去A乘以SK,B呢可以写成A乘以X星对吧,那我们可以把它写进去。

变成A乘以X星,减去XKX星减SK呢就是EK了,就是误差了,所以存差和误差之间就差这样一个A矩阵,那么把这个公式带回到上面这个形式里面,来对吧,那后面这个B减XK其实就是参差RK对吧。

那么我们就可以得到下面这个式子,SK加一,它其实等于SK加上嗯,逆乘,以A乘以EK,那么这时候如果我们去计算EK加一,EK加一等于这个X星减去XK加一嘛,那把它带进去。

那么就会得到这个EK加一和EK之间,其实乘的就是这样一个矩阵,I减去M,逆乘以A或者我们可以把这个N再写回来,等于M逆乘以N矩阵,所以说这样一个推导告诉我们一个什么,什么一个结论呢。

就是说如果我们去考虑这个不动点,迭代每一步的它的这个残差啊,他的这个误差的话,那么误差其实是这样一个更新的关系,就是EK加一下一步的这个误差,和当前步的误差,中间正好差的这样一个乘矩阵的一个关系。

那么乘的这个矩阵我们可以取个名字,就叫它迭代矩阵,比如叫T它等于I减去M逆乘,以A等于M逆乘以N,那么有了这样一个关系之后,我们就可以去分析了,我们可以对T进行特征值分解。

把它对角化变成Q乘以拉姆达乘以Q逆,那其中这个拉姆达和Q呢,它是可能有这个复数的,就是它它是因为这个T它也不一定是对称的,对吧,呃也不一定是这个正定的,所以这个拉姆达是可以有辅助的。

那么就是不管我们可以把它分呃,右特质分解变成这个样子,那这个时候呢Q那么这个E呢就可以把它,因为Q是一个正交矩阵对吧,那么我们就可以把EK用这个正交矩阵作为基,进行展开,那么最终的结果呢。

就是我们其实对于H5里面的,每一个特征向量的分量,我们其实是对于这个额再乘以T的时候,我们其实给他成了对应的这个特征啊,特征值,那么如果这个T它的所有特征值的模长,都小于一。

那我们就能保证Q里面的每个分量,就是EK在Q里的每个分量,它都是会乘以一个小于一的常数,那么这样不断叠下迭代下去,我长小于一的常数,不断迭代下去呢,我就能保证最后呢,这个EK它是可以收敛到零的。

那么这个条件其实就是我能就是这个啊,呃不动点迭代能够收敛的充分且必要条件,因为一旦这个T中有一个特征值,它的模长大于一,比如说最简单情况,我们可以认为这个T矩阵他是个对角矩阵。

假设啊假设T矩阵是个对角矩阵,然后它里面有一个对角圆大于这个一,比如就是二,那么我在进行这个矩阵操作的时候呢,就会额乘以这个T矩阵的时候呢,那么E里面就有一维,他会在每一步都乘以一个二对吧。

那就是248 16,这样不断的乘下去,最后他就会炸掉,那么这个时候呢也就意味着这个不动点迭代,它是不会收敛,所以不动点迭代它要收敛的话,那我们就要保证这个T的啊特征值,所有特征值的模长一定是要小于一的。

并且呢对于T来说的话,特征值越小的Q的这个分量,那么它的这个误差收敛的会越快对吧,因为特征值越小的话,相当于我们每一次乘的那个值就会越小,所以如果这个T的特征值越小,那么整个东西收敛会越快。

最极端的情况是什么呢,就是我们假设我们的M矩阵取的就是A,对吧,我们就把M取成A那这个时候T等于多少,T等于I减去A的逆乘,以A就是个零矩阵,零矩阵的特征值都是零对吧。

那我们就直接移步就能把所有的这个error降到零,那么代价是什么,代价就是我是我在迭代的时候,我还是要去处理A逆这个东西,所以这东西我直接处理不了对吧,我的目的就是为了去用迭代法来近似A逆。

所以说在选择这个M矩阵的时候呢,我们的准则是什么,我们的准则应该是让M尽可能的去接近A,去近似A,然后同时呢,M1又是一个我可以方便求解的东西,比如说像刚才这个夹克比迭代里面的,这个M矩阵。

我们取的是A矩阵的对角相对吧,对角项用A的对角矩呃,对角项来近似A那么对角相做一个呃,这个这个对角矩阵它的逆就很好求了,所以这个东西就是不动点迭代,它的这个保证收敛的一个性的标准。

那么这个标准呢在实际应用这里面,肯定是不好应用的,因为我不可能我把T矩阵求出来,然后再对它进行这个特征值分解,来看它里面的每个特征值是不是小于一对吧,那我有这功夫,我的这个迭代可能都直接就是啊。

就迭代很多步了,他说明他就经收敛了,所以这个啊,所以这个判断呢肯定还只是一个,就是呃这个理论上的判断,我们在实际应用的时候呢,我们也有一些简化的判断标准,比如说对于这个雅克比迭代来说的话。

对这样一种特殊的不动点迭代,我们有一个结论是说,如果A矩阵是对角占优矩阵,什么意思呢,就是对于A的每一行而言,它的那个对角的那个元素,它是大于剩下所有那一行的,非对角元素的绝对值的加和。

就是这样一个关系,如果A矩阵是一个对角占优的矩阵,那么雅克比迭代,那就一定能够保证收敛,这个条件是一个充分,但是不必要条件,但是因为它非常的简单,所以说啊我们就可以进行这样一个判断。

就是你可以在呃建矩阵的时候,看一看这个矩阵是不是一个对角占优矩阵,如果是的话,那么这两个比迭代就一定能够保证它是收敛的,比如说在我们给出的两种情况里面,那么第一个情况对这个矩阵而言。

他显然就是一个对角占优的矩阵对吧,那第二个矩阵呢它就不是一个对角占优的矩阵,所以说对于第一个矩阵来说,他收敛了,但是第二个矩阵来说,它就发散了,那么对于这种非对角占优矩阵呢。

我们也不是完全没有办法去去用雅克比迭代,去解它,怎么解呢,我们可以使用一个松弛的方法,松弛是什么意思呢,其实非常简单,就是我们在进行这个压力迭代的时候,我们每次更新的这个步堂需要乘以一个常数,欧米伽。

这个欧米伽是我给定的对吧,我们刚才这个欧米伽都是默认是一的对吧,右边求出来直接给他加到这个SK上来,但是我们现在呢我们就先成立一个欧米伽,这个欧米伽呢一般来说呃就是取得值还挺啊,挺自由的,就是你大于一。

甚至都可以,对,但是如果你面对的情况是矩阵不收敛,那么这个时候欧米伽一般取一个小的值,尽量小的值,比如说在这个这个我们刚才说的,不收不收敛的情况下,对吧,对这个对,这个情况我们如果取欧米伽等于0。5。

所以他每次更新的时候,这个步长取0。5,那么你看这个结果,最后他其实还是会收敛的,对吧就只不过这个已推认数呢相比于额,相比于你这个欧米伽取一的那些,然后结带来说可能会稍微久一点,但是呢可以处理这种。

就是你牙被解带之前会发散的一个情况,你只要把前面每一次前面乘以一个0。5的话,那么这个这个时候X等于B这个矩阵方程,在亚比迭代下,它又是收敛的,所以如果你发现这个东西它发散的时候,可以试一试。

用这个松式法给它乘以这样一个欧米伽的因子,OK那么总的来说呢,雅克比迭代呢是一个每一步代价都很低的,这样一个一个迭代算法对吧,我们每次每一步里面,我们只需要去算一个这个对角矩阵的逆,就可以了。

这是一个非常好算的东西,并且呢由于我是一个对角矩阵,所以是非常利于这个并行操作的,但是总的来说呢,雅克比迭代它需要的这个呃步数是还是挺多的,比如说我们在刚才展示的这个,3×3的矩阵情况。

那需要这个十几步甚至几十步才能收敛对吧,那么这个时候,如果我的矩阵还是几万维的矩阵的时候,那这时候你的这个迭代步数可能也是什么几万,几10万这种,所以他这个总的来说这个时间依然不快。

但好就好在它好就好在它很简单,所以啊然后并且呢亚比迭代啊,但是呢亚比迭代在某些情况下它是收敛的,会很快的,在什么情况,比如说如果这个A矩阵,我们就是个对角矩阵的话。

那这个时候亚布解带他一步就可以收敛对吧,因为这个T矩阵I减去D逆,再乘以A它等于零了对吧,那反过来说呃,换句话说就是这个A矩阵,如果它越是对角占优的,那么也看雅克比迭代,它收敛就会越快对吧。

如果这个A矩阵越是对角占优的,它这个对角对角圆越大,那么JQUITRATION它的这个啊近似啊,这个对角矩阵近似A矩阵的效果就会越好,他的这个迭代矩阵T就会越接近零矩阵,那么它的收敛速度就会越快。

OK这是雅克比迭代,那么牙科比带显然不是唯一的一种,不动点迭代的方法,那么与之相啊,经常放到一起提的就是还有另外一种,你叫这个高斯赛德尔迭代迭代的方法,这种迭代方法与雅克比迭代最大的区别是什么。

就是在M的矩阵的选择是不同的,在雅克比迭代中,我们M矩阵取成是对角矩阵,但是在高斯赛德尔矩阵呃,高斯赛德尔迭代当中呢,我们的这个M矩阵取到了这个A的对角部分,加上呃A的下三角部分。

也可以是对角部分加上上三角部分,这个没有区别嗯,那么换角时对M它是一个下三角的一个矩阵,把A的下三角部分拿出来作为M,那么这个时候ME怎么求,那就可以用到,我们刚才这个说这个高斯消元法的这个不少呃。

那个那个那个原理对吧,来昵称以后面这样一个向量,他其实解的就是MX等于B这样一个方程吧,那我们就可以用刚才的高斯消元法,直接从这个第一行开始不断的求,然后代入,然后不断的求,就代入这样一个方法。

把M逆乘以后面这个向量的结果算出来,所以对于这个下三角矩阵来说的话,他的这个逆矩阵,或者说它的逆矩阵乘一个向量,这个操作是很好算的,那么并且呢由于M矩阵,它是A的下三角部分。

它跟刚才的这个雅克比迭代相比呢,这个M矩阵是更像A的,所以你就可以想象,这个T等于I减去M1乘以A,这个迭代矩阵它也是更接近零矩阵的,所以一般来说高斯赛德尔迭代,它需要这个迭代次数。

是要比这个贾克比迭代要要少不少,它的收敛是要更快的,那么与之对应的代价呢,就是你每一步需要的这个成本会更高,在雅克比解答里面,我们这地方是个对角矩阵,你就可以直接并行的去求它的逆了。

但是呢这个地方M是一个下三角矩阵,我们就只能一行一行的去串行的解答,当然在某些情况下,我们也可以通过重排的方式啊,比如说矩阵是析出的,我们可以用重排的方式去呃,得到一个并行版本的这个高斯赛德尔矩阵。

那这个就是呃就大家有兴趣的话,可以去去查一查,这个并行版本的这个高塞尔指针,高塞尔绝代会长成什么样子,那么同时呢呃与这个呃亚比以带相对的,高赛的迭代,它收敛也有一个充分,但是不必要条件。

那就是这个A矩阵它是一个对称半正定的矩阵,它并不要求A矩阵是对角占优的,他只要求A矩阵是这个对称半正定的矩阵,就是说不是所有对称半正定矩阵,它都是对角占优的,也不是所有对角占优的矩阵。

都是对称半正定的对吧,但是啊高赛道迭代,它收敛的这个充分不必要条件,就是A矩阵是对称半正定的,然后甲coin迭代它收敛的充分,不要的条件就是A矩阵是对角占优的,OK那我们如果把高赛的迭代。

他的算法写出来,然后去对比假币迭代,我们其实会发现其实改动非常小,唯一的改动在什么地方呢,就是说在计算啊,在使用这个夹比简单的时候,我们每一次更新的时候,更新SK的时候,我们用到的始终都是呃我们更呃。

我们在更新SK加一的时候,我们用到的始终都是SK的信息,但是在高斯赛德尔迭代里面呢,由于我们使用这样一个下三角矩阵M,那么在更新SK加一的时候,我们同时还用到了前面更新的SK加一的部分。

也就是说在比如说在更新第二行的时候,更新X2的时候呢,我其实用到了已经更新了X1的值,但是在雅克比迭代里面,我们在更新X2的时候呢,只会用到上一步在没有更新的X1的值。

所以这是两个算法的这个唯一的这个区别,就是这个区别导致了两个算法在收敛性质上的,这个那比,所以一般来说高三的迭代,它是会比这货币迭代更快的,OK那么到这里,我们对不动点迭代方法做一个总结。

对我们其实只介绍了两种,最基础的这个不动点迭代方法,一种是JO并迭代,一个是高SADO迭代,这两种迭代方法呢,他们的优势就在于实现的是非常简单的,但是它收敛速度其实都不是很快。

高settle会比展合并快一点,但是呢他的也不是就是在没有优化的时候,咱也是会跑的比较慢的,那同时呢假货币迭代和高CIL迭代,都有各自的这个收敛的这个判别标准,然后比简单来说的话。

需要它是一个对角占优的矩阵,高三的话需要它是一个半正定位矩阵,要具体矩阵具体分析使用哪一种迭代方法更好,那么如果出现了不收敛的情况,我们也可以尝试使用这个松弛变量的方法。

来让额这个LOSL或者是这后面去收敛,那么同时呢如果我们去仔细分析,不动点迭代的收敛特性,我们其实是可以分析出来哪些额,哪些这个error的分量,哪些误差的分量它会收敛的快,哪些误差的分量它会收敛的慢。

那么我们就可以去把那些呃,我们就可以去构建这个多重的多层的网格,或者说用不断用小规模的矩阵去近似A矩阵,然后呢让误差在不同层之间传递,然后使用不同层的这个不动的迭代去求解。

那么这样一个基本思想就是这个这样一个思想,就是这个多重网格求解器的一个基本思想,那么关于多重网格这个部分,我们今天就不在这里展开了,大家有兴趣的话可以自行去看一看,那么一般来说多重网格算法。

它是求解矩阵方程的这个最优方法,一般来说它是非常非常快的,但是呢需要我们对这个矩阵有一些这个呃,这对矩阵的结构有一些分析,我们先分清楚这个矩阵它的特性是什么,也就是这个不动点迭代作用到这个矩阵上时。

的时候,哪些误差分量它是收敛的快的,哪些误差分量是收敛的慢的,那么如果我们有这些信息的话,我们就可以去构造这个多重网格求解器,然后来加速它的求解,我这里就不展开了,大家有兴趣的话可以自己去查一查资料。

OK那我们到目前为止我们介绍了两种,所以矩阵方程的方法对吧,第一种是这个直接求解方法,就是这个LU分解和LOT分解,然后还有不动点迭代方法。

就是这个joping integration和这个高seal iteration,那我们下面其实在介绍这个第三种呃,迭代求解指这个矩阵方程的方法,称之为这个子空间方法。

这个子空间方法他的数学理论是比较复杂的,不是很直观,没有像这个不动点不动点迭代那样直观,我尽量用这个这个就是简单的语言来给大家,就是描述一下这个子空间迭代,它具体的这个思基本的思想是什么。

那么出发点是什么呢,是我们可以把X等于B这样一个问题,看成是一个优化问题对吧,我们去优化这个X减B的这个残差,那么整个优化的空间呢是RN对吧,就是A是N维的那种优化空间,就是RN那么假设中间有一组基。

这个RN上有一组积E1到EN,那么子空间迭代的一个基本思想是什么呢,是跟我们在第M部M部里面,我们只考虑这个在子空间,由E1到EM章程的这个M为子空间上的,这样一个优化问题的解,也就是我们限制了X。

它只能由哎E1到EM,这M个向量的线性组合构成,然后只考虑X在这个MX空间上,如何让这个X减B它的残差最小,那么通过这种方式呢,由于我们在就是因为我们限制到了我们的问题,在子空间上。

所以我们在每一步迭代的时候,这个考虑的这个优化问题的这个维度,就不再是整个优化空间了,而是在一个子空间上考虑这个问题,那么并且如果我这个GE1到EN,它的构造方式满足某些特性,那么满满足某些数值呃。

这个数学上的特性的话,我们就可以用很少的这个计算,从XM减一更新到XM,XM减一是在E1到EM减一,这M减一个向量上的这个子空间上的解,XM是一到em这个M位子空间上的解,如果这个基。

那构造的方式满足某些数学特性的话,那么从XM减一更新到XM,这个代价它其实是低的,所以额那么那么这样的话,我这个子空间迭代方法就可以进行下去对吧,因为我每次迭代的每每一步里面,这个代价是低的。

然后同时子空间迭代保证了说,我们最多只需要N步就一定可以达到最终的解,为什么,因为在第N步的时候,我们保证我们求解的这个解,是以一一和到EN这N个向量章程的N维,子空间上的这个残差最小化的解。

那么也就是原来的整个空间,RN上的这个最小化的解,所以说我们最多只需要N步,就可以达到这个最终的这个解,那么相比之下,我们刚才说这个后面迭代和高赛道迭代,它是可能迭代很多很多步的对吧。

我们刚才一个3×3的矩阵需要迭代十几步,但是如果我们使用子空间迭代的话,我们最多只需要迭代三步,就已经能够保证这个把解求出来,是吗,额,那我们下面就具体来看一看,这个子空间迭代到底是怎么进行的对吧。

那么最常用的子空间迭代方法,或者最成功的子空间迭代方法,就是这个基于这个clot夫子空间的方法,那clot是一个嗯,应该是前苏联或者俄罗斯的这个数学家,那么由他提出的这个CROODS子空间。

那么具体长什么样子呢,就是对于这个矩阵方程X等于B来说,quo子空间定义成下面这个样子,KRAB等于后面这一坨,这个数学含义是什么呢,是说整个子空间它是由BAB,A的R1直到A的R减一次方。

乘以B这R个向量所作为啊,所章程的子空间,那么整个子空间,它就是一个R维的一个额子空间,因为我们这地方有R个向量,对吧,然后BABA到R四R1直到A到R减一次方,B它中间这些G也不一定是啊。

这些向量也不一定是正交的对吧,我们可以把这些向量啊作为基,但是这个基呢它就是一个不正交的一个基,所以KR是一个R维的子空间,那并且呢他满足这样一个嵌套关系,就是K1是这个K2的子空间。

然后K2又是K3的子空间,一直这样嵌套下去,这个很显然对吧,因为K2相比K1来说的话,我就是多了AB这样一个机,然后K3相比K2来说的话,我就多了一个A的平方B这样的几。

那么一直到这个KN也就是我会有BA的B次方,A的N减一次方乘以B这N个向量,它所章程的空间就是全空间RN之后的,所有这个KN加一,KN加二,虽然我的向量个数变多了。

但是他这空间的维度是没有没有变多的常数,就这样,N加1N加二个向量,它之间是有这样一个线性关系的,那么使用quo子空间进行,我们刚才说的这个子空间迭代方法,那么也就是说我们在DM部考虑的问题。

就是在这个km中寻找这个最优化残差的,这个XM,你这是这个就是关于这个QUOS子空间,迭代方法的一个最基本的描述,那我们下面就看一个具体的例子,也是最常用的这个COU子空间的迭代方法。

就是共轭梯度下降方法,Contra gradient method,它所解决的问题是对于对称半正定的矩阵A,我们要求解一个X等于B的问题,那么对于像这个拐点方法,或者说cg方法来说的话。

我们把X等于B这样一个矩阵方程,转化成下面这样一个形式的一个优化问题,那么这个优化问题把取到最小值,取到最小值的时候,对应的就是它的梯度等于零对吧,那么梯度是什么呢,把这个后面这个形式求导。

对于这个X求导,那么求出来结果就是AX减去B,它刚好就是我们的负的残差对吧,那么如果上面这个形式它取到最小,那就是残差等于零,也就是X等于B了,然后并且由于A矩阵是对称半正定的。

所以我能保证整个后面这个东西呢,它就是一个一个正的一个二次型对吧,所以他有唯一的这个最小值额,那因此呢我们解决这样一个最小化问题,就等价于解X等于B,那么如果我们刚才说说这个呃QUOS空间方法。

在DN步中,我们想要的是让XM在km中最小化前差,或者最小化这个FX对吧,这个是我们在子空间迭代中要做的,那么这个最小化什么时候能取到呢,这个就是些几何知识了,就是这个梯度啊,拉姆达F也就是负的RM。

这个梯度它如果正交于我们的子空间的话,那么这个时候我就能保证整个这个解,它是这个额在km中最小化了,Fx,这是个几何结论对吧,如果我的这个额,如果我的这个梯度正交于我的这个子空间。

那代表我无论在怎么在这个子空间中移动,我都无法再进一步减小它的这个FX的值了,因为我要减小它的话,我一定是沿着这个负RM这个方向移动对吧,我要沿着这个负的梯度的方向去优化这个FX,才能使它更小。

但是由于你这个啊负RM,跟我现在子空间是垂直的关系,所以我无论在这个子空间中怎么移动,都没有办法让它的这个残差进一步变小,所以说啊,所以说额那么我们在每一步迭代过程中,就需要保证这样一个条件。

在每一步迭代当中,我们需要都需要让这个RM和当前的这个子空间,KM是正交的,只要这满足了这个条件,我就能知道XM是在cam中最小化了FX,那我的这个子空间迭代算法就成立了。

OK那么下面就看这个公和梯度方,公过梯度方法是如何去保证,我们上面说的这个RM前差垂直于km,它是在每一步都能成立的,那么我们这地方给出一个共和,梯度下降算法的一个最核心的部分,它的核心思想是什么呢。

是我们如果我们能够构造这个QUOB子空间,他有一系列的共轭的GPM,满足下面这样的关系,就是P1到PM是M个向量,然后这M个向量张成的空间,就是我们刚才说的这个high love子空间。

KMMMV的子空间,并且这呃这N个向量P到呃,呃这这这所有的向量P1,一直到PM一直到PN,他们都满足这样一个共轭关系,也就是pi转置乘以A乘以PJ等于零,如果我们能够构造出QUOS空间的这一系列的。

共同的基,那么,在迭代的每一步,我们在已知XM减一,求YMXM的过程,就是在PM的方向上求最小化FX的过程,写成数学形式就是啊已知XM减一,那么XM和XXM减一的关系,就是这样一个关系。

这个阿尔法M是一个标量,gm是一个啊,是一个我已知的这个啊向量的方向,那么我们现在要知道,就是我要去求解一个阿尔法M,使得它能够最小化FX,那由于这个阿尔法它是一个标量,那么这样一个优化问题。

他就是个一维的优化问题,他就非常好解,那么这东西就是共轭梯度下降算法的核心,那么啊这样的过程就是大家先不去想说,就我们这个P1到PM到底是怎么来的,以及呃,以及这个地方为什么XM减一和XM之间。

就是这样一个关系对吧,我们先把这个结论告诉大家,就是说,如果我们已经有了P1到PM,这样一个一个一系列共和机的话,那么我在每一步迭代的时候,我只需要去解一个一维的优化问题,就可以得到从X减一更新到XM。

那这个东西就是我们啊,这个共和梯度下降算法的一个核心,那么我们下一步的问题就是说,为什么这样一个额这样一个算法,它就能够保证我们刚才说的这个性质,就是XAM它对应的那个梯度RM,它是正交于KM的。

我们下面就去证明这样一个啊这样一个过程,它是满足我们刚才的要求的,怎么证呢,我们就归纳了来证明,那么最开始在迭代最开始的时候,我们是在这个由P1构成了,这个额这一个一维的子空间上。

去解这样一个优化问题对吧,那么P1显因为因为他是个一维的,所以那这个优化问题就可以直接解,然后并且解完了这个解完之后呢,我能够保证这个R1它是垂直于K1的对吧,因为我是在这个一位问题上解到了最优。

所以这个R1它的梯度或者它的残差,是垂直于当前的子空间K1的,然后如果在DM减一部的时候,我们保证了RM减一是和KM减一是垂直的,那我们下面去考虑RM和KM的关系怎么考虑呢,我们把RM写出来对吧。

RM等于B减去A乘以XN,然后XM呢用我们刚才引入的这样一个,更新的关系代入进去解开,然后呢B减去A乘以XM减一,这一项就是对应的RM减一,然后面一项这个阿尔法M乘以A乘以pm,保留对吧。

所以RM和RN减一满足这样一个关系,我们要证明什么,要证明RM和KM是垂直的,怎么证明呢,首先第一点,由于我是在pm这个方向上进行了搜索对吧,我是在pm方向上前面乘了这个一个scale r。

在这个方向上进行搜索,最小化了FX满足了最小化条件,因为我在这样一个一维优化问题上,满足最小化条件,那么一定有这个RN是垂直于PM的,因为这个PM就是额外增加的,那一维的那个方向对吧。

如果我在这个方向上最小化了这个FX,那么你剩下的残差,一定是跟这个方向垂直的对吧,所以这是第一个我们要用的结论,那第二个结论,由于我们啊由于RN减一垂直于KN减一,这是上一步我们的这个归纳的。

这个用的这个条件,然后以及PM也垂直KM减一,因为这个条件呢就是PMPI和PJ任意一对,PIIPJ它们之间是一个共轭的关系,所以PM也是垂直于km减一的,对吧,这个就是我们构造这个G的时候。

用到它的共轭关系,那因此gm p m和km减一垂直,RM减一也和km减一垂直,所以RM就自然和这个KM减一垂直,因为RM就是RM减一,再乘以这个后面这个东西,对吧嗯我看一下哦,不好意思。

这地方应该是APM垂直于km减一,这边改一下,那算了,待会就改了,因为啊对,因为这个地方是因为呃对,pp是pi和PJ中间有个A矩阵嘛对吧,所以这地方应该是APM垂直于km减一。

OK那这样的话结论应该是成立,就是RM是垂直于KM减一的,那因此呢我们证明了RM他是跟KM减一垂直的,并且呢RM也是跟PM垂直的,那自然啊RM就是和km垂直的,那km就是km减一和PM组成的。

那换言之呢,我们通过这样的归纳的方法证明了说,只要我们能够构造出啊一切这个共轭机,P1和P到PN,那么CD算法它就是可以进行下去的,在每一步我们都保证了这个梯度,RM是和当前的子空间垂直的。

也就是说我们每一步都保证了这个呃,我们是在这个当前子空间取到了最优,然后并且呢在每一步更新的时候,我只我其实只需要考虑在PM这个方向上的,一个一维的优化问题,所以我的迭代就可以进行下去了。

OK这个就是工位梯度算法的一个基本的一个,一个想法,我们当然这地方还没有涉及到,说如何如何去构造这样一个P对吧,但我们今天就不展开讲了,直接把这个算法具体形式来告诉大家。

那么这样的算法其实写出来会非常简单对吧,你可以看到说呃,前面一部分这个R求R发K的这样的过程,它其实就是在描述我们刚才说的这个呃,解在pk方向的一维优化问题的过程对吧。

XK减一等于SK加上阿尔法K乘以PK,然后阿尔法K呢是一个我们需要去优化的东西,它优化的这个值就是后面这坨东西,然后拿到阿尔法K之后呢,我们下一步就去构造pk加一,作为下一步的这个搜索方向。

这个搜索方向要跟前面所有的这个呃,所有的这个P幸运值到pk要相互垂直,要相互共轭,那么怎么去构造呢,就是其实啊写出来非常简单,就是我去算一个贝塔K,然后再pk加一等于2KRK加一,加上贝塔K乘以pk。

所以它也是一个一步更新的东西,那么这个东西就涉及到这个QUOB子空间的,一些呃独特的性质,这个就是我们今天就不展开讲了,所以说这个就是共轭梯度算法的一个,基本的一个流程,总体来说共有梯度算法呢。

还是一个写起来非常简单的一个东西,并且呢它的效率也是非常高的,OK那么关于呃过期的算法呢,它的这个具体的数学大家没有了解,就没有没有太听懂也没有关系,就是呃因为很多时候大家只需要用就可以了,对吧。

那么啊呃这个具体的这个就比如说,但是大概的这个思想呢,就是我们刚才说的这个子空间迭代的这个思想,就是这部分应该是额,就可以稍微稍微稍微了解一下,然后具至于说具体这个阿尔法K,贝塔K是怎么算的的话。

这个就是再细节的数学推导,这个就大家有兴趣的话可以去了解一下,没有兴趣的话,其实就好只要会用就可以了,那么共和梯度算法呢,它是一个非常快的收敛算法,它能够保证在N部的时候,N部内就能收敛到最终解。

而且呢一般来说我们不需要真的让它迭代N部,我们只需要迭代小呃,就是远小于不是小于N部的,这样一个一些一些步数的时候呢,它的这个误差,基本上就能收敛到这个阈值以下了。

那么对于常见的这种几万维的矩阵来说的话,我们其实只需要几千步就可以啊,让共和梯度法收敛的差不多了,那并且呢共和梯做法,他有一个额收敛速度的上界,写成下面这个形式,那么这个形式呢SK减一减去X星。

X星是我们的真实解,SK是迭代到第K步的解,XK减一减去X新的模长,也就是DK5的误差,这K步的误差比上初始的误差,这个比值呢它是会小于后面这样一个啊,一个一个幂指数,KK是在这个指数上。

然后里面的这个卡帕减一除以卡帕加一呢,它是一个常数,其中这个卡帕是矩阵的条件数,它定义为A矩阵的最大特征值与最小特征值的,模长的比值,那么那么一定有这个卡帕是大于等于一的,那么这样一个比值。

如果A的这个条件数比较大的时候呢,比如很大很大1000多的话,那么这个卡巴减一除以卡帕加一的时候,他就会趋向于一,如果卡帕趋向于呃,卡帕趋向于一的时候,就是条件数趋向于一的时候,那么哪怕减一。

它就是一个很小的值,那么这个值就会趋向于零,换句话说什么意思呢,就是说如果A矩阵它的条件数越小,那么这个额幂指数的这个底数它就越小,越接近于零,那么整个收敛就会越快,像我每次都乘以,比如说0。10。

001,0。0001这样来收敛,但是如果呢这个条件数它非常的很大的话,那么后面这个值就会接近于一,现在我每次都只乘了,比如说0。0。99,每次只剩0。99,那这时候他的收敛就会很慢了,所以说混合梯度法。

他的这个收敛速度主要相关的条件,设相关的就是这个矩阵的条件数,一般来说,我们希望这个矩阵的条件数要尽可能接近一,这样能保证公共梯度算法,他的这个收敛是非常快的,那么为了让公有梯度算法。

他的这个条件数变小,有一种方法叫这个预处理,叫pre conditioning,我们怎么去改善它的条件数呢,我们可以尽可能去找到这个,A逆的这样一个矩阵,它的一个近似矩阵M等于P转置乘以P。

那么我们去转而求解下面这样一个矩阵方程,那么这样一个矩阵方程,它跟ax等于B显然是等价的对吧,并且呢这个PAGAPT这样一个矩阵,它的条件数一定是比A更啊,一定是比,一定是比原来那个A矩阵单独要更小的。

为什么呢,因为在极端情况下,如果我们考虑这个M矩阵,它就是A逆的话,那么上面这个矩阵的条件数,那就应该是一对吧,所以说如果我们能找到A逆的这样一个,近似矩阵M,那么我们转而去求解上面这个矩阵的话。

矩阵方程的话,那么它对于cg来说就会收敛的非常快了,那么如何去选择M呢,其实跟我们刚才介绍这个不动点迭代,有一些类似对吧,不动迭代我们说到JACCOON高三了对吧,那么这个时候这个M矩阵我们也可以选择。

比如像对角矩阵,我们直接把M选成A的对角,那这个时候对应的这个额cg方法,就成为这个白ano precondition的cg DP c g,同时呢我们也可以用啊,呃用最开始介绍这个LLT分解。

也是CHOLEICITY分解的一个简化的形式,叫不完全的CHAI分解,那么对应的这个CDCD算法,就称为这个不完全的查尔斯D分解的cg。

也就是incomplete choleski preconprecondition,cg就是i c p cg,那么从右边这个图里面可以看出来,这个ICPCG呢,它的收敛速度跟没有非常性能的时候呢。

他这个收敛速度是快非常多的对吧,所以PRECONTAIN,preconditioning是一个非常强大的一个技术,那么ICPCG呢,也是一个,我们在求解这个正定的对称的矩阵方程的时候。

非常常用的一个求解器,一旦你的方程是一个对称的半正定的矩阵的话,你可以试一试ICPCG,那它的结果一般收敛速度是很快的,对于一个这个啊几万维的这样一个矩阵,你甚至可以只需要这个几十步。

就可以让它收敛到不错,OK那我们呃介绍这个双就可以grain的嗯,这个啊cg迭代之后呢,那么这个CD迭代,它只适用于这个对称正定的这个矩阵方程,那么其实clot子空间方法本身,它是有呃其他形式的。

来适用于更啊更宽泛的情况,那么这地方列出了一些常用的,比如说如果我们求解的是一个对称矩阵,但是不一定是正定的矩阵的话,我们可以考虑使用这个MRS求解器,一个是minimal residual方法。

那如果我再求解的是一更一般的矩阵,它甚至都不是对称的话,也有对应的clot子空间求解器,比如说这个啊GM2S以及by cg以及by cg step,那么这些求解器它都能求解这个呃。

一般的非对称的矩阵方程,那只不过呢如果我们用比如说用这个啊JIMRSS,或者说明RSS,去求解这个对称正定的这个矩阵方程的时候,它的速度呢不会就会比这个cg要慢一些,所以为了速度的话。

你就去看一看这个矩阵到底是一个什么样的,一个矩阵,如果是对称正定的话,那么CD就是最优的,如果只是对称的话,那AMMRS是最有的,如果是一般情况下,再考虑这个gm rs和这个by cg step之类的。

一些求解器,Ok,那我们可以总结一下今天介绍的这啊,其实三类的求解器对吧,那我们的结论是什么呢,是说如果我们的矩阵规模比较小,比如说小于1000为,那么通常直接求解是一个最快的方法。

就比如说像这个有RLU分解,比如说LOT分解,对OT分解只剩矩阵是这个对称正定的情况,那当矩阵规模比较大的时候呢,这个直接求解,它的速度就会由于它的这个复杂度的限制,就会非常的慢。

那这个时候迭代球鞋气息会变得更有优势一些,那迭代求解器又分为两种,第一种我们是这个称为这个不动点迭代,比如说像这个折扣be iteration和高sao iteration。

它的优点就在于它的实现是非常简单的,但它的收敛速度其实是不一定很快的,一般来说我们需要去调节这个松弛系数,去平衡这个啊绷点迭代的稳定性和收敛速度,然后不动点迭代呢。

它同时可以可以被改进为这个多重网格方法,我们今天没有介绍,但是呃呃我们需要了解,就是说这个多重网格方法,其实它的速度是非常快的,呃然后呢,另外一类迭代方法,就是这个CROLOVES子空间的方法。

它一般收敛的速度呢是很快的,然后呢,以及我们需要对不同的这个矩阵去使用,相对应的方法,比如说如果是对称正定的矩阵,我们用cg对称矩阵,我们用明rise。

然后一般矩阵用这个gm rise和by cg之类的,算之类的算法,然并且呢如果我们能够对矩阵进行预处理的话,那么这个时候能大大提高这个呃FLO子空间,迭代方法的这些的它的收敛速度。

比如说我们之前介绍的这个DP,cg和sap cg方法等等,所以大家可以看到来说,就是我们解决这样一个X等于B的呃,问题来说的话,他其实没有一个通用的一个最优的一个,一个SOFER,更多时候还是得该大家。

根据自己的这个实际情况,去选择合适的这个啊求解器,那么所有今天提到这些求解器,在这个呃像啊N派呀,S i p y,还有这个其他的一些啊MATLAB呀,这些数据库里面都是有内部的这个实现。

大家就可以啊去掉那些函数的接口,然后它的名字呢,一般来说也就是啊非常的这个直观,比如LU一般来说就直接就是LU,然后LT呢可能叫这个CHOLESKI,然后MRS或者什么cg呢。

一般就直接叫叫cg或者MRS,所以说啊就是大家在以后用这些soft的时候,可以结合自己这个矩阵的这个特性,然后去选择这个最合理的,最快的这个扫分,OK那我们今天就介绍到这里,然后作业的话就是呃。

给大家就是几个代码填空题,就没有理论作业了,然后那个大家可以去啊,就是那个代码填空其实非常简单,就大家就对应这个PPT里的这个算法流程,把那个对应的空给补上就可以,然后大家可以跑一跑看一看,玩一玩。

来比较一下不同的这个热水器的,它们之间的这个速度差别,OK那我们今天就介绍到这里。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

GAMES001-图形学中的数学 - P14:生成模型的案例分析 - GAMES-Webinar - BV1MF4m1V7e3

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

大家好啊,我们今天要给大家介绍,是这个深度学习当中的一些呃数学知识,那么在之前的课程中呢,我们呃给大家介绍多了很多像这个概率论呀,线性代数啊这些基础性的呃内容,那么随着这个图形学的发展呢。

以及这个深度学习技术的发展,那么后来的很多的这些图形学技术呢,它其实是啊都是深度学习相关的技术,那么深度学习呃,深度学习这个领域也是在不断的发展中的,所以说我们最后一节课来关注。

一些相对来说比较前沿的部分,就是如何去啊,利用数学去为深度学习更好的提供这个建模,那么总的来说,如果我们要去了解深度学习中,可能用到的这些数学知识的话,比如说大家可以去网上找,有一些非常好的教程。

这些教程呢包含了这个里面,可能生学习里面可能用到的数学的方方面面,比如说像这个微积分,线性代数啊,概率论这些知识,那么这些部分呢,其实我们在之前的课程以及课程中,已经跟大家介绍过了。

所以其实今天呢我们的重点也不在这个地方,我们也没有精力说,就是这一节课就是把把大家跟大家从头开始,就是来看一看深度学习中到底有哪些数学,我们不可能做到这种非常全面的介绍对吧。

以及说深度学习其实是一个在飞速发展的社区,比如说这里展示了这个CPR去年统计的这些,他接收的和已发表的,你看到这个增长的势头是非常,所以社会学领域本身也在一个快速的发展。

它所需要的数学工具呢也是这个不断的呃,日新月异的,所以我今天的想法呢,更多的是说,我们就从这个以几个这个案例分析的角度,我们举几个点来给大家看一下,说比如说像概率论这样的一些基础的数学。

它是如何和这些啊,我们今天看到了各种各样的比较fancy的这些啊,大模型的结果,它们之间是如何建立联系的,那但是不可否认的是,这个这两点之间的联系,它这个gap是非常的大的。

比如说我们这里有一张这个命图对吧,我们先告诉大家这个如何计算,1+1=2对吧,如何去做一些基础的运算,然后我们来看看例题,就是一个非常复杂的这样一个啊求这个极限啊,什么各种各样的东西。

求极限积分这些东西对吧,那我们在学习了这些基础的概率论呀,线性代数啊,优化基础这些课程之后,然后去了解这个最新的一些网络前沿,包括像这个transformer啊,NERF也好。

defection model也好,那么这两者之间还是有一个比较大的gap的对吧,这个不可否认,那我们今天呢也不可能就说一节课,就把这个gap给它填上了对吧,所以啊我们今天呢我的一个主要思路,就是说。

大家就是理解一些这个推导的关键部分就好了,这部分呢我都用红色标出来了,那至于其中的其他的这个数学细节的话,大家可以啊,就是下去之后自己再推一推对吧,但是这些而关键的这些证明的呃逻辑啊,然后推导的步骤啊。

我都用红色标出来来帮助大家这个理解,那我们在介绍啊这些东西之前呢,首先要给这个深度学习有一个基本的引入对吧,那我们这节课也不是一个啊,深度学习的入门课程对吧,所以我们就以一些非常难易的观点来看一看。

深度学习是什么东西,比如说我们可以借助这个拟合的想法对吧,我们之前呃在这个差值拟合中有这样一个例子,我们要对一堆散点XY,然后要给他做这个拟合,比如说在图里画,就是一个最简单的一个最小二乘拟合对吧。

我们首先是假设这个Y和X之间满足某个分布,如如果是线性的话,那它就满足一个啊,比如说一次的话就满足这样一个一次方程,其中呢这个方呃,这个一次函数的呃斜率和截距CA1CA2,它是我的待定的系数。

我需要去通过优化啊,这个直线与这个我实际观测到的这些数据之间,的这个误差,这些差距来得到最佳的这个西塔值,我们可以用这样一个简单的模型去理解,深度学习到底是个什么东西。

比如说如果我们不去关呃关注这个神经网络,它内部具体的这个架构的细节,比如说像CNN啊,就是performer啊,还是RN等等,我们就可以把它当成是一个,充满了待定参数的函数FC和X。

然后深度学习的过程就是,我针对我具体的问题去定义一个损失函数,损失函数L,然后优化这个参数theta,那么这个问题就是一个经典的一个,无约束的优化问题对吧,那么对于这样的无约束优化问题。

深度学习一般采用的是随机梯度下降法,去优化它,随机梯度下降法,顾名思义,就是在梯度下降之上加了一点随机性对吧,这个是帮助这个神经网络能够更好的去逃离,这个安检来设计的,那这部分我们也今天不具体展开。

那关键在哪,关键在于说因为你是随机梯度下降,所以我肯定得有梯度对吧,于是我就必须要能够计算这个损失函数,相对于未知参数C它的这样一个梯度,那么有了梯度之后,我就可以跑随机梯度下降算法。

我就可以优化得到最终西塔,那我就学习过程就完成了,所以今天我们啊对,深度学习有这样一个非常难以付的理解,然后我们就可以看一下,说这个当下最火热的,比如说像这个VAE也好。

diffusion model也好,这样的一些网络,他到底去如何设计这个损失函数,来去formulate它的问题,那么这其中涉及到的这个数学知识,主要就是这个概率论的知识,那么生成模型是什么对吧。

比如说我们这里展示了这啊,四个非常呃火热的这个生成模型,大力三是生成图片的,SA是生成视频的,mesh是生成这个呃mesh和这个贴图的啊,SONO是生成这个音乐的对吧。

那么这些生成模型它的效果非常的炫酷,但是如果我们究其本质的话,我们可以用一种概率论的方法去理解,他们到底是在干一件什么事情,怎么理解呢,我们对吧,我们先从已知的哦,也不是已知的。

大家比较熟悉的这个网络开始对吧,我们大家比较熟悉的网络是哪一种呢,一般来说是这种啊,分类器对吧,假设我有很多的这个猫的图片,狗的图片,鸟的图片,然后喂给一个网络,然后让他去学。

然后他就能告诉我说以后我给你一张图片,这个哪些是猫,哪些是狗对吧,那么这样一个过程相当于什么呢,如果我们把图片对吧,我们把图片就是把它写成X,那么一张N乘N的图片呢,它对应就是一个N乘N的这样一个向量。

那么所有的狗的图片呢,它其实对应着一种概率分布,PX这个PX告诉你了,说呃到底有多大概率,这张图片是狗,假设说这个PX是存在的,OK吧,那么我有了这个PS之后呢,我的网络要干件什么事呢。

我的网络就要告诉区别开,这个狗的概率和猫的概率到底区别在什么地方,我知道这地方画条线,然后告诉你说这条线右边就是猫,这条线左边就是狗,那么我们这个分类任务就完成了对吧,这是一个非常啊非常朴素的理解。

那么生成人物要干的是些什么事呢,生成人说,我要使用我的网络,去尽可能的拟合这样一个概率,比如说我拟合一个猫的概率,那假设我的拟合成功了,那我们接下来就可以通过sample这个网络的概率。

这我已经知道概率了,我就可以在这个概率里进行sample,那么sample出来的所有图像,它都应该是猫的图像了对吧,并且由于我这个分布应该来说是个连续的分布,所以我就可以生成一些实际数据集里没有的。

这些猫了,那么这样我的一个生成任务就完成了对吧,所以如果我要生成一个什么东西,那它的关键就是我要去拿网络,去拟合这个东西的概率分布,OK那如果把它理解成这样一个问题的话。

我们自然就会问自己两个更具体的问题,第一个问题是说,假设我的网络能够表达这个概率分布了,那我们怎么去衡量网络表达概率分布,与实际猫的分布之间的差距呢,这地方困难在哪,困难在于说。

我们其实根本不知道这个PX具体长什么样子,我们有的只有从数据集因拿到了一堆sample,这个sample,影视的表达了这个概率分布长什么样子,第二点是说我的网络到底要如何去表达这个啊,这个概率,对吧。

你可以想象说这个X维度是非常高的对吧,我们是如果是一个512×512,甚至都不是一个很高清的图片对吧,512像素乘以512像素,是一个不是那么高清的图片,那么它的X维度就已经非常恐怖了。

并且这个C塔一般来说维度也很高对吧,那我到底要设计一个怎样的函数来去表达这个,我想要的这个概率呢,所以我们自然就会问这两个问题,那我们一个一个来看,首先第一个问题是说,如何去衡量两个分布之间的相似程度。

那么这一个过程,大家一般来说用的都是这个kl散度,它的定义式就可以写在这个地方对吧,PQ是两个分部,我可以写成这样一个积分的形式,那么这两个积分,由于我中间有个乘了一个PX对吧,那么根据概论的基础知识。

我就可以把它写成是相对这个P分布的,一个期望对吧,这个就是kl散度,那么对这个kl散度而言,如果P和Q相等,这两个分布一样,那么自然这地方P除以Q,那就是一对吧,那log1就是零。

所以kl散度就呲呃就就就是零了,那如果P不等于Q的时候,这两分布之间有差距的时候呢,那么可以证明后面这个积分式,它一定是大于零的,这个我们就呃不具体推了,大家可以记住这个结论,就是说如果对kl散度而言。

它是一定一定是个非负的东西,如果P等于Q的时候呢,它就等于零,如果P不等于Q的时候,它就一定大于零,那同时呢kl散度它也它虽然满足这样一个啊,看起来是P和P和Q的这样一个距离,度量的一个东西。

但它其实并不是对称的对吧,你把P和Q交换,那么后面这个积分式自然肯定长的不一样对吧,你后面这个期望在不是对P求了,就是对Q求了,那这两东西就不太应该不太可能相等了对吧,他就不相等,所以kl散度呢。

它不是一个对称的一个距离的度量,但它有个好处是什么呢,好处是说这个kl散度呢,它在度量这个距离的时候,它其实集中度量的是这个P不为零的区域,因为我这地方乘了一个啊PX对吧,如果你在某个地方PX等于零。

那么这个积分式他就没有贡献,我就根本不care那个地方的Q到底长什么样子,那换句话来说,我们可以怎么形象来理解,假设这个P是猫的分布对吧,Q是我一个网络分布,那么去度量二者之间的距离,二者之间的差距。

我其实根本不关心GX等于零的部分,也就是我不关心那些什么猫的啊,那些狗的图片啊,杯子的图片,我只关心那些实际上可能是猫的图片地方,我这个网络到底给我输出了一个什么样的东西。

所以这个是kl散度非常好的一点,那同时呢最好散度它也有一些额,也有一个非常好的一个啊,另外的一个理解,如果把啊我们要如果我们要最小化kl散度,并且假设这个P呢是我的已知分布,Q是我要拟合的分布。

那么这个时候最小化这个最小散度呢,其实也就是最大化后面这个负的这一项对吧,就是负的这个被P取去望的long q,那么最大化这个东西我可以把写成期望的形式,然后呢这个期望就可以写成采样的形式。

那么这个采样呢是后面对后面这个额log q,要求求求和对吧,那我把它放进去变成这个连城,那也就是说如果我最大化它,那其实也就是最大化后面这个连乘,那么这个连乘代表什么东西呢。

这个连乘代表其实也就是我采样了一堆点,从P里面采用了一点xi,然后我去计算每个点上的,这个我的模型的概率Q然后把它乘在一起,我要让这个概率最大,那么这个如果他能够最大的话,那Q和P就最接近了。

那么这个对应着什么,也就对应着这个最大自然估计,最大或最大自然估计是什么意思,也就是我希望我采样的这些点上,我的模型给出的概率是要尽可能高的,这样的话,我的这个呃Q的分布才能跟P的分布是对上的,对吧。

所以说最小化观测与模型之间的kl散度,那其实等价于最大化观测点上的模型概率,也就是这个最大自然估计,所以kl散度有这样一个非常好的一个对应关系,OK那么到这里我们就解决了。

就是说如何去度量两个分布之间的差,距的问题了,那好,那剩下一个问题就是我们到底该如何去表达,这个额模型的概率,也就是如何去构造这个派THETX,那我们首先介绍一个啊,现在相对来说比较啊经典的一个方法了。

就是这个变分自编码器的一个方法,Variational auto encoder,也叫VAE模型,那么VE模型在构造这个网络的这个,概率分布的时候呢,它其实借助了一个已知分布的隐变量Z。

这个Z他遵从的是这样一个高维的,一个高斯分布,一个标准正态分布对吧,均值是零,方差是一,那么这样一个标准正态分布,那写出来公式呢就是下面这个样子对吧,高斯分布这个大家应该也比较熟悉了。

那么这个Z的维数是要远远小于这个,我的这个图片的维度X的,我们借助这样一个隐变量来尝试,为这个额I西塔X来写出一个表达式出来,OK那么到这里我们就需要回顾一下了,因为我们引入了一个额外的一个随机变量。

Z对吧,那我们就要看一下这个Z和X之间,它可以组合出哪些公式呢,那首先就是P和额X和Z之间,它是有个联合概率的对吧,P x z,那么这个联合概率它可以写成条件概率的乘积,对吧,我可以先用PZ。

然后乘以一个x condition z对啊,这样一个呃条件概率,这两个乘起来结果等于总概率对吧,我也可以啊,先有个PX,然后再乘以上这个z ctr上X的概率,然后得到总概率。

然后并且呢对于这样一个联合的概率,我还可以求它对应的这个啊marginal的概率分布,也就是边缘概率分布怎么做呢,比如说对PXZ,如果我对所有的Z求积分或者是求和的话,那么这样一个积分结果。

对应的就是这个X的分布了,那同理对于啊X求积分,则就是Z的这个分布了对吧,从这个下图上,你可以理解为说,我们这里有个呃二维的一个分布,然后你把它在额Z上进行压缩,就是在Z上求这个积分。

那得到就会是S分布,在X上求积分,得到就会是这个Z的分布了,OK我们做这样一个简单的回顾,那好,那我们有了这样一个我们定义的这样一个,已知分布的一个Z之后呢,我们要如何去表达X呢。

我们就可以引入两个条件概率对吧,第一个是给定Z,然后X相对于Z的概率是多大,也就是p x condition z,那么这个概念呢它对应的就是自变分,自编自编码器,一个里面一个叫这个解码器的东西对吧。

也就是哦不不好意思,说错了,解码器的东西,那就是给定一个X,然后去问你应该如何得到X呃,给定一个Z如何去得到X,那同时还有另外一个反向的一个概率,就是condition on x z的概率是多大。

那它对应的是这个啊,encoder编码器,比如说我有了这个X之后,那么这个Z相对于X的概率会是多大,那么变分自编码器它的核心也就是这两个条件,概率,OK那我们假设已经有了啊。

我们我假设我们比如说我们知道如何去表达,这个X相对Z的概率了,那我们其实可以直接写出来,我们想要的这个派西塔X它的具体形式对吧,那他就是一个我们刚才用那个刚才的那个条件,概率啊,什么那些公式往里套对吧。

他应该写成这个样子,那么这个样子里面,PCTXZ是我的网络要表示的概率,PZ呢是我给印的概率,就是一个标准正态分布,这两项我都知道对吧,我们可以改写成后面这个样子。

那我们如果去直接优化这个plus x和PX,接下来这个kl散度,是不是我就可以训练出来一个生成模型,能够模仿这个PX呢,就我们假设这样一个问题,但非常不幸的是,我们不可以,为什么呢。

问题在于这个我们这地方需要对Z求一个均值,求一个期望,那么这个期望有一个什么问题呢,是说我们到底要踩多少个Z,才能把这个期望给他准确的求出来,因为自己是一个标准正态分布。

然后并且呢我们其实是在干点什么事情,我们其实是希望我们的这个X的分布,PX是要被映射到这个PZ的分布上的,对我们有两个方向的映射嘛对吧,一个是encoder,一个是decoder,对我们有两个条件概率。

我们希望这个S和Z之间呢,它有这样一个双向的映射关系,那这这这就代表说,这个Z其实他承担了,描述整个数据集分布的功能,那如果你要采样它的话,那你可以想象出我们需要非常非常多的采样。

才能求出来这个均值对吧,那这个东西它就是一个基本上不可算的东西,所以就算数额是个数学形式上给出来很漂亮,就是我们只要优化这个kl散度就可以了,但是呢他实际是不可操作的,所以说变变分自编码器。

为什么要还要引入另外一个方向的条件,概率就是因为我们其实希望我们对一个X,我们希望他能够找到相对应的Z,大概是什么东西,这样的话我们如果在涉及到采样的时候呢,我们就可以减少我们的采样个数。

就不再需要对整个全空间进行采样了,这样的话能够帮助我们的这个训练,那么这个东西就是借助这个编码器,encoder来实现的,那么在数学上,这个变分自编码器到底是如何干这件事情的呢。

我们可以用两个神经网络来分别表述,表示我们这两个方向的条件概率,PC塔XZ是decoder的网络,它描述的是我给另一个Z之后,那么这个对应的这个X的概率是长什么样子呢,可以写成下面这样一个形式。

它可以写成一个高斯分布,这个高斯分布的均值是我这个decoder解码器,这个网络的输出,换句话说,这个decoder,它是一个输入一个低维的一个向量Z,然后输出一个非常高维的向量X。

他作为我这个啊条件概率的均值,然后方差是有我给定的,比如说我们就取一这部分对应的是这个解码器,那编码器呢告诉我说我给定一个X,那么这个Z它跟X之间的,应该是一个什么关系呢,它应该也是一个呃正态分布。

然后呢,这个正态分布的均值和方差,都可以由网络来输出,都可以用这个编码器来输出,什么意思,就是我这个编码器干的事情,就是我会给你一个很长维度的X,然后你给我输出两个东西,一个是这个分布的均值。

一个是这个分布的方差,然后呢我用这个东西我就可以去采样自己了嘶,那么这个东西描述的是一个我给定个X之后,我怎么去得到Z对吧,那好,那我们现在就有两条路径,来表示X和Z的联合分布对吧。

我们首先PXZ这个分布呢,可以写成我给定Z的分布,这个Z我是已知的,它是一个啊,我给定了一个值,就是给定了一个分布,比如说就是一个标准正态分布,然后PCTX肯定是上Z,就是一个网络表示的正态分布。

然后同时我还可以反着来,就是我先有PX,这个是我的数据集分布对吧,我虽然不知道它具体形式是什么,但是呢他反正我可以用采样来表示它,然后再乘上一个encoder的分布,q five啊。

最终也可以得到这个S和Z的联合分布,那好,我们现在有两个方向来得到同一个联合分布,那我们的任务是什么,我们就可以去优化这两种表示方法,它们之间的这个cal divergence调散度了,对吧。

那如果这个飘散度能够优化成功的话,那代表了我有X和Z的双向映射关系了对吧,那接下来我要得到PX怎么办,我就可以用这个上面这条路对吧,我就可以三破一个Z,然后再用这个decoder这个网络的概率分布。

我就可以拿到X的分布了对吧,这就非常好了,OK那我们下面就来看一下这个kl散度,它可以拆开写成什么样子,叫我们直接按定义拆开,然后呢,这两个这两个Q这个地方,我可以用这个条件概率给他展开对吧。

展开之后呢,我可以把它进行整理,怎么整理呢,就是所有涉及到PX的地方对吧,PX乘以一坨东西的一个积分,它可以写成相对于这个P这个分布的期望对吧,然后呢以及后面这个log项。

其中我也把这个PX给它单独拿出来,然后把QYPXZ这东西扔到后面去,那么这样的话,上面这个式子就可以拆成下面这两项,那么这两项我们可以注意到什么,对于第一项而言,我们后面有一个期望是。

Z相对于Z在这个q five里面采样,然后求log p x的均值,那么自然这个log p x它跟自己没有任何关系,对不对,所以这个均值的结果也就是log p x,那好那我就变成了X在P里面采样。

然后求log p x的均值,那这个东西它跟我的网络是没有任何关系的,跟我的参数没有任何关系,跟Z也没有任何关系,所以第一项我是可以直接不要它的对吧,我们最小化它没有意义,它是一个固定的值。

那么对于第二项而言对吧,我们要优化这个东西,前面第一个X在P中采样求均值的操作,我们就可以直接替换为,在数据集里面做均匀采样对吧,我从数据集里面拿到一堆X,那么这个X也就是X在P里面的采样。

那么拿到一个采样之后,比如说我们拿到一个采样点xi之后呢,我就要计算后面这一项,那这后面这一项对应着什么东西,也就是我们的损失函数了,对吧,所以说到这个地方我们推出了这个呃AE。

也就是这个变分变分自编码器啊,变化变换自动变码器,它的这个loss函数到底长什么样子对吧,就是对于数据集中的每个xi,我都要求一个这个L,然后呢,我在这个L上把它的梯度,往这个网络参数里面回传。

求它相对于网络参数的这个梯度,我就可以让网络训练了对吧,那这个形式呢,它现在看起来还是一个比较啊模糊的形式对吧,我们并不知道它具体代表什么含义,那么非常非常巧的是,这个东西它其实有一个非常直观的理解。

也就是这个证据下界的一个理解方式,Evidence lower bound,他怎么理解呢,比如说我们把这个式子写到上面,然后我们去考察下面这个资料过程对吧,我们从log p x开始推起这个东西。

可以用这个联合分布写开对吧,写成父母这个样子,然后呢,我也可以在里面同意一个QZ除以一个QZ,把它写成这个样子,然后写成这个样子之后呢,去干点什么事呢,数Z把它单独拿出来对吧。

那我这个积分式呢它其实也就是啊对这个呃,对这个Z相对于做Z这个采样,然后求剩下部分的一个均值对吧,跟之前是一样的,那么这个均值呢它是一定就是你先求均值,然后再取log。

它是一定大于等于先求log再取均值的,为什么这个东西是什么,这就是情商不等式对吧,因为log它是一个凹函数,所以我先做一堆的这个加和取平均的操作,然后再取log,它是一定大于等于。

我先取log再取这个平均的操作的,这个就是琴声不等式对吧,所以说我们证明了什么东西,然后面这个东西你对应上面这个结果,那他们就差一个负号对吧,就是log的上下分母他交换了一下而已,对吧。

那我们就把这个东西定义成这个evidence,lower bound e o b o简写成ELBO,它表示什么含义呢,我们刚才说我们要最小化这个L这个损失函数,其实也就是最大化这个EOBO。

因为他们之间只差一个负号对吧,那么最大化这个东西,其实也就是最大化log p x的下界,因为j log PS始终大于等于这个EOBOELBO,那么最大化这个elbow,其实也就是最大化PX的下界。

那最大化PX的下界,最大化PX其实也就对应着最大似然估计对吧,因为X是我采样值嘛对吧,所以说呃我们在最小化这个loss,其实也就是在做这个最大自然,估计跟我们刚才的那个最开始的理解是一样的。

OK所以这是另外一种理解这个loss函数的方式,还有一种就除了这种之外呢,就是我们刚才最开始这种理解对吧,我们就是求这个XZ联合分布的两种表达方式,之间的这个ko divergence。

OK那我们下面就具体看一看,这个损失函数可以写开成什么样子对吧,我们把它下面这个联合分布用另外一条路径,就是PZ乘以PC塔这个形式写开,然后把两项拆出来,那么注意第一项呢,我就直接给他写成期望的形式。

后面这一项Z啊,在q five里面求期望,然后求期望的东西是log q five除以P,那么这个式子也就是对应着我们最开始的那个,co divergence的一个定义对吧,那我就直接写成这个。

QF与PZ之间的co divergence,所以这个loss可以写开成这两项,我们分别来看这两项代表什么含义,先来看第一项,第一项里面是关键一项就是这个log p c大对吧。

那么PC大我们其实是有定义的,在最开始时候我们说了,说这个PC大其实是个正态分布,它的均值对应的是网络的输出,那于是呢如果我对他取flog,那利用这个高斯分布的那个表达式。

那应该最核心的一项就是这个二分之1XI,减去DC它的平方,然后加上一个常数C,那么这个结果它其实对应着什么呢,啊对着什么xi是我的数据集的这个输入对吧,我的数据集的这个采样DC tz。

我这个encoder输出的结果,那其实也就是我要生成的东西,我要最小化数据集和我生成动机,之间的一个L2距离,那么这个就很好理解对吧,我当然希望我生成结构与数据集足够接近了,所以第一项就干这个事情了。

那好那么第一项这个地方log里面求出来了,剩下还剩下一项,Z需要在q five里面采样来求期望对吧,那么这个地方注意到这个Z的分布,是我们给定的这个编码器的分布,它也是一个正态。

它的这个均值和方差是由网络来输出的,那么与最开始我们在哪个地方介绍呢,与这个地方介绍了,这个自己需要在PZ里面取这个均值不同,这个地方,由于这个PZ相当于是全空间的一个概念。

所以Z要取很多很多的sample,但是在这个地方这个Z的分布是我网络的输出,就我这个encoder的输出,我是需要喂给它一个数据集里面的点xi,然后他给我吐出一个均值一个方差。

然后用这个分布来在里面采用Z的,相当于这个Z和X之间和特定的X之间,就有一个相对来说一个对应关系的,那么这个时候我再去踩Z的话,我就不是在整个空间来踩了,我可以理解成什么。

我可以理解成是在这个数据集点和I附近,去起来这个Z了,那这个时候这个Z需要的采样的个数,就很大大减少了,甚至我们可以怎么办呢,我们把这个theta f不由网络输出,我们就直接给它一个很小的值。

那么这样的话V也是可以训练的,我们当然我们也可以用网络来输出它,但是我们可以认为它输出的结果,应该来说也是比较小的,那么这个时候呢,这个Z他就不需要很多很多的采样,来求第一项的均值了,那么最简单情况下。

我们就可以只取一个Z,只采一个Z,我们可以给定一个xi,给定一个数据集上的点,相当于我们的ground truth,然后由这个编码器吐出一个高斯分布,然后在这个高斯分布里面采一个ZI。

然后再把这个CI代入到这个decoder里面去,得到一张图片出来,然后把这个图片和我的ground truth,算这个l two north,这个就是a loss的第一项。

OK那么这个lost的D项它有一个问题在哪呢,不知道大家看出来没有,就是这个ZI它是要在这个q five,里面进行采样的对吧,代表这个ZI跟QFI是有关系的,那我这个L1求梯度的时候。

那它同时要对Z到对theta求以及对F求,那是L1去求F的梯度,这里面隔着一个ZIDI,它是一个采样出来的东西,那我怎么去反传这个梯度呢,怎么去求这个梯度呢,它其实并不直接对吧。

所以我们这里需要引入一个重参数化的一个,Trick,这个区trick其实也很好理解,就是说,由于我的ZI是在这样一个正态分布里面采的,它的这个具体的这个分布的形式,我不知道。

那么我可以把这个分布变成一个标准正态分布,我可以从标准正态分布里面猜一猜,一个阿西诺I,然后把这个ABCOI经过乘以一个CNAFI,再加上EFEI之后得到一个ZI,那么这个ZI。

它这个结果和我直接在上面,这个相对来说比较复杂的分布里面,采样的结果是一样的,为什么你可以直接理解成,我们其实就是把高斯把这个复杂的高斯变换啊,高斯分布进行了一下,这个平移和压缩的这样一个变换。

把它变成了一个标准正态对吧,那我就只需要在标准状态里面踩一下,然后再把它放放回去,乘以一个值,然后加一个值放回去,就可以得到这个ZI的这个采样结构,和它上面采样结果是一样的。

那这个东西就是一个重参数化的过程,那么写成这个样子之后呢,你就会看到ZI它跟这个EF和西格玛FI,它就是一个算术关系了,而这个ABCI呢它是一个从标准正态中的采样,它跟我的网络参数没有任何关系。

那我就可以啊,就不需要再向他传梯度了,所以通过这种方法,我就可以把这个梯度正确的传到这个参数five,也就是这个encoder的这个分数里面去,这个是lost的第一部分,那么还有第二部分对吧。

第二部分我们是算这个QYZ,抗跌上xi与PZ之间的差距,那么PZ是我已经给定的一个标准正态分布,那第二项,其实我就是希望我最小化这个QY的分布,与这个标准正态之间的差距。

那么这个东西我们可以怎么去理解它呢,前面说了说,我们第一项是说,尽可能的让这个网络的生成结果,和数据集里面的xi要尽可能的像对吧,那么假设没有后面这个部分,它只有第一项的话。

那么这个时候其实整个网络它退化成了,不叫这个variational auto encoder,它其实就叫auto encoder,它是个确定过程,它就没有随机性了,对吧。

那这个时候网络去学这样一个没有后面一项的,这个loss时候呢,它很有可能就是我就只能offer fit到网额,数据集里面那些点,就是数据集里面那些xi呢,我能很好的给你decode出来一个很像的图片。

但是如果你要我生成的话,我就没有办法去生成它了,生成那些数据集里面没有的这些啊这些采样了,那么有了第二项之后呢,由于我我希望这个Z,他尽可能和标准正态之间相,那也就是说Z他的这个西格玛。

他的这个Z分布的这个方差,它不要尽可能的小对吧,他要跟这个N01尽可能的像,那么这个Z他就有了一定的这个随机的能力,有了随机的能力,他就有泛化的能力对吧,就告诉你说。

你这个Z呢不能严格的是从这个xi出来的,它要从X2出来之后呢,我还要再进行它,对它进行一些偏移,这样来保证我的网络能够学到正确的,整个数据集的分布,而不是offer fit到数据集那些点上去是吧。

所以这个是第二项干的事情,那么这个第二项怎么计算它呢,我们可以需要一个定理,就是对于两个正态分布而言对吧,一个均值mu1和方差sim1,一个均值mu2方差sim2,那么这两个高位正态分布之间的。

发的这个care divergence可以有严格的数学表达式的,这个怎么求呢,就是你把高斯分布的那个指数的那个形式,带进那个LL散度的这个定义里面去,然后一通报算算出来,就是后面这个结果。

所以说两个标准正呃,两个高两个正态分布之间呢,它的k o w verges是有这个严格的这个呃,数学的B世界的,那么对于我们的问题而言,q five是一个由神经网络表示的正态分布。

PZ是我给定的这个标准正态,那于是他们两个之间的这个啊kl散度,我就可以直接得到它的这个闭式解,也就是后面这一项对吧,那么这一项也就是我的这个损失函数的第二项,把这两项加起来。

这个东西就是最终这个variational auto encoder,还需要训练的时候的这个损失函数,对吧,那么在训练的时候呢,我就是对于数据集里面的每个c xi,首先经过编码器得到一个均值和一个方差。

这个东西对应到一个高斯分布,然后我在这个高斯分布里面怎样得到一个ZI,然后这个ZI呢经过编码器DC塔得到一个输出,这样我就可以把这个输出拿去算这个loss对吧,然后中间的这些啊EFI呀。

sigma fi也代入进去,可以得到一个loss,那这个loss呢它就可以对这个theta和phi,正确的给它求梯度了对吧,这地方都是显示关系对吧,e theta虽然我不知道具体形式。

但它肯定是一个红素对吧,e five呢一样的,sigma f一样的,就我只需要利用这个链式法则,我就可以把这个L的梯度给它,相L相对于theta和phi的梯度给他算出来,那这时候我就可以开始训练了。

那生成的时候怎么办呢,生成的时候我就不需要这个encoder了,我只需要这个decoder,那我就直接在这个PZ,也就是N01里面随机采样一个Z,然后再经过这个decoder之后呢。

你就可以生成得到这个最终的这个输出结果了,那么这个结果呢,由于我是一个呃随机采样的过程,所以它可以生成一些这个数据基地,没有的,但是呢又是符合数据集分布的一些数据啊,这个时候他就有了这个生存能力了。

那么这里我们就展示了一些,这个VE生成人脸的一些结果,大家可以去想象说这些人脸呢,它其实在这个现实生活中并不存在对吧,但他有个很明显的问题是什么,就是这些人脸都非常的糊对吧。

那么这个弧呢是一个VAE不得不面对的问题,就是由于我中间引入了这个嗯,Z是一个正态分布,我需要对Z进行采样,然后并且我希望这个Z的方差不要太小,所以导致了说这个你生成结果就会有一些糊,那么。

还有另外一个就是最当下大家用的最多的,也是这个效果最好的生成模型,称之为扩散模型,Diffusion model,去看它的生成结果的时候,你会发现它生成结果是非常的这个清晰的对吧,你可以看到生成的人脸。

他是非常的这个拟真的,就是如果你不仔细看,甚至你仔细看的话,你很难去发现这个人脸到底有哪些,有不对的地方,它效果是非常好的,那么扩散模型它可以理解为某一种,就是作为一种理解方法。

可以认为他是一个高级版的这个VAE,他的很多的这个呃这个formulation也好,推导也好,跟VA是相通的,所以我们接下来就看一下这个cos的模型,它到底是怎么去建模这个生成问题的。

怎么去定义它的这个损失函数的,好,那我们首先看我们如何从VAE,把它变到扩散模型呢,在VA里面,我们最终得到的结果其实是,我们构建了一个数据集分布与隐空间分布,PZ之间的一个双向的映射关系对吧。

数据集分布是我未知的,影空间分布是我已知的,然后呢,我用一个encoder,一个decoder构建了两个方向的条件概率,这样我就知道了这个X和Z之间的对应关系,这个是啊这个VAE干的事情。

那么扩散模型呢他其实把这个问题做成了多步,也可以列为色散模型,就是多步的VAE,他引入了一系列的隐变量X0,一直到X大T呃,X呃就已出一,引入了一系列的隐变量,从X0到X大题。

其中的X0对应的是我们这个生成结果,或者是数据集的输入,然后呢剩下的所有这一系列的这些额随机变量,xi x t它都是这个隐变量,都是上面的这个Z,然后呢从X0到XT,它是一个随机性逐步增加的过程。

每一步相当于是都构建了一个,隐式的映射关系啊,构建了一个映射关,双向的映射关系,然后XT和XT减一之间,它们差的就是一个一个噪声多一点,一个噪声少一点,那么通过这种多步的方法扩散模型呢。

它相当于是多个VAE在里面起作用,我们就不再是直接一步,从一个已知的隐空间分布到一个数据集分布,而是我们从一个完全随机的XT出发,然后经过很多很多步之后,才到达这个数据集的分布,X0,由于我做了很多步。

所以呢这个扩散模型,它的这个表达能力要更强一些,那么他这个生成结果也会更好,质量会更高一些,OK那我们接下来就尝试去推导这个生成模型啊,扩散模型的这个数学,数学部分的一些一些一些一些东西了。

那么在开始推导之前呢,就是由于扩散模型,它这个数学是非常复杂的对吧,这个扩散模型的这个这个部分的东西,应该是我们之前呃,呃这个课程里面介绍数学的最难的部分呢,我觉得那么为了把这个事情讲清楚。

就是希望大家就是还是,就是能够把这个大的脉络搞清楚就可以了,然后具体推导可以自己再下去推,那么我们首先做一个约定,就是说在后面所有出现的这些公式里面,Q表示的概率都是我已知的概率,它是不需要我去学的。

它是我定义好的,它可以没有这个具体的数学形式,比如说我是数据集的分布的话,那就是一个采样表示的,可以没有数学形式,或者呢那也可以是我使用一些条件概率,比如说这个贝叶斯公式推出来的对吧。

就不管它的形式复不复杂,但其实它是已知的,就是我一定可以算出来的,或者我可以通过某种方式表达出来的,那我就不需要去绝对部分的概率了,那所有p theta表示的概率呢,由于它下边有个西塔。

它表示都是神经网络表示的概率对吧,这个东西是我们要学的东西,OK那么有了这样一个呃,有一个约定之后,我们接下来就开始推这个扩散模型,做散模型有两个过程,一个是前向过程,一个是逆向过程。

我们先来看前项过程,扩散模型的前向过程,说的是我从一张图片出发对比,从一张狗的图片出发,它是清晰的,没有任何噪声的,然后呢,我对这张这幅图片不断的去增加高斯噪声对吧,就像下面这张图来展示的一样。

我对这个狗呢不断的给他加这些啊纯噪声,然后直到你慢慢认不出来它是一只狗,直到它变成一个完全的纯噪声,最后一张图表示就是一个完全的一个啊,标准正态分布了,那么这中间的哪一步是怎么做的呢,DT步的这个结果。

XT它只与你上一步加造的这个结果有关,如果你已经到了到,比如说到了这个T减一这一步,你有一张加了一些噪声的这个狗图片了,那么你怎么继续加噪呢,这个过程是一个啊高斯分布,它长成这个样子。

也就是说如果我给定T减一,然后XT的分布呢对应一个高斯分布,它的均值是根号一减贝塔T乘以XT减一,它的方差的平方是贝塔T,贝塔T是我每一步给定的常数,我们可以认为这个贝塔T呢,一般给是远远小于一的。

就是我们每一步加的这个噪声,它都是一个啊很小的噪声,因为你如果贝塔T等于零的话对吧,贝塔T等于零,方差等于零,然后前面就是X减一,就是XT等于XT减一,代表就是我完全没有加噪声对吧。

如果贝塔T等于一的话,那么前面这一项均值就是零,后面这一项就是一,代表就是一个完全高斯的噪声,所以贝塔T在0~1之间呢,并且是一个接近零的东西,零的一个常数它是不需要学的,这代表了我往这个XT减一。

里面加了一个很小的噪声,那么这样一个定义的一个逐步的一个过程,就是我从零开始,每一步都呃,相,每一步相对于上一步都是一个呃,稍微加了一点噪声的高斯分布,那么这个东西,它对应的是一个叫马尔科夫链的过程。

对吧,就是马尔科夫链,它最核心的东西是什么,就是我D替补的结果,它只与XT减一有关,而跟前面的所有结果都没有关系,对吧就是我如果到了,比如说到了这个DT步,我要我要知道DT不。

我其实只需要知道T减一就可以了,而前面T减二,T减三一直到零,这些东西我都可以完全不管它,它跟我最终生成T没有关系,OK吧,所以这个就是马尔科夫链一个很重要的一个啊,他那么这样的过程我们就定义为。

这个马尔科夫链,它啊非常重要特性就是它的无后效性,也就是这个s st值与XT减一有关,OK那么这个马尔科夫链呢我们可以把它写呃,用重参数化给它重新改写一下,怎么改写呢,就是你这个地方不是一个高斯分布吗。

对吧,那么这个高斯分布呢,我可以把它改写成一个标准高森布的形式对吧,就是我们刚才介绍的这个跟VAE里面一样,我们有个重参数化的过程,我们的XT可以写成这个等式关系。

其中呢阿尔法T等于一减贝塔T只是一个啊,只是一个变量的替换而已,关键在这个地方,app on t减一,他是个标准正态,如果你从标准正态里面采一个XNT减一,然后把它代入这个算式里面,得到XT。

那么这个ST,就等价于在上面这个高分布里面去采了对吧,这两东西是等价的,OK那么写成这个形式呢是方便我推导的,我们可以继续把这一步整塞成下面这个形式,对吧,我们X7-1。

还可以继续把它写成X7-2的一个依赖关系,写成这个样子,那么写成这个样子之后呢,我们可以利用一个定理,最近你说的是什么,说的是如果我有两个高斯分布,正态分布,那么并且呢这两个分布是相互独立的。

那我们来两个随机变量X1和X2,然后把它加起来的,得到这个随机变量Y,它其实也满足一个高斯分布,并且这个高斯分布的均值等于两个啊,等于缪一加缪二,方差是根号西格玛一方加西玛二方对吧,那简单来说。

那就是两个独立的高斯分布,加起来算还是一个高斯分布,那对于我们的问题而言意味着什么,你在这个地方我们XT写成这样个样子,后面的X上T减二和X系统T减一,他就是两个独立的高斯变量对吧,高斯分布对吧。

那我们这两个高斯分布对应的随机变量,其实它是可以合在一起变成一个高斯分布的,那就是F系统T减二,前面乘以这一坨加上正统T减一,前面乘以这一坨,他其实可以写为一个随机变量XSM鲍尔T减二。

然后前面乘以这一坨,对吧,我们可以写成这样一个形式,那写成这样一个形式之后呢,那XT就直接与XT减二,建立了这个直接的关系,对吧,XT可以直接由XT减二得到,它唯一加的就是这样一个高斯噪声。

那么这样的过程显然是我们可以去啊,不断进行加取的对吧,我们X7-2还可以展开成X7-3,那么最终的结果是得到什么结论呢,就是XTXT和X0之间,它是可以有这样一个与列的关系的,对吧。

X3上T还是一个标准正态分布,只不过呢他前面乘了这个系数,写成这个样子,其中呢阿尔法t bar等于阿尔法一,一直乘到阿尔法T,那换句话来说,这句话意味着什么呢,就是说我们虽然这个前向过程。

定义的是逐步进行的一个马尔科夫过程,但是呢我们可以直接从X0只加一步噪声,得到任意一部XT的结果,这个性质对于这个前项,就是对于我们后面推导是非常有用的,这也是呃这个呃这个扩散模型。

它前过程中最重要的一个结论,OK好,我们接下来再看反向过程,反向过程说的是什么,说的是我们从完全的噪声XT出发对吧,就是个标准正态的一个分布XT出发,逐步减小噪声,恢复到X0的过程,那么如何恢复呢。

在每一步我们实际上是用神经网络来拟合,这个反向的概率,PC它披萨是XT减一,肯定上XT它和正向过程是正好相反的,并且和这个VAE一样,我们假设这个PC大是一个正态分布。

这个正态分布的均值是由网络来输出的,是我给定这个XT的状态以及T额是第多少步,然后最后一个均值,然后呢,方差西格玛T1般来说是我提前给定的一个值,对吧,我们可以给一个小的一个方差。

OK那么这个就是反向过程,OK那现在前降过程有了反向过程也有了,我们其实就有了什么呢,我们其实就有了隐变量和我们希望的这个,最终数据集的分布之间的一个双向映射关系,这个和VAE是一模一样的对吧。

在越狱中,我们有隐变量和这个X的数据集的分布,然后我们最终优化的是这样一个,elbow的一个损失函数,它写成这个样子对吧,那对于扩散模型而言,我们可以直接替换进去,那么这里面的隐变量Z就不再是一个变量。

而是一系列的变量,就是除了X0之外的所有这些加的噪声的结果,哎都是因变量,就是X一一直到X2T都把它当成因变量,然后最终的这个生成结果X0,它对应就是数据集的分布,也就是上面公式里面这个X。

所以我们只需要进行这样一个变量替换,我们就最终写出了这样一个呃,这样一个扩散模型的,它的损失函数的形式,它本质上和这个VAE没有任何区别,只不过我们的这个已变量呢现在变多了,变成X1直到X2T了是吧。

你可以检查一下,说这个啊公式是不是一一对应的,应该没有问题,OK那我们接下来的任务是什么,就理论上而言,如果你把这个loss给他算清楚了,你就可以跟上面VE一样去训练了对吧。

那么接下来的任务就是去怎么把这个loss,给它展开算清楚,OK那我们首先观察一下这个log的呃,这个lost的形式里面的,后面的这一系列的这个大的概率呢,它是可以用条件概率的公式。

拆开成每一步的概率对吧,可以拆开成上面啊,上面是这个X1肯定上X0,肯定X2肯定上X1,然后呢一直是X大,T肯定X减减一,等价于上面这个Q那P的话呢差不多,只不过方向是反的,我现在X0肯定上X1。

然后X1直接上H2,注意他这个数字越大,代表它的噪声是越多的啊,那最后呢一直到这个X大T减一,肯定上XT哦,PT还是说写错了,应该是XT,然后额以及最后再乘上一个X大T的分布。

这个分布呢就是一个标准正态分布了,所以说你去观察这个结果,你会发现每一项条件概率,其实我们之前都定义过了对吧,对于分子而言,每一项都是一个已知的一个正态分布,分布而言呢。

每一项都是我给定形式的一个标准正态分额,一个正态分布,只不过他的这个均值是有网络输出的,那么棘手的东西在哪,棘手的东西在前面对吧,齐射东西在于前面,我要对X一一直到XT这么多个变量求期望。

那我们你再去采样的话,显然是不可能的对吧,这个采采样空间是非常非常大的,所以我们接下来的任务呢,就是去减小这个期望的采样次数,那我们回顾一下在VAE里面,我们是如何去减小隐变量的采样次数呢。

我们做法是引入编码器,然后呢去找到每个数据集点xi对应的Z,这样的话我们只要在这个自己的附近去采,那么这个方差小,我的磁场次数就死亡次数就小对吧,那么对于后面这个问题而言。

我们是我们可以考虑一个类似的过程是什么呢,我们可以在后面这些概率里面引入它,相对于生成结果X0的概率,然后呢那么这样一个做法,他其实就3号类似于VAE我们的做法对吧,我们就是在构建一个反向的一个概率。

AE说法是我们用encoder,我们用编码器来找这个自己抗定上xi的概率,那么在扩散模型里面,我们为了这个求解的方便,为了这个期望它的采样个数,的采样次数给它降下去,我们把这个后面这些条件概率呢。

我试着给它指定上,让X0X0,也就是我最终生成结果,或者是我数据集的输入对吧,如果我肯定上了这个东西之后,我就希望说我最后这个公式推出来,他这个需要的这个采样次数是少的,那怎么去推呢。

我们可以从这个Q入手对吧,QXT肯定上XT减一,为什么,因为这个XT到XT只与XT减一有关对吧,因为前向过程是一个马尔科夫过程,X系只与X减一有关,那跟X0其实没有关系,所以我们把可以把它直接接上X0。

这两个概率是一样的,然后呢有了这样一个写法之后呢,我就可以用这个贝叶斯公式对吧,把它改写成后面这样一个形式,那么这个形式里面可以注意到,就是所有的每一项概率都都抗击上了昂X0,对吧。

我的每一项概率都相对的是这个X0的概率,那么我期望我这个公式推出来之后呢,那这个variance就足够小了,这是我们期望好吧,那我们去看一看,说如果真的写成这个样子之后呢,他是不是会真的想。

OK那我们任务呢就是把下面这个公式,把这个Q的形式带入到上面去,那么第二到上面试去的时候,有一个技巧,就是说你看到后面这一项,它其实是一个什么XT除以XT减一这个东西,如果你在上面做连乘的时候呢。

它是可以相消的对吧,分子分母一直在那相消的,所以呢后面部分大概率是可以完全被消掉的,那么剩下的部分呢你再把它单独提出来,然后再给它这个稍微总结一下,你就可以得到log里面,最终这一大坨东西。

对应的是下面这一大坨东西对吧,这个没有办法啊,这就是diffusion model,它就是有这么复杂,所以我们的公式写出来就是有这么复杂,这个这个没有办法避免对吧,但是我我已经尽可能让大家能够理解。

这些公式到底是什么含义了,OK那么呃那么好,那我们就是上面这个形式,可以写成下面这样的连乘的形式,那这个连乘的形式呢也因为在log里嘛,那最终我就可以把它放到log y,把它变成求和,OK吧。

然后把它变成求和Z,然后求和写开之后呢,注意到一个事情,就是说比如说像第一项,第一项里面这个东西,由于它只跟X0和X1有关,所以我前面这个所有对X1和XT进行sample,然后取均值的一个操作呢。

其实根本不需要做后面的值,因为它跟X22X3这些值都没有关系,所以我其实只需要SX1相对于X0这个概率,我就可以算这项的期望对吧,那对第二项一样的,由于第二项里面只涉及到XT和X0。

所以我只要求采样一个X大T,我可以得到后面项的均值了,然后呢对于后面这个连加和的形式呢,它里面涉及到X0XT和XT减一,那我们这个需要的这个取均值的操作呢,就只需要针对这个随机变量。

XT减一和XT就可以对吧,对于其他的那些随机变量呢,对他取均值没有意义对吧,因为这个后面等式跟他没有关系,所以我就变成这样一个求和式,然后呢这个求和式第一项我不动。

第二项呢我可以把它写成个kl散度的形式对吧,这个形式是直接定义的,那后面这一项呢它其实也可以写成kl散度,为什么你只需要把前面这一个概率给它,拆开成两项。

第一项是QXT减1condition on xt以及X0,对应的也就是这个log分子上的一个概率,然后再乘以一项QXTCONTE上X0对吧,这两个条件概率的乘积等于最后总概率,那么其中的第一项。

把他的这个期望和后面结合在一起,那其实也就是这个kl散度的一个形式对吧,只不过我还剩下一项,就是我XT还要对X0求均值,所以这个蓝色的式子是可以变到下面,这个蓝色的式子对吧。

大家可以再就是下去仔细推导一下,这个肯定是对的,那么最终的这个L也就是我实际用的这个啊,实际推导出来的这个呃,扩散模型的这个损失函数的形式对吧,它有很多的项,那我们还是一项一项的来看。

那么第一项它是一个从X0,它是一个抗跌上X0的X1的概率,我要在这个东西上求它的均值,后面这一项西theta是一个我给定的,我已知的已知形式的一个正态分布对吧,那么log它是可以直接求的,没问题。

然后呢对这个啊X1取希望,那我只需要随机采一个X1就可以了,为什么这个地方只需要踩一个呢,那就跟VAE里面道理是一样的,因为我这个X1是condition x0的,我的X1只是从X0加了一个很小的噪声。

方差,很小的噪声之后得到的一个结果,所以我要采X1的时候呢,我其实只需要采一个值,就能足够好的去估计这个啊这个均值了对吧,这是第一项,那么第二项呢,注意到它跟这个网络的参数没有任何的关系。

它其实是希望说我这个加造过程加到最后呢,我希望他是跟我的这个XT的实际分布,也就是一个标准正态分布足够接近的,那么这个东西只要你的这个T这个步数,一般来说取得足够多,或者贝塔T取得足够大。

那么这个结果他就是能够满足的,那并且它跟网络没有关系,所以我就可以直接裂项征掉了,那么关键的呢就是下面这一坨东西对吧,那么下面这个东西怎么算呢,哦sorry啊,就下面这套东西。

然后并且呢下面这个东西它是一个求和对吧,是对所有的LT进行求和,然后我们还可以继续把它再简化下去,怎么简化呢,就是在前项过程中,我们是可以直接由X0得到XT的对吧,只是利用我们最开始推出来那个性质。

那么这个求和式呢,它其实就可以被改写成一个期望的形式了,对吧,就是你这个期望是针对什么进行的,针对T进行的,就是我T随机采一个二到T之间的,一个二道大题里面的一个整数,然后算后面这头东西的期望。

它其实就等于什么,等于这个N分之一乘以,后面这坨东西的求和对吧,所以这个求和是可以被替换成一个期望的,那替换成这个期望有什么好处呢,就是我这个我如果随机踩一个T,这个XT的结果。

我是可以直接一步加造得到的,我不需要跑完整个前项的过程,那这就方便了我去做这个训练对吧,那么实际在做的时候呢,我就可以均匀的踩一个T出来,然后只取其中的一项LT拿到这一项,把它作为我最终的概率。

那么在期望意义下,它等价于我求这个最终的这个求和的概率啊,求和的这个呃,去最小化这个求和的这个损失函数对吧,所以不要退到这个怎么损长这个形式,跳到最后呢,我们其实只需要关心这个LT就可以了。

这个是我们最终需要额再进一步关心的东西,那好,那这个东西我们就里面包含了一个kl,kl散度对吧,那我们就看看这个KOS怎么写,一项这个QXT减一横推上XTX0,这个概率它是一个什么概率。

它是一个XT减部XT减一这一步,那同时condition on,这个最终额最开始的这个加造的,这个完全没有加噪的这个图片,也就是数据集的X0,以及他加噪到下一步的XT这两个东西,给定之后。

问XT减一的分布应该长成什么样子,对这是一个很奇怪的分布,但是呢他这个这个分布的具体函数,这是具体函数形式,其实我是可以给出来的,那么怎么给呢,我就用贝叶斯对吧,贝叶斯之后呢。

我就给大家展开成后面这个形式,后面这一项你注意一下,XT减一肯定上XT减,XT肯定上啊,XT减一以及X0,它是其实也就等价于XT肯定上XT减一对吧,因为因为马尔可夫性嘛。

那么这个概率它是一个已知的正态分布对吧,这个是我们之前定义好的一个正态分布,就是单步加造的一个概率分布,然后后面这个QXT减1con提上X0,这个是西是什么,这个就是我加T减一步的噪声之后的结果。

它的概率分布是什么,那其实我们也推过了对吧,就是利用那个啊前沿过程的那个好的性质,我们这一步其实也就对应一个高斯分布,那么底下分母这个分布呢,哎也是一个高斯分布,所以右边的这三项全都是正态分布。

那么你如果实际的把正态分布的形式带进去,然后就是一通报算,你就会发现这个结果它最后出来的,对应左边这个概率呢,它也是一个正态分布,只不过这个正态分布的均值和方差,可能会是一个相对来说比较复杂的形式。

这方我就直接给出来了,这个大家要推的话,可以去尝试一通报算,看看是不是这个结果,可嗯,OK所以说这个K代表真的,第一项是一个我已知的这样一个高斯分布,那么第二项是什么。

第二项是一个我给定形式的网络的高分布对吧,那么这两个之间的ko divergence,我就可以直接用两个高斯分布的ko divergence,去给出显示解了,那么回顾一下啊。

对那么回顾一下这个显示界长什么样子,长成这个样子对吧,那么并且如果我们去只关注这两个高斯分布,它们的均值,而忽略方差的时候,因为方差大概率也不是大概率的,就是我给定了对吧。

在我们方向模型里面处理问题的时候,方差都是我给定的,我从来没有让网络是输出方差,所以我们就只关心均值,那么对于只关心只关于均值的时候呢,这个ko divergence它关键项就是中间这一项。

它其实就是对应着均值的L2距离平方,对吧,就是L2norm l2norm的平方是吧,U1减去UU2模长的平方,所以啊两个正态分布,如果你只关注它的均值的话。

那么他的这个k o w version有一个很好的解释,就是它对吧,那么如果把这个性质直接用到这里面来,那我们就可以把LT简化成什么,后面这个K的vision se我就不要了,我们最终就只要这个啊。

Q的均值和PC大值均值两个之间的差距,这就可以了,Q的均值是一个我知道的东西,而PC大均值是一个网络输出的东西对吧,那这个时候这个形式就非常的简单,那唯一的问题前面又有一个期望,这个期望怎么办呢。

还是一样的,我这是从X0到X1的这样一个条件概率,那么这个条件概率呢,我是可以直接写出来下面这样一个形式了,那我们就可以直接在这个形势下做一次采样,然后作为这个LT的估计值,然后就可以得到后面的这个啊。

然后然后带进去算这个后面这个差是多少,他就可以得到最终的这个损失函数了对吧,那并且呢这个损失函数呢,我是可以进行梯度回传的对吧,ax s on t是一个高斯分布,它跟网络参数没有关系。

那剩下的这个XT呢,它是这个呃带进去对吧,那这个mu我是可以得到的,mu得到之后呢,唯一的问题就是缪theta,这是个网络输出,那我只需要对L对mc ta求梯度就可以了,这个用链式法则就很快得出来了。

因此呢到这里,其实我们就已经可以去训练一个负载模型了,那么训练它呢,如果你去看或者模型的算法的话,你会发现它跟我们这个形式,还是有一点小小的区别的,这个区别就是,我们还要再进行最后一次参数变换。

怎么参数变化呢,就是new我们现在写成是XT和X0的函数对吧,因为它是一个condition,然后XT和X0的条件概率的均值,那我们这个XT呢,它是可以用这个式子展开的对吧,直接写成跟X0的关系。

那我们可以把这个式子里面X0反解出来,用XT来表示,然后把它带入到这个缪的形式里面去消去X0,然后就可以得到mu,相对于XT以及ab希统T的一个关系,这个代表什么含义,这个代表这个XT减一。

现在呢它可以看成是XT减一的均值,它可以看成是XT减去了后面这坨东西,而这个东西对应的是一个纯高斯的一个噪声,那好那我们对于缪theta而言,我们把它改写为下面这个样子。

这个样子其实也就是仿照上面的这个定义,我们把mu theta改写为一个absoon theta的一个函数,我们的网络最终并不是直接输出MUSETA,而是直接输出这个app on theta。

然后把这个ABC用西塔带入到这个形式里面去,得到这个UC塔,然后再把这个MC塔跟上面这个mu进行,这个算这个l to norm,然后得到最终的这个损失函数,那么这么写了之后呢。

它其实只是一个就是我们计算上的一个方便,就是说最终我们要求的l to norm,不再是两个mu之间的l to norm了,可以写成是这个两个ab西隆之间的l to norm,其中的第一个还是系统T。

它是一个纯粹的高斯噪声,它是我散播出来的啊,不送T是我散布出来的,然后呢我三不出来一个X用T之后呢,我可以把它加到X0上,得到这个XT的值,然后把这个XT和T作为网络的输入。

让网络生成出来一个噪声app on西塔,然后我希望这个网络生成的噪声,和app on t是足够接近的,那么这个东西就是这个我们一通计算之后,化简之后得到的这个啊扩散模型,最终的这个损失函数了。

尽管这个模型这个最终的式子看着简单,但你可以想象,就是我们前面经历了这一通艰苦卓绝的推导,对吧,他这个推导形式非常复杂的,但是呢又究其本质,这一通推导出来的loss函数。

和最开始的这个损失函数的形式是等价的,而这个形式是什么,其实也就是一个elbow损失函数的形式,跟VAE里面是一样的对吧,所以扩散模型的出发点其实并不难理解对吧,并不困难,但是呢中间推导很复杂,并且呢。

最终的这个最终得到这个损失函数的形式呢,他反而又化简出来一个很简单的形式,OK吧,那我们这时候就可以完全理解这个啊,这个这个这个扩散模型,它的训练和这个采样的算法了对吧。

训练的时候你从数据集里面拿到一个S0对吧,然后我uniform3回一个T出来对吧,这个对应的是那个求和那个loss求和变成期望,然后呢我生成一个噪声,一个标准正态的噪声很像。

就是对应上面这个公式里面的XTIMT,然后呢我计算这个啊loss对吧,就这个LT,它是这个abs on t与ABF,son theta之间的这个l two norm的平方,然后把它对theta求梯度。

我就可以拿到gradient对吧,拿到gradient之后呢,我就可以把它放进这个啊,所以就有三样算法里面让它去收敛了对吧,所以这个就是他的训练过程,那生成的时候呢,我就从一个完全随机的噪声开始。

然后走上面这个公式对吧,就是我每一次呢随机采呃,让网络生成出来一个噪声,这里面就没有采样了啊对吧,我们先生成下一个噪声,然后带进去,然后得到这个降噪之后的一个均值,得到均值之后呢。

由于我的这个后呃前向过程呃呃不对,后项过程它依然是一个概率分布嘛对吧,所以我还有它是个高斯分布,我只有均值,后面再加上一个方差西格玛T,这个西格玛T是我给定的,通过这样一个操作之后呢。

我们可以得到它降噪一步的XT减一对吧,然后你从大T1直做到一,那最后就可以得到最终的生成的结果X0,这个就是扩散模型的一个整合的过程,OK所以啊到这里我们就从VAE开始讲起,然后一路讲到这个扩散模型。

然后把最终的这个算法给他搞明白了,大家可以看到,这里面其实用到的数学是非常多啊,另外这个概论的知识还是挺多的,推导还是比较复杂的,那么我呃,就是我尽量的把这个红色部分的标出来,给大家理解。

就是看看大家能不能就是大概理解这个推导的,这个关键点,然后呢如果想具体啊计算里面的细节的话,可以自己再去把这些啊其他的部分给他补上,那么扩散模型本身呢,它现在也是一个就是啊,一个蓬勃发展的一个领域对吧。

那么关于他的理解呢,也不仅限于今天我们介绍的,就是基于VAE去理解这个扩散模型对吧,我们还有其实还有另外一些理解方法,比如说基于这个啊朗转换过程S啊,这个随机微分数,随随机微分方程的一些理解理解方法。

那么你换了一种不同的理解方法之后,他就会告诉你一些啊,新的一些这个可以优化它的方法对吧,比如说像这个我们今天讲的这个,叫这个DDPM对吧,我们还有这个后面的改进叫DDIM,还有一些其他的一些呃改进方改。

针对这个扩散模型的改进,他可能不太能从这个,我们今天基于via e的理解出发对吧,他可能需要另外一套,这个另外一套这个随机分方程啊,朗转方程啊,还有这个微分函数啊,这种东西去进行了解。

那么那部分的知识呢可能就啊更为复杂的对吧,那就不再是基础的这个概率论了,它是一个随机微分方程领域内的一些知识了,所以我们今天就更不会展开了对吧,所以我们今天只是用这两个例子去给大家一个。

一个简单的一个一个就是也不是简单吧,就是一个非常小的见微知著的一个,一个一个例子,然后大家可以呃了解到就是前面我们学习的,比如像概率论这样的知识,如何跟后面的这个前沿的部分,它是联系在一起的。

所以学好数学还是非常重要的,OK那我们这就是我今天的啊参考资料了,然后啊这个PPT啊什么之类的也会之后发到网上。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

GAMES001-图形学中的数学 - P15:优化基础 - GAMES-Webinar - BV1MF4m1V7e3

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

喂大家能听到吗,有声音吗。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

OK那我们就开始,今天给大家介绍这个优化基础相关的部分。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后呃这部分优化本身是一个,这是一个涵盖内容非常多,然后同时也非常难的一个一个大的学科,其实是,然后我们今天只有只有这个一个多小时的时间,所以肯定没有办法,就是给大家介绍的特别的啊详细,特别的这个具体。

所以说嗯我们今天的话我的计划是说呃,尽可能的用一些比较简单的例子,然后把优化里面的一些比较重要的概念引出来,然后呢就是大家这个对于具体算法,这之后的一些比如说更高级的优化算法的话。

可以就是大家顺着这个这些教材,然后自己去学习深入的学习,然后今天呢只是一个相对来说啊,非常非常入门的一个介绍,而且也肯定不可能面面俱到的,把这些很多东西介绍清楚,对我们还是以一些比较简单的例子。

作为一个切入点,然后给大家看一看,这个优化里面会有哪些比较呃,大家经常用到的概念啊,算法之类的东西。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

OK那么一个优化问题它会长成什么样子呢,它可以一般来说就是,他可以写成下面这个样子呃,一个比较通用的样子,其中X是我们带优化的,这个变量可以是连续的,也可以是离散的,那FX就是我们的优化目标。

所以是离散的,也可以是连续的,也可以是啊可导的或者不可导的啊,各种各样的都可以,然后呢X还要满足一定的约束条件,用C来表示,那么这个C里面就可以包含了各种各样的东西,比如说有等式的约束,有不等式的约束。

也可以是一个啊子空间或者是某个取值范围,所以一般来说一个优化问题,就可以写成这样一个通用的形式,那么这么一个通用的形式,我们呃怎么去设计算法去优化这样一个问题啊,也要根据这个问题的具体形式去决定。

那么我们就先来看一个最简单的情况,也就是无约束优化问题,无约束要问题就是我们没有约束,然后呢我们再做一些额外的假设,比如说我们假设这个FX是一个连续可微的函数,X是一个连续的一个呃向量对吧。

它是一个N维的向量,那么对于这样一个5月数位号问题,这个也是我们啊平常最能就是在很多时候,最能接触到的优化问题,那么我们先来看一看怎么去啊,优化这样一个问题,那么我们这里给几个例子。

比如说我们之前介绍过这个最小二乘法,他说的是对于我们给定了一个数据集里面,一共比如说有N个点X0Y0,一直到XN减一,YN减一,然后我们希望去拟拟合出一个曲线或者直线,来去呃,来去近似整个数据集。

那么我们可以假设这个Y和X之间,满足这样一个呃函数的一个关系,那么G0到GK减一是我们给定的这个函数,然后A0到AK减一是一系列的系数,那么G0和GK减一,可以是比如说有常数线性线性项。

二次项数X的平方,X3次方或者X乘以Y等等,这样的这些基本的函数在里面,A零一直到AK减一,就是他们的这个组合系数,那我们希望我们要去优化这个A,然后去让这个额把A带进去,这个系数带进去。

然后把各个X带进去,得到这个函数值和数据集里的这个函数值Y,它们之间的差距要尽可能的小,所以我们就要优化这样一个目标,比如说右边这个图例看,展示的就是大家最熟悉的这个呃。

这个线性函数和一次函数的最小化生法,那么这样一个优化目标,我们可以写成更啊更紧的形式,我们可以把所有这些G1些基本的函数,那么在对应的X0到XN减一的错的函数值,写成这样一个大的矩阵G矩阵。

然后同时也把Y排列在一起,那我的优化目标这个对I的一个求和,我就可以写成后面这样一个啊,矩阵乘法的一个形式,那么这个矩阵乘法呃,最后这个形式是Y减去G乘以A的模长的平方。

它可以进一步展开来变成下面这个样子,那么这个样子就是一个针对于这个参数,A的一个优化,有一个优化优化目标对吧,并且呢我们可以看到它这关于这个参数A,它是一个二次的优化目标,A在其中是一个向量,然后呢。

这后面的这个G转置乘以G就是他的这个啊,一个中间这个矩阵。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

OK那么我们还有一些其他的情况,也会有这个优化问题,比如说在几何里面,我们尽量涉及到有问题,就是这个曲面的参数化是什么意思呢,就比如说我们有一个球对吧,我们要我们这个球假如是一个math来表示的。

然后呢,我们要为这个球上的每个顶点,去定义一个二维的纹理坐标,UV我们也可以直接称为这个UV坐标,那么这个UV坐标是什么,你可以理解成他是这个球上的,比如说我们这个地图对吧,地图它是一个二维的东西。

那么我就有X对应的X和Y坐标,也就是我们这里的UV坐标,那么我只要每个球上的每一个点,都有一个UV坐标,我就可以对应的把这个地图贴到这个球上来,那它就是一个地球对吧,所以UV坐标定义了这个三维曲面。

到这个二维的贴图的一个映射关系,那么我们的问题是说,假设我有一个任意的一个三维的一个match,比如说下面图,下面图里展示的这张人脸,我们要怎么去确定它里面的啊,每个顶点上的UV坐标。

然后以使得整个呃UV坐标贴到这个贴图,贴到人脸上之后,他的这个distortion或者这个拉伸形变是最小的,相当于是什么,相当于是我现在有一张脸皮,我要给他崩到这个人脸的这个模型上。

然后我希望我定义的这个UV坐标呢,它能尽可能的使这张脸皮,它的这个拉伸变化是最小的,这样的话我能保证我这个贴图贴上去呢,它是尽可能均匀的,不会出现一些比较啊错误的一些artifact对吧。

那么这么一个问题,他也可以写成一个对应的优化问题,有个最简单的做法,就是嗯,嗯称之为这个叫弹簧试点的一个优化方法,它怎么来定义呢,就是我去假设我们每个顶点上都有一个呃,每个顶点上都有一个UV坐标。

UI和V呃VI,然后我去看这个mesh上的每条边,我希望对于这个max上的每条边对应的两个顶点,它们之间的这个UV坐标的差值是尽可能最小的,那么也就是说,我便利这个整个match的所有的这个边。

然后把这个每条边上算一个两个顶点之间,UV坐标的对应的一个平方的差值,那把所有这些差值加起来,我希望这个最后最后的这个差值是尽可能小的,那么通过这种方法呢,我就可以近似的认为说。

我这是这个UV最后求出来,它应该是啊,尽可能的均匀的分布到整个mesh上的对吧,所以这个对应出来也是一个。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

无约五约数的优化问题,那么再比如说在这个物理模拟里面,我们可能又涉及到这个弹性体的模拟,那么如果我们使用这个影视欧拉法,进行这个时间积分的时候,那么在这个时间步的每一步,弹性体模拟。

等价于优化下面这样一个增量能量的一个形式,这个增量能量有两项,第一项是这个我们叫这个啊inertia项目,也就是这个惯性项,然后第二项呢,这个FX就是整个弹性体的总弹性势能,那我们可以证明说是。

只要你去优化这样一个呃这样一个增量能量,那么你求出来的这个最小化的这个X,它就是我们这个下一个时间步,它的这个整个弹性体的位置X,那么这个东西就是大家会在这个,比如说game4103。

还有game3201这样的物理模拟课里面,可能会见到这样一个优化问题的一个形式,那么上面列举的这几种啊,这几个例子里面,我们最后要解决的都是这样一个去最小化FX,这样一个优化问题。

OK那么对于这样的优化问题,我们应该怎么去求解呢,对吧,大家应该或多或少都有一些了解对吧,比如说我们最简单的就是什么,拿梯度下降法对吧,那在图上呢,就是比如说我们假设有一个啊,有一个很复杂的一个函数。

一个J那么梯度下降法呢就是就像你下山一样,就是我每次沿着这个梯度的方向,往前走一段距离,然后呢一直这样走,那么一理想情况下,我就可能跑到这个呃这个最优点上来,那么这样一类的优化方法。

其实它有一个通用的一个名字,就叫这个线搜索方法,他写出来就是一个非常简单的形式,就是XK减1DK加一部的位置,等于XK加上阿尔法的K乘以PK,那么其中pk表示的是我的一个下降方向。

阿尔法K表示的是下降的步长,也就是说在每一步迭代的时候,我需要确定两个量,就是你沿哪个方向走多远的距离,那么一直这样迭代下去之后,就是我希望你最终能够,收敛到这个全局最优点上来,OK那么我刚才说了。

说这个额这种这一类的线搜索方法,大家最熟悉的肯定是梯度下降法对吧,也是应用最广泛的方法,那么梯度下降法在这里面,他直接就选择了我们的每一步的这个搜索方向,pk就是这个函数的负梯度负拿不到F。

那么同时也就是这个F是这个函数所下降,最快的方向,那么我怎么确定我们在这个方向上要走多远呢,对吧,那我们可以把它变成一个一维的一个优化问题,就是我固定了pk,然后唯一不知道就是阿尔法K。

然后我在这个方向上进行搜索,确定一个阿尔法K然后让这个函数值最小对吧,这是一个很合理的策略,那但是呢,如果我想直接去解决这样一个一维的优化问题,它同样也是不容易的对啊,我可能在这个一位优化问题上。

我还要套一个子迭代去优化阿尔法K,然后让这个这个这个这个这个问题最小,所以所以他可能需要一个一个,再套一个迭代算法去解的对吧,那这个可能时间就比较长了,那么在实际中,我们可以用一个近似的条件去代替。

这个最小化阿尔法K的这个优化任务,那就是啊非常常见的这个armor条件,它写成一个什么样子呢,是说我其实不需要这个阿尔法K,让这个后面这一项取到最小,而是我只需要找到一个阿尔法K。

满足下面这样一个不等式就可以了对吧,这个不等式就是说我的这个盐啊,pk走阿尔法K这么长之后,到达这个位置,它对应的函数值要等于要小于,等于原来我出发点的这个函数值,加上一个后面这坨东西对吧。

然后其中的C1是一个给定的一个常数,是我们可以给定的,比如说一般来说取到0~1之间,然后对于一般的问题,我们可以把它取到非常小的一个值,比如说我们甚至可以取到一一的四次方对吧,当然你取到一负一啊,0。

10。5,这些都有,就要根据具体问题来确定,那么这个AR米九条件,它具体对应的是一个什么东西呢,其实也非常好理解对吧,我们可以根据这个图来理解后面这一项,GK转置啊。

就这一项C1乘以阿尔法K乘以PA转置,乘以兰姆达F这项表示什么意思呢,如果C1等于一的话,那么这一项阿尔法K乘以PK转置,乘以拉姆达F其实也就是啊我走了这么长,走了阿尔法k pk之后。

去点乘上对应的这个F的梯度,那也就是我如果把FX在XK做这个局部,做线性展开,那我们可以找到它的一个切线对吧,那么这个切线长成什么样子呢,长成就是后面这个一次函数的形式,对吧,那么如果C1小于一。

那也就是我改变了这个切线的斜率,把它的斜率变小了一点,然后我要去找一个阿尔法K,让这个具体的这个函数值要小于这个啊,这个我们改变了斜率的切线,那在这个图中来看的话。

其实也就是我们要找到这个FX中间这一段,他在这个我们减小了斜率的切线下面,那换句话说,就是说我希望这个阿尔法K它不能取得过大,比如说我阿尔法K如果取到这个地方了,那这个时候他就跑到曲线上面去。

切线上去了,它就下降到不够多,一个合理的阿尔法K只能在这一段的下面,在这个中间的某个位置上能够保证它下降的呢,要比这个切线,这个不是这个弱化的切线下降的要更快,那么我只要满足了这个条件的话。

我就能把保证这个FK他是以某个速率,保证以某个速率再往下降的,那么最终这个算法就能保证收敛,所以这个就是这个对应的这个RV9条件,那么这个条件我要如何达到呢,一般来说最简单的做法,我可以从阿尔法。

K等于一个比较大的初始值开始,比如说从一开始对吧,一的时候假设我跑到了这个位置,我发现它的这个函数值比我的这个呃,弱化的这个切线要更高,那这就说明我这个阿尔法太大了,它跑的太远了。

我们应该减小这个阿尔法,那我们可以直接把阿尔法乘以一个某一个值,比如乘以1/2,我直接阿尔法取一半,然后取半发现呢,它正好这个点呢跑到了这个弱化的线线下面,那这个时候这个阿尔法就是可以接受的。

可以接受的,那这个时候我们就可以直接停止对吧,如果这个条件如果你减小二分,你乘了1/2之后,这个条件依然不满足,那我就接着往下减,接着往下减对吧,直到说这个阿尔法趋向于零。

那这个时候这个条件一定是能满足的对吧,因为我只要离得这个点足够近,那么这个函数在这个点局部,它就是近似的一体一个切线对吧,那我一定是能够满足这个啊,我们上链的这个条件,所以啊所以所以这个昂利的条件。

我只要阿尔法取得足够小,一定是能达到的,但是如果你取的太小的时候呢,那就代表这个点,那其实每一次跑只跑一个非常短的距离,那他收敛就很慢了,所以说我们应该从一个尽可能比较大的一个,初始值开始。

比如阿尔法等于一开始,然后逐步去减小阿尔法,然后直到减小到某个时候,他第一次让这个arm就条件满足了,那这时候我们就停下来,然后走对应的这个步长对吧,那我们写成算法来看,梯度下降算法,就是这样一个算法。

我们确定了这个下降的这个方向,就是这个函数的负梯度,然后呢我们通过这个线搜索的方法,是让它满足我们给定的这个奥米就条件,来使得整个函数值是保证下降的,然后呢让这个X在这个DK方向走TK的长度,走这么远。

然后我们就可以进行到下一步了,所以这就是一个啊最简单的梯度下降法,那么梯度下降法它是不是一个好的算法呢,它确实是一个好的方法,但是呢我们可以注意到,在梯度下降法的时候呢,我们其实只利用了这个优化目标。

FX它的一阶信息,也就是他的梯度信息,那么那么有没有可能,我们使用这个函数的这个二阶信息,局部的二阶信息,也就是曲率信息,来使得我们有更快的这个收敛速度呢,那么这个方法对应的就是牛顿法,牛顿法。

它与这个梯度下降法最大的区别,就在于说我们现在是应该在这个SK,我们叠到SK这个位置上,我们现在这个SK的附近呢,要给函数做二阶的展开,那就会有两项对吧,第一项是这个跟刚才一样,是这个梯度项。

然后面的是一项这个二次项,对吧,然后其中的这个拉姆达平方FX,就是他的这个二阶导FX的二阶导数,然后呢我希望额我希望我选择了下降方向,这个P它能够最小化后面的这一部分后。

最小化这个函数在FXXK附近的这个,二阶展开的形式,我们选择这样一个pk,来作为我的这个优化的这个方向,而不是直接使用它的这个梯度方向,那么那么这样这么来做的话,那我们就去看后面这一个这个展开式的。

它的这个最小值应该在什么时候取到呢,那我们就可以直接对它求一个啊,求一次导对吧,让它的这个梯度等于零,那么自然就可以得到这个最小点出在什么位置,那么这地方你就可以直接看出来。

这个最小值应该出现在这个GK等于负的呃,兰姆达的平方,F的逆再乘以兰姆达F也就是负的二阶导的逆,再乘以一阶导,这个东西是对应的牛顿迭代的,它的梯度方向,它不再是像这个梯度下降里面。

直接等于这个额函数本身的这个负梯度,而是在前面乘了这样一个二阶导的逆,这样一个矩阵,那么前面这样一个二阶导,它对它它是一个矩阵,这个大家应该能看出来对吧,因为我们对这个FF求了一个,如果求一阶导的话。

它是一个N维的向量,那么如果我再求次导的话,那N维向量你的每一个值都要求一次二阶导,那一次出来是个N乘N的一个矩阵,我们这个矩阵有一个名字叫这个彩森矩阵,也就是说对于牛顿法而言。

我们需要它的下降方向是我们需要在梯度前面,负梯度前面乘以一个海森矩阵的逆来这样得到,那么如果这个前面这个海森矩阵,它不是一个正定的一个矩阵,这个时候可能会发生什么呢,那我们可以看一下,如果他不正定的话。

假设我在这个呃,假设我在FX这个方向上,我在我在这个我在这个我在这个XK的方向,XK的方向,XK这个起点这个位置往前走了,这个P首先走了这个pk,然后这个pk由上面这个式子给出。

那么我去观察这个FKFX这个函数值,它变化了多少,那我们可以使用这个FX在这个地方的一阶,近似对吧,它变化多少呢,应该是它的本身的梯度横移或走的距离,那我们把pk这个等式带进去。

那么就会发现它这个变化的距离,应该等于后面这坨东西,那么后面这个东西是什么,你可以看到它是一个负的某个向量,乘以海参矩阵的逆,再乘以这个向量对吧,它是一个二次型的形式。

那么如果中间的这个海森矩阵它不是正定的,那就代表着我们有可能这个梯度方向,如果非常的不行啊,非常的这个啊,不幸它正好对应的这个海森矩阵的,这个某一个负的特征值的特征向量的话,那么整个后面这坨东西。

它就有可能出现的是一个正的值,对吧,那么这个时候呢代表意味就是说,如果我沿这个pk的方向走,那么有可能这个函数值不一定是下降的,但有可能是上升的对吧,这个是一个很反直觉的一个东西,那么在梯度下降法里面。

在梯度下降法里面,我们前面是没有乘这个海森矩阵的,或者说你可以认为这个海森矩阵这个地方,它是一个单位阵对吧,那么单位证它一定是正定的,所以我能够保证,如果我往前走pk。

那么我去看这个FX的变化大概率一定是下降的,但是如果我使用牛顿迭代,前面我乘了一个矩阵的逆,那么如果这个矩阵它不正定的话,那么后面这一项他就有可能是一个正的值,是个正的值的结果,就代表着我走pk之后。

这个函数值它是有可能上升的,那么这是一个非常坏的一个结果对吧,我希望跑着跑着我的这个函数值还往上升了,那最后可能就解炸了对吧,所以说如果啊是在使用牛顿迭代的时候,我们这个pk不能简单的写成这个样子。

我们要呃检查下这个海森矩阵,如果发现这个海森矩阵它是一个啊负定的阵,负定的矩阵的,那这个时候呢我们可以用一些额外的处理,某些额外的处理,因为这个海森矩阵的这个具体形式,一般你知道的对吧。

我们可以做一些额外的处理,然后将其投影回一个正定的矩阵,那么这种方法就称为投影牛顿法,或者呢我们就可以退回这个,在这种时候我们就退回梯度下降法,让他直接沿着这个梯度往下走,就可以,那么这个就是牛顿迭代。

如何去确定它的下降方向,你会发现我们相比于这个梯度下降,我们最大的变化就是,前面乘了一个海参矩阵的逆对吧,我们在前面乘一个海森矩阵的逆,然后呢我们确定了下降方向之后呢,我们还要再呃。

还要在这个进行刚才一样的这个线搜索,就是我们依然要满足,这让这个阿尔法K前面走的那个步长,还要满足这个armor条件来保证我的整个算法,这是一个下降的,OK那这里给出来就是一个牛顿迭代算法。

一个基本的流程对吧,那么牛顿迭代算法,它跟梯度下降法最大的不同就在于,我在这一方计算它的下降方向的时候,我需要前面乘以一个海参矩阵的逆,也就是要解这样一个呃一个矩阵方程对吧,那我花了这么多额外的时间。

理论上我们应该期待他有更好的收敛效率,对不对,那么是不是这样呢,你可以想象说,因为牛顿迭代它使用了这个函数,局部的这个二阶的信息,我使用的信息更多了,所以他应该来说它的下降是更快的对吧。

比如说我们这地方给个例子,假设我有有这样一个一个优化问题对吧,一个二维的优化问题,一个FX它长成他的landscape,长成这个样子,我要从这个点优化到这个点,如果这个时候你去分别使用牛顿迭代和这个。

梯度下降的话,你会发现牛顿迭代的呢,往往他只需要非常少的几步,两三步,它一般就可以啊,达到一个很好的一个收敛效果,但是梯度下降呢还有一个很明显的问题,就是他可能出现震荡的情况,对吧。

就是虽然我沿着这个梯度方向往前走一段距离,这个距离是要满足这个欧米九条件的,来保证我这个函数值上升的而下降的,但是我依然可能好过了对吧,比如说我这个最优点在这。

但是呢我这个gradient decent一下子给他跑过了,因为我局部我只有他的这个梯度信息,我不知道我应该走多远对吧,然后跑过了之后我再跑回来,那么只有这样慢慢的震荡之后,他才会收敛。

但是牛顿法呢它就不会有这个问题,因为我已经我已经近似知道这个这个函数,它局部的这个二级信息是什么,那我就可以更有目的性的去控制它的这个步长,来保证它不会出现这种震荡的情况,所以来,所以总的来说。

牛顿的下降是要比梯度下降要快很多的对吧,这个也合理,因为我利用了这个这个呃,这个除了一阶信息之外的二阶信息对吧,但是与之相应的呢就是牛顿下降,它每一步我都需要解一个在这个算法里一样。

我们需要解这样一个矩阵方程,来得到他的这个下降方向,所以我们每一步的开销是变更大的,那这个时候呢,如果这个矩阵方程我们实现的不好的话,那他有可能最后这个收敛效率,反而是要比这个梯度下降要慢很多的。

所以这个就是牛顿下降它的一个问题,那么解决这样一个问题,我们可以使用一个方法叫这个拟牛顿法,它与牛顿法最大的区别是什么呢,就是我其实不需要严格的去解,这样一个海森矩阵的矩阵方程,来得到我的下降方向。

我们可以去近似的找到一个更简单的矩阵,BK来去近似整个系统的这个额海森矩阵,然后我用这个bk代替这个海森矩阵,得到我的这个下降方向,然后像牛顿法一样去收敛呃,去迭代收敛,那么这样来做的时候呢。

如果这个bk他选的好,那我们就可以期待说,首先BK它近似于这个海森矩阵,那么它的收敛效率应该是近似于一个牛顿法的,那同时呢BK它要比这个海参矩阵更容易计算,那么这个bk呢它它每一它在每一个时间步内。

每一个迭代步数内要解它的这个方程,解的就会比牛顿法要快一些,所以我们期待说你用理论法,最终它这个实现效率应该是要比这个啊,牛顿法要更快的,OK吧就就这样一个简单的一个思想。

那么比如说我们可以把梯度下降呢,把它也看成是一种拟拟牛顿法对吧,那么它使用这个近似的海森矩阵的矩阵呢,就是这个单位矩阵对吧,我们直接把一个单位矩阵的逆乘在前面,能在这个梯度的前面,那相当于就是直接。

我们把梯度作为这个下降方向对吧,那么由于这个单位矩阵呢虽然它计算的很简单,但是它离这个真正的海森矩阵呢比较远,所以你可以期待说这个梯度下降算法,它的收敛效率是要比这个啊。

真正的这个牛顿下降是要慢一些的对吧,那我们也可以对这个方法进行一个,最直接的改进,就是什么,我可以把这个把先举这个对角项拿出来,构造一个对角矩阵,把它作为bk对吧,那这个时候呢它的这个方法的这个啊。

这个计算的效率呢,就会更接近于这个梯度下降法,我就不需要去再解这个矩阵方程了,但是呢它的收敛速度,我期待是要比这个梯度下降法要更快的,所以这个就是你牛顿法的一个基本思想,那么接下来就可以介绍一下你用法。

其中几个比较经典的算法,那么重点要介绍的是这个BFGS算法,这个呢也是现在来说呃非常通用的一个方法,大家如果去使用各种各样的工业软件,或者一些数值求解器的时候呢,你会发现它会把这个BF gs s。

或者这个l BF gs s作为它的一个默认的一个,优化算法,在使用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

OK那么BF gs s这个算法,它的名字来源是什么呢,他其实是这个四个老哥的名字对吧,就是这张照片里面的四个老哥,就从左到右,分别就是这个BFG和S,是他们四个人在上个世纪提出了这个算法。

然后他们就叫这个这个算法,就把它叫成这个BFGS算法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

那么EFGS算法是一种拟牛顿法对吧,我们刚才介绍了这个拟牛顿法的,这个基本的一个思想,那么BFC啊,BFGS算法在实现这个思想的时候,他的想法是说我们在每一步迭代时候呢。

我们去额外的更新维护一个一个矩阵,BK用来近似整个系统真正的海森矩阵,在迭代最开始的时候呢,我们把这个B0初始化成一个比如说单位矩阵,或者是就在或者是其他的一个,比如说在这个点上啊。

呃比如说在我的这个初始值这个位置上,他真正的还是对吧,这个都可以,然后呢在每一次迭代的过程中,过程中我们设计一种更新的方法,把BK加上一个德尔塔bk,然后更新到BK加一,然后用这个bk加一。

作为下一步我的这个海森矩阵的近似,然后一直这么做下去,那么自然有个问题,就是说我们这个德尔塔比K要具体怎么构造,对吧,那么EFGS算法在构造德尔塔BK的时候呢,要求额这个德尔塔BK要满足一个一个关系。

这个关系是什么,就是说是这个bk加一,他应该是这个SK加一处的,这个海森矩阵的一个近似,那我们就可以把这个啊SK啊,把这个FX在这个SK加一附近,做这个二阶展开对吧。

然后呢我们就应该有下面这样一个关系成立,应该有这个XK加一处的梯度,减去XK处的梯度,应该等于这个bk加一乘以SK加一减去SK对吧,因为BK加一是我要近似的二阶导对吧,那么这个二阶导乘以一个德尔塔X。

它理论上就应该对应的是这个梯度的差对吧,所以我们就就用这样一个简单的关系,来作为这个德尔塔BK要满足的条件,那么我们假设说,只要这个德尔塔BK满足了这个条件,满足了下面这个等式关系。

那我就可以近似的认为说这个bk加一,那就是这个海森矩阵的一个近似,对吧,那么这个关系呢就可以简写为下面这样一个,形成相乘的关系对吧,我们就把这个啊SK加一处的梯度,减去SK处的梯度。

把它剪辑成YK然后SK加一减去SK减成SK,也是我的bk加一又满足这样一个关系,只要我的S啊BK加一满足这样一个关系,我就可以近似认为BK加一,是这个啊是这个海森矩阵的一个近似。

那我就可以把贝K加一用于我们这个啊,牛顿法的中间的这个计算上了,Ok see u,所以这个就是BSGS法,BFGS算法一个基本思想对吧,我们要去更新这个BK,然后让它满足下面这样一个条件。

那么具体我们要怎么去得到这个德尔塔bk呢,那么我们可以进一步,假设说这个BSBFJ的算法,假设说这个德尔塔塔pk它是一个置为二的更新,它可以写成A乘以UUT,加上B乘以BBT可以写成下面这个样子。

其中U和V是两个向量,然后A和B是两个常数是吧,相当于说我假设德塔BK满足这样一个形式,然后其中的AUBV都是我带进了这些呃,向量和标量,然后我希望我去反求这四这这些标。

这些这些变量让这个德塔bk带到这个里面,带到这个形式里面来,满足这个YK等于bk加一乘以SK这个条件,那我们就可以看一看,带进去之后呢,把这个人叉DK的具体形式带进去对吧。

然后我们挪一挪这个项就可以得到这个关系,下面这个关系,对吧,这个等式呢右边是我已知的东西,就是YK减去bk乘以SK,这些东西都是我已知的,左边就是我要呃,左边是我带求这些系数,那我们就可以观察一下。

说这个系数它其实是什么,这个A乘以UT再乘以SK,它其实是一个标量,然后U是一个向量,然后B乘以V转置乘以SK,它其实也是一个标量,然后它乘以V1个向量对吧,那是两个向量,两个标量乘以向量,结果相加。

等于后面这样一个YK减pk加BK乘以SK,那我们一个最直接的取法,我们就可以让这个前面这个A乘以U转置,乘以SK等于一,然后U等于YK,然后B乘以V转置乘以SK等于一,然后V等于EK乘以SK。

那么只要满足这四个式子的话,那么我就可以保证说这个bk加一乘以XK,等于YK了对吧,那么由这四个式子,我们就可以直接得到这个AB,UV分别等于多少,那么得到之后呢,我们再反倒回去德尔塔bk。

我们就可以得到一个德尔塔BK的,这个具体形式,就可以写成下面这个样子,那么这个样子这个形式呢,也就是这个BFGS算法最核心的一个,一个形式,就是说我如何去更新这个bk。

使它始终保持是这个系统的action矩阵的一个近似,就是我每一次啊,好拿这个BK算完下降方向之后呢,我还要再把这个YKSK都算出来,然后往里带,然后去更新这个bk到BK加一。

然后用把它作为下一步这个核心矩阵的近似,那么这个形式的BK加一,他可以,它其实是可以使用这个SMW这个公式呢,写出它的一个显示的逆矩阵的,这个公式长什么样,就这个地方也下面列出来了。

因为这个后面这两个矩阵虽然它看起来复杂,那它其实就是一个两个值为一的矩阵对吧,那我们就可以利用这个定理去写出它的,逆矩阵的这个显示形式,其实它就是下面这个样子,对吧,所以BFGS算法。

它里面的这个近似的这个还剩矩阵,B它确实它的逆矩阵,逆矩阵是一个啊,是一个好求的东西哦,这个地方呃,这个地方应该是bk的逆矩阵啊,这地方应该是写错了,不好意思,这话应该是b k-1,Ok。

呃OK那我们呃那到这里,其实我们这个BFGS算法就已经这个推完了,对吧,我们就得到了这个呃每一帧里面,我的这个下降方向是要怎么来的,那我们还有个问题是说在牛顿法里面,我们刚才说了。

如果整个海森矩阵它不是一个正定矩阵的话,那么这个这个算法它是有可能不收敛的对吧,你只要这个矩阵是不正定的,那么有可能这个这一步的这个下降方向,它会导致函数值的上升,那么BFGS它好就好。

在说它这么写了之后呢,它能够保证我一直这么更新下去,这个bk bk加一这些矩阵,它一般来说都是正定的,怎么证明呢,就是我们可以把刚才这个形式给他做一下,这个变换,变换成这个形式,这两个形式直接一个额。

一个一个一个等价的一个形式,就是大家可以去检查一下,它是等价的,那么改写成这个形式之后呢,你就会发现前面一部分,他一定是一个正定矩阵对吧,只要我的BKBK的逆是一个正定矩阵的话。

那么前面部分一定是一个正定矩阵,而后面一部分呢它是一个秩为一的矩阵,只要这个常数SK转置乘以YK,它是一个大于零的值,那么这个SK乘以SK转置,它应该也是一个正定的矩阵,那换句话说,只要我在迭代过程中。

能够保证XK转置乘以YK一直都大于零的话,那么BF g s算法生成了这一系列的,这个近似的H胜矩阵,它就一定是正定的,那我就能保证BFG的算法一体式,是一直朝着这个减小的目标进行的。

OK那么这个SK转置乘以YK它是大于零,是不是一直乘以,这个就是6月份这个问题的具体形式来保证的,对吧,我们可以回去看一下这个SK是什么,SK是这个SK加一减去,SKYK是这个两个点处的这个梯度差对吧。

所以说只要你的这个问题,他是一个长的来说还比较好的问题,那么他这个额他这个YK乘以哎,YK转置乘以SK的话,那么他这个应该来说一般来说是一个正的值,那这个时候BFGS它就是能够收敛的对吧。

那反之如果你这个地方它不能一直保证的话,那么BFGS算法它是也有可能不收敛的对吧,这个要具体情况具体分析,Ok,那么这地方就是给出了这个EFGS算法,的一个整体的流程对吧。

我们下降方向DK呢跟牛顿法一样,它是需要解一个矩阵方程得出来的,但这个矩阵方程呢是由这个近似的海参矩阵,给出的,那么这个近似的海参矩阵,它是通过这个BFJ算BIG的算法,进行这个迭代更新的。

那么它的逆矩阵也是一个显示,可以给出来的东西,所以总体来说BFG的算法,它的这个呃,他的这个速度呢,是要比这个牛顿法要相对来说要快一些的,OK那么BFGS算法,虽然说我们说他已经是比牛顿法要更好了。

但是呢他还是有一个问题,就是说我们需要一个N乘N的空间,来储存这个稠密的矩阵,BK逆或者是bk对吧,我们需要把这个矩阵存出来,然后再不断的去更新它对吧,那么如果我的问题比较规模比较大的时候呢。

比如说我们像额上一节介绍的一样,就是我要有一个非常大的一个mesh,还有几百万个节点,那这个时候呢,N乘N就是一个很大很大的空间了,那这个时候呢这个BFG的算法,它可能就他就会啊。

不管是计算上还是储存上,就会比较效率就会降下来的,那么为了解决这个问题呢,大家就想出了另外一个DFGS的改进,叫这个LBFGS,那么这个L它表示的意思就是limited。

就是这个啊约束了内存的DFJ的算法,那具体怎么约束呢,其实想法也非常简单,就是BF g s算法是我从第零步开始,然后一直追踪这个闪现矩阵的更新对吧,那么LBFTS呢,就是说我只保留最近M4迭代的更新。

德尔塔bk对吧,我只保留最近M次迭代更新,那么对应的就是一个秩为2M的一个矩阵,那么这么一个质为2M的矩阵,只需要存这个2M乘以N,这么多变量就可以对吧,相当于是2M的向量,那么我我由于我限制了这个。

最近只保留M4迭代的话,那么我整个计算空间他就重新回到了这个呃,这个OM对吧,回到了N的这个线性上来,因为我不再需要直接去储存这个N乘N的矩阵,对吧,我只需要去储存这arm的向量就可以,那么这个东西呢。

它其实也就对应着我们之前介绍过的,使用这个SBD算法去压缩矩阵,他的想法是一样的对吧,SBD算法是说,我用这个矩阵的前多少个特征值和特征向量,就可以表示这个矩阵的大部分的信息对吧,那对于LBF而言。

就是说我使用最近M4迭代更新的,这2M2至为2M的这样一个低质矩阵,是近似真正的这个海神,那么用这种方法,我就可以把这个计算和储存的这个开销降下来,当然是那如果这样做的话。

我就要牺牲一些这个BFG的算法,他的这个收敛速度了对吧,但是总体来说呢,那对于这个规模比较大的问题呢,它的这个提升就是更更明显的,就是说我不再需要这一个N乘N的空间,来去组合计算了。

所以说啊这个LBFJ,LBSJS算法是很多这个数值工业软件,它的默认优化算法,它的它能够比较好的去平衡这个呃,这个需要的总的这个迭代的步数和,每次迭代的开销,OK那我们也可以回忆一下,在上一次的时候。

我们介绍这个活动点迭代对吧,那么不动点迭代,我们介绍不动点迭代去求解这个矩阵方程,那我们回过头来这个地方看一下,其实我们也可以发现这个不动点迭代解方程,它其实也是一种拟牛顿法,怎么看呢。

就是我们可以把这个假设A正定的话,我们可以把这个求解,X等于B这样一个矩阵方程的问题,等价的写成下面这样一个最优化的问题对吧,这个最小化问题他的解对呢,就是X等于B那么对于这样一个优化问题。

如果我使用拟牛顿法对吧,我就看看他的梯度呢等于X减去B,它的二阶导数呢,或者它的hash矩阵其实就是A对吧,那我们使用JCIN或者高saddle,这样的不动点迭代的形式的时候呢。

它的更新长成这个样子对吧,这是我们上一次给出来的,那么改写一下,就会发现这个B减去A乘以SK,其实也就是FX的负梯度,那么对应的这个M逆呢,它其实也就是我们的这个拟牛顿了,拟牛顿里面的那个还是矩阵。

对吧,如果M矩阵直接等于A的话,那这个时候我只需要一步迭代就可以收敛,那算代价就是这个A矩阵的逆,本身是一个很难算的东西对吧,那如果我用一些更简单的矩阵,比如说这个啊单位矩阵呀,或者说下三角矩阵。

来近似这个本身的海神矩阵的话,那么我就可以去平衡整个算法的这个收敛,和它的这个呃计算速度了,所以说我们说不动点迭代,也可以看成是一种理牛顿法,OK那到这里我们就介绍完了这个带约额,不带约束的优化算法的。

发的这个呃比较核心的几种方法对啊,就是梯度下降法,然后牛顿法,然后以及牛顿以及拟牛顿法啊,其中特别注意的就是这个啊,BFGS和LBFGS算法,这个也就是呃大家最常用的几种算法,那我们下面就来看一下这个。

如果我的优化问题,是一个带约束的优化问题的话,我们应该选择什么样的方法去求解,那么这个带约束的优化问题,它相比于不带约束的问号,不带约束的优化问题多的就是一个约束对吧,那这个约束呢。

它可以分为等式约束和不等式约束,我们可以就是常见的一些约束,我们可以列在这些地方,比如说如果我们要做模拟的话,我们当然希望两个物体之间不能发生穿透对吧,那么其实写成约束了。

可以写成两个物体之间的这个最短距离D,它是一定要大于等于零的,然后以及我们如果有关节的话,比如说人手上他有一个关节的话,那我就希望说这个人手的呃两个部分,但在这个地方它的位置应该是一样的。

然后同时呢这个关节的角度也有一些限制,就是你不能弯的过短啊,弯的弯的过小或者过大对吧,然后我们还有其他的,比如像规划啊这样的一些约束,它就是一个等式约束,所以说在图形学中,这个约束是非常常见的。

那么对应的带约束的优化问题,也是一个非常常见的问题,对吧,那么这今天呢为了讨论的这个简单,我们就只考虑这个等式的约束,对我们就先不管这个不等式约束,那写出来就是说我有一个最小化FX的目标函数。

然后我希望呢X去满足这样一个,GX等于零的啊,这些条件对于这样一个等式约束优化问题,那我们首先回答第一个问题,是说额这个优化问题达到最优的时候,我们应该满足什么样的条件,对吧。

那我们可以以一个二维的一个例子来切入是吧,假设我们有一个二维的优化问题,最好画FXY,然后呢我也只有一个约束GXY等于零,那么也就是说所有的这个可行的XY这些点,它应该对应的是GX。

GXY这个二维函数的零等值面,零等值线对吧,我这个点只能在这个JXY等于零,这条线上进行进行滑动,那么什么时候FXY可以取到最小呢,那就应该是这个F本身的这个梯度,它应该是垂直于这个等值线的。

那么这个时候呢,我们说FXFXY在这条线上取到了最小,为什么呢,假设说我们在另外一个点上,这个点上它的F本身的这个梯度,它和这个曲线是不垂直的,那就意味着我在这个点上,沿曲线的某一个方向往前走一点。

它是有可能继续使这个FX继续下降的对吧,那他就一定不是最小值点,所以说如果你是最小值点的话,那么一定有这个FXXFXY在这个点的梯度,它是要跟这个曲线的这个切线是要垂直的对吧,那么换句话说。

这个在最优点上,这个F的梯度应该和季度梯度是要平行的,因为G的梯度本身是垂直于这个零等值线对吧,那么写成数学,也就是说存在一个实数LANA,我们能够满足这个F的梯度,等于拉姆贝的G梯度,这是一个呃。

这是只有这个一个优化的一个二维的情况,那我们就可以把这个问题呢,那就对应成一个高维的流行对吧,GXYGXYZ什么时候各种各样啊,GX等于零,X是一个高位的向量,那这个时候X它就不再是一个零等值线了。

那就可能是一个等值面或者等值起,它又是一个高位的流行了,但是呢我们的这个垂直关系应该依然是满足的,就是FX在这个点上的梯度,它是一定要跟这个本身这个约束的,这个流行是要垂直的。

所以这里我们就给出了这个额带等式,约束的优化问题,它在最优点应该满足的这个最优条件是吧,写出来就是两条,第一条是这个最优点,X星一定是要满足这个约束的,满足所有的约束的,那同时呢我们应该存在一组拉姆达。

使得这个FX的梯度,等于GX梯度的一个线性组合,那么只要这个条件满足,那么X星这个点,它就一定是这个FX的一个最小点,啊一定是这个原来优化问题的一个最优点,OK那么这样一个最优最优形式呢。

它看起来依然比较复杂对吧,那我们这里就引入一个非常重要的概念,叫这个拉格朗日乘子或者拉格朗日函数的概念,来,把这个我们刚才推出的这个最优条件进行简化,那么对于这样一个形式的一个最优化问题呢。

我们可以定义它对应的这个拉格朗日函数,LL是同时是X以及一组对应的这个变量,兰姆达一,一直到拉姆达N所有这些变量的总的函数,它写出来的形式长成后面这个样子对吧,它是一个同时包含了X和拉姆达的一个函数。

那么这个拉姆达的个数呢,就对应我这个具体的约数的个数,然后每个元素前面都会乘一个拉姆达,那么如果我们定义了这样一个拉格朗日函数,其中拉姆达呢就称之为拉格朗日乘子,如果我定义了这样一个函数的时候呢。

我们刚才说的这个最优解,它满足的这个条件呢,其实可以简单的被写为L的梯度等于零,那么为什么呢,我们可以来算一算这个L的梯度具体是什么,对吧,那如果我把拉格尔的函数呢,对这个拉姆达取梯度。

因为整个东西后面出现拉姆达值这个地方对吧,那我如果对拉姆达I求导的话,那我求出来就是负GI,如果它等于零的话,那就代表GI等于零对吧,GI等于零,也就是我的X要满足我们列出来的约束。

如果这个拉格朗日函数对X求导等于零呢,我们可以得出来LXLL对X求极度减去,西格玛拉姆达I乘以GI对X求梯度等于零,那么这个条件刚好也就对应着,我们刚才堆出来的那个最优化,要满足的第二个条件对吧。

所以刚才推出的两个条件,其实可以被简单的写为,拉格朗日函数的梯度等于零这一个条件,对吧,那看起来就简洁很多了,那么这样一个一个结论,是不是意味着,我们直接去最小化这个拉格朗日函数。

就可以得到这个原问题的解呢,那这个是不对的对吧,为什么呢,你去观察这个拉格朗日函数的形式,它的后面是一个拉姆达I乘以GI的一个形式,如果我随便取一个X,让这个GX不等于零的时候。

这个拉姆达I他就可以去选一个很大的值,比如说我可以选成正无穷,就比如说我假设有一个有一个X值点,让GIX大于零,那我的这个拉姆达I就可以选择一个正无穷,那这个时候呢L它就是一个负无穷的值对吧。

所以说如果我去最小化L的话,那么这个最小化的结果一定是一个啊,负无穷的值,那我最小化L就是没有意义的对吧,那我们这个L梯度等于零的条件,到底是怎么来的呢,那么这里就可以引入啊。

另外一个重要的概念就是这个明max问题,对我们的拉格朗日函数写成这个样子,然后我们说与原来这个带约束的优化问题,等价的这个拉格朗日函数的优化问题,其实它不是一个单纯的,最小化或者最大化的问题。

而它而是一个MMAX的问题,写成下面这个样子,我们要对这个拉格朗函,拉格朗函数中的X取最小,然后对其中的拉姆达取最大,这么一个明max的问题,那么这个min max问题,它也就是是一个非常有意思的问题。

我们可以怎么想象它呢,我们可以想象说,我们是有X和拉姆达两组玩家在博弈,X希望这个L取最小,拉姆达希望这个L取最大,当我们看这两个玩家在玩的时候呢,如果X他一不小心取到了一个GIX不等于零。

那么这个时候拉姆达I就一定能够取到,正无穷或者负无穷,来使得L这个函数它趋向于负无穷呃,趋向于这个正无穷,那这个时候相当于X就输了对吧,因为拉姆达拉姆达的目的是要最大化这个L,我现在把L看到了正无穷。

那X1定输了,所以X想要最小化这个L的时候呢,那X1定要让这个GIX平等于零对吧,只要它等于零,那你这个拉姆达I不管取多大,后面这个值后面这个值永远是零,所以说如果X想赢的话,那他就只能让GX等于零。

同时呢X如果满足GX等于零了,那后面一项是零的,那么这个时候X的任务就是什么,X任务就是尽可能的最小化FX,那么这样一个结论是什么,就是说对于这样一个博弈的问题,他在博弈到最后这个平衡点上。

它对应的那个解就是我原来的这个啊,带约束的优化问题的解,就是X既要满足让GX等于零,同时要最小化FX,对吧,所以说如果是拉格朗日函数的,去看他对应的优化问题的话。

他就不是一个单纯的最小化或者最大化的问题,而是这样一个min max问题,那并且呢我们可以想象说,你既然是min max问题,那么达到平衡点的时候呢,那自然这个L它关于X的梯度。

以及关于拉姆达梯度都应该是零了,对吧,那这个对应的就是我们刚才列举的这个额,最优化的这个平衡点要满足的条件啊,这个最优点应该满足的条件,所以说呃这个我们刚才说的这个啊。

我们我们最开始说的这个带约束的优化问题,到这一步呢,就会被我们变成了这样一个min max的一个形式,对吧,由于它是min max的形式,所以我没有办法直接用啊,前面介绍这些无约束优化方法。

直接去优化它,那因此呢,如果我们想迭代的去求解这样一个明max问题呢,其实我们最终还是要回到这个呃,去求解这个最优点满足的这个性质上来,就是我要找到一组X和拉姆达,让他满足这两个条件。

那么这样一个条件我们怎么去迭代求解它呢,我们可以使用牛顿法,在最开始的时候,我们介绍牛顿法是这个说牛顿法是优化SLEX,一个二阶方法对吧,那么我们如果换一个角度优化FX。

其实也就是解一个FX的梯度等于零的方程对吧,那我们的牛顿法就可以应用到这个解,这样一个啊梯度等于零的方程中来,那换句话说,如果说我直接去考虑我有一个方程PX等于零,我使用牛顿法去解它。

那我就应该在迭代的每一步,把这个GX这个函数做一阶展开,然后把它长成这个样子,然后呢,我去看这个一阶展开,对应的这个近似出来的解是多少,把它作为我的这个更新的步长,那么在图上来看,牛顿法去解方程。

它的过程是什么样的,就是我从比如说这个红色的线,是我要代解的方程,然后我从S0开始,我干的事情其实就是在X0附近画出这个方程,这个曲线它的切线出来,然后找到它在X轴上的交点。

把这个交点作为我下一步的这个更新的,这个位置,然后一直这么进行下去的话,我最终就可以收敛到他真正的这个额,真正的这个解上来对吧,那由于我是在这个GX对它进行一阶近似,那你如果对应到最开始。

那就是你某个优化问题FX的话,那就是对它进行二阶展开对吧,你假设PX是某个函数的梯度的话,某个优化问题的梯度的话,那么这个你对PX1阶展开,其实也就是对FX2阶展开,所以它确实就是牛顿法对吧。

OK那我们可以看一下具体这个啊,德尔塔X长成什么样子对吧,我们把德塔X它的展开式放在这个地方,然后呢我要去找到它的这个近似的解,那也就是这个要求这个东西等于零对吧,等于零之后,你一下项加派X。

它就应该等于啊这个P的梯度的逆,再乘以P的GP这个函数值本身对吧,那这个东西就是对应的这个牛顿法解方程,OK那我们现在呢就可以用这个牛顿法去求解,我们刚才给出的这个拉格尔函数。

它的这个平衡点满足的方程对吧,我们可以把拉姆达I写成一个矢量RN,然后这个N的维度呢是我这个约数的个数,那么对应的拉格朗日函数可以写成,F减去拉姆达转置乘以G,额那么最优化条件是什么。

最优化条件就是两条,第一条G等于零,然后以及呢,这个F的梯度减去兰姆达转置,乘以G的梯度等于零,如果我们使用刚才介绍一个牛顿法,去解这两个形式的话,那么在迭代的DK部,我们可以把这个这两个方程。

在这个XK兰姆达K附近做这个线性展开,然后让它等于零,就本跟刚才的过程一样,怎么写出来,就是这样的两个式子,那么这两个式子呢如果你去再给他写,写成一个大的矩阵方程,对应的就是下面这样一个方程,对吧。

可以看到这个方程它的左边是一个对称的矩阵,但是这个对称矩阵呢它右下角有部分是零,然后同时呢它整个方程也不一定是正定的,一般来说它是一个不定的方程对吧,然后我去解决解这样一个啊矩阵方程。

就可以得到这个德尔塔SK和德尔塔拉姆达K,把它作为我的这个额下降方向,然后去更新兰姆达XK和朗姆达K,直到最终它收敛到我们想要的那个平衡点上来,对吧,那这个就是使用牛顿法去求解这个嗯。

这个拉格尔函数的一个一个具体的形式,那么由于我左边这个矩阵方程,它是一个不定的方程,那么我能使用的求解器,就是我们上一节介绍的这个,比如像LU分解,或者这个MRS分解这样的一些形式。

那么这个就有可能限制他的这个求解的速度,对吧,因为如果是啊正定的矩阵方程的话,我们有一些很快的求解器可以解它,但如果是不定的话,那它解下来可能就比较慢了,OK所以说额,如果我们用牛顿法去直接求解。

这个最优条件的话,他一般来说不会是一个特别快的方法,因为实线上的原因,它不是一个不会是一个不呃,一般来说不是一个特别快的方法,那么我们还有一个做法,是称之为把这个原问题转化成对应的对偶问题,来去优化它。

那么这个对偶问题,一般来说有着比原问题更好的形式,以及更快的求解器,那么这个对偶问题从哪里来呢,其实最简单的理解方法,就是从我们刚才介绍的这个min max,这个拉格朗日函数这个形式。

来把一个问题从原问题变换成对偶问题,其实可以完全理解成,就是我把这个原来这个先最小化X呃,先最大化拉姆达,再最小化X这样一个过程,把它调个顺序,变成先最小化X再最大化拉姆达的过程,对吧这个也很合理。

这个相当于什么,相当于是我们不是,假设说X和X和拉姆达是两队玩家,他们一个在啊,他们在博弈嘛,一个想最小化L,一个想最小化L,一个想最大化L,那么开始的原问题是拉姆达先先走第一步,然后X再走第二步对吧。

那我们现在调换个顺序,让X走先手,拉姆达,拉姆达走后手,那么这样的方法,我就可以把这个原问题转化成对应的对偶问题,那么这个对偶问题和原问题的关系,到底是什么呢,一般来说呃,对于一个任意的函数L。

我们总是有下面的弱对偶关系成立,就是我把这个min max顺序交换之后呢,它的这个这个最优点,它的这个值一定是会小于等于啊,原来这个值的,然后呢如果这个L函数呢,他还满足一些额外的性质。

比如说这个原函数FX和约束gs x都是凸的,那么这个下面这个强对偶关系就成立了,就是对有问题的这个最优点的这个解,它和原问题是相等的,那么这个地方呢,我们就涉及到夫初级和凸函数的概念了。

那么这个概念呢我们今天是没有办法,就是没有时间给大家做这个延伸了,它是一个优化问题中的,一个非常重要的一个概念,就是它衍生出来一个专门优化中的,一个研究方向,就是个凸优化,但是我们今天啊。

今天因为我们主要是这个实践课程嘛,所以我们呃可以牺牲一些理论上的,这个严谨的程度,就是我们可以假设大部分我们见到的方程,见到的函数都可以假设它是近似凸的,或者我们可以通过某种手段把它转化成对应的。

to do函数对吧,那么这样的话呢,我们就可以默认这个强对偶条件,它是一定成立的,而事实情况呢也是如此,就是说大部分大家接触到的优化问题,如果去做这样一个对偶转换的话。

那么一般来说这个转化是可以转化过去的,对吧,我们这地方就不去啊,纠结说这个到底哪些哪些呃,哪些问题,它是它是满足这个强对偶强对偶条件的,我们就假设说这个强对偶条件成立,那我们可以看一看。

接下来我们可以做一些什么东西对吧,那如果这个强对偶关系成立,意味着什么呢,意味着我们这样一个原问题可以变成对应求解,后面这样一个对偶问题,这个对偶问题的解和原问题的解是一样的。

那么这个对偶问题可以写成什么样子呢,我们可以定义一个新的函数G拉姆达,它就是拉杠完函数对X取最小值,如果我们能给出这个G拉姆达的具体形式,那我们就不用去解原来的这样一个,带约束的优化问题。

而是可以直接求解,下面这样一个无约束的优化问题,如果强对偶关系成立的话,那么这样一个无约数字化问题,最终的解应该和原问题的解是一样的,那么在这里面,这个G拉姆达就称为这个对偶函数。

那么对应的这个G拉姆达的优化问题,也就称为对偶问题,那么它相比原问题呢,它因为它是个无优化问题,所以他解起来就更容易了,那我们可以给一个具体的例子来给大家看一看,这个对偶问题到底是什么对吧。

比如说我们这样一个解析的问题,我们有一个二维函数啊,我们有一个二维的约束,GXY等于X的平方加Y平方减一等于零,那也就是说这个点呢,它是要在这个圆上运动的对吧,那我们希望在圆上去最小化。

我们目标函数FXY等于X加Y是对吧,那么也就是说额那么在这个地方图上画出来,就是这个FXY的形式是吧,如果他画这个呃等直面的话,它就是这样一条一条的直线,那这时候大家脑子里想一下。

就是它那个形式在什么时候应该取到最小呢,应该是在这个X等于Y这条线上对吧,在接近于零点的X等于Y这条线上,这个点是啊是最小的,但这个是我们的几何观察对吧,那我们下面看一下。

如何去用刚才介绍的这个额就有问题的方法,去优化这样一个带约束的优化问题,我们写出对应的拉格朗日函数L,它整成这个样子,然后我们去求对应的对偶函数,G拉姆达等于拉格朗函数,对X取最小值。

当这个拉姆达它是一个大于等于零的数,的时候呢,我们可以注意到L关于X和Y,它是一个开口向下的一个一个二参数,那么这个二次函数显然是可以取到负无穷的,那于是呢,这个G拉姆达在拉姆达大于等于零的时候。

它对应的值就是负无穷,当拉姆达小于零的时候呢,这个L它关于XY,就是一个开口向上的二次函数,那这个时候我就可以取XY的最小值是吧,它就应该是X等于Y等于二兰姆达分之一,在这个时候呢。

这个开口向上的二次函数,它能够取到最大值和最小值,把X等于Y等于阿拉阿诺分之一代入进去,我们可以得到这个额,G兰姆达等于拉姆达加上二兰姆达分之一对吧,所以这个对偶函数我们是可以直接求出来的。

他在拉姆达小于零的时候呢,是这个样子,画到图上,也就是下面这条红线,在拉姆达大于等于零的时候呢,既拉姆达取到了负无穷,那么我们就要问,G兰姆达什么时候可以取到最大呢,它的对偶问题什么时候可以取到最大呢。

那显然就是在这个点上对吧,在拉姆达小于零的时候,在这个这个双曲线的这个点上,它可以取到最大值,这个点我们可以解析的算出来,是拉姆达等于负根号1/2的时候,即可以取到最大值,那这个时候呢。

X和Y它对应的值我们就可以求出来,等于负的二分之根号二,然后我们就可以从几何上这个图上来看出来哦,原来这个时候他确实是呃,我们刚才原问题里面的那个最优点的解,所以说我们就用这个例子给大家展示了。

说我们原来这样一个带约束的优化问题,在转化成对应的对偶问题的时候,还可以转换成一个无约束的优化问题,我们可以直接得到这个无约束优化解的解,然后啊然后去啊对应到原问题的解上来。

所以这是在面对待约束优化的一个中,一个非常重要的概念,就是对偶问题的概念,那么有了这样一个基本想法之后,我们就可以去设计这个对应的这个优化算法,也就是这里这里提出的这个对偶上升法,对偶上乘法。

利用了对偶问题的形式去交替的更新,这个SK和兰姆达K在算法的每一步的时候,我们首先去固定拉姆达K,假设它是个固定的值,然后去单独优化X的部分,这一步相当于什么,相当于是我去计算G兰姆达K的这个值是多少。

对吧,因为G兰姆达K它就是额,就是这个X取到这个最小值的这个点对吧,然后有了G兰姆达之后呢,我再用梯度上升的方法,因为我要最大化这个GG兰姆达对吧,所以我是梯度上升的方法去更新拉姆达K。

它等于它对应的是下面这个形式,我需要把这个对偶函数G对拉姆达求梯度,然后加到这个兰姆达K上来,那么这个对偶函数它的梯度是等于多少呢,我们注意到这个对偶函数G拉姆达,它可以写成LX星乘以拉姆达。

其中X星呢它也是拉姆达的一个函数,表示的是说我给定一个拉姆达之后,这个X是L取到最小的时候,那个值就是X星,那么由于X星呢,它是这个对应拉姆达时候的L的最小值点,那因此它应该满足这个L对于X星的导数。

是零的,那我们就可以使用链式法则去计算G,它的对于拉姆达的梯度对吧,可以写成LX星拉姆达对于拉姆达求梯度,也就等于L首先对X星求梯度,然后在X星对拉姆达求梯度,加上L直接对拉姆达求梯度。

这个就是链式法则对吧,然后我们说了,说这个S星呢,他是要保证能够取到L的最小值的,所以在这个点上应该L对X型的导数是零,所以只有只剩下最后一项L对拉姆达求梯度,L对拉姆达求梯度是什么呢。

那也就是负的G了,因为拉L等于F减去拉姆达转置乘以G,所以说对偶函数在这个拉姆达这个点上,它的梯度呢应该等于负G,于是代入这个我们刚才这个梯度上升法的公式,我们就可以得到拉姆达本身的更新公式了。

就是拉姆达K加一等于兰姆达K减去,阿尔法K乘以GSK加一,那到这里我们就推出了这个对偶上升法的一个,算法流程对吧,我们就分两步,在每次迭代的时候分两步,第一步首先更新SK到SK加一。

然后第二步呢再用更新过的SK加一,去更新拉姆达K,这个就是梯度上升法,可以发现它相比于这个牛顿法来说的话,它看起来更简单,就是他把相当于把我们刚才的,带约束的优化问题,变成了两个无约束的优化问题。

那么这两个无约束优化问题,第二个我是使用这个梯度上升法去解它的,那第一个呢关于X这个号优化问题,我可以也使用梯度法去解它,那么这样就可以相当于就是一个一阶的方法,就是我可以在不知道这个L的二阶信息。

的情况下去优化X和拉姆达,那么除了我们刚才介绍的这个呃,牛顿法和这个梯度和这个对偶上升法之外呢,还有一个非常直接的方法去求解,带等式约数的优化问题,那就是罚函数法法函数的方法,函数法的想法非常的简单。

那么就是我把这个罚函数,把这个约束函数作为一个罚函数,作为一个惩罚加到了目标函数里,那么其中拉姆a new是一个我给定了一个约束的,强度越大,代表这个约束越强,那如果我去直接做这样一个问题的。

无约束优化的时候呢,你就可以想象后面这一项他如果尽可能小的话,那就是GX要尽可能接近于零,那GX接近于零的时候呢,我就相当于是只优化了前面这个FX这一项,所以说法函数法,它只能近似的去求解到这个最优点。

就是近似,让这个约束近似满足,然后FX也是近似最优,但它的好处呢就是它这个形式非常的简单,那除了他这个解释近似之外呢,同时这个mu呢也是一个很大的问题,就是我需要去调节这个缪的值。

来让整个算法它的效果比较好,如果你的mu取得比较大的之后呢,这个算法就可能比较难收敛,因为我这地方后面有一项很很大的一个,二次项在后面,那如果密度很小呢,那代表这个约束很软。

那这个GX可能就离零偏差的比较远,所以我一定要选择一个合适的mu,来使得额X同时满足约束,并可并且呢尽可能最小化FX,所以说罚函数法呢,它是一个简单的一个近似的方法,就是在如果这个啊精度要求不是很低的。

不是很高的地方呢,我们也可以使用法痕除法,OK那我们前面讨论的都是这个额不等式约,额等式约束的情况,那最后呢就是给大家简单展示一下,如果我们出现了不等式约束的话,我们应该是一个怎样的基本思想来处理它。

那么不等式约束呢,处理起来它与等式约束最大的区别在哪呢,最大区别在于说,如果说这个最优点是被包含在了,这个不等式约束里面的话,那么这个不等式约束,其实我是可以当它不存在的,对吧,如果我这个最优点。

在这个不等数范约束的范围里,那我其实这个不等式约束跟没有约束是一样的,它唯一的有发挥作用的地方,恰恰是在这个不等式约束,变成等式约束的这条线上,在它的边界上,如果这个最优点。

没有被包含在这个不等式约束的区域内,的时候呢,那这个时候,其实我们只需要在这个不等式约束的边界上,进行搜索,然后找到它的最优点,对应的就是我整个问题的最优点,所以说不等式约数非常非常直接。

就是说如果你的这个解,自由点的解包含在了这个不等数范围里面,这个不等数据接触,当它不存在就可以,如果这个最优解在不等式外面,那这个不等式约束当成等数约数一样处理,就可以。

所以这是一个不等式约束处理的基本思想,那么它所引入的困难恰恰就在于判断,说到底哪些约束是我要被,是被我要考虑在内的约束,哪些约束是我可以忽略掉的约束,那么这样一个选择问题呢,它其实是一个策略的问题。

就是啊到底哪些东西你应该保留,哪些东西应该扔掉,它不再是一个连续的优化问题,而是一个离散的优化问题,对吧,我要选择哪些约束是要保留的,哪些约束是要舍弃的,所以是这个地方导致不等式约束处理起来呢。

要比这个等式约束更麻烦一些,那么关于不等式约束呢,我们可以简单的啊,给大家看一下它的拉格朗日函数的形式,那么对于这样一个通用的一个,带不等式约束的优化问题,我们依然可以定义其对应的拉格朗日函数。

长的下面这个样子,那么只不过相比于等式约束,不等式约束呢,那也有一个对应的MMAX问题,可下面这个样子,这个明max问题,它与等式约束最大的区别,就在于中间这个mu的这一项。

这个mu它是由取值范围限制的,为什么会出现这样一个结果呢,我们可以来看一下,我们刚才说这个等式约束的情况下呢,我们是X和拉姆达两个人在玩游戏,X希望L取最小,拉姆达希望L取最大。

那么呃最后平衡的结果就是,X必须让这个啊等式约束HX等于零,才能让他自己获胜,那么如果把缪考虑进来,把不等式约数考虑进来呢,我们限制说缪只能取到大于等于零的值,那这个时候如果X依然想获胜的话。

那么GX它就一定只能取小于等于零的值,为什么,因为如果GX1旦取到大于零的值的话,new就可以取到一个正的值,来使得L趋向于正无穷,那这个时候X那就输了对吧,所以X想赢的话,他一定要让L。

他一定要让GX是要小于等于零的,只要它小于等于零,那么mu这个时候呢,就一定不可能让它变成正无穷对吧,因为密我限制只能取正的值,只能取大于等于零的值对吧,所以如果啊如果X让GX小于零了。

那这个时候缪的最优解只能是取mu等于零,让它乘起来等于零,而它不能通过让缪取一个负的值,来整个来让整个函数变成正无穷,所以说只要我限制了缪大于等于零的这个条件,让他参与博弈的话。

那么之后这个博弈的平衡点就是,这个X满足HX等于零的限制,同时以及GX小于等于零的限制,满足这两个限制的基础上,然后再让FX取到最小化,所以说如果有不等式约束的存在的时候呢。

那么这个啊0max问题的形式,也会对应改成下面这样一个形式,那同时那么同样的,就是我们有了这样一个in max问题的形式之后呢,我们也可以导出对应的这个最优化条件,称之为KKT条件。

然后也可以找它它对应的这个对偶问题,然后找到它对应的对偶对偶优化算法,那么这个地方由于我们这个今天的时间限制,我们这里就不展开了,所以回顾一下今天呃和大家一起看的这些方法。

我们其实主要关注的就是两类问题,第一类是无约束的优化问题,第二类是带等式约束的优化问题,对于无约束优化问题而言,我们可以选择使用这个梯度下降法,牛顿法,拟牛顿法来进行优化,其中梯度下降算法。

梯度下降法只使用了优化问题的这个一阶信息,牛顿法使用了优化问题的二阶信息,那么相对来说牛顿法它的收敛效率是要更高的,但是牛顿法它的问题就在于,在迭代的每一步,我需要去通过求解一个矩阵方程。

来获得它的这个下降方向,那么这一步相对来说是比较耗时的,那么拟牛顿法解决解决这个问题的方法,就是我用一个更简单的函数,更简真的矩阵去近似牛顿法里面的H称矩阵,让它更方便的可以解呃。

求出它的这个逆矩阵出来,那么常见的方法,就比如说像这个BFGS和LBFGS方法,这是针对无约束的优化问题,那么针对于带等式约束的优化问题呢,我们首先介绍这个拉格朗日函数与对偶的概念。

告这个讨论了说在什么情况下,这个函数可以这个等式约束优化问题,可以取到最优,那么如果我去直接求解这样一个自由条件的话,使用的方法我们可以使用这个牛顿法,它依然是一个二阶方法,但是他的问题在于说。

使用牛顿法去解决这样一个呃,一个最优条件的时候呢,那写出来的方程是一个无定的方程,那么求解的时候可能需要注意一下,使用合理的求解器,那么同时呢,我们还使用了来提出了这个对偶上升法。

去解决这个带等数学数据优化问题,他的想法是说,把这个等式约束的问题,转换成一个对应的对偶问题,这个对偶问题是一个无约束的优化问题,我就可以分别迭代的去更新S和对应的啊,拉格朗日乘子拉姆达。

然后让他收敛到最终的这个平衡解,所以这个就是我们今天啊给大家介绍的,这两类问题的分别对应的最简单的求解方法,当然我们今天没涉及到的东西有非常多对吧,比如说对5月数优化问题而言,如果我们的函数是不可导的。

怎么办,然后或者是我的这个空间就是离散的,我们是一个组合优化的问题,该怎么办,然后以及像这个等式约束,如果变成不等式约束怎么办等等等等,各种各样的问题不包含,像比如说我们的问题。

如果是非凸的问题该怎么办,这些问题我们今天都没有涉及,所以今天今天的介绍呢,只能是一个简单的一个入门介绍,那我觉得这今天介绍这几种算法,也恰恰是我们应用中,就是碰到问题中用的最广泛的方法对吧。

如果大家涉及到更那更难的问题,或者需要更快的优化算法的时候呢,大家就可以再进一步深入的去学习,这个优化相关的知识,你这是一个一般来说,优化都是一个一个一学期的课程,就是内容分量量非常大的。

所以大家如果对这块感兴趣的话,可以自己再深入学习对吧,我们今天进行一个非常基础的入门的介绍,OK那今天我的分享就在这就到这里了,大家看有什么问题吗,传说哎这个这,OK我们这个直播都是有回放的。

所以就是大家可以觉得今天可能讲的比较讲,一是就是讲的内容比较多,二是讲的比较快,所以大家如果有具体没太搞清楚的地方,可以再去看看这个回放,OK如果没有问题的话,那我今天就下播了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值