TensorFlow 支持 Unicode 编码

TensorFlow 现在可以支持 Unicode,这是一种标准编码系统,可以表示几乎所有语言的字符。处理自然语言时,了解字符的编码方式非常重要。在像英语这样的小字符集的语言中,每个字符都可以使用 ASCII 进行表示。但是这种方法对于其他语言来说并不实用,例如中文,这些语言有数千个字符。即使处理英文文本,Emojis 等特殊字符也不能用 ASCII 表示。

定义字符及其编码的最常用标准是 Unicode,它几乎支持所有语言。对于 Unicode,每个字符使用唯一的整数 code point 表示,其值介于 0 和 0x10FFFF 之间。当按顺序放置 code point 时,将形成 Unicode 字符串。

Unicode Tutorial Colab 展示了如何在 TensorFlow 中表示 Unicode 字符串。使用 TensorFlow 时,有两种标准方式来表示 Unicode 字符串:

  • 作为整数向量,其中每个位置包含单个 code point
  • 作为字符串,使用字符编码将 code point 序列编码到字符串中。有许多字符编码,其中一些最常见的是 UTF-8,UTF-16 等

270 GB 阿里巴巴数据中心数据开放下载

  • 数据中心每个机器的运行情况如何?
  • 这些机器上运行着什么样的应用?
  • 这些应用有什么特点?

对于这些问题,除了少数资深从业者之外,普通学生和企业的研究者很难了解其中细节。

为了让有兴趣的学生以及相关研究人员,可以从数据上更加深入地理解大规模数据中心,我们特别发布了这份数据集(Alibaba Cluster Data V2018)。数据集中记录了某个生产集群中服务器以及运行任务的详细情况。我们希望这波数据的发布可以拉近我们与学术研究、业界同行之间的距离。

在数据集中,你可以详细了解到我们是如何通过混部把资源利用率提高到 45%;我们每天到底运行了多少任务;以及业务的资源需求有什么特点。如何使用这份数据集,完全取决于你的需要。

GitHub地址项目 GitHub 地址

PDF 数据表格提取神器

Excalibur,从古希腊语翻译过来就是『神剑』,它现在也是一种用于从 PDF 中提取表格数据的 Web 界面,使用 Python 3 编写,由 Camelot(Python 库) 提供支持,可以让任何人轻松地从 PDF 文件中提取表格数据。需要注意的是,Excalibur 仅适用于基于文本的 PDF 文件,扫描文件不在此列。

可移植文件格式

PDF 文件定义了将字符放置在相对于页面左下角的 x,y 坐标的指令。通过将某些字符放在比其他字符更近的地方来模拟单词。空格是通过将单词放在相对较远的地方来模拟的。最后,通过放置在电子表格中显示的字词来模拟表格,格式没有表格结构的内部表示。

自动检测 PDF 中的表格数据

可移植文件格式不是为表格数据设计的。可悲的是,许多开放数据共享时都是 PDF 文件,但对其中的表格进行分析却是一件非常痛苦的事。简单的复制粘贴行不通,Excalibur 通过自动检测 PDF  中的表格并让你通过 Web 界面将它们保存为 CSV 和 Excel 文件,这使 PDF 表格提取变得非常简单。

可动态调整表格提取规则

虽然有很多广泛用于 PDF 表格提取的开源和闭源工具,但他们输出的表格良莠不齐。Excalibur 由 Camelot 提供支持,为用户提供附加设置以调整表格提取并获得最佳效果。相较而言,它的性能要好于其他开源工具和库。

数据完全可控且安全

你可以完全控制数据,因为所有文件存储和处理都在你自己的本地或远程计算机上进行。Excalibur 还可以配置 MySQL 和 Celery 系统,以并行和分布式方式执行表格提取任务。默认情况下,任务按顺序执行。

GitHub地址项目 GitHub 地址

机器学习概述

