首页 文章 精选 留言 我的

精选列表

搜索[认证互认],共10000篇文章
优秀的个人博客,低调大师

Python, C++和Java代码翻,Facebook开发首个自监督神经编译器

云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 将早期的编程语言(例如COBOL)的代码库迁移到现在的编程语言(例如Java或C++)是一项艰巨的任务,它需要源语言和目标语言方面的专业知识。COBOL如今仍在全球大型的系统中广泛使用,因此公司,政府和其他组织通常必须选择是手动翻译其代码库还是尽力维护使用这个可追溯到1950年代的程序代码。 FaceBook公司开发了一个工具TransCoder,这是一个完全自我监督的神经编译器系统,它可以使代码迁移变得更加轻松和高效。本文的方法是第一个能够将代码从一种编程语言转换为另一种编程语言而无需并行数据进行训练的AI系统。本文已经证明TransCoder可以成功地在C++,Java和Python 3之间进行翻译功能。 TransCoder的性能优于开源的代码和基于商业规则的翻译程序。在本文的评估中,该模型正确地将90%以上的Java函数转换为C++,将74.8%的C++函数转换为Java,并将68.7%的函数从Java转换为Python。相比之下,市售工具只能正确地将61.0%的功能从C++转换为Java,而开源的翻译器仅能准确地将38.3%的Java函数转换为C++。 自我监督训练对于在编程语言之间进行翻译特别重要。传统的有监督学习方法依赖于大规模的并行数据集进行训练,但是对于COBOL到C++或C++到Python来说,这些数据根本不存在。TransCoder只依赖于仅用一种编程语言编写的源代码,而不需要源代码和目标语言中的相同代码示例。它不需要编程语言方面的专业知识,并且可以很容易地将TransCoder的方法推广到其他编程语言中。本文还创建了专门为此领域设计的新的评估指标。 TransCoder对于将遗留代码库更新为现代编程语言可能很有用,现代编程语言通常更高效且易于维护。它还展示了一个神经机器翻译技术应用的新领域。与Facebook AI以前使用神经网络解决高级数学方程式的工作一样,本文认为NMT可以帮助完成通常与翻译或模式识别任务无关的其他任务。 特意为编程语言建立序列到序列模型 在自然语言中,即使在越来越依赖自动化机器翻译系统的专业翻译人员群体中,神经机器翻译的最新结果也被广泛认可。但是,由于代码翻译领域中缺少并行数据,因此它们在该方面的应用受到了限制。程序员仍然依赖于基于规则的代码转换工具,这需要专家复查和调试输出,或者手动翻译代码。TransCoder通过利用无监督机器翻译到编程语言翻译取得的成功来克服这些挑战。 本文构建了一个带有注意力机制的序列到序列(seq2seq)模型,该模型由具有转换结构的编码器和解码器组成。TransCoder使用单个共享模型,部分基于Facebook AI以前在XLM上针对所有编程语言所做的工作。本文按照Facebook AI先前的研究中详细介绍的无监督机器翻译的三个原则进行了训练:初始化,语言建模和反向翻译。 本文首先利用开源GitHub项目中的源代码使用蒙版语言模型(MLM)对本文的模型进行了预训练。就像自然语言处理中的上下文一样,这种预训练会创建跨语言的嵌入:在相似上下文中使用来自不同编程语言的关键字在嵌入空间(例如catch和except)中非常接近。这些嵌入的跨语言性质来自存在于多种语言中的大量通用的标记(锚点)。锚点的示例包括C++,Java和Python通用的关键字(例如,for,while,if,try),以及源代码中出现的数学运算符,数字和英语字符串。 使用MLM进行预训练使TransCoder可以生成输入序列的高质量表示。然而,由于从未训练过解码器基于源表示对序列进行解码,因此解码器缺乏翻译能力。为了解决此问题,本文训练了该模型使用降噪自动编码(DAE)对序列进行编码和解码。 DAE的工作方式类似于有监督的机器翻译算法,在该算法中,模型被训练为在给定序列存在损坏的情况下预测该序列。 作为输入给解码器的第一个符号是指示输出编程语言的特殊标记。在测试时,该模型可以对Python序列进行编码,并使用C++起始符号对其进行解码以生成C++翻译器。C++翻译的质量将取决于模型的“跨语言”:如果编码器将Python函数和有效的C++翻译映射到相同的潜在表示,则解码器将成功翻译成C++。 仅预训练的跨语言模型和自动降噪就足以进行翻译。但是,这些翻译的质量往往很低,因为从未训练过该模型在测试时应该完成什么样的工作,即从一种语言翻译为另一种语言的功能。为了解决此问题,本文使用反向翻译,这是在弱监督的情况下利用单语数据的最有效方法之一。 对于每种目标语言,本文使用一个模型和一个不同的开始标记。它经过训练可以从源到目标以及从目标到源并行转换。目标到源版本用于将目标序列翻译成源语言,从而产生与标记目标(GT)序列相对应的嘈杂源序列。然后以弱监督的方式训练模型,让模型可以从嘈杂的源序列中重建目标序列,并学习从源到目标的转换。直到收敛为止。 为了评估该模型,以前对源代码翻译的大多数研究都依赖于自然语言中使用的度量标准,例如BLEU分数或其他基于标记之间相对重叠的方法。但是,这些类型的指标不太适合编程语言。语法差异小的两个程序在执行代码时可能会获得很高的BLEU分数,但会产生非常不同的结果。相反,具有不同实现方式的语义等效程序将具有较低的BLEU分数。另一种度量标准是参考匹配,或与GT完全匹配的翻译百分比,但这通常会低估翻译的质量,因为它无法识别语义上等效的代码。 为了更好地衡量TransCoder和其他代码翻译技术的性能,本文创建了一个称为计算精度的新指标,该指标可评估假设函数在给定相同输入时是否生成与参考相同的输出。我们还将发布测试集以及用于计算该指标的脚本和单元测试。 下面的示例显示了TransCoder如何将示例代码从Python转换为C++。我们使用以上的代码作为模型输入: TransCoder成功将Python输入函数SumOfKsubArray转换为C++。它还可以推断参数的类型,返回类型和函数的参数。该模型将Python dequeue()容器附加到C++实现dequeue <>。下面是该模型在C++中的输出: 最新研究并在实际应用中提供的帮助 自动代码翻译有可能使在公司或开源项目中工作的程序员更加高效,因为他们可以更轻松地集成公司内其他团队或其他开源项目的各种代码,还可以大大减少更新用早期语言编写的代码库的工作量和成本。 反编译的进步可能会促使公司和其他机构更新到最新的语言并促进未来的创新,这可能让使用服务的人们以及机构本身受益。编程语言机器翻译的进步也可以帮助那些没有时间学习多种语言编程的人。 更广泛地说,人工智能有潜力帮助其他编程任务。例如,Facebook AI以前共享了神经代码搜索,这是一种在查询代码中使用自然语言的方法。以及Getafix,该工具可学习自动为编码错误提供建议修复。虽然TransCoder并非旨在帮助调试或提高代码质量,但它可以帮助工程师迁移旧代码库或使用以其他语言编写的外部代码。 为了促进使用深度学习进行代码翻译的研究,本文还发布了一个测试集,该测试集使其他研究人员可以使用计算精度而不是语义盲模型来评估代码翻译模型。我们期待看到其他人如何在我们与TransCoder的合作基础上继续前进,并为新的翻译任务推进自我监督学习。 【云栖号在线课堂】每天都有产品技术专家分享!课程地址:https://yqh.aliyun.com/live 立即加入社群,与专家面对面,及时了解课程最新动态!【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK 原文发布时间:2020-07-28本文作者:CSDN本文来自:“ AI科技大本营”,了解相关信息可以关注“ AI科技大本营”

