https://www.toutiao.com/a6677162862743388686/

将算法设计为自动化,可以为解决困难的COP问题可以节省大量的金钱和时间,也许可以产生比人类设计的方法更好的解决方案,正如我们在AlphaGo的成就中看到的那样,这些成就击败了数千年的人类经验

为什么优化很重要?

从数百万年前的人类开始,每一项技术创新和每一项改善我们生活的发明以及我们在地球上生存和繁荣的能力,都是由聪明人的狡猾思想设计出来的。从火到车轮,从电力到量子力学,我们对世界的理解和我们周围事物的复杂性已经增加到我们经常难以直观地掌握它们的程度。

如今,飞机,汽车,船舶,卫星,复杂结构等许多其他设施的设计者在很大程度上依赖于算法使其具有更好的能力,通常是人类根本无法实现的微妙方式。除了设计之外,优化在日常事务中起着至关重要的作用,例如网络路由(互联网和移动),物流,广告,社交网络甚至医学。在未来,随着我们的技术不断改进和复杂化,解决巨大规模的难题的能力可能会有更高的需求,并且需要在优化算法方面取得突破。

组合优化问题

从广义上讲,组合优化问题是涉及从有限的一组对象中找到"最佳"对象的问题。在这种情况下,"最佳"是通过给定的评估函数来测量的,该函数将对象映射到某个分数或成本,目标是找到值得最低成本的对象。

最实际有趣的组合优化问题也非常困难,因为由于问题大小的微小增加,集合中的对象数量增加得非常快,使得穷举搜索变得不切实际。

为了使事情更清楚,我们将专注于一个特定的问题,即着名的旅行商问题(TSP)。在这个问题上我们有N个城市,我们的销售员必须全部访问它们。然而,在城市之间旅行会产生一些费用,我们必须找到一个旅行,在旅行到所有城市并返回起始城市时最大限度地减少总累积成本。例如,下图显示了美国所有州所在城市的最佳旅游:

这个问题自然会出现在许多重要的应用中,例如计划,交付服务,制造,DNA测序和许多其他应用。寻找更好的旅行团队有时会产生严重的财务影响,促使科学界和企业投入大量精力来解决这些问题。

在为K城市建立TSP实例之旅的同时,我们在旅游建设过程的每个阶段都消除了一个城市,直到不再有城市为止。在第一阶段,我们有K个城市可以选择开始巡演,在第二阶段我们有K-1选项,然后是K-2选项等等。我们可以构建的可能的游览数量是我们在每个阶段的选项数量的乘积,因此这个问题的复杂性就像O(K!)。

对于小数字,这似乎并不那么糟糕。假设我们有5个城市问题,可能的旅行次数是5!= 120。但是对于7个城市,它增加到5040,对于10个城市已经是3628800,对于100个城市来说,它是高达9.332622e + 157,这比宇宙中的原子数多出许多个数量级。

在现实世界中出现的TSP的实际实例通常具有数千个城市,并且需要在大量文献中已经开发了数十年的高度复杂的搜索算法和启发式算法,以便在合理的时间内解决(可能是数小时)。

遗憾的是,在现实世界的应用程序中出现的许多COP(组合优化问题)具有独特的细微差别和约束,使我们无法仅使用最先进的解决方案解决TSP等已知问题,并要求我们开发针对该问题的方法和启发式方法。这个过程可能是漫长而艰巨的,并且可能需要领域专家的工作来检测特定问题的组合搜索空间中的某些结构。

由于近年来深度学习在许多领域取得了巨大成功,让机器学会如何自己解决问题的可能性听起来非常有希望。将算法设计为自动化,可以为解决困难的COP问题可以节省大量的金钱和时间,也许可以产生比人类设计的方法更好的解决方案,正如我们在AlphaGo的成就中看到的那样,这些成就击败了数千年的人类经验。

学习图形表示

在这个问题的一个早期尝试,是在2016年的一篇论文《学习基于图的组合优化算法》,作者训练了一种图形神经网络,称为structure2vec,以贪婪地构建几个硬COP的解决方案,并获得非常好的近似比率(生产成本与最优成本之间的比率) 。

基本思想是这样的:问题的状态可以表示为图形,神经网络构建解决方案。在解决方案构建过程的每次迭代中,我们的网络观察当前图形,并选择要添加到解决方案的节点,之后根据该选择更新图形,并且重复该过程直到获得完整的解决方案。

作者使用DQN算法训练他们的神经网络,并证明了学习模型能够推广到比训练更大的问题实例。他们的模型甚至可以很好地推广到1200个节点的实例,同时在大约100个节点的实例上进行训练,并且可以在12秒内生成解决方案,这些解决方案有时比商业解算器在1小时内找到的更好。他们的方法的一大缺点是他们使用"辅助"功能,以帮助神经网络找到更好的解决方案。这个辅助函数是人为设计的,并且特定于问题,这是我们想要避免的。