机器学习正在进步,我们似乎正在不断接近我们心中的人工智能目标。语音识别、图像检测、机器翻译、风格迁移等技术已经在我们的实际生活中开始得到了应用,但机器学习的发展仍还在继续,甚至被认为有可能彻底改变人类文明的发展方向乃至人类自身。但你了解现在正在发生的这场变革吗?四大会计师事务所之一的普华永道(PwC)近日发布了多份解读机器学习基础的图表,其中介绍了机器学习的基本概念、原理、历史、未来趋势和一些常见的算法。

1. 什么是机器学习?

机器通过分析大量数据来进行学习。比如说,不需要通过编程来识别猫或人脸,它们可以通过使用图片来进行训练,从而归纳和识别特定的目标。

2. 机器学习和人工智能的关系

机器学习是一种重在寻找数据中的模式并使用这些模式来做出预测的研究和算法的门类。机器学习是人工智能领域的一部分,并且和知识发现与数据挖掘有所交集。

3. 机器学习的工作方式

① 选择数据:将你的数据分成三组:训练数据、验证数据和测试数据

② 模型数据:使用训练数据来构建使用相关特征的模型

③ 验证模型:使用你的验证数据接入你的模型

④ 测试模型:使用你的测试数据检查被验证的模型的表现

⑤使用模型:使用完全训练好的模型在新数据上做预测

⑥调优模型:使用更多数据、不同的特征或调整过的参数来提升算法的性能表现

4. 机器学习所处的位置

① 传统编程:软件工程师编写程序来解决问题。首先存在一些数据→为了解决一个问题,软件工程师编写一个流程来告诉机器应该怎样做→计算机遵照这一流程执行,然后得出结果

② 统计学:分析师比较变量之间的关系

③ 机器学习:数据科学家使用训练数据集来教计算机应该怎么做,然后系统执行该任务。首先存在大数据→机器会学习使用训练数据集来进行分类,调节特定的算法来实现目标分类→该计算机可学习识别数据中的关系、趋势和模式

④ 智能应用:智能应用使用人工智能所得到的结果,如图是一个精准农业的应用案例示意,该应用基于无人机所收集到的数据

5. 机器学习的实际应用

机器学习有很多应用场景,这里给出了一些示例,你会怎么使用它?

  • 快速三维地图测绘和建模:要建造一架铁路桥,PwC 的数据科学家和领域专家将机器学习应用到了无人机收集到的数据上。这种组合实现了工作成功中的精准监控和快速反馈。
  • 增强分析以降低风险:为了检测内部交易,PwC 将机器学习和其它分析技术结合了起来,从而开发了更为全面的用户概况,并且获得了对复杂可疑行为的更深度了解。
  • 预测表现最佳的目标:PwC 使用机器学习和其它分析方法来评估 Melbourne Cup 赛场上不同赛马的潜力。

吴恩达发布《AI转型指南》

人工智能毫无疑问重塑了工程师和研究者们,但是,掌管公司发展前景的CEO们更关心什么呢?

今年8月份,吴恩达在自己的推特上发布了一个问题,称自己因为 Landing.ai 的项目到访很多国家,和非常多的 CEO 交流过他们的 AI 策略,想基于此发布一个报告,因此也向大家征集最想了解的问题。话题一经发出就迅速获得了很多回应,最热的问题包括:如何评估投入产出比?如何从零开始开启人工智能项目等。

而吴恩达也高效率的兑现了自己的诺言。就在刚刚,他在自己的 Medium 专栏上发布了一份公开信,正式宣告了这份名为《人工智能转型指南(AI Transformation Playbook)》(下称《指南》)的发布。

吴恩达称,这一指南是他通过在谷歌大脑,百度实验室以及 Landing AI 的多年经验,整合完成的,他在其中非常明确的回应了 CEO 们在企业发展中最关心的问题—— 如何高效开启人工智能项目,并且直接了当的给出了“五步骤路线图”,可以说非常有实操性的良心指南了!

总结来说,这五个步骤分别是:

  1. 执行试点项目从而获得动力
  2. 建立公司内部的 AI 团队
  3. 对员工进行 AI 技能培训
  4. 制定人工智能战略
  5. 在公司内部和外部建立良好的沟通渠道

