ORers‘ Bling Chat | 【高光聊天记录集锦-03】:运小筹读者群里那些热烈的讨论

注:为方便理解问题,整理过程中有筛选合并等,敬请谅解。

1. 关于Dijkstra算法和A*算法的讨论

Discussant(按发言先后)

  1. A同学:某校研究生
  2. W同学:运小筹主编
  3. L博士:运筹优化方向博士生
  4. C同学:某校研究生
  • A同学:请问大家,Dijkstra算法和A*算法是全局最优的算法吗?还是说只是一种贪心算法?
  • W同学:迪杰斯特拉是最优的,A星应该不能保证最优性。
  • L博士:Dijkstra是能保证最优性的,他是一种动态规划算法,得到的解是最优解。A*算法更多是一种启发式算法,贪心算法这个额涉及到问题的本质,他跟启发式算法的概念有点类似。很多算法,如果符合贪心的原则,也可以叫贪心算法。所以一些算法,可以同时有好几个马甲。比如Dijkstra,为了纪念科学家本人,叫Dijkstra算法,但是从算法思想上看,他是一种动态规划算法,从迭代过程中的更新规则来看,他又是一种贪心的。
  • A同学:看到一种说法“Dijkstra算法的实质是广度优先搜索,是一种发散式的搜索,所以空间复杂度和时间复杂度都比较高。对路径上的当前点,A*算法不但记录其到源点的代价,还计算当前点到目标点的期望代价,是一种启发式算法,也可以认为是一种深度优先的算法。”这种是否正确呢?
  • L博士:我觉得,部分正确。Dijkstra确实相当于广度搜索,时间和空间复杂度,其实也不是很高的,因为它能保证最优性。但是确实,对于特殊的graph结构,可以有比DIjkstra更高效的加速算法,也可以保证最优。A*算法,只是一种基于动态规划的启发式,认为是深度优先,这个人的意思我知道,但是这个不能这么说,只是对未来价值做了个评估,这个看做是一种bounding更合适,而不是深度优先。这个过程略微有一点点pulse的影子,但是又有很大区别。
  • A同学:您是指特殊问题特殊定制吗?
  • L博士: 当然呀。比如栅格网络,就会有比较高效的定制加速。这个就自己去了解吧~
  • A同学:这么说来,贪心和动态规划在概念上的确也有很多重叠的部分,都是通过每一步来找最优解,只不过贪心不能保证最优子结构。
  • L博士:对的,有一些思想有重合。要不然强化学习里面怎么有 epsilon-greedy呢。
  • A同学:所以说Dijkstra和A* 都是基于动态规划的思想吗?而A*是一种基于动态规划的启发式,不能保证全局最优。
  • L博士:Dijkstra就是动态规划,A*是基于动态规划思想的一种启发式,只不过他们都是独自搞出来的研究。
  • A同学:贪心算法需要满足无后效性吗?启发式指的应该是A*算法中的估价函数?
  • L博士:贪心算法本来就是不能保证最优性的,他的最优性与否,都是看运气的。有些问题,greedy下同时也可以保证最优。大部分问题,greedy就不能保证最优。另外,无后效性,跟你greedy不greedy没有关系。greedy的规则适用于任何场景任何问题,只要你用的是greedy的思想,你都可以说你是greedy算法,不用满足无后效性。
  • C同学:广度优先。
  • L博士:嗯嗯,基本是和dijkstra类似的,不是深度优先,而是广度优先。评估只是为了下一步迭代做准备,其实可以视为一种bounding。但是那个人认为这种评估的bounding是深度优先,这就有点不对了。
  • A同学:bounding指的是边界吗,为什么说是一种“评估的bounding”,这点不太理解
  • L博士:就是分支定界里的定界,类似于这个意思,但是不是准确的定界哈。A*算法和强化学习的TD-learning很像,以及他的评估就是类似于贝尔曼方程的,通过当前节点的+以后的价值来评估出这么走的总价值,跟强化学习里面的有些像,所以就是基于动态规划的启发式,因为最优值函数,他得不到准确表达式,他只能去估计这个,所以也可以看做是一种近似动态规划,也可以看做是一种bounding。因为你可以把这个评估当做是到达目的地点的upper/lower bound的评估。
  • A同学:DFS也可以最优解吗?
  • C同学:肯定的啊,这是全局搜索啊。深度优先搜索。
  • L博士:DFS和BFS都是全空间搜索,可以保证最优的。相当于隐枚举了。
  • A同学:晓得了,想岔了,忘了dfs和bfs都是枚举的了。这么说来,近似动态规划也算是启发式范畴了。
  • L博士:当然呀,所以强化学习本身就是一种更高级的启发式。只不过很多时候比传统的进化算法表现好一些,理论性稍微好一些,因为沾了个近似动态规划的边儿。但是,传统启发式目前的还是有优势的,落地能力更强,泛化性更强,稳定性更强
  • A同学:之前的想法是,贪心算法只关心每一步的局部最优,只看当前怎么走的,不管之后怎么走,所以该阶段之后的决策和状态发展不受该阶段之前的各状态的影响,因此问出来那个问题,觉得贪心算法也算是一种无后效性。
  • L博士:他是把后效性给忽略了,并不是【满足无后效性】,客观存在与否是一回事儿,你考不考虑是另一回事儿。
  • A同学:这么一说我好像懂了,无后效性是有一套理论体系的,贪心算法是压根不考虑这个,只顾自己当前最优。
  • L博士:所以你只能说,greedy是不管你满足还是不满足无后效性,他都把无后效性给忽略了。因为确实理论性欠缺点儿,而且你也给不了gap,你也说不出你为啥那么设计网络。比如,就算是DeepMind他们的nature论文的网路,他也不能给出很理论的解释,为啥我的hidden layer是6层或者10层,为啥第一层是100个神经元,第二层是128个。
  • A同学:感觉RL,DL本质上也可以说是一种启发式算法。
  • L博士:对的,就是更高级更智能的启发式算法。

