How Does API Migration Impact Software Quality and Comprehension? An Empirical Study
不同第三方软件库之间的迁移过程困难、复杂且容易出错。通常,在库迁移过程中,开发人员选择用新库中的其他方法替换已停用库中的方法,而不改变软件行为。然而,这种迁移到新库的过程将在多大程度上得到改进的软件质量仍然是未知的。本文旨在研究和分析库API迁移对软件质量的影响。我们对9个流行的API迁移进行了大规模的实证研究,这些迁移是从57,447个开源Java项目的语料库中收集的。我们计算迁移发生之前和之后常用的软件质量度量的值。所获得的结果的统计分析提供的证据表明,库迁移可能会提高不同的软件质量属性,包括显着降低耦合,增加内聚性,并提高代码的可读性。此外,我们还发布了一个在线门户网站,帮助软件开发人员了解库迁移对软件质量的预先影响,并推荐采用最佳设计和实现实践来提高软件质量的迁移示例。最后,我们为软件工程社区提供了一个大规模的数据集,以促进软件库迁移的研究。
2020-10-02 cs.SE
On the Use of Information Retrieval to Automate the Detection of Third-Party Java Library Migration at the Method Level
不同第三方库之间的迁移过程困难、复杂且容易出错。通常,在库迁移过程中,开发人员需要在新库中找到最适合替换退役库中旧方法的方法。这个过程是主观和耗时的,因为开发人员需要完全理解两个库应用程序编程接口的文档,并找到它们的方法之间的正确匹配(如果存在)。在这种情况下,一些研究依赖于挖掘现有的库迁移,为开发人员提供类似场景的示例方法。在本文中,我们介绍了一种新的挖掘方法,提取现有的实例库方法替换手动执行的开发人员为一个给定的库迁移自动生成迁移模式的方法级别。此后,我们的方法结合了挖掘方法的变化模式与方法相关的词汇相似性,以准确地检测替换/被替换的方法之间的映射。我们进行了一项大规模的实证研究,以57,447个开源Java项目为基准评估我们的方法,导致9个流行的库迁移。我们的定性结果表明,我们的方法显着提高了挖掘方法级映射的准确性,平均准确率为12%,以及增加发现的方法映射的数量,与现有的最先进的研究相比。最后,我们为社区提供了一个开源挖掘工具以及方法级别所有挖掘迁移的数据集。
2019-06-02 cs.SE
MigrationMiner: An Automated Detection Tool of Third-Party Java Library Migration at the Method Level
Rochester Institute of Technology(罗切斯特理工学院);University of Quebec(魁北克大学)
在本文中,我们将介绍MigrationMiner,这是一个自动化工具,可以检测Java第三方库之间执行的代码迁移。给定一个开源项目列表,该工具检测潜在的库迁移代码更改,并收集特定的代码片段,其中开发人员使用新库中的方法替换退役库中的方法。为了支持迁移过程,MigrationMiner收集了与迁移中涉及的每个方法相关联的库文档。我们评估我们的工具上手动验证库迁移的基准。结果表明,MigrationMiner的准确率达到100%。MigrationMiner的演示视频可在https://youtu.be/sAlR1HNetXc上获得。
2019-07-13 cs.CL cs.SE
Do Developers Update Their Library Dependencies? An Empirical Study on the Impact of Security Advisories on Library Migration
第三方库重用已经成为当代软件开发中的常见做法,因为它为开发人员带来了许多好处。库依赖关系不断发展,新添加的功能和补丁可以修复旧版本中的错误。为了充分利用第三方重用,开发人员应该始终保持其库依赖项的最新版本。在本文中,我们调查的程度,开发人员更新他们的库依赖。具体来说,我们对库迁移进行了一项实证研究,涵盖了4,600多个GitHub软件项目和2,700个库依赖项。结果表明,虽然这些系统中的许多严重依赖的依赖,81.5%的研究系统仍然保持其过时的依赖。在更新易受攻击的依赖项的情况下,研究表明,受影响的开发人员不太可能对安全建议做出回应。调查这些开发人员,我们发现69%的受访者声称他们不知道他们的脆弱依赖性。此外,开发人员不太可能优先考虑库更新,认为这是额外的工作和额外的责任。这项研究的结论是,即使第三方重用是司空见惯的,更新依赖项的做法并不常见的许多开发人员。
2017-09-14 cs.SE
Using Copilot Agent Mode to Automate Library Migration: A Quantitative Assessment
Federal University of Minas Gerais(米纳斯吉拉斯联邦大学);Pontificial University of Minas Gerais(米纳斯吉拉斯宗座大学)
本文通过 Copilot Agent 模式评估了 SQLAlchemy 库迁移的自动化效果,发现其在功能迁移上表现良好但应用功能维护不足。
2026-01-08 cs.SE
M3: Semantic API Migrations
图书馆迁移是一个具有挑战性的问题,其中大多数现有的方法依赖于先验知识。例如,这可以是从更新日志或API使用的统计模型中导出的信息。本文讨论了一个不同的API迁移场景,其中没有目标库的先验知识。我们没有历史更新日志,也无法访问其内部表示。为了解决这个问题,本文提出了一种新的方法(M $^3$),概率程序合成是用来语义建模的库函数的行为。然后,我们使用一个基于SMT的代码搜索引擎来发现用户应用程序中的相似代码。这些发现的实例为API迁移提供了潜在的位置。我们评估我们的方法对7个知名的图书馆从不同的应用领域,学习正确的实现94个功能。我们的方法是集成了标准的编译器工具,我们使用这种集成来评估迁移的机会,在9个现有的C/C++应用程序超过1 MLoC。我们发现了这些功能的7,000多个实例,其中2,000多个代表了迁移机会。
2020-08-27 cs.SE
Migrating Client Code without Change Examples
API开发人员开发软件库来修复错误、添加新功能或重构代码。为了从这种库演变中受益,客户端项目的程序员必须重复地升级他们的库使用,并使他们的代码库适应任何库API破坏性变化(例如,API重命名)。这样的自适应变化可能是乏味的并且容易出错。现有的工具在帮助程序员将客户端项目从旧的库版本迁移到新的库版本方面提供了有限的支持。例如,一些工具提取库版本之间的API映射,并且仅建议简单的自适应更改(即,语句更新);其它工具建议或自动化更复杂的编辑(例如,语句插入)。然而,当新的库版本可用时,用户通常需要提供足够的人工构建的示例来指导自动迁移,这既麻烦又耗时。在本文中,我们提出了一种新的方法,AutoUpdate,以进一步提高最先进的。而不是从变化的例子中学习,我们设计的AutoUpdate自动迁移在编译器导向的方式。也就是说,给定由升级库触发的编译错误,AutoUpdate利用13个迁移操作符来生成候选编辑,并暂时应用每个编辑,直到错误得到解决或所有编辑都被探索。我们做了两个实验。第一个实验涉及在5个流行库的版本之间迁移371个教程示例。AutoUpdate减少了92.7%的任务的迁移相关编译错误。它为32.4%的任务消除了此类错误,并且33.9%的任务具有与手动迁移相同的编辑。在第二个实验中,我们应用AutoUpdate迁移了两个真实的Lucene客户端项目。AutoUpdate成功地迁移了…
2021-05-06 cs.SE
IntentTester: Intent-Driven Multi-agent Framework for Cross-Library Test Migration
Zhejiang University(浙江大学);the Hangzhou High-Tech Zone (Binjiang) Institute of Blockchain and Data Security(杭州高新技术区(滨江)区块链与数据安全研究院)
提出IntentTester多智能体框架,通过将测试抽象为语言无关的测试描述语言(TDL),结合知识图谱对齐语义实体,并利用LLM推理与迭代验证生成可执行测试,实现跨库跨语言测试迁移,在9个开源项目上生成2776个测试,正确率85%,有效性74%,并发现多处隐藏缺陷。
2026-06-25 cs.SE
Exploiting Library Vulnerability via Migration Based Automating Test Generation
针对第三方库漏洞影响评估难的问题,提出基于漏洞利用代码的测试生成方法VESTA,通过新增迁移步骤提升测试与漏洞利用的相似性,在30个漏洞、60组漏洞-项目对的实验中,成功率达71.7%,较基线方法TRANSFER提升53.4%。
2023-12-15 cs.SE
Diffploit: Facilitating Cross-Version Exploit Migration for Open Source Library Vulnerabilities
The State Key Laboratory of Blockchain and Data Security, Zhejiang University(浙江大学区块链与数据安全国家重点实验室);Queen’s University(女王大学)
Diffploit是一种迭代的差异驱动漏洞利用迁移方法,通过上下文模块和迁移模块提升跨版本漏洞利用迁移成功率,在大规模Java CVE数据集上表现优于现有工具,还发现了受影响版本范围错误的CVE及未报告的易受攻击版本。
2026-08-13 cs.SE
LibRec: Benchmarking Retrieval-Augmented LLMs for Library Migration Recommendations
School of Computer and Computing Science, Hangzhou City University(杭州城市大学计算机与计算科学学院);Polytechnic Institute, Zhejiang University(浙江大学多技术学院);School of Computer Science, Shanghai Jiao Tong University(上海交通大学计算机科学学院);School of Computer Science and Technology, Harbin Institute of Technology(哈尔滨工业大学深圳学院);College of Computer Science and Technology, Huazhong University of Science and Technology(华中科技大学计算机科学与技术学院);School of Computing and Information Systems, Singapore Management University(新加坡管理大学计算机与信息科学学院);College of Computer Science and Technology, Zhejiang University(浙江大学计算机科学与技术学院)
本文提出LibRec框架,结合LLMs与RAG技术自动化推荐替代库,并利用上下文学习提取迁移意图提升准确性;同时引入LibEval基准评估十种LLMs,验证了方法有效性。
2025-08-13 cs.AI cs.SE
Providing Upgrade Plans for Third-party Libraries: A Recommender System using Migration Graphs
在软件项目的开发过程中,开发人员经常需要升级第三方库(TPL),目的是使他们的代码与所使用的库提供的最新功能保持同步。在大多数情况下,升级使用的TPL是一项复杂且容易出错的活动,必须谨慎执行,以限制对依赖于正在升级的库的软件项目的连锁反应。在本文中,我们提出了EvoPlan作为一种新的方法来推荐不同的升级计划给一对库版本作为输入。特别是,在将当前库版本升级到所需更新版本的不同路径中,EvoPlan能够建议可能最大限度地减少将客户端代码从库的当前版本迁移到目标版本所需的工作量的计划。该方法已经使用信息检索中使用的常规度量在策展数据集上进行了评估,即,精确度、召回率和F度量。实验结果表明,EvoPlan在考虑计划规范中的两个不同标准时获得了令人鼓舞的预测性能,迁移路径的受欢迎程度以及GitHub中已遵循推荐迁移路径的项目的开放和关闭问题的数量。
2022-01-20 cs.SE
How Do Developers Use Migration Guides? A Case Study of Log4j
Nara Institute of Science and Technology(奈良先端科学技术大学院大学);Wakayama University(和歌山大学);Notre Dame Seishin University(圣母圣心大学)
本文通过Log4j的案例研究,探讨开发者如何使用迁移指南,发现开发者在拉取请求描述中频繁引用迁移指南,且大部分引用指向整个指南而非特定部分,表明迁移指南在迁移过程的各个阶段都起着重要作用。
2026-05-19 cs.SE
Interactive, Iterative, Tooled, Rule-Based Migration of Microsoft Access to Web Technologies
针对微软Access单体应用迁移至Web前后端的技术学习难题,提出由开发者主导的交互式、迭代式、工具化、基于规则的迁移方法,涵盖语言、库、GUI及架构迁移流程,并经多项验证证明其有效性。
2023-09-07 cs.SE
Example-Based Automatic Migration of Continuous Integration Systems
提出基于示例挖掘的 CIMig,从迁移实例学习规则与配置模式,实现 Travis CI 与 GitHub Actions 的双向自动迁移,并在 251 个项目上验证其有效性。
2024-07-02 cs.SE
Automatic Diversity in the Software Supply Chain
尽管有明显的好处,但越来越多地采用包管理器来自动化库的重用,这为一类新的危险打开了大门:供应链攻击。通过在一个库中注入恶意代码,攻击者可能会危及依赖于该库的所有应用程序的所有实例。为了减轻供应链攻击的影响,我们提出了库替代框架的概念。这个新颖的概念利用了一个关键的观察:当应用程序依赖于一个库时,很可能存在提供类似功能的其他库。库替代框架的主要目标是使应用程序的开发人员能够利用其供应链中的库的多样性。该框架允许他们生成一系列应用程序变体,每个变体都依赖于提供类似功能的不同替代库。为了研究这个概念的相关性,我们开发了ARGO,这是这个框架的概念验证实现,它利用了JSON供应商的多样性。我们研究了图书馆替代的可行性及其对368个客户端的影响。我们的实证结果表明,在368个测试的Java应用程序中,有195个可以用至少15个其他JSON库来替换客户端使用的原始JSON库,而无需修改客户端的代码。这些结果表明,图书馆替代框架的能力,以多样化的供应链的客户端应用程序的图书馆,它的目标。
2021-11-04 cs.SE
Recommending Analogical APIs via Knowledge Graph Embedding
针对库迁移中类比API人工查找效率低、现有基于文档的推荐方法语义理解不足和扩展性差的问题,提出基于知识图谱嵌入的KGE4AR方法,构建统一API知识图谱并嵌入向量计算相似度,在两种推荐场景下性能显著优于现有技术且扩展性良好。
2023-08-22 cs.SE
SPELL: Synthesis of Programmatic Edits using LLMs
Carnegie Mellon University(卡内基梅隆大学);Carnegie Mellon University USA(卡内基梅隆大学(美国));INESC-ID / IST - Universidade de Lisboa(INESC-ID / IST - 莱里斯本大学)
SPELL通过LLM提取迁移示例并泛化为可重用的转换脚本,实现自动化API迁移。
2026-02-01 cs.AI cs.LG cs.SE
Characterization and Automatic Update of Deprecated Machine-Learning API Usages
由于人工智能应用的兴起,机器学习库变得更加容易访问,Python是编写它们最常用的程序设计语言。机器学习库往往会定期更新,这可能会使现有的API过时,从而使开发人员有必要更新其用法。然而,更新弃用API的使用通常不是开发人员的优先事项,导致弃用API的广泛使用,这使库用户面临漏洞问题。在本文中,我们构建了一个工具来自动化这些更新。我们首先进行了一项实证研究,以更好地了解如何在Python中更新过时的机器学习API用法。该研究涉及来自Scikit-Learn,TensorFlow和PyTorch的112个弃用API的数据集。我们发现与更新操作相关的弃用API迁移的维度(即,执行迁移所需的操作),API映射(即,弃用的API及其对应的更新的API的数量),以及上下文依赖性(即,当执行迁移时我们是否需要考虑周围的上下文)。在我们实证研究结果的指导下,我们创建了MLCatchUp,这是一个自动更新Python弃用API使用的工具,它通过比较弃用和更新的API签名自动推断API迁移转换。这些转换用领域特定语言(DSL)表示。我们使用包含258个文件的测试数据集评估了MLCatchUp,这些文件包含我们从公共GitHub存储库收集的514个API用法。在本次评估中,MLCatchUp的准确率为86.19%。我们通过添加一个功能来进一步提高MLCatchUp的精度,该功能允许它接受额外的用户输入…
2020-11-10 cs.SE
Super Library Agent: Joint Generation and Maintenance of Multiple Applications Beyond the Single Codebase
KAIST(韩国科学技术院)
针对关联应用组合维护的冗余与结构退化问题,提出超级库智能体方法,通过候选引导提取等技术,在WebGen-Bench等基准上减少冗余并避免结构退化。
2026-09-01 cs.AI cs.CL cs.SE
VecIntrinBench: Benchmarking Cross-Architecture Intrinsic Code Migration for RISC-V Vector
VecIntrinBench是首个评估RISC-V向量扩展内在代码迁移能力的基准,包含50个函数级任务,通过标量、RVV、Arm Neon和x86内在函数进行测试,揭示LLM在代码迁移中的表现及优化方向。
2025-11-24 cs.SE
Fine-Grained Library Customization
代码膨胀广泛存在于生产运行的软件中。如果不加以解决,它不仅会降低软件性能,而且还会增加其攻击面。在这项工作中,我们进行了一个案例研究,以了解这个问题在静态链接库。具体来说,我们分析了miClib,一个包含静态链接库的软件包。我们表明,它是可能的,利用依赖分析,以修剪resultless代码语句驻留在一个目标库。有了这个观察,我们相信有可能构建一个工具来自动切断与无结果操作有关的代码。
2018-10-25 cs.SE
MELT: Mining Effective Lightweight Transformations from Pull Requests
INESC-ID;Carnegie Mellon University(卡内基梅隆大学);Dickinson College(迪金森学院);Instituto Superior Técnico(高等技术学院);Universidade de Lisboa(里斯本大学);School of Computer Science(计算机学院)
针对开发者API更新效率低易出错的问题,提出MELT方法从开源库拉取请求中挖掘comby格式的轻量级API迁移规则,经泛化提升适用性,实验验证其在真实场景中有效减少警告并修复测试用例。
2024-07-08 cs.AI cs.SE
Automatic Qiskit Code Refactoring Using Large Language Models
LIFIA UNLP(UNLP LIFIA学院)
针对量子软件框架API快速迭代带来的代码兼容难题,提出基于大语言模型的Qiskit代码自动重构方法,通过提取官方文档迁移场景分类引导模型识别重构,验证了其有效性并提供相关工具与评估方法。
2025-06-17 cs.AI cs.ET cs.SE
AutoAlias: Automatic Variable-Precision Alias Analysis for Object-Oriented Programs
别名问题(在执行过程中,两个引用表达式可以指向同一个对象吗?)是实践中最关键的应用之一,从编译器优化到程序员验证,也是研究最多的应用之一,几十年来发表了数百篇论文。人们可能会期望,好的现成解决方案是广泛可用的,准备插入到编译器或验证器。事实并非如此。在实践中,有效和精确的别名分析仍然是一个悬而未决的问题。我们提出了一个实用的工具,Autoclave,它可以用来执行自动别名分析面向对象的程序。基于“二元语义”理论,抽象解释思想的应用,它是针对面向对象的语言,并已实现为Eiffel作为EiffelStudio环境的补充。它提供了可变精度分析,通过选择控制固定点迭代次数的常数来控制:更高的数字意味着更好的精度和更长的计算时间。Autocompatibility的所有源代码以及本文中报告的详细分析结果都是公开的。到目前为止,实际应用已经涵盖了数据结构和算法库以及GUI创建库。对于前者,Autoclave实现了适用于实际目的的精度,并且对于大约8000行复杂代码的执行时间为25秒。对于GUI库,Autocompatibility在大约232秒内为大约150000行复杂的代码生成别名分析。
2019-04-19 cs.SE
Forcrat: Automatic I/O API Translation from C to Rust via Origin and Capability Analysis
针对现有C到Rust翻译器C2Rust保留libc函数调用的问题,提出起源与能力分析、错误源分析两种静态分析技术,实现I/O API自动替换,在正确性、效率和适用性上表现优异。
2025-10-30 cs.SE
CIgrate: Automating CI Service Migration with Large Language Models
Trent University(特伦特大学)
本文提出基于大语言模型(LLM)的CI配置迁移框架CIgrate,经对比实验,其性能显著优于现有基于规则的方法CIMig,为CI配置迁移提供了更实用准确的方案。
2026-08-04 cs.SE
LLM Agents for Automated Dependency Upgrades
本文提出基于LLM代理的自动化依赖升级方法,通过合成数据验证,实现了高效准确的代码更新与兼容性保障。
2025-11-24 cs.SE
Automated Inference of Software Library Usage Patterns
现代软件系统越来越依赖于第三方库。人们普遍认为,使用成熟且经过良好测试的第三方库可以提高开发人员的生产力,缩短上市时间,并生产出更可靠的软件。今天的开放源代码库提供了广泛的库,可以免费下载和使用。然而,由于软件库是单独记录的,但打算一起使用,开发人员不太可能充分利用这些重用机会。在本文中,我们提出了一种新的方法来自动识别第三方库的使用模式,即,开发人员通常一起使用的库集合。我们的方法采用层次聚类技术组在一起的软件库外部客户端使用的基础上。为了评估我们的方法,我们从Maven Central Repository中挖掘了超过6,000个流行库,并调查了Github存储库中超过38,000个客户端系统的使用情况。我们的实验表明,我们的技术是能够检测到大多数(77%)的高度一致和凝聚力的图书馆使用模式在相当数量的客户端系统。
2016-12-06 cs.SE
From API to NLI: A New Interface for Library Reuse
开发人员经常重用现有库中的API来实现某些功能。然而,学习API是困难的,因为它们的规模和复杂性。在本文中,我们设计了一个抽象的框架NLI2Code,以减轻重用过程。在该框架下,用户可以使用高级的自动生成的NLI(自然语言接口)而不是详细的API元素来重用库功能。该框架由三个组件组成:一个功能特征提取器,以自然语言的形式总结经常使用的库函数,一个代码模式挖掘器,为每个功能特征提供一个代码模板,和一个合成器,以完成代码模式到良好类型的片段。从用户的角度来看,NLI2Code下的重用任务从选择功能特性开始,我们的框架将指导用户合成所需的解决方案。我们将框架实例化为重用Java库的工具。评估表明,我们的工具可以生成一个高质量的自然语言界面,并节省了一半的编码时间为新人解决现实世界的编程任务。
2020-07-07 cs.SE
AutoFrame: Automatic Frame Inference for Object-Oriented Languages
自动程序验证已经取得了巨大的进步,但还没有普及。如何让它不那么痛苦?这篇文章解决了其中一个障碍:需要指定明确的“框架子句”,表示哪些属性不会被操作改变。要求潜在的(人类)证明者说明每个操作改变了什么,以及如何改变,这是公平的,但(机械)证明者也需要知道它没有改变什么。指定和验证这些属性的过程是繁琐且容易出错的,并且必须在软件发展时重复。这也很难证明,因为关于代码更改的所有信息都在代码本身中。这里介绍的自动框架工具完全自动执行此分析。它适用于面向对象的编程,其中问题因别名而复杂化:如果x别名为y,则对x. a的任何更新也会影响y. a,即使更新指令通常甚至不提及y。这方面是最微妙的,并在AutoFrame中通过利用配套工具AutoFrame来解决,AutoFrame也以完全自动的方式执行声音和足够精确的别名分析。目前,AutoFrame的一些实际成果是:(1)自动重建(在普通笔记本电脑上大约25秒)的确切框架子句,总共169个子句,用于8,000行数据结构和算法库,该库以前是(用手工编写的框架条款)使用机械程序证明器验证功能正确性;以及(2)自动生成150,000行图形和GUI库的帧条件(少于4分钟)。AutoFrame的源代码和这些示例可供下载。
2019-08-03 cs.SE
A Multi-agent AI System for Deep Learning Model Migration from TensorFlow to JAX
Google(谷歌)
本文提出一种多智能体AI系统,用于自动迁移TensorFlow深度学习模型至JAX,通过AI规划器、协调器和程序员的协作,显著提升迁移效率,减少6.4至8倍的时间消耗。
2026-03-28 cs.AI cs.SE
Does BLEU Score Work for Code Migration?
The University of Texas at Dallas(德克萨斯大学达拉斯分校);Iowa State University(爱荷华州立大学)
统计机器翻译(SMT)是计算语言学的一个快速发展的分支。到目前为止,衡量SMT质量最流行的自动度量标准是双语评估替补(BLEU)分数。最近,SMT与BLEU度量一起被应用于名为代码迁移的软件工程任务。验证BLEU评分的使用可以促进基于SMT的代码迁移工具的研究和开发。不幸的是,没有研究批准或不批准对源代码使用BLEU评分。在本文中,我们进行了一个实证研究的BLEU评分(中)验证其适用于代码迁移任务,由于其无法反映源代码的语义。在我们的工作中,我们使用人类的判断作为地面真理来衡量迁移代码的语义正确性。我们的实证研究表明,BLEU不反映翻译质量,由于其弱相关性的翻译代码的语义正确性。我们提供了反例来证明BLEU在比较基于SMT的模型之间的翻译质量方面是无效的。由于BLEU的代码迁移任务的无效性,我们提出了一个替代度量RUBY,它考虑了源代码的词法,语法和语义表示。我们验证了RUBY与迁移代码的语义正确性达到了更高的相关系数,0.775,而BLEU得分为0.583。我们还证实了RUBY在反映基于SMT的翻译模型的翻译质量变化方面的有效性。RUBY的优点使得它可以用来评估基于SMT的代码迁移模型。
2019-06-12 cs.CL cs.SE
Herb.jl: A Unifying Program Synthesis Library
Technical University Delft(代尔夫特理工大学)
Herb.jl是一个用Julia编写的统一程序合成库,旨在通过分解底层算法为可扩展的子组件,简化程序合成的重用和调整过程。
2026-01-30 cs.AI cs.PL cs.SE
Tangent: Automatic differentiation using source-code transformation for dynamically typed array programming
MILA(蒙特利尔学习算法研究所);Google Brain(谷歌大脑)
高效计算Python中表达的日益复杂的模型的一阶和高阶导数的需求已经强调或超过了可用工具的能力。在这项工作中,我们探索的技术领域的自动微分(AD),可以给研究人员的表达能力,性能和强大的可用性。这些包括源代码转换(SCT),灵活的梯度手术,有效的就地阵列操作,高阶导数以及正向和反向模式AD的混合。我们实现和展示这些想法的切线软件库的Python,第一个AD框架的动态语言,使用SCT。
2018-09-26 cs.LG cs.SE stat.ML