吴恩达在文章中提供了《指南》的完整版的免费下载链接,先在此奉上英文版 PDF

清华发布《人工智能芯片技术白皮书(2018)》

12 月 11 日,在第三届未来芯片论坛上,清华大学联合北京未来芯片技术高精尖创新中心发布《人工智能芯片技术白皮书(2018)》。

整个《白皮书》总共分为 10 个章节,第一章节首先对芯片发展的背景做了一个交代,然后从多个维度介绍了 AI  芯片的关键特征,在第三章介绍了 AI 芯片的发展现状;第四章从冯·诺伊曼瓶颈和 CMOS 工艺以及器件瓶颈分析了 AI 芯片的技术挑战。从第六章到第八章,《白皮书》完成了对芯片各种技术路线的梳理。在最后一章对未来技术发展趋势和风险进行了预判。

《白皮书》由斯坦福大学、清华大学、香港科技大学、加州大学、圣母大学的顶尖研究者和产业界资深专家,包括 10 余位 IEEE Fellow 共同编写完成。

《白皮书》发布之后,也给出了中文版和英文版两个版本下载地址:

中文版 《人工智能芯片技术白皮书 2018》/ 英文版《White Paper on AI Chip Technologies

NVIDIA 发布迁移学习工具包

NVIDIA 迁移学习工具包对于深度学习应用开发人员和数据科学家来说是理想的工具,这些开发人员和数据科学家正在为智能视频分析(IVA)和医学成像等行业垂直领域找寻更快、更高效的深度学习训练工作流程。

迁移学习 SDK 通过允许开发人员微调 NVIDIA 提供的特定领域的预训练模型来抽象和加速深度学习训练,而不是从头开始花大量时间来从零开始构建深层神经网络。预训练模型加速了开发人员的深度学习训练过程,并且减少了大规模数据收集、标记和从零开始训练模型相关的成本。

迁移学习意味着可以从现有神经网络中提取已学习特征,并通过从现有神经网络转移权重来迁移这些已学习特征。NVIDIA 此次发布的迁移学习工具包是一个基于 Python 的工具包,它使开发人员能够利用 NVIDIA 预先训练好的模型,并为开发人员提供技术支持,通过重新训练让模型适应新的网络,来添加他们自己的数据以使神经网络更加智能。SDK具备的简单添加、修剪和重新训练网络的能力,提高了深度学习训练流程的效率和准确性。

主要功能

  • 在特定任务上预训练完毕的、经过优化的 DNN 模型已经打包在内
  • 用于计算机视觉相关对象分类、检测场景的示例应用程序
  • 在复杂的多 GPU 环境也可以轻松地模型适配和再训练
  • 轻松修改配置文件,从添加新的类和特性到压缩模型大小都可以支持
  • 为 IVA 应用程序在 NVIDIA DeepStream SDK 3.0 上部署的模型导出 API
  • 用于部署在 NVIDIA Clara 平台上的医学成像应用的模型导出 API
  • 让基于深度学习工作流的智能视频分析变得可能

支持用于智能视频分析的端到端的深度学习工作流

对于设计和集成智能视频分析(IVA)端应用程序(如停车管理、安全基础设施、零售分析、物流管理和访问控制等)的开发人员,NVIDIA 的迁移学习工具包提供了端到端的深度学习工作流,可以加速深度学习训练,并在 TeslaGPU 上使用 DeepStream SDK 3.0 进行部署。这些模型针对 IVA 特定参考使用场景(如检测和分类)进行了全面地训练。用于 IVA 的迁移学习工具包中已经包括了下面这些预训练的图像分类与目标检测模型:

医学影像的端到端深度学习流程

