作者 | Soren Sonnenburg等

译者 | 刘畅

出品 | AI科技大本营(ID:rgznai100)

导读:开源工具已经趋于成熟,这使其能构建大规模的自然场景下的系统。与此同时,机器学习领域为各种应用开发了大量强大的学习算法。但是,由于没有公开共享现有的实现方式,去真正的利用这些方法,从而导致软件的可用性和互操性较弱。

本文作者认为,可以通过提高研究人员在源代码模型下发布软件的动机来明显改善这种情况。此外,本文概述了作者在尝试发布机器学习算法的实现时所面临的问题。作者认为,经过同行评审的软件资源以及简短的文档对机器学习和整个科学界非常有价值。

概述

机器学习领域发展迅速,为不同的应用提供了各种各样的学习算法。这些算法的最终价值在很大程度上取决于它们在解决实际问题中的成功。因此,将算法进行复制并应用于新任务对于该领域的进步至关重要。

但是,目前很少有机器学习研究人员发布与其论文相关的软件和/或源代码。这与生物信息学界的做法形成了鲜明对比,后者的开源软件已经成为进一步研究的基础。缺少公开可用的算法实现是我们这一学科进步的主要障碍。

我们相信,机器学习软件的开源共享可以在消除障碍方面发挥非常重要的作用。

开源模型具有许多优势,这些优势将带来更好的实验结果重现性:更快地检测错误,创新性应用以及在其他学科和行业中更快地采用机器学习方法。但是,目前缺乏完善和发布软件的动机。已发布的软件本身在我们领域中没有标准的,可接受的引用方式。

目前引用它的唯一方法是引用与代码相关联的论文,或者通过引用以某种技术报告的形式发布的用户手册。为了解决这一难题,本文提出了一种正式发布机器学习软件的方法,类似于ACM Transactions on Mathematical Software提供的用于数值分析的方法。

注:本文作者随后简要解释了开源软件背后的思想,然后介绍了广泛采用开源的模型将产生的一些积极影响。接下来,本文讨论了当前主要的阻碍,并提出可能的改变以改善这种情况。最后,作者为JMLR(JMLR-MLOSS)中的机器学习开源软件提出了一个新的、单独的track。

开源背后的思想

开源软件的基本思想非常简单;程序员或用户可以阅读,修改和重新分发软件的源代码。尽管有各种开源软件许可,但它们都有一个共同的出发点,那就是允许自由交换和使用信息。开源模型更注重贡献者的协作。每个贡献者都可以利用网络中其他人所做的工作,从而最大程度地减少“重新造轮子”所花费的时间。

开源的软件主要有下面的10个属性:

1.免费重新使用

2.源代码

3.衍生作品

4.作者源代码的完整性

5.不歧视个人或群体

6.不歧视工作领域

7.许可证的分配

8.许可不得用于特定产品

9.许可不得限制其他软件

10.许可必须是技术中立的

开源的积极影响

这一部分主要是简要概述开源软件及其与科学活动(特别是机器学习)的关系。读者可能会认为我们对开源的好处过于乐观,而没有讨论负面影响。事实是,要获得专有系统与开源软件之间抄袭的确凿证据是极其困难的。

本文从道德,伦理和社会基础三个方面进行阐释,开源应该是机器学习研究的首选软件发布选项,并向读者介绍开源软件的许多优点。在这里,本文将重点放在用于机器学习研究的开源软件的特定优势上,该优势结合了科学进步以及软件生产者和消费者的需求和要求。作者从以下7点说明了开源的优势:

1.科学结果的可重复性和算法的合理比较;

2.发现问题;

3.利用已有资源(而不是重新实现);

4.不断获得科学的工具;

5.优势结合;

6.在不同学科和行业中更快地适用某方法;

7.出现协同标准。

最后,作者使用一个表格总结了开源会带来的优点,一共有11条,分别如下:

1.提高了科学研究的可复现性

2.有助于公平比较在相同框架中实施的算法

3.可以更快地发现问题

4.可以修复bug和扩展外部来源的错误

5.方法可以被其他人更快地采用

6.可以使用高效的算法

7.能利用现有资源来帮助新研究

8.广泛的使用算法会使其得到广泛的认可

9.可以开发更复杂的机器学习算法

10.可以加速研究进展

11.对新研究者和较小的研究小组非常有帮助

开源社区当前主要的障碍

尽管根据开源模型发布实现方式具有许多优点,但是当前很少采用此选项。作者认为,有六个主要的原因,总结起来概括如下:

1、发布软件不能够被视为一种科学贡献

2、公开与商业利益存在根源上的冲突

3、发布开源软件的激励措施没有足够高

4、机器学习研究人员不是一个优秀的程序员

5、这种松懈能掩盖新方法的问题,并降低会议和期刊的接收难度

6、存在一种习惯,对质量相似的论文采用相同的处理方法

建议

作者给出了提交高质量机器学习开源软件实现的描述。提交的内容至少应包括:

1、一封书面信,说明该提交内容适用于机器学习开源软件部分,发布该软件的开源许可证,项目的网址以及要查看的软件版本。

2、最多四页基于JMLR格式的描述。

3、包含源代码和文档的zip或tar压缩的归档文件。

结论

