2019 年中国人工智能基础数据服务白皮书

人工智能基础数据服务:指为 AI 算法训练及优化提供的数据采集、清洗、信息抽取、标注等服务,以采集和标注为主。《2019 年中国人工智能基础数据服务白皮书》由艾瑞和百度数据众包联合发布,报告主要分析中国人工智能基础数据服务的现状以及未来发展方向,重点讨论人工智能基础数据服务的价值、发展背景、产业链、市场空间和应用场景。

在经历了一段时期的野蛮生长之后,人工智能基础数据服务行业进入成长期,行业格局逐渐清晰。人工智能基础数据服务方的上游是数据生产和外包提供者,下游是 AI 算法研发单位,人工智能基础数据服务方通过数据处理能力和项目管理能力为其提供整体的数据资源服务,不过 AI 算法研发单位和 AI 中台也可提供一些数据处理工具,产业上下游普遍存在交叉。

2018 年中国人工智能基础数据服务市场规模为 25.86 亿元,其中数据资源定制服务占比 86%,预计 2025年市场规模将突破 113 亿元。市场供给方主要由人工智能基础数据服务供应商和算法研发单位自建或直接获取外包标注团队的形式组成,其中供应商是行业主要支撑力量。

数据安全、采标能力、数据质量、管理能力、服务能力等仍是需求方的痛点,需要人工智能基础服务商有明确具体的安全管理流程、能够深入理解算法标注需求、可提供精力集中且高质量的服务、能够积极配合、快速响应需求方的要求。

随着算法需求越来越旺盛,依赖人工标注不能满足市场需求,因此增强数据处理平台持续学习能力,由机器持续学习人工标注,提升预标注和自动标注能力对人工的替代率将成趋势。远期,越来越多的长尾、小概率事件所产生的数据需求增强,机器模拟或机器生成数据会是解决这一问题的良好途径,及早研发相应技术也将成为 AI 基础数据服务商未来的护城河。

《人工智能产品经理的新起点》PPT

原作者:黄钊;PPT 目录大纲:

  1. AI PM 在做什么、如何做?
    AI 的时代背景及真正瓶颈
    如何选行业方向 in AI
    如何找场景痛点 in AI 应用层 (2B/2C)
    如何做体验设计 in 对话聊天产品
  2. 如何从互联网 PM 转型成 AI PM
    AI PM 能力模型
    AI 技术概念厘清
    如何转型
  3. 人工智能的本质及脑洞 AI 的过去和现在
    AI 的未来和突破口
    AI 的本质、效用和终局
  • 下载地址 1:https://pan.baidu.com/s/1mjM5PQo 密码: gxmw
  • 下载地址 2:https://pan.baidu.com/s/1brbHw7d 密码: 9t5a

本地下载:人工智能产品经理的新起点

TensorFlow 2.0 实战教程

这是一份来自 IJCAI 2019上的一个 TensorFlow 2.0 实操教程,这个教程包含 117 页 PPT,由 Google 资深开发人员 Josh Gordon 讲授,提供了最新 TensorFlow 2.0 的实操介绍,重点介绍了最佳实践。读者将学习编写几种类型的神经网络(Dense, Convolutional, 和 Recurrent),以及生成对抗网络(Generative Adversarial Network)。

Hands on TensorFlow 2.0
Hands on TensorFlow 2.0

TensorFlow 是一个基于数据流编程(Dataflow Programming)的符号数学系统,被广泛应用于各类机器学习(Machine Learning)算法的编程实现,其前身是谷歌的神经网络算法库 DistBelief。

Tensorflow 拥有多层级结构,可部署于各类服务器、PC 终端和网页并支持 GPU 和 TPU 高性能数值计算,被广泛应用于谷歌内部的产品开发和各领域的科学研究。

如果你想学习新发布的 TensorFlow 2.0 版本,那么本教程非常适合您。不过您需要事先熟悉一些基本的机器学习知识。该教程将介绍深度学习中的关键概念。本教程的目标是帮助您高效地开始使用 TensorFlow,这样您就可以继续自学了。

《Hands on TensorFlow 2.0》教程下载

《动手学深度学习》PyTorch 版

我们知道,作为 MXNet 的作者之一,李沐的这本《动手学深度学习》也是使用 MXNet 框架写成的。但是很多入坑机器学习的萌新们,使用的却是 PyTorch。如果有教材对应的 PyTorch 实现代码就更好了!今天就给大家带来这本书的 PyTorch 实现源码。最近,来自印度理工学院的数据科学小组,把《动手学深度学习》从 MXNet 『翻译』成了 PyTorch,经过 3 个月的努力,这个项目已经基本完成,并登上了 GitHub 热榜。

d2l-pytorch
d2l-pytorch

其中,每一小节都是可以运行的 Jupyter 记事本,你可以自由修改代码和超参数来获取及时反馈,从而积累深度学习的实战经验。

GitHub地址项目 GitHub 地址

计算机科学 (CS) 顶会历届最佳论文列表

历届最佳论文大列表,从 1996 年至 2018 年都包含了。机器学习、深度学习前沿 Paper 都能找得到!这些『顶会』包括:

AAAI, ACL, CHI, CIKM, CVPR, FOCS, FSE, ICCV, ICML, ICSE, IJCAI, INFOCOM, KDD, MOBICOM, NSDI, OSDI, PLDI, PODS, S&P, SIGCOMM, SIGIR, SIGMETRICS, SIGMOD, SODA, SOSP, STOC, UIST, VLDB, WWW

这个网页上,按照不同顶会,列举了各个年份的最佳 CS 论文,论文源地址和作者信息都有了!几个 AI 领域的代表性顶会最佳论文资源包括:

  •  AAAI (Artificial Intelligence)
  •  ACL (Natural Language Processing)
  • CVPR (Computer Vision)
  • ICCV (Computer Vision)
  • ICML (Machine Learning)
  • IJCAI (Artificial Intelligence)

以上是人工智能领域具有代表性的几个顶会,相应的最佳论文都按照不同年份列举出来了,非常便于查找和定位。除此之外,还包括其他 CS 顶会的最佳论文。

Google 发布姿势估测应用

Google 日前发布一款 TensorFlow Lite 示例应用,该应用使用 PoseNet 模型在 Android 中实现人体姿势估测。PoseNet 是一种视觉模块,通过检测人体关键部位的位置,来估测图像或视频中的人体姿势。例如,该模型可以估测图像中人物手肘和膝盖的所在位置。姿势估测模型只会识别人体关键部位的位置,而不会去辨别图像中的人物。TensorFlow Lite 现与您分享这款 Android 示例应用,该应用可利用设备的相机实时检测和显示个人的关键身体部位。

使用 PoseNet 模型在 Android 中实现人体姿势估测
使用 PoseNet 模型在 Android 中实现人体姿势估测

PoseNet 应用前景