医学影像的迁移学习工具包提供医学影像特有的预训练模型,以及诸如与 AI 辅助注释 SDK 集成以加速医学图像的标注的额外功能,从而允许开发人员使用 AI 辅助标记功能。NVIDIA 研究人员开发的三维脑肿瘤分割模型赢得了 2018 年多模态脑肿瘤分割挑战赛的第一名。BraTS 专注于评估在多模态 MRI 扫描中用于分割脑肿瘤的最新方法。BraTS 2018 利用多机构术前 MRI 扫描,并着重于对内在异质性(外观、形状和组织学)脑肿瘤的分割。NVIDIA 医学成像迁移学习工具包附带了这个由 NVIDIA 内部研究人员开发的获奖的脑肿瘤分割模型,以及用于肝脏病变分割、脾脏分割等其他预训练模型。NVIDIA 的医学成像端到端深度学习工作流允许开发人员使用迁移学习工具包来加速深度学习训练并使用 Clara 平台进行部署。

《图形深度学习》开放课程

CreativeAI: Deep Learning for Graphics

在计算机图形学中,许多传统问题现在通过基于深度学习的数据驱动方法得到更好的解决。在越来越多的问题设置中,深层网络是最先进的,远远超过了专门手工设计的方法。本教程对深度学习的核心理论、实践和图形相关应用进行了系统性的概述。以下为跨象乘云整理的大纲目录及 PPT 链接:

内容目录:

  1. 概述
  2. 机器学习基础
  3. 神经网络基础
  4. 特征可视化
  5. 直接监督的替代方案
  6. 图像
  7. 3D
  8. 物理动画

同时,课程还给出来大量的实验代码,并发布在 Github 上,包含主题:

  • 线性回归和多项式回归
  • 随机梯度下降
  • 多层感知器
  • 边缘过滤网络
  • 卷积网络
  • 过滤器可视化
  • 权重初始化策略
  • 彩色化网络
  • 自编码器
  • 变分自编码器
  • 生成对抗网络
  • 卷积网络镜像
  • PDE Learning
GitHub地址项目 GitHub 地址

PyTorch 1.0 正式版发布

PyTorch 1.0 同时面向产品化 AI 和突破性研究的发展,「我们在 PyTorch1.0 发布前解决了几大问题,包括可重用、性能、编程语言和可扩展性。」Facebook 人工智能副总裁 Jerome Pesenti 曾在 PyTorch 开发者大会上表示。

随着 PyTorch 生态系统及社区中有趣新项目及面向开发者的教育资源不断增加,今天 Facebook 在 NeurIPS 大会上发布了 PyTorch 1.0 稳定版。该版本具备生产导向的功能,同时还可以获得主流云平台的支持。

现在,研究人员及工程师可以轻松利用这一开源深度学习框架的新功能,包括可在 eager execution 和 graph execution 模式之间无缝转换的混合前端、改进的分布式训练、用于高性能研究的纯 C++ 前端,以及与云平台的深度集成。

PyTorch 1.0 将加速 AI 从原型到生产部署的工作流程,并使这一进程更加容易开始。仅仅在过去的几个月里,就不断有人通过广泛普及的新教学课程上手 PyTorch,一些专家还构建了创新型项目,将这一框架扩展到从自然语言处理到概率编程的多个领域。

GitHub地址项目 GitHub 地址

教育部指定人工智能、大数据等为战略性新兴专业

日前,教育部发布《教育部关于加快建设高水平本科教育全面提高人才培养能力的意见》(教高[2018]2号)文件,文件的第六个方面“大力推进一流专业建设”中,第22条提出要动态调整专业结构,原文如下:

“动态调整专业结构。深化高校本科专业供给侧改革,建立健全专业动态调整机制,做好存量升级、增量优化、余量消减。主动布局集成电路、人工智能、云计算、大数据、网络空间安全、养老护理、儿科等战略性新兴产业发展和民生急需相关学科专业。推动各地、各行业、各部门完善人才需求预测预警机制,推动高校形成就业与招生计划、人才培养的联动机制。”

在这7大一流专业建设中,“集成电路”、“人工智能”、“云计算”、“大数据”、“网络空间安全”5个专业,属于战略性新兴产业相关学科专业。从这5个专业来看,完全符合“大数据、云时代”的发展需求,全部都与计算机技术息息相关。这标志着,以计算机技术为纽带的5大战略性新兴产业,在高等教育中的地位越来越大,成为新时代本科建设的重点任务之一。从这5大专业的具体情况来看,“集成电路”是一种微型电子器件或部件,是现代信息社会的基石;“人工智能“决定人类社会的未来;“云计算和大数据技术”在当代社会中的应用价值越来越大;“网络空间安全”也是互联网高度发达背景下保障信息安全的一门重要课程。

