利用概率学实现组合优化层,新研究构建Julia开源包InferOpt.jl

简介: 利用概率学实现组合优化层,新研究构建Julia开源包InferOpt.jl

从概率学的角度实现 CO 层,有助于构建近似微分和结构化损失函数。

机器学习 (ML) 和组合优化 (CO) 是现代工业流程的两个重要组成部分。ML 方法能从嘈杂的数据中提取有意义的信息,而 CO 可以在高维受限环境中做出决策。在许多情况下,我们希望将这两种工具结合使用,例如从数据中生成预测,然后使用这些预测做出优化决策。因此,混合 ML-CO pipeline 成为一个新兴的研究方向。


然而这里存在两个问题。首先,CO 问题的解通常表现为其目标参数的分段常函数,而 ML pipeline 通常使用随机梯度下降进行训练,因此斜率是非常关键的。其次,标准的 ML 损失在组合环境中效果不佳。

此外,组合优化层(CO 层)往往缺乏良好的实现。近日一项新研究从概率学的角度提出了实现 CO 层的方法,有助于近似微分和结构化损失的构建。


论文地址:https://arxiv.org/abs/2207.13513

基于这种思路,该研究提出了一个开源的 Julia 包——InferOpt.jl,它的功能包括:

  • 允许将任何具有线性目标函数的 CO oracle 转换为可微层;
  • 定义损失函数来训练包含可微层的 pipeline。



InferOpt.jl 开源包地址:https://github.com/axelparmentier/inferopt.jl

InferOpt.jl 适用于任意优化算法,并且与 Julia 的 ML 生态系统完全兼容。研究团队使用视频游戏的地图寻路问题来展示它的能力。

推理问题的关键是预测给定输入的输出,这需要了解每个 ML 层的参数。而学习问题旨在找到在推理过程中导致「良好」输出的参数。如下等式 (1) 所示,现有的「CO oracle」代表可以解决优化问题的算法,包括基于求解器和手工的算法。


而层的定义是指我们可以使用自动微分 (AD) 计算有意义的导数,但现有 CO oracle 很少与 AD 兼容,并且导数几乎处处为零,没有可利用的斜率信息。

因此,此前 CO oracle 还不是层,该研究的重点就是利用概率学的知识将其变成一个层。现代 ML 库提供了丰富的基本构建块,允许用户组装和训练复杂的 pipeline。该研究试图利用这些库来创建混合 ML-CO pipeline,并主要解决了两个问题:

  • 将 CO oracle 转换为可用层;
  • 找到合适的 ML 损失函数,避免忽略潜在的优化问题。


感兴趣的读者可以阅读论文原文,了解更多研究细节。

相关文章
|
NoSQL 安全 Linux
Linux 中 core dump 文件的作用和使用方法
Linux 中 core dump 文件的作用和使用方法
2168 1
|
机器学习/深度学习 算法 搜索推荐
14 机器学习 - CF协同过滤推荐算法原理
14 机器学习 - CF协同过滤推荐算法原理
447 0
|
数据格式 JSON 存储
Lua模块的加载与内存释放
今天早上听说一件事情让我觉得很诡异的事情:公司线上的一款游戏,加载一份配置资源后,内存涨了几十M,然后内存再也下不来了。因为好奇,所以要来了最大的一个配置文件(4.5M,去除空格与换行后的大小),进行测试。
2274 0
|
开发工具 Android开发 git
解决Android AAPT: error: resource android:attr/lStar not found. 问题
解决Android AAPT: error: resource android:attr/lStar not found. 问题
1014 0
|
5月前
|
机器学习/深度学习 存储 算法
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
本文系统讲解从基本强化学习方法到高级技术(如PPO、A3C、PlaNet等)的实现原理与编码过程,旨在通过理论结合代码的方式,构建对强化学习算法的全面理解。
578 10
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
|
11月前
|
NoSQL C语言 索引
十二个C语言新手编程时常犯的错误及解决方式
C语言初学者常遇错误包括语法错误、未初始化变量、数组越界、指针错误、函数声明与定义不匹配、忘记包含头文件、格式化字符串错误、忘记返回值、内存泄漏、逻辑错误、字符串未正确终止及递归无退出条件。解决方法涉及仔细检查代码、初始化变量、确保索引有效、正确使用指针与格式化字符串、包含必要头文件、使用调试工具跟踪逻辑、避免内存泄漏及确保递归有基准情况。利用调试器、编写注释及查阅资料也有助于提高编程效率。避免这些错误可使代码更稳定、高效。
1515 12
|
机器学习/深度学习 人工智能 算法
【机器学习】模型、算法与数据—机器学习三要素
【机器学习】模型、算法与数据—机器学习三要素
1026 0
|
存储 人工智能 文字识别
AI开发初体验:昇腾加持,OrangePi AIpro 开发板
本文分享了作者使用OrangePi AIpro开发板的初体验,详细介绍了开箱、硬件连接、AI程序开发环境搭建、以及通过Jupyter Lab运行AI程序的过程,并展示了文字识别、图像分类和卡通化等AI应用实例,表达了AI时代已经到来的观点。
1581 1
|
存储 达摩院 Cloud Native
基于Ganos轨迹引擎的运输车辆到达性分析
本文介绍了由阿里巴巴达摩院数据库与存储实验室研发的多模态时空数据库Ganos轨迹引擎在运输车辆位置分析中的应用场景。Ganos通过在数据库中原生内置移动对象的存储、检索与分析能力,打造了全球首个移动对象数据库,为交通、物流、出行、生活服务类客户提供海量轨迹数据的分析挖掘能力。通过阅读本文,用户可以更好的理解Ganos轨迹模型的存储结构与轨迹引擎的相关能力,助力业务开发走向便捷。