姿势估测存在多种用途。例如,开发者可根据人体图像增强现实、制作计算机图形人物动画以及为运动中的运动员分析步态。在 Google I/O 2019 大会上,TensorFlow Lite 展示了使用 PoseNet 模块帮助用户学习舞蹈的应用 Dance Like。借助这款示例应用,应用开发者和机器学习专家能够更轻松地探索轻量级移动模型的各种可能性。

PoseNet 示例应用

不同于用 Java 编写的现有 Andriod 应用,PoseNet 示例应用的开发采用 Kotlin 语言。开发此应用旨在让所有人都能以低成本轻松使用 PoseNet 模型。示例应用包含可消除模型复杂性的 PoseNet 库。下图展示应用、PoseNet 库 和 TensorFlow Lite 库之间的工作流。

PoseNet 应用工作流
PoseNet 应用工作流

PoseNet 库

PoseNet 库提供了一个接口,通过该接口接收经处理的相机图像,并返回人体关键部位所在位置的相关信息。此功能由 estimateSinglePose() 函数提供,该函数会在经处理的 RGB 位图上运行 TensorFlow Lite 解释器并返回 Person 对象。了解 PoseNet 输入和输出的含义

PoseNet 示例应用

PoseNet 示例应用是一种设备端相机应用,该应用可通过相机捕获帧,并实时覆盖图像上的关键点。针对每张传入的相机图像,该应用均会执行以下步骤:

  1. 从相机预览中捕获图像数据,并将其格式从 YUV_420_888 转换为 ARGB_888。
  2. 创建 Bitmap 对象,以保存 RGB 格式帧数据的像素。将 Bitmap 裁剪并缩放至可输入模块的尺寸,从而将其传入模块。
  3. 调用 PoseNet 库的 estimateSinglePose () 函数,以获取 Person 对象。
  4. 将 Bitmap 重新缩放至屏幕尺寸。在 Canvas 对象上绘制新 Bitmap。
  5. 使用通过 Person 对象获取的关键点位置,在画布上绘制骨架。显示可信度高于特定阈值(默认为 0.2)的关键点。

为使姿势渲染与相机帧同步,我们对输出显示使用单个 SurfaceView,而非分别对姿势与相机使用 View 实例。SurfaceView 会在 View 画布上进行捕获、锁定和绘制,从而确保在屏幕上实时显示画面。

发展蓝图

我们希望未来能为此示例应用开发更多功能,其中包括:

  • 多姿势估测
  • 使用 GPU 代理实现 GPU 加速
  • 使用 NNAPI 代理实现 NNAPI 加速
  • 使用模型的训练后量化降低延迟
  • 更多模型选项,例如 ResNet PoseNet 模型

GitHub地址项目 GitHub 地址

联合国教科文组织正式发布《北京共识 – 人工智能与教育》

近日,联合国教科文组织正式发布国际人工智能与教育大会成果文件《北京共识 – 人工智能与教育》。这是联合国教科文组织首个为利用人工智能技术实现 2030 年教育议程提供指导和建议的重要文件。

2019 年 5 月,中国政府与联合国教科文组织合作在北京举办国际人工智能与教育大会。会议以『规划人工智能时代的教育:引领与跨越』为主题。国家主席习近平为大会致贺信。国务院副总理孙春兰出席会议并致辞。来自全球 100 多个国家、10 余个国际组织的约 500 位代表共同探讨智能时代教育发展大计,审议并通过成果文件《北京共识》,形成了国际社会对智能时代教育发展的共同愿景。

《北京共识》以联合国6种官方语言发布,共 44 条,从智能时代的教育政策规划、教育管理和供给、教学教师、学习评价、价值观和技能、全民终身学习、公平包容的应用、性别平等、伦理、监测评估和研究以及筹资和国际合作等方面,分别对教科文组织会员国政府和利益攸关方、国际组织及合作伙伴、教科文组织总干事提出建议。

《北京共识》提出,各国要引领实施适当的政策应对策略,通过人工智能与教育的系统融合,全面创新教育、教学和学习方式,并利用人工智能加快建设开放灵活的教育体系,确保全民享有公平、适合每个人且优质的终身学习机会,从而推动可持续发展目标和人类命运共同体的实现。

《北京共识》强调,要采用人工智能平台和基于数据的学习分析等关键技术构建可支持人人皆学、处处能学、时时可学的综合型终身学习体系。要确保人工智能促进全民优质教育和学习机会,无论性别、残疾状况、社会和经济条件、民族或文化背景以及地理位置如何。

《北京共识》倡议,要支持对与新兴人工智能发展影响相关的前沿问题进行前瞻性研究,推动探索利用人工智能促进教育创新的有效战略和实践模式,以期构建一个在人工智能与教育问题上持有共同愿景的国际社会。

序言

1. 我们 —— 国际人工智能与教育大会与会者,包括 50 名政府部长和副部长、来自 100 多个会员国以及联合国机构、学术机构、民间社会和私营部门的约 500 名代表,于 2019 年 5 月 16 –18 日齐聚中国北京。我们衷心感谢联合国教育、科学及文化组织和中华人民共和国政府合作举办此次大会,以及北京市政府的热情欢迎和盛情款待。

2. 我们重申了《2030 年可持续发展议程》中的承诺,特别是可持续发展目标 4 及其各项具体目标,并讨论了教育和培训系统在实现可持续 发展目标 4 时所面临的挑战。我们致力于引领实施适当的政策应对策略,通过人工智能与教育的系统融合,全面创新教育、教学和学习方式,并利用人工智能加快建设开放灵活的教育体系,确保全民享有公平、适合每个人且优质的终身学习机会,从而推动可持续发展目标和人类命运共同体的实现。

3. 我们回顾 2015 年通过的关于利用信息通信技术(信通技术)实现可持续发展目标 4 的《青岛宣言》,其中指出必须利用新兴技术强化教育体系、拓展全民教育机会、提高学习质量和效果以及强化公平和更高效的教育服务供给;当我步入人工智能广泛应用的时代时,我们认识到重申并更新这一承诺的迫切需要。

4. 我们研究了人工智能演变的最新趋势及其对人类社会、经济和劳动力市场以及教育和终身学习体系的深远影响。我们审视了人工智能对于未来工作和技能养的潜在影响,并探讨了其在重塑教育、教学和学习的核心基础方面的潜力。

5. 我们认识到人工智能领域的复杂性和迅猛发展速度、对人工智能的多元化理解、宽泛的外延和各种差异较大的定义、以及在不同场景中的多样化应用及其引发的伦理挑战。

6. 我们还认识到人类智能的独特性。忆及《世界人权宣言》中确立的原则,我们重申联合国教科文组织在人工智能使用方面的人文主义取向,以期保护人权并确保所有人具备在生活、学习和工作中进行有效人机合作以及可持续发展所需的相应价值观和技能。