可以说,5大专业,每1门都具备“高、精、专”的特点。选择其中任何1门专业,找工作时都不发愁。只要把专业学深学透学精,在就业市场上必然抢手。

数据工程师 vs 数据科学家

Jesse Anderson 在 OReillyAI 上发表了关于数据工程师与数据科学家之间差别的文章:《数据工程师 vs 数据科学家》,阐述了两者间的分工区别。了解数据工程师和数据科学家之间的差异非常重要。 误解或不了解其差异,会导致团队在处理大数据时失败或者表现不及预期。

数据科学家的技能

数学与统计学(有时物理也可以)是数据科学家的核心。 在基于这种数学背景,他们正创建高级分析能力。 他们通过将数学应用到极致来创建机器学习模型和人工智能模型。

如同软件工程一样,数据科学家将不得不与业务端进行交流。 这包括充分了解领域,以获得洞察力。 数据科学家通常负责分析数据以帮助业务,这需要一定的商业敏锐度。 最后,他们的结果需要以可理解的方式提供给业务方。这要求数据科学家有能力用口述和视觉结果的形式,与业务方交流那些复杂的结果和观察情况,以似的业务方能够理解并且基于此展开决策。

关于数据科学家,我一言以概之的定义是:数据科学家是通过编程来强化他们的数学和统计背景能力来进行分析数据、创造数学模型的人。

数据科学家的一个常见特征是,他们不得不选择了编程,以实现他们除了编程以外无法做到的事情。 当我与数据科学家交谈时,他们经常向我倾诉的一件事情。 为了完成更复杂的分析,或者由于其他方面难以克服的问题,他们学会了如何编程。 他们的编程和系统搭建技能达不到你从程序员或数据工程师那里会看到的水平 – 他们也没必要达到。

数据工程师的技能

编程能力是数据工程师的核心。这种能力背景通常是 Java,Scala 或 Python 的编程经验。 他们的工作重点或专业能力主要在分布式系统和大数据方面。 数据工程师具有高级编程和系统构建技能。

对于数据工程师,我对其一言以蔽之的定义是:数据工程师是在围绕大数据建立创建软件解决方案上具备专业技能的人。

利用这些工程技能,他们可以创建数据管线。 创建数据管线可能听起来很简单或微不足道,但在大数据这种规模上,这意味着将 10 – 30 种不同的大数据技术整合在一起。 更重要的是,数据工程师是理解并选择『适合处理某种工作的工具』的人。 数据工程师深入了解各种技术和框架,以及如何将它们组合在一起以创建解决方案,从而使公司的业务流程具备数据管线。

在我的经验中,数据工程师只是最低限度地参与集群的运维(与此处讨论有关数据工程师的说法相反)。 虽然某些数据科学技术确实需要设置一个运维或者数据运维岗位,不过绝大多数技术都没有。 就像大多数程序员一样,我不允许他们直接访问生产系统。 这主要是系统管理员或运维人员的工作。

重叠技能

数据科学家和数据工程师技能之间存在重叠。 然而,重叠永远发生在每个人能力的不规则边缘。

比方说,这两个岗位在『分析』上重叠了。 但是,数据科学家的分析技能将远远超过数据工程师的分析技能。 数据工程师可以执行一些基本到中级的分析,但很难进行数据科学家所做的高级分析。

数据科学家和数据工程师在编程能力上有所重叠。 不过,数据工程师的编程技能远远超出了数据科学家的编程技能。 让数据科学家创建数据管线早已远离了他们技能优势边界,但却是数据工程师的优势所在。 在这种情况下,这两个角色是互补的,数据工程师对数据科学家的工作起支持作用。