综上,作者认为,采用共享信息的开源模型来实现机器学习软件对整个领域都非常有帮助。开源模型具有许多优势,例如提高了实验结果的可重复性,更快地检测错误,加速科学进步以及在其他学科和行业中更快地采用了机器学习方法。由于当前发布开源软件的动机不足,本文概述了一个发布用于机器学习的软件平台。

此外,本文讨论了机器学习软件的理想功能,这些功能最终将产生一个高度可用,灵活和可扩展的软件。本文邀请所有开发机器学习算法的机器学习研究人员提交机器学习软件的JMLR track。定义精心设计的界面对于提高交互操作至关重要,这将使社区能构建一套高质量的机器学习软件。

推荐阅读

  • 华为麒麟将成“绝版”,造芯为什么这么难?

  • 用Bi-GRU语义解析,实现中文人物关系分析

  • 图解Transformer,读完这篇就够了

  • 马小峰:金融科技界的区块链博士

  • 2019年中国IaaS公有云市场排名及份额出炉

算法实现太难了?机器学习也需要开源软件相关推荐

  1. 机器学习与算法面试太难?

    机器学习与算法面试太难? 来源: https://mp.weixin.qq.com/s/GrkCvU2Ia_mEaQmiffLotQ 作者:石晓文 八月参加了一些提前批的面试,包括阿里.百度.头条.贝 ...

  2. 这些算法工程师,他们真的是太难了!

    现在的算法工程师真的是太难了! 要让AI会看人眼都分辨不清的医疗影像 数据又不够,还得用前沿技术 好不容易学会看片,还要让AI会分析病理 赋予AI诊断疾病的使命 然后 几十种模型,N次计算 只给一张显 ...

  3. 清华大一Python作业太难上热榜!只上3节课,手撸AI算法,网友:离本科毕设只差一篇万字论文...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 太难了! ...

  4. 13个月才跑通GitHub模型,机器学习科研入门太难了吧

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 金磊 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI & ...

  5. 本科生搞AI在线崩溃:3个月才跑通GitHub模型,机器学习科研入门太难了吧

    金磊 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI "机器学习,太难了!" "3个月才跑通GitHub模型代码,要崩溃了!" "还要跟博 ...

  6. AI可以在游戏里称霸,但是解决现实问题太难了

    来源:36氪 据<大西洋月刊>报道,直到最近,那些能在各类游戏中击败人类冠军的机器,解决现实问题太难了. 1997年,为了在国际象棋中击败象棋大师加里·卡斯帕罗夫(Garry Kaspar ...

  7. 突发!TensorFlow技术主管皮特·沃登离职,重返斯坦福读博:我在谷歌“太难了”!...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨维克多 来源丨 AI科技评论 编辑丨岑峰 又一技术大咖离开业界,前往高校攻关科研! 据Pete ...

  8. 清华大一 Python 作业太难上热榜

    本文转载自IT之家 太难了!太难了! 清华电子系,只学 3 节 Python 课,然后-- 然后-- 就直接要求"手撸"一个 AI 算法! 就这样,清华再一次因为难,冲上了知乎热榜 ...

  9. Java后端开发三年,现在刚学分布式,还被同学嘲笑,太难了!

    目录 前言 什么是实用?例如: 什么不实用? 例如: 分布式系统近些年都在做些什么? 分布式系统三大部分 分布式存储系统: 结构化存储 非结构化存储 半结构化存储 In-memory 存储 NewSQ ...

最新文章

  1. 【PHP】字符串去空格并将每个单词首字母转换成大写de多种解法
  2. python转换维度
  3. 【嵌入式开发】用 VLC 显示 树莓派摄像头 H264 裸流
  4. TCP、UDP以及HTTP的简单讲解
  5. qpython怎么用matplotlib_将matplotlib绘图嵌入pyqt的方法示例
  6. dll侧加载_win7系统开机提示xxxdll模块已加载但找不到入口点的解决方法
  7. php include不可用,无法设置PHP include_path
  8. android xpath解析xml,Android 中处理 XML 的四种方式-DOM
  9. 杂谈:人工智能发展的哲学研究
  10. ntfs在linux上读取,详解在Mac系统上读取Windows NTFS方法
  11. 从零开始使用最前沿技术 Kube-VIP 搭建一个高可用的 Kubernetes 集群
  12. mysql 性能优化方案
  13. win10在命令行下运行python程序
  14. 一、Python-劳务报酬计算器(新手练习)
  15. cPanel创建数据库教程
  16. Python之禅+八荣八耻
  17. 亚稳态及亚稳态解决方案_通俗易懂篇!
  18. Istio架构剖析 | 文末有福利
  19. 【机械臂轨迹规划】足式机器人足端摆线轨迹曲线
  20. Delta机器人:运动学正反解分析

热门文章

  1. 使用reflector对.NET反编译
  2. 配置Cesium编译环境
  3. 让你的网站支持 Emoji
  4. sql查询语句优化需要注意的几点
  5. js中cookie的使用详细分析
  6. 微软重新释出MS10-015 解决蓝屏问题
  7. 把JS 脚本嵌入CS运行
  8. Java中关于进程和线程的理解
  9. L1-016 查验身份证(2016年天梯赛模拟赛第8题)
  10. H3C 静态默认路由配置