7. 我们还申明,人工智能的开发应当为人所控、以人为本;人工智能的部署应当服务于人并以增强人的能力为目的;人工智能的设计应合乎伦理、避免歧视、公平、透明和可审核;应在整个价值链全过程中监测并评估人工智能对人和社会的影响。

我们建议,联合国教科文组织会员国政府及其他利益攸关方根据其法律、公共政策和公共惯例,考虑实施以下行动,应对人工智能带来的相关教育机遇和挑战:

规划教育人工智能政策

8. 认识到人工智能的多学科特性及其影响;确保教育人工智能与公共政策特别是教育政策有机配合;采取政府全体参与、跨部门整合和多方协作的方法规划和治理教育人工智能政策;根据本地在实现可持续发展目标 4 及其具体目标以及其他可持续发展目标的工作中遇到的挑战,确定政策的战略优先领域。从终身学习的角度规划并制定与教育政策接轨和有机协调的全系统教育人工智能战略。

9. 意识到推行教育人工智能政策和工程的巨大投资需求。审慎权衡不同教育政策重点之间的优先级,确定不同的筹资渠道,包括国家经费(公共和私人)、国际资金和创新性的筹资机制。还要考虑到人工智能在合并和分析多个数据来源从而提高决策效率方面的潜力。

人工智能促进教育的管理和供给

10. 意识到应用数据变革基于实证的政策规划方面的突破。考虑整合或开发合适的人工智能技术和工具对教育管理信息系统(EMIS)进行升级换代,以加强数据收集和处理,使教育的管理和供给更加公平、包容、开放和个性化。

11. 还考虑在不同学习机构和学习场境中引入能够通过运用人工智能实现的新的教育和培训供给模式,以便服务于学生、教职人员、家长和社区等不同行为者。

人工智能赋能教学和教师

12. 注意到虽然人工智能为支持教师履行教育和教学职责提供了机会,但教师和学生之间的人际互动和协作应确保作为教育的核心。意识到教师无法被机器取代,应确保他们的权利和工作条件受到保护。

13. 在教师政策框架内动态地审视并界定教师的角色及其所需能力,强化教师培训机构并制定适当的能力建设方案,支持教师为在富含人工智能的教育环境中有效工作做好准备。

人工智能促进学习和学习评价

14. 认识到人工智能在支持学习和学习评价潜能方面的发展趋势,评估并调整课程,以促进人工智能与学习方式变革的深度融合。在使用人工智能的惠益明显大于其风险的领域,考虑应用现有的人工智能工具或开发创新性人工智能解决方案,辅助不同学科领域中明确界定的学习任务,并为开发跨学科技能和能力所需的人工智能工具提供支持。

15. 支持采用全校模式围绕利用人工智能促进教学和学习创新开展试点测试,从成功案例中汲取经验并推广有证据支持的实践模式。

16. 应用或开发人工智能工具以支持动态适应性学习过程;发掘数据潜能,支持学生综合能力的多维度评价;支持大规模远程评价。

培养人工智能时代生活和工作所需的价值观和技能

17. 注意到采用人工智能所致的劳动力市场的系统性和长期性变革,包括性别平等方面的动态。更新并开发有效机制和工具,以预测并确认当前和未来人工智能发展所引发的相关技能需求,以便确保课程与不断变化的经济、劳动力市场和社会相适应。将人工智能相关技能纳入中小学学校课程和职业技术教育与培训(TVET)以及高等教育的资历认证体系中,同时考虑到伦理层面以及相互关联的人文学科。

18. 认识到进行有效的人机协作需要具备一系列人工智能素养,同时不能忽视对识字和算术等基本技能的需求。采取体制化的行动,提高社会各个层面所需的本人工智能素养。

19. 制定中长期规划并采取紧急行动,支持高等教育及研究机构开发或加强课程和研究项目,培养本地人工智能高端人才,以期建立一个具备人工智能系统设计、编程和开发的大型本地人工智能专业人才库。

人工智能服务于提供全民终身学习机会

20. 重申终身学习是实现可持续发展目标4的指导方针,其中包括正规、非正规和非正式学习。采用人工智能平台和基于数据的学习分析等关键技术构建可支持人人皆学、处处能学、时时可学的综合型终身学习体系,同时尊重学习者的能动性。开发人工智能在促进灵活的终身学习途径以及学习结果累积、承认、认证和转移方面的潜力。

21. 意识到需要在政策层面对老年人尤其是老年妇女的需求给予适当关注,并使他们具备人工智能时代生活所需的价值观和技能,以便为数字化生活消除障碍。规划并实施有充足经费支持的项目,使较年长的劳动者具备技能和选择,能够随自己所愿保持在经济上的从业身份并融入社会。

促进教育人工智能应用的公平与包容

22. 重申确保教育领域的包容与公平以及通过教育实现包容与公平,并为所有人提供终身学习机会,是实现可持续发展目标 4 — 2030 年教育的基石。重申教育人工智能方面的技术突破应被视为改善最弱势群体受教育机会的一个契机。

23. 确保人工智能促进全民优质教育和学习机会,无论性别、残疾状况、社会和经济条件、民族或文化背景以及地理位置如何。教育人工智能的开发和使用不应加深数字鸿沟,也不能对任何少数群体或弱势群体表现出偏见。

24. 确保教学和学习中的人工智能工具能够有效包容有学习障碍或残疾的学生,以及使用非母语学习的学生。

性别公平的人工智能和应用人工智能促进性别平等

25. 强调数字技能方面的性别差距是人工智能专业人员中女性占比低的原因之一,且进一步加剧了已有的性别不平等现象。

26. 申明我们致力于在教育领域开发不带性别偏见的人工智能应用程序,并确保人工智能开发所使用的数据具有性别敏感性。同时,人工智能应用程序应有利于推动性别平等。

27. 在人工智能工具的开发中促进性别平等,通过提升女童和妇女的人工智能技能增强她们的权能,在人工智能劳动力市场和雇主中推动性别平等。

确保教育数据和算法使用合乎伦理、透明且可审核

28. 认识到人工智能应用程序可能带有不同类型的偏见,这些偏见是训练人工智能技术所使用和输入的数据自身所携带的以及流程和算法的构建和使用方式中所固有的。认识到在数据开放获取和数据隐私保护之间的两难困境。注意到与数据所有权、数据隐私和服务于公共利益的 数据可用性相关的法律问题和伦理风险。注意到采纳合乎伦理、注重隐私和通过设计确保安全等原则的重要性。

29. 测试并采用新兴人工智能技术和工具,确保教师和学习者的数据隐私保护和数据安全。支持对人工智能领域深层次伦理问题进行稳妥、长期的研究,确保善用人工智能,防止其有害应用。制定全面的数据保 护法规以及监管框架,保证对学习者的数据进行合乎伦理、非歧视、公平、透明和可审核的使用和重用。