使用基于图形的状态表示非常有意义,因为许多COP可以通过这种方式非常自然地表达,如TSP图的示例中所示:

节点代表城市,边缘包含城市间距离。可以在没有边缘属性的情况下构建非常相似的图形(如果由于某种原因我们不假设距离的知识)。近年来,在图形上运行的神经网络模型的普及程度令人惊讶地增加,最显著的是在自然语言处理领域,Transformer风格模型已成为许多现状任务。

有许多优秀的文章详细解释了Transformer体系结构,因此我不会深入研究它,而是给出一个非常简短的概述。谷歌研究人员在一篇名为《Attention Is All You Need》的著名论文中引入了变换器(transformer)架构,并用于解决NLP中出现的序列问题。不同之处在于,与LSTM等递归神经网络不同,后者明确地输入一系列输入向量,变换器作为一组对象被输入,并且必须采取特殊手段来帮助它看到"序列"。变换器使用多个层,这些层由多头自注意子层和完全连接的子层组成。

与图形的关系在注意层中变得明显,注意层实际上是输入"节点"之间的一种消息传递机制。每个节点都观察其他节点并参与那些看起来更"有意义"的节点。这与中发生的过程非常相似,事实上,如果我们使用掩码来阻止节点将消息传递给不相邻的节点,我们将获得一个等效的过程。

学会解决没有人类知识的问题

在他们的论文《注意力机制学习解决路由问题》,作者解决了几个涉及在图表由代理的组合优化问题,包括我们现在熟悉的旅行商问题。他们将输入视为图形并将其提供给嵌入图形节点的修改后的Transformer体系结构,然后依次选择要添加到巡视的节点,直到构建完整的巡视。将输入作为图形处理是比给它一系列节点更"正确"的方法,因为它消除了对输入中给出城市的顺序的依赖性,只要它们的坐标不变。这意味着无论我们如何对城市进行置换,给定图形神经网络的输出都将保持不变,这与序列方法不同。

在本文提出的体系结构中,图形由变换器样式编码器嵌入,该编码器为所有节点生成嵌入,并为整个图形生成单个嵌入向量。

为了产生解决方案,单独的解码器网络每次赋予特殊上下文向量,即由图嵌入和那些最后和第一城市,和未访问城市的嵌入的,并且它在未访问的输出概率分布城市,其被抽样以产生下一个要访问的城市。

解码器顺序产生城市直到游览完成,然后根据游览的长度给出奖励。

作者使用称为REINFORCE的强化学习算法训练他们的模型,该算法是基于策略梯度的算法。其版本的伪代码可以在这里看到:

他们使用转出网络确定性地评估实例的难度,并使用策略网络的参数定期更新转出网络。使用这种方法,作者在几个问题上取得了优异的成果,超越了我在前面几节中提到的其他方法。但是,他们仍然在小型实例上训练和评估他们的方法,最多有100个节点。虽然这些结果很有希望,但与现实世界相比,这种情况微不足道。

扩展到非常大的问题