您会注意到,数据科学家和数据工程师之间还存在一个大数据方面的重叠。 通过更好地了解每个岗位的技能,您现在可以更好的理解这种技能重叠。 数据工程师使用他们的编程和系统构建技能来创建大数据管线。 数据科学家利用他们更加有限的编程技能,运用他们的高级数学技能, 利用已经存在的数据管线创建高级数据产品。 『创建和使用』之间的这种差异,是在处理大数据时,团队失败或者表现不佳的核心之处。一个团队,如果期望他们的数据科学家创建数据管线,最后将会极其失望。

数据工程师与数据科学家的比率

决定数据工程师和数据科学家的比率是一个常见问题。在确定这个比率时,常见需要考虑的问题包括数据管线有多复杂,数据管线有多成熟,以及数据工程团队需要拥有多少经验。

拥有比数据工程师更多的数据科学家通常是个问题。 它通常意味着,机构正在让他们的数据科学家进行数据工程工作。 正如我之前所说的,这会进而导致各种各样的问题。

为每个数据科学家搭配 2 – 3 位数据工程师是一个常见配置。 对于一些具有更复杂数据工程要求的机构,这个数字可以是每个数据科学家配备 4 – 5 名数据工程师。 这包括那些数据工程和数据科学处于不同汇报组织结构中的机构。 您需要更多的数据工程师,因为创建数据管线需要比创建 ML / AI 部分花费更多的时间和精力。

我在《数据工程团队》一书中,更多地讨论了数据工程和数据科学团队应该如何相互交流。

数据工程师从事数据科学研究

一个远非常见的情况是数据工程师开始进行数据科学工作。 随着数据工程师开始提高他们的数学和统计技能,这是一个向上的推动力。 随着数据科学变得更加标准化,这种向上的推动力变得越来越普遍。 它导致了一种全新的工程师类型出现。

机器学习工程师的需求

数据科学家面临的一般问题是,他们不是将工作投入生产、创建数据管线以及公开这些 AI / ML 结果的工程师。

为了应对学术思维与『投入生产的需求』之间的差异,我们观察到了一种新型的工程师。 现在,这位工程师大多可以在美国看到。他们的头衔是机器学习工程师。

机器学习工程师的工作,主要是创建数据科学管线的最后一步。 这可能需要几个部分。 它可能是将数据科学家的代码从R / Python 重写为 Java / Scala。 它可能是从软件工程的角度优化 ML / AI 代码,保证数据科学家写的代码能够运行良好(或者干脆就是能够运行)。 机器学习工程师具有足够的工程背景,可以在一个领域(数据科学)保障所必需的工程规范,这些领域以并不遵循良好的工程原理而著称。

在生产环境中运行的模型需要维护和输入,而普通的软件并不需要。 机器学习模型可能过时,并开始给出不正确或扭曲事实的结果。 这可能来自数据属性的改变,新数据的增加,或恶意性质的攻击。 无论是哪种方式导致的,机器学习工程师都需要时刻注意他们的模型中需要修改的部分,这可能导致模型的重新训练或调整。

机器学习工程师和数据工程师

数据工程师向机器学习工程师的过渡是一个缓慢的过程。 坦率来讲,我们将看到,变成机器学习工程师需要作出什么变化和变成数据科学家需要作出什么变化是非常相似的。

为了解释我的『缓慢变化』的意思,我将分享那些我见过的从数据工程师转变为机器学习工程师的人的经验。 他们花了数年时间做软件工程师和数据工程师的开发工作。 他们一直对统计学或数学感兴趣。 其他时候,他们只是厌倦了作为一名数据工程师所遇到的限制。 无论哪种方式,这种转变需要数年时间。 参加初级统计课程或初级学习机器课程之后,我没发现人们能立刻成为机器学习工程师。

正如我将数据科学家视为偏学术一样,数据工程师也不刚好是适合做机器学习工程师的。 一个工程师喜欢世界里的真和假,黑和白,以及 1 和 0。他们不喜欢不确定性。 通过机器学习,模型的猜测存在一定程度的不确定性(工程师也不喜欢猜测)。 与大多数工程师不同,机器学习工程师可以跨越数据工程的确定性和数据科学的不确定性。