30. 调整现有的监管框架或采用新的监管框架,以确保负责任地开发和使用用于教育和学习的人工智能工具。推动关于人工智能伦理、数据隐私和安全相关问题,以及人工智能对人权和性别平等负面影响等问题的研究。

监测、评估和研究

31. 注意到缺乏有关人工智能应用于教育所产生影响的系统性研究。支持就人工智能对学习实践、学习成果以及对新学习形式的出现和验证产生的影响开展研究、创新和分析。采取跨学科办法研究教育领域的人工智能应用。鼓励跨国比较研究及合作。

32. 考虑开发监测和评估机制,衡量人工智能对教育、教学和学习产生的影响,以便为决策提供可靠和坚实的证据基础。

我们建议活跃在这一领域的国际组织和伙伴考虑实施下列行动:

筹资、伙伴关系和国际合作

33. 基于各国自愿提交的数据,监测并评估各国之间人工智能鸿沟和人工智能发展不平衡现象,并且注意到能够获取使用和开发人工智能和无法使用人工智能的国家之间两极分化的风险。重申解决这些忧虑的重要性,并特别优先考虑非洲、最不发达国家、小岛屿发展中国家以及受冲突和灾害影响的国家。

34. 在『2030 年教育』的全球和地区架构范围内,协调集体行动,通过分享人工智能技术、能力建设方案和资源等途径,促进教育人工智能的公平使用,同时对人权和性别平等给予应有的尊重。

35. 支持对与新兴人工智能发展影响相关的前沿问题进行前瞻性研究,推动探索利用人工智能促进教育创新的有效战略和实践模式,以期构建一个在人工智能与教育问题上持有共同愿景的国际社会。

36. 确保国际合作有机配合各国在教育人工智能开发和使用以及跨部门合作方面的需求,以便加强人工智能专业人员在人工智能技术开发方面的自主性。加强信息共享和有良好前景应用模式的交流,以及各国之间的协调和互补协作。

37. 通过联合国教科文组织移动学习周等方式并借助其他联合国机构,为各国之间交流有关教育人工智能领域的监管框架、规范文本和监管方式提供适当的平台,从而支持在发掘人工智能潜力促进可持续发展目标4方面开展南南合作和北南南合作,并从中受益。

38. 建立多利益攸关方伙伴关系并筹集资源,以便缩小人工智能鸿沟,增加对教育人工智能领域的投资。

我们请联合国教科文组织总干事努力实施下列行动:

39. 建立一个『人工智能服务于教育』的平台,作为开源人工智能课程、人工智能工具、教育人工智能政策实例、监管框架和最佳做法的信息交流中心,以期推动利用人工智能促进可持续发展目标4,支持就教育和学习的未来开展辩论,并使开源人工智能资源和课程向所有人开放。

40. 在与会员国开展咨询的基础上制定教育人工智能指导纲要并开发资源,以支持会员国制定促进教育领域有效和公平应用人工智能的政策和战略。支持对教育政策制定者的相关能力建设。

41. 通过强化相关部门及处室并动员联合国教科文组织的机构和网络,加强联合国教科文组织在教育人工智能领域的引领作用。

42. 支持将人工智能技能纳入教师信通技术能力框架,支持各国就教职人员如何在富含人工智能的教育环境下工作开展培训。

43. 在教育人工智能方面,进一步扩大联合国教科文组织与相关联合国机构和多边合作伙伴、地区开发银行和组织以及私营部门的合作。

44. 此次大会之后,采取适当的地区和国际性后续行动,与活跃在这一领域的发展伙伴合作,巩固并扩大本共识的影响。

TensorFlow VS. PyTorch V2

此前,跨象乘云™ 发布过《TensorFlow VS. PyTorch》 —— 谷歌的 Tensorflow 与 Facebook 的 PyTorch 一直是颇受社区欢迎的两种深度学习框架。那么究竟哪种框架最适宜自己手边的深度学习项目呢?本文作者从这两种框架各自的功能效果、优缺点以及安装、版本更新等诸多方面给出了自己的建议。如果你在读这篇文章,那么你可能已经开始了自己的深度学习之旅。如果你对这一领域还不是很熟悉,那么简单来说,深度学习使用了「人工神经网络」,这是一种类似大脑的特殊架构,这个领域的发展目标是开发出能解决真实世界问题的类人计算机。为了帮助开发这些架构,谷歌、Facebook 和 Uber 等科技巨头已经为 Python 深度学习环境发布了多款框架,这让人们可以更轻松地学习、构建和训练不同类型的神经网络。本文将详细介绍和比较两种流行的框架: TensorFlow 与 PyTorch。

谷歌的 TensorFlow

TensorFlow 是谷歌的开发者创造的一款开源的深度学习框架,于 2015 年发布。官方研究发布于论文《TensorFlow:异构分布式系统上的大规模机器学习》。TensorFlow 现已被公司、企业与创业公司广泛用于自动化工作任务和开发新系统,其在分布式训练支持、可扩展的生产和部署选项、多种设备(比如安卓)支持方面备受好评。

Facebook 的 PyTorch

PyTorch 是最新的深度学习框架之一,由 Facebook 的团队开发,并于 2017 年在 GitHub 上开源。有关其开发的更多信息请参阅论文《PyTorch 中的自动微分》。PyTorch 很简洁、易于使用、支持动态计算图而且内存使用很高效,因此越来越受欢迎。接下来还会更详细地介绍。

我们可以用 TensorFlow 和 PyTorch 构建什么?

神经网络起初是被用于解决手写数字识别或用相机识别汽车注册车牌等简单的分类问题。但随着近来框架的发展以及英伟达高计算性能图形处理单元(GPU)的进步,我们可以在 TB 级的数据上训练神经网络并求解远远更加复杂的问题。一个值得提及的成就是在 TensorFlow 和 PyTorch 中实现的卷积神经网络在 ImageNet 上都达到了当前最佳的表现。训练后的模型可以用在不同的应用中,比如目标检测、图像语义分割等等。

尽管神经网络架构可以基于任何框架实现,但结果却并不一样。训练过程有大量参数都与框架息息相关。举个例子,如果你在 PyTorch 上训练一个数据集,那么你可以使用 GPU 来增强其训练过程,因为它们运行在 CUDA(一种 C++ 后端)上。TensorFlow 也能使用 GPU,但它使用的是自己内置的 GPU 加速。因此,根据你所选框架的不同,训练模型的时间也总是各不相同。

TensorFlow 顶级项目

  • Magenta:一个探索将机器学习用作创造过程的工具的开源研究项目
  • Sonnet:这是一个基于 TensorFlow 的软件库,可用于构建复杂的神经网络
  • Ludwig:这是一个无需写代码就能训练和测试深度学习模型的工具箱