2. 关于神经网络的讨论

Discussant(按发言先后)

  1. D同学:某校研究生
  2. L博士:运筹优化方向博士生
  3. A同学:某校研究生
  4. S同学:某校研究生
  5. Y同学:某校研究生
  6. J同学:某校研究生
  • D同学:神经网络看成非凸问题,有没有一个数学模型啊?我只看到损失函数是非凸。
  • L博士:神经网络就是近似一个函数,这是无约束的情况哈:
    min ⁡ f ( g ( Net  − target  ) s . t . w , b ,  free \begin{aligned} \min \quad &f(g(\text{Net }- \text{target }) \\ s.t. \quad &w, b, \text{ free} \end{aligned} mins.t.f(g(Net target )w,b, free
    更具体一些:
    min ⁡ f ( g ( input , θ ) − target  ) s . t . θ  free \begin{aligned} \min \quad &f( g(\text{input}, \theta) - \text{target }) \\ s.t. \quad &\theta \text{ free} \end{aligned} mins.t.f(g(input,θ)target )θ free
    其中 g ( input , θ ) g(\text{input}, \theta) g(input,θ)就是神经网络要近似的函数。input是输入, theta是神经网络要优化的参数。
  • A同学 θ \theta θ是权重?
  • L博士 θ = ( w , b ) \theta = (w, b) θ=(w,b)。说白了,不考虑约束的情况下,神经网络就是个无约束的极值问题,也就是无约束优化问题。
  • A同学 H = w x + b H=wx+b H=wx+b。虽然说是无约束的极值问题,但是这个函数的参数选取实在是太“启发式”了。
  • L博士:如果是用RL求解我们组合优化问题就是:
    min ⁡ f ( g ( input , θ ) − target ) s . t . θ  free g ( input , θ ) ∈ S \begin{aligned} \min \quad &f( g(\text{input}, \theta) - \text{target} ) \\ s.t.\quad &\theta \text{ free} \\ &g(\text{input}, \theta) \in S \end{aligned} mins.t.f(g(input,θ)target)θ freeg(input,θ)S
    where S is the feasible region of the problem to be solve.
    这就是一个约束优化问题。再写得简单一些,就是:
    min ⁡ loss s . t . θ     free g ( input , θ ) ∈ S \begin{aligned} \min\quad &\text{loss} \\ s.t. \quad &\theta \,\,\,\text{free} \\ &g(\text{input}, \theta) \in S \end{aligned} mins.t.lossθfreeg(input,θ)S
    本质就是这么回事儿,这个loss的设置在RL求解组合优化的时候,是个值得探讨的问题。
  • A同学:考虑约束的话,是不是只能把约束项变成惩罚因子加入目标函数中?
  • S同学:benders lagrangian都是可以把约束放到目标函数里面去的。我看的运筹学的书就是介绍的lagrangian,在无约束极值那个地方。思路的话 看成惩罚因子 我个人感觉是可以这么理解的不知道对不对哈。
  • Y同学:粒子群算法也是用罚函数加惩罚想吗?直接加一堆约束对粒子群比较困难?
  • L博士:benders是分解,拉格朗日松弛。这两思路完全不一样的
  • J同学:把coupling constraints松弛了就叫做Langrangian decomposition,所以拉格朗日松弛也可以做分解。
  • L博士:嗯嗯对的,我们目前的一个论文也是这么做的。松弛上去,剩下的部分就是多个子问题了,但是这个不是benders 分解。

3. 关于tight formulation的讨论

Discussant(按发言先后)

  1. D同学:某校研究生
  2. Z同学:某校研究生
  3. L博士:运筹优化方向博士生
  • D同学:什么样的formulation 可以被称作是一个tight formulation呢?或者说,怎样搞出一个比现有更tight的formulation?
  • Z同学:松弛的不要太狠,可行域多切掉点没用的,减少冗余的变量约束
  • L博士:一般来量,就是LP relaxation的解和整数解之间的Gap比较小,这就叫tight。tight的程度,从几何意义上来讲,就是LP relaxation的可行域与MIP的可行解围成的凸包的差距。二者差距越小,说明模型越紧。最紧的情况,就是你的LP relaxation的可行域与MIP的解围城的凸包完全相同。这是最tight的模型。但是一般达不到。所以我们的目标,就是要用更好的模型去逼近凸包。比如,VRPTW的带M的模型,就不是一个很tigh的模型。这个模型的LP relaxation跟MIP的解的凸包,差太远。而 set partitioning formulation就是一个很好的,比较tight的VRPTW的模型。他的松弛解跟整数解的Gap会更紧。
  • D同学:就是不考虑边界的点的话,要找一个更向着凸包移动的约束?
  • L博士:是这个意思。你的模型要是直接得到圈住的可行域,那直接LP松弛的解就是最优整数可行解了。这也就是cutting plane的作用。cutting plane算法其实就是想逼近凸包,把没用的区域给割掉,但是不把最优整数解给割掉。所以呢,能不用M就不用M,并且用,也要紧一些,否则模型就很松。
  • Z同学:其实就是max就好了,不能是真的M,会有数值问题的(不只是模型松不松的问题)
  • L博士:你想想,你LP松弛很松,branch and cut/bound/price的时候,下界跟新忒慢,效率就很低的。
  • D同学:M要是大,Gap会给的异常的高。
  • Z同学:另外,设计好的有效不等式、去除模型对称性、通过目标配合来调整松弛力度等,都是很不错的方式。有时候会,但是gap高低受到很多因素影响,M不是主要因素。M是影响效率的主要因素。
  • L博士:M太大的话,你那个约束松弛了就相当于没有了,也就是说,你的松弛模型,相当于把所有带M的约束全去掉了,这样一般来讲gap肯定大呀。你用10个约束得到的LP和你用3个约束得到的LP的解,那差别一般都很大。M越紧一些,会使得松弛了以后,这个约束还能多多少少起到一定点约束的作用。M太大,那就完全是 remove掉了。
  • Z同学:我觉得看具体问题,我解过一些非凸二次的问题,他就主要是效率差好多,精度差不多的。
  • L博士:更紧的有效不等式,是在基本约束的情形下,更加的使得你的LP松弛逼近凸包,也就是踢掉无用的区域。
  • Z同学:M一般也不会大到那种程度的,再说求解器不会完全忽略约束,只是在有些节点上约束失效,有些节点起效啦。
  • L博士:非凸的就是另一回事儿了,非凸都没有凸包了,确实可能影响就不是很大了。
  • Z同学:影响不大的,我实际试验过。
  • D同学:所以被迫用大M,也就要尽量生成约束或者找到有效不等式。
  • L博士:文献中用branch and cut的时候,一般都会说选取合适的M的。因为branch and cut的时候,下解更新很重要,M取的好会稍微好一些。
  • Z同学:如果你说是纯MILP的话,那可能会影响一些精度的,但不会让GAP差到离谱。
  • L博士:但是具体确实影响没那么大。
  • Z同学:对呀那肯定,一般都是max嘛。
  • L博士:但是branch and price的时候就跟M没啥关系了。
  • Z同学:谁真正取到爆表的精度,那样你会发现,解不稳定而且还慢hhh。不只是啊,你就小点就成了,这和问题分解以及有效不等式没有必然联系。
  • L博士:你这个理解怎么总感觉有点怪怪的,你是究竟想要得到什么样的理解?
  • Z同学:嗯嗯是的,我同意,那时候主要影响因素肯定不再M上。我觉得他是想要加速。
  • L博士:感觉你就是通过我的表述,找到一种你现在就能操作的方法,然后问问我是不是这么干,这么干行不行。
  • Z同学:试试就行了呀,道理大家都说清楚了嘛。
  • D同学:没有没有,就是确定一下是不是对的。
  • L博士:一般呢,就是尽量少引入M;找有效不等式;合适的设计决策变量,尽量变得不是那么稀疏;约束也要尽量紧。说白了,终极目标,就是使得你的LP松弛和MIP的解更接近。
    为此,接近的方法:
  1. 把无效可行域割掉 – 有效不等式;
  2. 把无效解空间割掉 – 合适的设计决策变量,别弄很多无用的,把解空间搞的很大;
  3. 把共线的约束也给删掉 – 一些约束之间存在替代关系等。

从理论上出发,回到实际,来想这个模型如何紧凑。另外,最高级的方法,就是想办法构造更好的解空间,也就是寻找更好的解的表示 > representation,这个其实是最高级的方法。比如3 indexed VRPTW的模型和 set partitioning formulation就是两种完全不同的解的表示。

4. 关于融合模型及其子模型的讨论

Discussant(按发言先后)

  1. H同学:某校研究生
  2. L博士:运筹优化方向博士生
  3. Z同学:某校研究生
  • H同学:打比赛的时候发现一个尴尬的现象,融合模型的效果一直比最好的子模型(子模型已经是集成学习模型或者一个DL算法在不同fold上训练得到的不同模型的平均了)差或者差不多,很难弱弱变强,或者强弱搭配变更强。
    融合的方法:固定系数的加权平均、pca.transform (n_components=1)、某些主流的stacking包、voting。
  • L博士:随机森林啥的,不都是弱分类器vote变成强分类器了嘛。
  • H同学:是呀,俺发现集成再集成,就是那种搭积木,达到一定程度上不去了。比如一个LGB和(10个DNN的集成)和(5个RNN的集成)混合,结果一直被(10个DNN的集成)dominate,或者比(10个DNN的集成)更差。
  • Z同学:很正常啊,这里原因很多,很可能特征不好,而且模型多了会丧失鲁棒性。
  • H同学:再比如LGB、XGB、随机森林、极端随机树等等一起混合,进行voting,结果一直被LGB dominate或者比LGB更差。如果对他们进行stacking,那就可能更乱套了。
  • Z同学:不能随便组合的,量化里永远是大道至简。你要深入一个模型里改特征改目标,不是靠暴力堆叠。
  • H同学:嗯呐嗯呐!主要是现在打比赛,堆叠的话可以快速利用训练好的模型。不过学长说的有道理,俺好好平衡。
  • Z同学:我之前做过一个预测HS300交易量的高频比赛,你猜得第一的用了啥方案。
  • H同学:啊估计是最简单的方案。这次九坤比赛排在前面的也可能是清一色的keras DNN。LSTM、transformer、attention没了踪影一样。LGB也被DNN吊打。
  • L博士:DNN – Deep Neural Network?没想到还是Deep最管用嘛。很多网络都是有Motivation的,比如RNN,Dueling Network,LSTM等,但是具体层数,还是炼丹,有些网络还是有一些理论支撑的。所以说好好推公式,推出一个新的公式,一个新的近似,也许可以基于这个公式搞出新的网络结构。比如目前很多网络喜欢用无偏估计量来近似。无偏估计不一定是最好的呀,还可以更好。
  • Z同学:回归哈哈哈哈。然后用拉格朗日修了一下,就第一了。虽然有点胜之不武,但是也的确很发人深省,时间序列属性下,这些就是经典的招数呀~ 这是搞AI人的套路哈哈哈。摆平就是水平 ,管他哪个流派。

5. 关于文章投稿的讨论

Discussant(按发言先后)

  1. M同学:某校研究生
  2. L博士:运筹优化方向博士生
  • M同学:问各位大佬一个问题,投稿系统editorial manager最后生成的pdf文件,和审稿人看到的版本一致吗?里面有个cover letter,感觉有点奇怪。

  • L博士:一样的,一般都是带行号的那个版本。cover letter有啥奇怪的,这是正常呀。
    投论文的时候,除了要填写基本信息,author的信息,联系方式和单位,以及funding信息之外,还需要你提交你的源文件+PDF,最后还有一个cover letter,其实就是为了给主编快速了解你的论文是干什么的,相当于你论文的介绍信。以及,后面每一轮的修改,不仅要加上你修改的response letter,还是依旧需要你的cover letter,介绍你大概是怎么回复审稿人意见的。这些都是投稿的一些经验,多投几次就熟悉了。

  • M同学:嗯嗯,谢谢师兄介绍。经历的太少了。

  • L博士:可能第一次投的时候,你老师并没有告诉你这些东西,也没有其他人跟你说过,所以你可能很懵。

  • M同学:是的是的。

  • L博士:投稿之前,如果是你自己投,首先需要注册一个账号,之后呢,按照提交要求填写相关信息。此时一定注意funding的事儿,要提前问好老师的。其次,就是注意cover letter也要提前写好。有些期刊,还需要你提交一些图的数据啥的,比如nature这样的就是的。你的每一幅图,以及你的图的原始数据,你都得分文件夹提交的,但是一般OR的期刊不要求。跟你稍微分享一下,哈哈,希望对你有帮助~

  • M同学:嗯嗯,师兄太细心了!

  • L博士:这些事儿本该课题组内都给介绍的,不应该你都开始投论文了才知道这事儿。

  • 图文整理:徐昶悦,同济大学,博士在读
  • 审校:刘兴禄,清华大学,博士在读
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值