当前课程知识点:运筹学 > 6. 图与⽹络分析 > 6.7 指派问题 > 课程学习方法3
好 这个问题解决完之后
我们还会遇到一个实际的问题
这个问题
可以说是
真真正正是困扰我们
实际上很多这个人工智能
或者是刚才提到的
一系列什么
逼近问题里面真真正正的一个问题
那么在这里面
我们要考虑到
这个问题会不会产生过拟合
我们为了保证
不要出现过度拟合的这种
过度训练的问题
也就说我们往往是过度地关心了
在样本上的对应的误差
使得这个推广性差了一点
那这个时候
我们怎么做
注意
这有点艺术性的味道在里面
它实际上
并没有说 真正地
一定说这个就是合理的
我们解决问题的办法
途径就是极小化
这个基函数的个数
这里面为什么要极小化基函数的个数
就是这个问题
它同时有两个目标
第一个目标
我们要让我们这个在所有的
对应的样本上的误差尽可能小
你不能到最后
你拟合一个在样本上测试误差都太大的
那肯定是你连基本的测试样本
这个给你的样本
你都搞不定
你说我可以做其他方面更好的
这根本不太可能
另外一个目标是什么
就尽可能的让我这个函数
尽可能的简单
这个里面的实际上是有点
大家可能听过一个叫奥姆剃刀原理
这个就是翻译成同样跟运筹学
类似的一个话 就是
叫"若非必要勿增实体"
就这么一个意思 什么意思
就是说我们认为简单的就是美的
也就说我们通过控制
这个基函数的数量来保证这个
所以大家以前可能听过一句话
就是我们在这个深度学习高潮
来的之前的时候
我们更多是统计学习里面用的很多理念
就是同时使得
经验风险和结构风险最小化
同时最小化
这是两个相互矛盾的一个目标
把它结合到一块
怎么结合到一块
这个加权的办法就可以
你看在这个问题里面是第一项
大家看这个第一项
这个第一项里面
实际上 跟我们前面看到的
这个是一样的
只不过我们在这里是加了一个σ
这个σi在这里面
就是我们在每一个
基函数的线性组合
前面加的那么一个参数
同时在后面
再加一个对每一个σi
你不有这个对应的m个基吗
这m个基每个对应的这个σi
我再把它求和
然后
加一个w系数把这两个同时给它
通过加权的方式统计到一块去
一起求这个最小值
但是这个σi
这个刚才加进来的
它可不是像θ一样的连续的一个
决策变量了
它只取两个值
要么是0
要么是1
这个好处在哪
可以看到
在这个整个过程中
如果说你不顾及这个对应每一个基函数的数量
你让每个基函数上
前面那个σi
都等于1 那就说让那个基函数尽可能的多
也就意味着它可能尽可能的复杂
那这个时候
那我们每个σi都等于1
那求和就1到m把它求和起来
再乘一个系数w
这后面的一项就非常大
前面这块你再小后面这块也下去
整体的目标函数值就比较大
但是为了保证
尽可能地简单
那你就让这个σi尽可能地等于0
那太简单了吧
那可能使得前面这个误差项又大了
所以最后下来
一定会权衡到一个
最后下来
真真正正来说
就两边同时都达到一个
就是不要说你高
我就低一点
大家一起都尽可能的小
所以这个时候得到一个权衡
这个是我们解决问题的一个基本思路
好 这个思路讲到这儿
可能我们在刚才所涉及到的
在所有的跟人工智能优化问题里面
相关的都是这样的一个事情
本质是
但是这样的一个优化问题
根本没有办法求解
因为它太困难了
你可以看到这里面
如果p取的
又不是这个无穷范数
取的是一般性的范数
那么这整个里面
你很难说
把这个再拆成
像刚才等效成的线性规划的问题了
那么如果是一般性里面
又有连续的
又有离散的变量
这个取0-1变量
这样的混合优化问题
是极其难求解的
所以
如果说这个问题这么好求解
那我们所有人工智能问题
没什么可研究的了对吧
但实际来说
就是因为这么直观地通过建模
这是个直观地把一个问题
从最开始到最后
所有的求解过程都给它求解过来的
整套思路
到这整套思路全套都做完了
但是得到这个问题在理论上有价值
但是实际来说
它实际意义几乎没有
因为这个优化问题你求解不了
它虽然这个建模过程
很直观
也很容易理解
但实际上
它是无效的
那么真正在做的过程中的时候
实际上大家花很大功夫力气要做
我们说这样一个
连续变量和离散变量混合的
一个一般性的优化问题
我通过什么样的办法
而且有约束条件
这不是没有约束条件的
因为σi是取0-1的变量的
而且可能还有其他的一些问题
有更复杂的约束加在里面
这样的问题
加进来之后
我有没有别的办法
通过像刚才
把这个无穷范数转化为
线性规划问题一样的解决问题思路
我们可以把这个问题
转化成更容易求解的
甚至来说
当然更有价值
我从问题本身出发
比如说发现它是个
视觉上的一个优化问题
我怎么样去考虑说
其他的一些特征的选择等等
我把它变得更加容易求解
这才是更有价值的地方
所以
通过这个例子的数学规划模型
我们就可以得到如下一些认识
比如说我把基函数给你了
什么叫基函数给定
就是它是什么形态的
里面参数是多少
我都给他 像高斯核函数
它的对应的核函数的宽度是多少
然后对应的
在什么位置
我都给你了
数量也给你了
那这个时候都可以看到
那么我们刚才已经讲了
它可以把一个问题
变成一个线性规划问题
这种线性规划问题是容易求解的
而且是可以得到全局最优解的
但是往下来
如果只给定
优化的基函数
就是我说它就是一个
由我们所说的待定的一个参数
所构成的一个非线性函数
那么咱们说到了
这个就是个非线性规划问题了
我们后面通过学习可以看到
它是比较难的
通常只能获得一个局部的最优解
当然
为了使得问题更加靠近实际
解决这个过拟合的问题
那它就是一个
也是一个非线性规划
而且是0-1
有这个连续和离散变量 混到一块的
这个基本是非常难的
就基本是不能做了
只能获得一个较好或者满意的解
就是它到底是不是全局最优
甚至局部最优
你都不能保证 只说
你差不多就行了
那是不是这个全局最优就更不要奢望了
所以在整个过程中
我们可以看到在解决实际问题的时候
这种解决问题的思路是可以参考的
这种认知的那个过程
我们可以选择合适的模型
所以通过这个例子
我们可以看到就是我们怎么学
可千万不要说
这算法
我会做了
其实根本不用 大家想想
这个Matlab里面 包括Python里面
这样的所有的那个算法程序都有了
我们不是应付考试就拉倒了
实际上来说
咱们在这个学的过程中的更多的时候
你说光会把这个算法会做了
这个价值不大
更多的时候是
这个已经有的模型到底有什么特点
它会构成你
去解决未知问题的某一种
所谓的基函数对吧
你通过它的组合
可以解决更复杂更困难的问题
然后这个问题的求解思路是怎么来的
这样有利于你们去研发出一个
更新的一个算法
我们这个课
这个组织的过程 是先讲线性规划
然后
我会讲
它的一些的更一般的推广特例
比如说我会讲到这个
对应的整数规划 当然也是
线性整数规划
然后再讲非线性规划
当然包括一些动态规划的问题
然后
我们又回到这个网络流问题
网络流问题你会发现
它实际上来说
它本质都是线性规划问题
但是为什么要在图上去做呢
因为我们有这个线性规划的
一些模型的特点
之后
结合到这个网络上
我们就一些很具体的问题
比如咱们说的最小费用流问题
因为它很特殊
我们还可以进一步挖掘
然后得到更高效的算法
那么得到的算法就会看到它比一般性的
当求解到了后面这个比如说像
运输问题的时候
甚至说这个指派问题的时候
那效率比这个线性规划的单纯形法
还要高出很多很多倍
这才是更有价值的
所以我们这门课更多的时候
不是说大家满足到知识
这点就行了
知识必须有 你没有知识
就像我刚才说的
你基函数都没有
你怎么去构建你的非线性函数
是不可能的
同时
更重要的在知道知识的情况下
一定要知道
这些知识它们之间的关系是什么样子的
然后
所有的这个
知识里面的算法它是怎么来的
这种启发性的方式能让你
后面面对新问题的时候
是有具备创造新算法
开发出新的一些模型
研究出新算法的这种能力的
-作业-绪论
-2.1 ⼀般模型和标准模型
--作业-线性规划模型
-2.2 低维问题图解法及其向⾼维的推⼴
--作业-低维问题的图解法
--2.2.5 凸集
--作业-高维问题及其性质
-2.3 单纯形算法
--作业-单纯形算法1
--作业-单纯形算法2
--作业-单纯形算法3
-2.4 对偶性与对偶算法
--作业-对偶性与对偶算法1
--作业-对偶性与对偶算法2
-2.5 灵敏度分析
-3.1 整数线性规划的数学模型
--整数线性规划概述
--作业-整数规划概述
-3.2 割平⾯法
--作业-割平面法
-3.3 分枝定界法
--作业-分枝定界法
-3.4 0-1变量的作⽤
--作业-0-1变量的作用
-4.1 动态规划基本概念
-4.2 最优性原理
-4.3 建模与求解
-4.4 典型应⽤问题
-4.5 不定期动态规划问题
-作业-动态规划
-5.1 基础知识
--作业-非线性规划基础知识
-5.2 ⼀维搜索
--作业-一维搜索
-5.3 ⽆约束优化
--作业-无约束优化
-5.4 约束优化
--作业-约束优化
-5.5 简约梯度法
--简约梯度法
-5.6 拉格朗⽇对偶
--拉格朗日对偶
-6.1 基础知识
--作业-图与网络基础知识
-6.2 最⼩⽀撑树问题
--作业-最小支撑树问题
-6.3 最短路问题
--作业-最短路问题
-6.4 最⼤流问题
--作业-最大流问题
-6.5 最⼩费⽤流问题
--作业-最小费用流问题
-6.6 运输问题
--作业-运输问题
-6.7 指派问题
--作业-指派问题