PyTorch 顶级项目

  • CheXNet:使用深度学习来分析胸部 X 光照片,能实现放射科医生水平的肺炎监测
  • PYRO:这是一种用 Python 编写的通用概率编程语言(PPL),后端由 PyTorch 支持
  • Horizon:一个用于应用强化学习(Applied RL)的平台

这些只是基于 TensorFlow 和 PyTorch 构建的少量框架和项目。你能在 TensorFlow 和 PyTorch 的 GitHub 和官网上找到更多。

PyTorch 和 TensorFlow 对比

PyTorch 和 TensorFlow 的关键差异是它们执行代码的方式。这两个框架都基于基础数据类型张量(tensor)而工作。你可以将张量看作是下图所示的多维数组。

多维数组
多维数组

机制:动态图定义与静态图定义

TensorFlow 框架由两个核心构建模块组成:

  • 一个用于定义计算图以及在各种不同硬件上执行这些图的运行时间的软件库。
  • 一个具有许多优点的计算图(后面很快就会介绍这些优点)。

计算图是一种将计算描述成有向图的抽象方式。图是一种由节点(顶点)和边构成的数据结构,是由有向的边成对连接的顶点的集合。

当你在 TensorFlow 中运行代码时,计算图是以静态方式定义的。与外部世界的所有通信都是通过 tf.Sessionobject 和 tf.Placeholder 执行,它们是在运行时会被外部数据替换的张量。例如,看看以下代码段:

近期 Keras 被合并到了 TensorFlow 库中,这是一个使用 TensorFlow 作为后端的神经网络框架。从那时起,在 TensorFlow 中声明层的句法就与 Keras 的句法类似了。首先,我们声明变量并将其分配给我们将要声明的架构类型,这里的例子是一个 Sequential() 架构。

接下来,我们使用 model.add() 方法以序列方式直接添加层。层的类型可以从 tf.layers 导入,如下代码片段所示:

TensorFlow 和 PyTorch 的优缺点

TensorFlow 和 PyTorch 各有其优缺点。

TensorFlow 的优点:

  • 简单的内置高级 API
  • 使用 TensorBoard 可视化训练
  • 通过 TensorFlow serving 容易实现生产部署
  • 很容易的移动平台支持
  • 开源
  • 良好的文档和社区支持

TensorFlow 的缺点:

  • 静态图
  • 调试方法
  • 难以快速修改

PyTorch 的优点

  • 类 Python 的代码
  • 动态图
  • 轻松快速的编辑
  • 良好的文档和社区支持
  • 开源
  • 很多项目都使用 PyTorch

PyTorch 的缺点:

  • 可视化需要第三方
  • 生产部署需要 API 服务器

TensorFlow 还是 PyTorch?

PyTorch 和 TensorFlow 近期都发布了新版本:PyTorch 1.0(首个稳定版)和 TensorFlow 2.0(beta 测试版)。这两个版本都有重大的更新和新功能,让训练过程更高效、流畅和强大。

如果你要在自己的机器上安装这些框架的最新版,你可以用源代码 build 或通过 pip 安装。

TensorFlow 是一种非常强大和成熟的深度学习库,具有很强的可视化功能和多个用于高级模型开发的选项。它有面向生产部署的选项,并且支持移动平台。另一方面,PyTorch 框架还很年轻,拥有更强的社区动员,而且它对 Python 友好。

建议是:如果你想更快速地开发和构建 AI 相关产品,TensorFlow 是很好的选择。建议研究型开发者使用 PyTorch,因为它支持快速和动态的训练。

DeepMind 强化学习框架:覆盖28款游戏,24类算法

近日,DeepMind 开源了史上最全强化学习框架 OpenSpiel

在这个框架中,实现了 28 款可用于研究强化学习的棋牌类游戏和 24 个强化学习中常用的算法,DeepMind 的成名作 AlphaGo 的基础算法也在其列。

此外,还包括用于分析学习动态和其他常见评估指标的工具。更关键的是,OpenSpiel 适用人群也非常广泛。它的核心 API 和游戏用 C++ 实现,并提供了 Python API,可用于更高级别的机器学习,优化和强化学习。这些语言也可以很容易地组合在一起。而且,代码的一个子集也已经使用 Swift for Tensorflow 直接移植到了 Swift 进行学习和推理,不需要跨语言操作。

目前,在 OpenSpiel 中实现的算法一共有 24 种,分别是:

极小化极大(Alpha-beta剪枝)搜索、蒙特卡洛树搜索、序列形式线性规划、虚拟遗憾最小化(CFR)、Exploitability、外部抽样蒙特卡洛 CFR、结果抽样蒙特卡洛CFR、Q-learning、价值迭代、优势动作评论算法(Advantage Actor Critic,A2C)、Deep Q-networks (DQN)、短期价值调整(EVA)、Deep CFR、Exploitability 下降(ED) 、(扩展形式)虚拟博弈(XFP)、神经虚拟自博弈(NFSP)、Neural Replicator Dynamics(NeuRD)、遗憾策略梯度(RPG, RMPG)、策略空间回应oracle(PSRO)、基于Q的所有行动策略梯度(QPG)、回归 CFR (RCFR)、PSROrN、α-Rank、复制/演化动力学。

Spiel 意指桌面游戏。因此,OpenSpiel 中的环境就是相关棋牌类游戏。一共有 28 款:

双陆棋、突围棋、定约桥牌、Coin Game、屏风式四子棋、协作推箱子、国际象棋、第一价格密封拍卖、围棋、Goofspiel(一种多玩家纸牌游戏)、三宝棋、六贯棋、Kuhn 扑克、Leduc 扑克、大话骰、Markov Soccer、配对硬币(3人游戏)、矩阵游戏、Oshi-Zumo、西非播棋、转盘五子棋、Phantom 三连棋、Pig 游戏、三连棋、Tiny Bridge、Y(一种棋类游戏)、Catch(仅支持Python)、Cliff-Walking在悬崖边走的醉汉(仅支持Python)。

GitHub地址项目 GitHub 地址

如何阅读一份深度学习项目代码?

搞深度学习的人,两大必备日常除了读论文之外就是读代码。读论文笔者在第 4 问的时候讲了阅读路线,但如何读用什么技巧读每个人都有不同的见解,这里不多说。读代码跟读论文、读书多少有相似的地方,毕竟都是读的性质。但话又说回来,读代码又跟读 paper 读书大有不同,代码是一种将论文中的模型和算法进行实现的过程,是一种需要你思维时刻在线的过程。又因为我们读的是深度学习项目代码,不是像 Linux 内核代码那样的鸿篇巨制,所以在代码性质上多少又有些不同。

笔者这里说的一份深度学习项目代码,小到几百行的测试 demo ,大到成千万行的开源项目,读起来方法肯定各有不同。如下图 Mask R-CNN 项目代码和 PyTorch 源码的对比:

Mask R-CNN
Mask R-CNN
PyTorch
PyTorch

可以看到,Mask R-CNN 作为一个经典的实例分割框架,其代码量可以说是中规中矩,3k 的代码量在我们读完论文后集中花几天时间差不多可以过一遍。但 PyTorch 的源码对大多数人而言就不那么友善了,750k 的代码量,而且底层的 C++代码占到整个项目中的一半之多,作为深度学习研究而言,堪称巨无霸级别了。这样的代码量,就像初学者拿到一本 PRML ,往往投入巨大精力后不了了之。所以,对于这两种类型的项目代码,阅读方法肯定会有所区别。

因为我们读代码的目的、场景和对象不尽相同,下面笔者从三个方面来和大家探讨如何阅读一份深度学习项目代码。

首先读代码的一些通用方法。这一点而言不局限于深度学习项目代码,任何项目、任何语言的代码阅读都适用。我们日常读代码无非是两个工具,一是将代码下载到本地,打开 IDLE ,在 IDLE 里安静的阅读:

IDLE
IDLE

第二个就是直接在 GitHub 的 web 端直接阅读,但 GitHub 没有像编辑器那样在左侧设置阅读目录,每次进入一个代码文件就必须退出来才能进入另一个文件,用户体验极差。当然了,这都不是事。chrome 给我们提供了 Octotree 这样的辅助阅读插件,直接在 chrome 扩展程序里搜索安装即可。

Octotree
Octotree

安装后我们就可以直接在 web 端就有 IDLE 读代码的体验:

IDLE读代码的体验
IDLE读代码的体验

可以看到在页面左侧有一个类似 IDLE 的目录栏,大大方便了我们查看和阅读项目代码。这是通用方法中的工具层面,我们再来看一些基本的阅读规矩。有了 IDLE 和 Octotree 工具,我们第一点一定是仔细看代码目录,对整个项目代码结构和分布有一个整体的认识,对于深度学习而言通常目录中各个模块相对比较固定,比如是 models 目录下放着模型搭建和训练的代码,conifg 目录下放着模型的一些配置文件,data   目录下放着项目所使用的数据信息等等。如下面语义分割项目的目录结构:

IDLE的目录栏
IDLE的目录栏

对深度学习项目代码的结构熟络之后,读的多了自然就会轻车熟路起来,后面阅读效率也就提高了。

通用方法的第二个是快速找到 readme 文档。通常来说,根目录下的 readme 文档包含了这份代码的使用方法,里面有可以让你快速了解这个项目的关键信息。一般来说,开源项目的 readme 里作者都会写明如何使用代码和进行部署。下图是 DenseNet 的 readme 文档:

DenseNet的readme文档
DenseNet的readme文档

对于大型项目,可能每一个子目录下都有 readme 文档,这都是我们需要仔细阅读的部分,作者把关键信息都放里面了。所以不管这样,第一时间读找到 readme 进行阅读是你了解该项目的必备步骤和通用方法。

第三个通用方法就是具体如何读的问题。就是我们得确定一个阅读主线。这一点是针对于深度学习项目代码的通用方法,对于一个深度学习项目,我们一般想要了解的最关键点无非就是数据、模型和如何训练等几个方面。如果你想快速看看这个开源项目的测试效果,直接读 readme 看使用方法即可。如果这个项目作者提出了一个新的模型框架,比如说 bert,你想了解它的模型框架细节,直接定位到 models 目录下的带有 model 字眼的.py 文件开始读。或者是你想看这个项目是如何训练的,都用了哪些训练的 tricks ,它的参数初始化是如何做的,batchsize 用的多大,训练过程中学习率如何调整的等等,那么话不多说,直接定位到带 train 的.py 文件即可。如下图 faster-rcnn 的 3 个训练文件。

faster-rcnn的3个训练文件
faster-rcnn的3个训练文件

根据目的不管是 model 还是 train 的主线,在阅读过程中一定会涉及到其他分支,比如说数据和配置等其他分支线。在主线阅读过程中不断完善对分支的理解,久而久之,一个完整的项目就会被你消化了。

以上说的是深度学习项目代码阅读的一些通用方法。下面再具体讲两个场景的代码阅读。毕竟大家做事讲究目的性,往往带有较强的目的性去做某事效率一般会特别高。

第一个场景是在大家做研究做项目时遇到问题时。不知道这个问题如何解决,直接谷歌又找不到好合适的方法的时候。这时候我们可能会寄希望于在 GitHub 上搜罗一番。比如说我们想要知道对于极度数据不平衡时如何给损失函数加权重的方法,再比如对于多标签问题进行模型预测时如何找到最佳分类阈值等等。这些问题都是我们在做实际项目时都可能会碰上的,在这种情况下若是能在 GitHub 上找到类似场景的处理方法,相信你会瞬间来了精神。

下述基于 keras 的 CNN 多标签分类项目对于多标签分类阈值寻优使用了 matthews_corrcoef 来确定最佳分类预测阈值。至于什么是 matthews_corrcoef ,这些都是你在解决问题过程中需要学习和吸收的地方。总之,带有目的性的读某个项目的代码往往是只读某个 block 甚至是某几个关键行,数量不在多,在于能够解决你的问题。

matthews_corrcoef
matthews_corrcoef

第二个场景就是为了自我个人精进的读代码。所谓个人精进,就是有大量可支配的个人学习和研究时间,高度的自律性和超强的学习力的人进行能力跃迁的关键所在。笔者虽然平时偶尔会有去 GitHub 读一些代码,但说要达到个人精进的 level ,还远远不够。比如说前面的 PyTorch 750k 的源码,这么大的代码量,阅读策略一定是分治思想,分散包围和各个击破。把项目进行分解,设定阅读计划和目标,在超强的执行力下还是有可能完成的。这不是普通人干的事,但我相信能在深度学习领域精进的人都不会是普通人。

自我个人精进的读代码
自我个人精进的读代码

诚然,无论是读教材、读论文还是本篇所说的读代码,这些本身都是一个个人学习能力提升和知识汲取的过程。对于从事深度学习工作的我们而言,arxiv 上的论文和 GitHub 上的代码都无穷尽,关键在于保持学习的劲头,做一名终身学习者。

GitHub地址项目 GitHub 地址

最新《机器学习优化》教程

一、资源简介

普林斯顿大学在 19 年开设了 COS 598D《机器学习优化》课程的讲义,这个课程主要介绍机器学习中出现的优化问题,以及解决这些问题的有效算法。这份讲义内容详实循序渐进,非常适合想要入门机器学习优化的同学阅读。

官网:
https://sites.google.com/view/optimization4machinelearning/home