最近《通过深度强化学习进行大图的启发式学习》(《Learning Heuristics Over Large Graphs Via Deep Reinforcement Learning》一文,朝着真实世界大小的问题迈出了重要的一步。在本文中,作者训练了一个图形卷积网络来解决大型问题,如最小顶点覆盖(MVC)和最大覆盖问题(MCP)。他们使用流行的贪婪算法来训练神经网络嵌入图形并预测下一个节点在每个阶段进行选择,然后使用DQN算法进一步训练它。

他们在具有数百万个节点的图表上评估了他们的方法,并且获得了比当前标准算法更好和更快的结果。虽然他们确实利用手工的启发式方法来帮助训练他们的模型,但未来的工作可能会消除这种限制。

总的来说,我认为在大量搜索空间问题中寻找结构的探索是强化学习的一个重要而实用的研究方向。强化学习的许多批评者声称,到目前为止,它只用于解决游戏和简单的控制问题,并且将其转移到现实世界的问题仍然很遥远。虽然这些说法可能是正确的,但我认为我在本文中概述的方法代表了非常真实的用途,可以在近期内为强化学习的应用带来好处。

强化学习应用于组合优化问题相关推荐

  1. 《强化学习周刊》第12期:强化学习应用之组合优化

    No.12 智源社区 强化学习组 强 化 学  习 研究 观点 资源 活动 关于周刊 强化学习作为人工智能领域研究热点之一,它在组合优化领域中的应用研究进展与成果也引发了众多关注.为帮助研究与工程人员 ...

  2. 强化学习应用于组合优化问题_如何将强化学习应用于现实生活中的计划问题

    强化学习应用于组合优化问题 by Sterling Osborne, PhD Researcher 作者:斯特林·奥斯本(Sterling Osborne),博士研究员 如何将强化学习应用于现实生活中 ...

  3. 针对安全探索的受限强化学习:原始对偶优化算法

    ©作者 | 周宣含 学校 | 国防科技大学 研究方向 | 深度强化学习 在强化学习中,智能体通过在未知环境中探索与试错来学习如何决策.大多数 RL 算法允许智能体自由地探索环境,并采取任意能够提升奖励 ...

  4. CMAB 强化学习中的组合多臂老虎机问题(二)

  5. 基于深度强化学习的组合优化方法在工业应用中的实践

    <统筹方法平话>中有一个例子曾被收录到语文课本中,讲"烧水泡茶"有五道工序:1.烧开水,2.洗茶壶,3.洗茶杯,4.拿茶叶,5.泡茶,其中前四道工序是泡茶的前提,且各道 ...

  6. PyTorch图神经网络实践(六)组合优化问题

    最近研究网络中的组合优化问题时,发现已经有研究人员将图神经网络用于求解此类问题,诸如寻找网络中的最大点独立集.最小点覆盖集.最大团等等,并找到了相关的源码,在这里整理一下这些资源,以后详细介绍. Ne ...

  7. 强化学习在资源优化领域的应用

    点击上方蓝字关注我们 强化学习在资源优化领域的应用 王金予, 魏欣然, 石文磊, 张佳 微软亚洲研究院,北京 100080 摘要:资源优化问题广泛存在于社会.经济的运转中,积累了海量的数据,给强化学习 ...

  8. 【AutoML】强化学习如何用于自动模型设计(NAS)与优化?

    大家好,欢迎来到专栏<AutoML>,在这个专栏中我们会讲述AutoML技术在深度学习中的应用,这一期讲述强化学习用于模型设计和优化的核心技术. 作者&编辑 | 言有三 一直以来, ...

  9. OnRL: 基于在线强化学习的移动视频传输优化

    从2019年开始,淘系技术部内容社交互动团队和北京邮电大学周安福教授一起着手研究更好的基于机器学习的智能拥塞控制算法.在实验室环境完成原型验证后在淘宝直播的生产环境做实际效果对比,从实际数据来看效果明 ...

最新文章

  1. 大二上学数据结构和操作系统_毕业后的工作比上学要重要得多。 这是数据。...
  2. 在java中表示json_在Java中解析JSON而不知道JSON格式
  3. 测试公众号修改名称_微信公众号开通个人认证,只需三步
  4. Java中HashMap遍历的两种方式
  5. WebService客户端开发(Axis2 1.5)
  6. Pytorch:手动求导和autograd的计算对比
  7. [20160831]关于数据块Checksum.txt
  8. yolo系列的head模块
  9. 关于vue项目的seo问题
  10. Java中集合相关案例(泛型通配符、Collections工具类、TreeSet、TreeMap、HashMap、HashSet和集合嵌套案例)
  11. 51Nod 2128 前缀异或 c/c++题解
  12. Cartographer分枝定界算法比喻理解
  13. 四川大数据产业集群明年将基本成型
  14. 通达OA软件试用地址、泛微OA软件试用地址 movno1
  15. 个人收集的资源(1st) Orange'S:一个操作系统的实现及光盘源代码(免费免积分)
  16. 3D渲染数学基础(2)向量
  17. 利用viewPager实现的自动滑动的广告栏
  18. 计算机函数Dmax怎么算,Excel表格技巧—探讨DMAX 函数的用法
  19. 应该怎么管理程序员?
  20. 牛犇linux视频,Linux下grep命令

热门文章

  1. pandas数据转换时遇到不能转换的数据转为NaN的参数设置errors='coerce'
  2. 搭建免费ftp服务,视频演示
  3. 青源LIVE第22期|旷视刘松涛:YOLOX,高性能目标检测的最新实践
  4. TensorFlow高效读取数据的方法
  5. 生成对抗网络学习笔记5----DCGAN(unsupervised representation learning with deep convolutional generative adv)的实现
  6. 一图读懂|《“十四五”大数据产业发展规划》
  7. 报名 | 清华大学大数据能力提升项目报名指南 (2020秋)
  8. 报名 | 最后一次线下免费编程课程开启,全球最大免费编程社区!(附往期学习资源)...
  9. 独家 | 使用机器学习预测房价(附链接)
  10. 数据蒋堂 | Hadoop中理论与工程的错位