优秀的个人博客,低调大师

Swift 6.3 正式发布:更灵活的 C 操作性、改进跨平台构建工具

Swift 6.3 已正式发布,新版本没有大幅修改语言特性,而是把 Swift 推向“真正跨平台 + 工程级可用”的阶段。 更新亮点如下: 并发模型继续“去痛点化” Swift 6 引入的严格并发(Strict Concurrency)在早期有点“折磨人”,6.3 重点在可用性优化: 更智能的 Sendable 推断 更少误报(false positives) 区域隔离(region-based isolation)逐步成熟 Embedded Swift:从实验走向生产 这是 6.3 最核心变化之一: Embedded Swift 正式趋于稳定 可用于 微控制器 / IoT / 资源受限设备 去掉对 C 的依赖(如浮点打印改为纯 Swift 实现) 官方支持 Android(跨平台里程碑) Swift 6.3 明确推进: Swift SDK for Android 更完善并走向官方支持 持续强化 Linux / WebAssembly / FreeBSD 编译性能 &构建体验提升 这次没有花哨 feature,但工程体验明显优化: 更快的编译速度(特别是大量宏项目) 更好的模块化 & 依赖管理 更稳定的大型项目构建体验 宏(Macros)生态持续进化 延续 Swift 6 的方向: 宏能力继续增强 减少模板代码(boilerplate) 提升代码生成能力 调试 & 工具链增强(特别是嵌入式) 针对底层开发场景: 更强的调试器支持(core dump / 异常回溯) 更多类型可调试 针对嵌入式的诊断改进 内存与运行时性能优化 无需改代码也能受益: 内存管理优化 更高运行效率 更少 runtime 开销 详情查看:https://www.swift.org/blog/swift-6.3-released/

优秀的个人博客,低调大师

大佬隔空怼:马斯克呼吁远离 ChatGPT、奥特曼抨击特斯拉 Autopilot 不安全

特斯拉CEO马斯克与OpenAI CEO山姆·奥特曼近日在社交平台X上围绕产品安全问题展开激烈交锋,引发行业广泛关注。双方不仅相互抨击对方旗下核心产品的安全隐患,背后还牵涉OpenAI的组织形态转型诉讼纠纷。 此次争议由马斯克率先引发。他于周二转发一条相关帖文,该帖文提及“自2022年ChatGPT发布以来,已有九名儿童和成人的死亡与其使用相关”,马斯克同时配文呼吁“别让你的亲人使用ChatGPT”,直接对这款热门聊天机器人的安全性提出质疑。 面对质疑,奥特曼迅速回应,一方面阐明OpenAI在产品安全上的立场,称“保护易受伤害的用户与保障所有用户正常使用工具之间的平衡确实颇具挑战,OpenAI始终重视安全防护工作”;另一方面,他转而抨击特斯拉的自动辅助驾驶技术(Autopilot),指出“已有超过50人死于与Autopilot相关的车祸”,并表示自己曾乘坐过搭载该系统的车辆,当时便认为其“远算不上安全”。 同时对马斯克旗下另一产品Grok的部分决策不予置评,还暗指“马斯克的每一次指控都是一种自白”,暗示其指责他人时实则暴露了自身的问题。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册