作者简介:
Elad Hazan :普林斯顿大学计算机系的教授,重点研究机器学习和优化的基本问题。曾获得贝尔实验室奖、2012 年和 2008 年 IBM 哥德堡最佳论文奖、欧洲研究理事会奖、居里夫人奖和谷歌研究奖。曾担任计算学习协会指导委员会委员,并担任 COLT 2015 项目主席。2017 年,创立了专注于高效优化与控制的In8 inc,并于 2018 年被谷歌收购。普林斯顿大学商学院的联合创始人和联合董事。

二、主要内容

下面是这份讲义的主要目录:

  1. 介绍
  2. 优化和分析的基本概念
  3. 随机梯度下降法
  4. 泛化和非光滑优化
  5. 正则化
  6. 自适应正则化
  7. 方差减少
  8. Nesterov加速度(Nesterov Acceleration)
  9. 条件梯度法
  10. 机器学习的二阶方法
  11. Hyperparameter优化(Hyperparameter Optimization)

GAN 图像转换

一、资源简介

来自 MIT 的 Phillip Isola 在 2019 CVPR 上分享的图像转换(Image translation)的关键知识点和算法分析,包括配对的转换(Paired translation)和非配对的转换(Unpaired translation)相关的算法,如 pix2pix,CycleGAN 等。

图像转换
图像转换

官网:https://phillipi.github.io/talks/im2im_tutorial_cvpr2019.pdf

作者介绍:Phillip Isola:麻省理工学院 EECS 的助理教授,研究计算机视觉、机器学习和人工智能。在 OpenAI 做了一年的访问研究科学家,加州大学伯克利分校 EECS 系的 Alyosha Efros 的博士后学者,在麻省理工学院 (MIT) 完成了大脑与认知科学的博士学位,导师是特德•埃德森 (Ted Adelson) ,在耶鲁大学获得了计算机科学的本科学位。

二、主要内容

这份资料主要讲述的是 GAN 模型在图像风格迁移上面的应用,具体来说:
生成对抗网络(Generative Adversarial Network,简称 GAN)是非监督式学习的一种方法,通过让两个神经网络相互博弈的方式进行学习。于 2014 年提出,生成对抗网络由一个生成网络与一个判别网络组成。生成网络从潜在空间(latent space)中随机取样作为输入,其输出结果需要尽量模仿训练集中的真实样本。判别网络的输入则为真实样本或生成网络的输出,其目的是将生成网络的输出从真实样本中尽可能分辨出来。而生成网络则要尽可能地欺骗判别网络。两个网络相互对抗、不断调整参数,最终目的是使判别网络无法判断生成网络的输出结果是否真实

图像到图像的转换(image-to-image translation)是一类视觉和图形问题,其中的目标是使用一组对齐的图像对来学习输入图像和输出图像之间的映射。随着 GAN 技术的发展,GAN 在图像转换任务上的方法越来越多。

image-to-image translation
image-to-image translation
BW -Color
BW – Color

IBM 开源三个抗癌 AI 项目

项目地址:

https://www.techzine.be/nieuws/41092/ibm-maakt-drie-ai-projecten-gericht-op-kankeronderzoek-opensource.html

近日,IBM 向开源社区发布了三个旨在克服治愈癌症的 AI 项目。在本月晚些时候将在瑞士举行的第 18 届欧洲计算生物学大会(ECCB)和第 27 届分子生物学智能系统大会(ISMB)上,将会深入介绍PaccMann 项目。

2018 年,癌症导致全球 960 万人死亡,此外,同年增加了 1800 多万新的癌症病例。IBM 计算系统生物学小组的研究人员已经开始研究基于 AI 和机器学习的方法,通过它们帮助我们快速了解这些诱导这些癌症的主要因素和分子机制,除此之外,重点还在于提高对肿瘤的构成认知。

通过遗传,污染,吸烟和饮食方面的倾向都被认为是引发癌症的可能性因素,但仍然还有许多需要去探索的因素,IBM 表示:我们的目标是加深对癌症的理解,以便有朝一日我们能够为行业和学术界提供新的治疗方向或知识。

此次 IBM 开源的三个项目如下:

1、PaccMann

PaccMann 项目旨在利用基于注意力的多模式神经网络来预测抗癌化合物的敏感性,ML 算法自动分析化合物并预测最有可能对抗癌症菌株的化合物。

PaccMann
PaccMann

该算法使用基因表达数据和化合物的分子结构。IBM 表示,早期识别潜在的抗癌化合物可能会降低药物开发的成本。目前开发单一药物治疗癌症就需花费数百万美元,正是因为这高昂的研发成本阻碍了我们开发新药物和疗法的步伐。(地址:https://www.zurich.ibm.com/paccmann/

2、INtERAcT

INtERAcT
INtERAcT

INtERAcT 能够帮助研究人员从大量的科学文献中自动提取有价值的数据。每年在癌症研究领域出版约17,000种出版物,研究人员做不到一一阅读这些内容,INtERAcT 目前正在测试提取与蛋白质 – 蛋白质相互作用的相关数据,该研究领域,已被确定为包括癌症在内的多种疾病中生物过程中断的可能因素。(地址:https://www.zurich.ibm.com/interact/

3、PIMKL

PIMKL
PIMKL

第三个项目 PIMKL 是一种使用数据集的算法,该算法利用描述我们目前在分子相互作用方面的数据集,以此来预测癌症的进展和患者复发的可能,这是多核学习的一种,可以识别分子路径,这对于患者分类至关重要,可以为医疗保健专业人士提供个性化和调整治疗计划的方案。(地址:https://www.zurich.ibm.com/pimkl/

以上这三个项目都已经开源,PaccMann 和 INtERAcT 的开源代码可以在各自的官网中找到,PIMKL 已部署在 IBM 云上,源代码也已发布。

神经网络「黑盒子」的正确打开方式!

现代神经网络经常被吐槽为「黑盒子」。尽管它们在各类问题上都取得了成功,但我们仍无法直观地理解它们是如何在内部做出决策的。随着人工智能系统被应用到更多重要的场景中,更好地了解其内部决策过程将有助于研究者能够及时发现其中的缺陷和错误。对此,谷歌 AI 研究院与 OpenAI 一起合作提出了能够弄清这个「黑盒子」里面到底有什么的新方法——激活图集。谷歌在博客上发布文章介绍了这一意义重大的成果 ——

神经网络已成为图像相关计算任务中的实际标准,目前已被部署在多种场景中:从自动标记图像库中的照片到自动驾驶系统,我们都能看到神经网络的身影。鉴于机器学习系统的在执行方面的准确性比不使用机器学习、直接由人为设计的系统更好,机器学习系统开始变得无处不在。但是,由于这些系统所了解的基本信息都是在自动训练过程中学习到的,因此我们对于网络处理其给定任务的整个过程的了解,有时仍然隔着一层纱。

近期,经过与 OpenAI 同事的通力合作,我们在发表的《用激活图集探索神经网络》论文中(「Exploring Neural Networks with Activation Atlases」,论文地址:https://distill.pub/2019/activation-atlas)论文中,描述了一种新技术,旨在帮助回答「给定一张图像时,图像分类的神经网络能“看到”什么」的问题。

激活图集提供了一种融入卷积视觉网络的新方法,为网络的隐藏层内部提供了一个全局的、层级化和可解释的概念综述。我们认为,激活图集揭示了机器针对图像学到的字母表,即一系列简单、基础的概念,它们被组合并重组进而形成更复杂得多的视觉概念。同时,我们还开源了部分 jupyter notebooks 的代码,以期帮助开发者们开始制作自己的激活图集。

下面显示的激活图集是根据在 ImageNet 数据集上训练的卷积图像分类网络 Inceptionv1 构建的。通常,给分类网络输入一张图像,然后令其标记出该图像属于 1000 个预定类别中的哪一类,例如「意大利面」,「通气管」或「煎锅」。为此,我们通过一个约十层的网络来评估图像数据,该网络每层由数百个神经元组成,且对于不同类型的图块,每个神经元在图像块的激活程度不同。某层中的一个神经元可能对「狗耳朵」图像块的激活程度更大,而另一层的另一个神经元可能会对高对比度的「垂直线」图像更敏感。

我们从一百万张图像的神经网络的每个层中收集到了内部激活图,并构建了一套激活图集。这些激活图由一组复杂的高维向量表示,通过 UMAP 投影到有用的二维布局中,其中 UMAP 是一种保持原始高维空间局部结构的降维技术。

这就需要组织激活向量,并且因为激活图太多而无法一目了然,所以我们也需要将它们整合成一个更易于管理的数量。为此,我们在之前创建的 2D 布局上提前绘制好了网格。对于网格中的每个单元格,我们对位于其边界内的所有激活取均值,并使用特征可视化来创建图标表示。

激活图集
激活图集
左:通过网络输入一组一百万张随机图像,每个图像收集一个随机空间激活图。中间:通过 UMAP 提供激活以将其降维到二维。然后绘制,相似的激活图彼此临近。右:然后我们绘制一个网格,对一个单元格内的激活取均值,并对平均激活做特征转置。

下面我们可以看到仅一层神经网络的激活图集(请记住,这些分类模型可以有六个或更多层)。它显示了在该层,网络在做图像分类时学到的一般视觉概念。这张图集第一眼看上去气势如虹——感觉很多东西在一起涌过来!这种多样性反映了模型所演化出来的各种视觉抽象和概念。

总览多层
总览多层
总览多层(mixed4c)Inceptionv1 网络中其中一层的的激活图集。它大约是整个网络的一半。
植物的探测器
植物的探测器
在这个细节中,我们可以看到不同类型的叶子和植物的探测器
湖泊和沙洲探测器
湖泊和沙洲探测器
在这里,我们可以看到不同的水,湖泊和沙洲探测器。
建筑物和桥梁
建筑物和桥梁
在这里,我们看到不同类型的建筑物和桥梁。

正如我们前面提到的,该网络中还有更多层。让我们看一下这个层之前的层,并深入网络中探索视觉概念是如何变得更加细化的(每个层在前一层的激活顶部构建其激活)。

「哺乳动物」区域
「哺乳动物」区域
在前面的一层——mixed4a 中,有一个模糊的「哺乳动物」区域。
水果和食物
水果和食物
通过网络的下一层,mixed4b,动物和人类已被分离开,中间出现了一些水果和食物。
通过层 mixed4c
通过层 mixed4c
通过层 mixed4c,这些概念被进一步细化并区分为小「半岛」。

在这里,我们已经看到了从一层发展到另一层的全局构架,但每个概念在层的发展过程中也变得更加具体和复杂。如果我们聚焦于有助于特定分类的三层区域,比如「白菜」,我们可以清楚地看到这一点。

三层区域
三层区域
左图:与其他图层相比,这个早期图层发特征非常不突出。中心:在中间层,图像完全与叶子类似,但它们可以是任何类型的植物。右图:在最后一层,图像非常明显像卷心菜,它们的叶子弯曲成圆形球。

这里还有另一个值得注意的现象:当你从一层到另一层移动时,不仅概念被细化,还会出现旧概念组合之外的新概念。

mixed4c mixed5b 进行对比
mixed4c mixed5b 进行对比

您可以看到,在 mixed4c(左和中)中,沙子和水是完全不同的概念,两者都有被分类为「沙洲」的明显属性。将其与后一层(右),mixed5b 进行对比,以上两种概念似乎被融合为了一个激活图。

除了放大特定图层整个激活图集的某些区域外,我们还可以在 ImageNet 中仅为 1000 个类中的一类创建特定图层的图集。下面将展示网络分类任务中的常用概念和探测器,例如「红狐狸」。

「红狐狸」
「红狐狸」
这里,我们可以更清楚地看到网络正在用什么标准来分类「红狐狸」。他们有尖尖的耳朵,被红色的皮毛包围的白色嘴鼻,以及繁茂树木或雪域的背景。
「瓦屋顶」
「瓦屋顶」
这里,我们可以看到「瓦屋顶」探测器的许多不同尺度和角度。
「野山羊」
「野山羊」
对于「野山羊」,我们看到了角和棕色皮毛的探测器,还有我们可能会发现这些动物的环境,如岩石山坡。
「朝鲜蓟」
「朝鲜蓟」
像瓦片屋顶的探测器一样,「朝鲜蓟」也有许多不同大小的探测器,用于探测朝鲜蓟的纹理,但我们也有一些紫色的花探测器,它们可能是检测朝鲜蓟植物的花朵。

这些图集不仅揭示了模型中细微的视觉抽象概念,而且还揭示了高层次的误解。例如,通过查看「大白鲨」的激活图集,我们可以看到水和三角形的鳍(正如预期的那样),但我们也会看到看起来像棒球的东西。这暗示了这个研究模型所采用的捷径,它将红色棒球与大白鲨的张开嘴混合在一起。

「大白鲨」
「大白鲨」
我们可以用棒球图像的补丁来测试这一点,以将模型的特定图像的分类从「灰鲸」切换为「大白鲨」。
从「灰鲸」切换为「大白鲨」
从「灰鲸」切换为「大白鲨」

我们希望激活图集能成为一种使机器学习更易于理解且解释性更强的技术的有用工具。为了帮助开发者入门,我们还发布了部分 jupyter notebooks 代码(https://github.com/tensorflow/lucid#activation-atlas-notebooks),通过单击 colab(https://colab.research.google.com/) 就能立即在浏览器中执行程序。它们创建的基础就是之前发布的工具包 Lucid,其中包括了许多其他可解释性可视化技术的代码。很期待各位能有所发现!

via:https://ai.googleblog.com/2019/03/exploring-neural-networks.html