NLP 最强模型 – BERT 源码解读

当前,Google 开源的 BERT 已成为公认的自然语言处理NLP)最佳模型。同时,在《自然语言处理》课程中,跨象乘云™ 设计了《BERT 语句情感分类》工程案例,让人工智能专业以及人工智能技术服务专业师生通过完整的项目实践,充分了解 NLP 技术相关的关键概念与先进的 BERT 模型的技术实现,以及复杂的自然语言处理流程。

近日,公众号《NewBeeNLP》发布了《BERT源码分析》(原创作者:高开远),对 BERT 整体模型,BERT 数据处理流程,以及预训练任务做了进一步详尽的分析。供各位师生参考。

NeuralHash:对抗性隐形签名水印

Neuralhash 是通过对图像进行微扰,以视觉方式编码作者的独特签名的一个开源项目框架。项目的安全水印方案代表了在保护内容所有权和防止 Internet 上的盗版方面的重大进步。项目主要做法,是可以在解码器网络(将输入图像映射到 32 位签名)上使用对抗性示例技术来生成将其解码为所需签名的扰动。

NeuralHash - An Adversarial Steganographic Method For Robust, Imperceptible Watermarking
NeuralHash – An Adversarial Steganographic Method For Robust, Imperceptible Watermarking

项目提出了一种在期望最大化(EM)框架下训练解码器网络的方法,以学习对攻击的威胁空间更具弹性的特征转换,交替使用网络对图像进行编码,然后更新网络的权重以使其对攻击更健壮。

GitHub地址项目 GitHub 地址

GitHub 开源官方新命令行工具

近日,GitHub 发布命令行工具(Beta)测试版,官方表示,GitHub CLI 提供了一种更简单、更无缝的方法来使用 Github。这个命令行工具叫做 GitHub CLI,别名 gh。现在,高校科研人员,专业教师与学生均可以在 macOS、Windows 和 Linux 上安装 GitHub CLI,GitHub 提供了完整的操作手册。Github 也会通过用户反馈,在之后的版本中添加更多的功能。

GitHub CLI 现在提供了一些开源贡献者会使用的基本功能,从问题(Issue)以及拉取请求(Pull Request)开始。贡献者可以利用 GitHub CLI 搜寻开源项目并复制(Clone)该储存库,并且能看到由项目维护者释出,已标注需要帮助标签的问题。接着,开发者就能直接从 GitHub CLI 开启浏览器,取得问题的详细信息。

开发者可以创建分支,提交几次修复程序代码以修复问题所描述的 Bug,并且创建拉取请求分享贡献。在创建拉取请求时,GitHub CLI 也会在没有分叉时,自动创建分叉推送分支,接着才创建拉取请求以合并更改。之后,开发者也可以利用 GitHub CLI 快速查看拉取请求审查的状况,在项目维护者审查了拉取请求,要求进一步修改时,开发者也能快速地在 GitHub CLI 中,从其他分支切回拉取请求分支,继续完成未完成的工作。

GitHub地址项目 GitHub 地址

胸部放射影像数据集:CheXpert

在这次新冠肺炎『战疫』中,面向医疗医学的深度学习与新一代人工智能科研攻关越显重要。如:在 Keras 中通过递归神经网络(RNN)为时间序列数据建模;使用 MedNIST 数据集进行医学图像分类;应用深度学习数据科学工作流在医疗领域;使用 DIGITS 实现医学影像分割;使用 TensorFlow 实现图像分类;使用 R 和 MXNet 实现医学影像分析;使用 GAN 对医学图像进行数据集扩展与图像分割;将由粗到细的上下文记忆应用于医学影像 …… 都是非常热门的研究方向。

其中,胸部放射影像是全球最常见的影像检查,对很多威胁终身的疾病的筛查、诊断和治疗至关重要。在论文《CheXpert: A Large Chest Radiograph Dataset with Uncertainty Labels and Expert Comparison》中,作者介绍了一种用于解释胸部放射影像的大型数据集 —— CheXpert(Chest eXpert)。该数据集包含来自 65,240 个病人的 224,316 张胸部放射影像,这些影像中标注了 14 种常见的胸部放射影像观察结果。作者设计了一个标注工具,它能够从放射报告文本中提取观察结果并使用不确定性标签捕捉报告中存在的不确定性。

CheXpert 的任务是要根据多视角胸部放射影像来预测 14 种不同观察结果的概率。作者尤其关注数据集中的不确定性标签,并研究了结合这些不确定性标签来训练模型的不同方法。然后在包含 200 项标记的验证集上评估了这些不确定性方法的性能,这些标注真值由 3 位放射科医生一致确定,他们用放射影像注释了该验证集。作者根据病理的临床意义和在数据集中的流行程度,在 5 个选定的观察结果上评估其方法,发现不同的不确定性方法能够用于不同的观察结果。

Apache Flink 1.10.0 发布

Apache Flink 社区迎来了激动人心的两位数位版本号,Flink 1.10.0 正式宣告发布!作为 Flink 社区迄今为止规模最大的一次版本升级,Flink 1.10 容纳了超过 200 位贡献者对超过 1,200 个 issue 的开发实现,包含对 Flink 作业的整体性能及稳定性的显著优化、对原生 Kubernetes 的初步集成以及对 Python 支持(PyFlink)的重大优化。Flink 1.10 同时还标志着对 Blink 的整合宣告完成,随着对 Hive 的生产级别集成及对 TPC-DS 的全面覆盖,Flink 在增强流式 SQL 处理能力的同时也具备了成熟的批处理能力。

GitHub地址项目 GitHub 地址

新冠肺炎开放知识图谱数据集

『山川异域,风月同天』—— 新冠肺炎疫情牵动着举国上下的心,包括跨象乘云™ 在内,众多高科技企业除了向灾区捐赠物资,配合疫情防控工作,延期复工 / 远程办公的同时,也在积极探索如何利用大数据、新一代人工智能等新技术为『战疫』助力。

近日,OpenKG 联合国内多家科研机构,发布了新冠肺炎开放知识图谱数据集,包括 ——

  • 新冠百科图谱 —— 包括病毒、细菌、流行病、传染病等相关实体。图谱以病毒、细菌为主体,扩展了治疗,疾病等相关内容,通过了这些概念的百科知识,形成了新冠百科图谱。可应用于面向新冠相关术语的语义检索、智能问答,并可用于新冠相关文档的智能搜索和推荐。
  • 新冠科研图谱 ——  VirusNetwork 图谱搜集、整理、关联与新冠病毒相关的科研基础数据和科研文献,为后续进一步研究提供数据支撑。数据集来源于 NCBI(美国国家生物技术信息中心网站)中的 Taxonomy 板块,从其中 Viruses 『超界』开始,逐层爬取构建数据集。涉及的概念主要是病毒的家族层级,比如病毒的属、种、目等,即从顶层到分支、枝叶,构建出一颗病毒的家族树。
  • 新冠临床图谱 —— 从目前已有的规范文件入手,基于诊疗规范(流行病学 + 症状 + 实验室指标 + 治疗)、研究进展(测序、药物开发、疫苗)、发病统计(丁香园), 将研究进展与科研相关联。图谱以新冠肺炎为核心延展至病毒、治疗方案、症状、方剂等各类概念,形成新冠临床知识图谱,可基于该图谱进行知识问答。
  • 新冠英雄图谱 —— 包括了医疗专家组、因公殉职英雄、武汉当地和全国各地的意见领袖等,涉及生平事迹和基本属性,并与新冠百科、新冠科研、新冠临床等图谱中的一些概念或实体关联。图谱以新冠病毒专家为核心延展至履历、成果、事件、战役等各类概念,形成新冠英雄知识图谱,可基于图谱进行英雄人物动态展示。
  • 新冠热点事件图谱 —— 包含了疫情发生以来一系列的重大事件的知识,事件之间遵循顺承关系,从发生时间,信息来源,标题,事件内容简介等各个维度来揭示疫情。和上面的新冠百科、新冠科研、新冠临床、新冠防控、新冠英雄等图谱均能建立关联,后续版本还会对事件简介中的非结构化内容进行语义标注和实体链接。支持对新型冠状病毒的事件在时间上的正向和反向索引。并提供系列事件发展脉络的枚举。支持热点事件的查证溯源。和区块链技术结合可具备对事件的存真鉴伪的功能。

2020 年人工智能开源生态圈

深度学习为核心的新一代人工智能技术发展到今天,已逐步形成一个庞大的生态结构,覆盖了:经典机器学习深度学习强化学习自然语言处理语音识别计算机视觉、分布式训练、自动建模、IDEs 系统、平台、评分推理系统等完整的细分领域 —— 正确合理的选择与开发内容相匹配的工具,常常会使科学研究工作事半功倍,同时,选择正确高效的工具也是技术应用类专业建设的重要环节。

跨象乘云™ 持续致力为高等院校打造深度学习与新一代人工智能科研教学一体化实验平台,在进一步将深度学习系统与容器化基础设施架构紧密集成的同时,对新一代人工智能开源生态系统提供全方位的支撑,加速高校科研效率及科研成果落地。详细项目列表如下 ——

1. 机器学习

  • SciKit-learn —— 强大的基于 Python 语言的机器学习算法库
  • XGBoost —— 在 Gradient Boosting 框架下实现了 C++机器学习算法
  • Accord.NET —— 完全用 C#编写的音频和图像处理库

2. 深度学习

  • TensorFlow —— 用于机器学习的端到端开源平台
  • PyTorch —— 主流的深度学习工具,开源的机器学习框架
  • MXNET —— 功能齐全,可编程和可扩展的深入学习框架
  • Sonnet —— 由 DeepMind 发布的,在 TensorFlow 上用于构建复杂神经网络的开源库
  • DL4J —— 采用 Java 和 JVM 编写的开源深度学习库

3. 强化学习

  • Gym —— 用于开发和比较强化学习算法的工具
  • Dopamine —— 基于 Tensorflow 的框架,为新入门强化学习研究人员提供的新工具
  • ReAgent —— Facebook 推出的一个构建决策推理系统的模块化端到端平台
  • Tensorlayer —— 面向科学家的深度学习和强化学习库

4. 自然语言处理

  • BERT —— 基于双向 Transformer 的大规模预训练语言模型,NLP 领域中里程碑
  • Transformers —— 神经机器翻译中使用的神经网络,近期 PyTorch-Transformers 非常火爆
  • AllenNLP —— 基于 PyTorch 的 NLP 研究库,利用深度学习来进行自然语言理解
  • flair —— 简单易用的 Python NLP 库,允许将当前最优自然语言处理(NLP)模型应用于文本
  • spaCy —— 工业级强度级的 Python 自然语言处理工具包
  • fastText —— Facebook 人工智能研究实验室(FAIR)开源的一个文本处理库

5. 语音识别

  • Kaldi —— 目前使用广泛的开发语音识别应用的框架
  • DeepSpeech —— 开源语音转文本引擎
  • wav2letter —— Facebook AI 研究院开源的,简单高效的端到端自动语音识别(ASR)系统

6. 计算机视觉

  • YOLO —— 当前深度学习领域解决图像检测问题最先进的实时系统
  • OpenCV —— Intel 开源的跨平台计算机视觉库,被称为 CV 领域开发者与研究者的必备工具包
  • Detectron2 —— 在单个或多个 GPU 服务器上提供更快速的训练速度
  • OpenPose —— 以 Caffe 为框架开发的人体姿态识别项目
  • facenet —— 通用人脸识别系统

7. 分布式训练

  • Spark MLlib —— 开源集群运算框架,大数据领域热门开源软件
  • Mahout —— 分布式线性代数框架,用于快速创建可扩展的高性能机器学习应用程序
  • Horovod —— Uber 开源的一个跨多台机器的分布式深度学习的 TensorFlow 训练框架
  • Dask —— 当开发者需要并行化到多核时,将计算扩展到多个内核甚至多个机器
  • Ray —— 高性能分布式执行框架,热门程度仅次于 Spark

8. 自动建模

  • TPOT —— Python 编写的软件包,利用遗传算法进行特征选择和算法模型选择
  • AutoKeras —— 基于高效神经架构搜索的开源项目,媲美 Google 的 AutoML
  • Featuretools —— 用于自动化特性工程的开源 Python 框架
  • NNI —— 微软发布的一个用于神经网络超参数调整的开源 AutoML 工具包
  • AdaNet —— Google 开源的一个轻量级的基于 TensorFlow 框架的神经网络搜索

9. IDEs

  • Jupyter —— 涵盖了跨数十种编程语言的交互式计算
  • Spyder —— 用于科学计算的使用 Python 编程语言的集成开发环境
  • Zeppelin —— 基于 Web 的交互式数据分析平台

10. 平台

  • H2O —— 开源的分布式内存机器学习平台,支持最广泛使用的统计和机器学习算法
  • MLflow —— 机器学习生命周期的开源平台
  • Kubeflow —— Kubernetes 上的机器学习分布式训练任务支持

11. 评分推理系统

  • ONNX —— 针对机器学习所设计的开放式的文件格式,用于存储训练好的模型
  • Seldon —— 让机器学习模型可以部署于 Kubernetes 上

图神经网络入门教程

图是表示不同性质数据的强大工具,而数据来源于多种人工和自然流程。图数据具备复合性,是原子信息片段的复合体;同时它也具备关联性,定义数据结构的链接,即表示链接实体之间的关系。图通过链接方向和标签来表示大量关联(Association),如离散关系类型、化学性质和分子键强度。而最重要的一点是,图具备普遍性。在化学和材料科学中,图表示化合物的分子结构、蛋白质相互作用和药物相互作用网络,以及生物学和生物化学关联。在社会科学中,图网络被广泛用于表示人们之间的关系,以及推荐系统中的复杂购买行为。近日,大量图数据以及越来越多的可用大型资源库,促使人们对以适应性方式处理图的深度学习模型产生了浓厚兴趣。

此前,跨象乘云™ 介绍了基于 Pytorch图神经网络(GNN)实战。近日,意大利比萨大学的研究者发表论文,介绍了图深度学习领域的主要概念、思想和应用。与其他论文不同的是,这篇论文更像一份入门教程,既适合初学者作为学习材料,也可以帮助资深从业者理清该领域的脉络,避免重复造轮子。本文从历史的角度介绍基于图数据的神经网络领域,在现代术语中它叫做「图深度学习」(Deep learning for Graph)。本教程,旨在对该领域的主要概念和构成图神经架构的构造块进行充分连贯的介绍。

特征工程必备技巧

特征工程也被称为特征构造,是从现有数据中构造新的特征从而训练机器学习模型的过程,同时也是传统模式识别技术的升级。机器学习算法只能从我们给定的数据中学习,所以构造一个和任务相关的特征是至关重要的。通常,特征工程是一个冗长的人工过程,依赖于领域知识、直觉和数据操作。这个过程可能是极其枯燥的,同时最终得到的特征将会受到人的主观性和时间的限制。特征工程自动化旨在通过从数据集中自动构造候选特征,并从中选择最优特征用于训练来帮助数据科学家。

随着我们在机器学习、数据建模、数据挖掘分析这条发展路上越走越远,其实越会感觉到特征工程的重要性。跨象乘云™ 的《特征工程》课程,正是向大数据,人工智能专业学生系统讲解特征工程的完整环节,通过大量的实践操作掌握特侦工程的关键技术。此前,我们发布了特征工程系列:特征筛选的原理与实现()/()两篇教程。同时,平时我们在很多地方都会看到一些很好的特征工程技巧。今天介绍的这个 GitHub 项目,其目的就是把这些小技巧打包成一个又一个的小锦囊,正在不断更新,目前提供的 22 个必备技巧包括 ——

  1. 特征无量纲化的常见操作方法
  2. 怎么进行多项式 or 对数的数据变换?
  3. 常用的统计图在 Python 里怎么画?
  4. 怎么去除 DataFrame 里的缺失值?
  5. 怎么把被错误填充的缺失值还原?
  6. 怎么定义一个方法去填充分类变量的空值?
  7. 怎么定义一个方法去填充数值变量的空值?
  8. 怎么把几个图表一起在同一张图上显示?
  9. 怎么把画出堆积图来看占比关系?
  10. 怎么对满足某种条件的变量修改其变量值?
  11. 怎么通过正则提取字符串里的指定内容?
  12. 如何利用字典批量修改变量值?
  13. 如何对类别变量进行独热编码?
  14. 如何把『年龄』字段按照我们的阈值分段?
  15. 如何使用 sklearn 的多项式来衍生更多的变量?
  16. 如何根据变量相关性画出热力图?
  17. 如何把分布修正为类正态分布?
  18. 怎么找出数据集中有数据倾斜的特征?
  19. 怎么尽可能地修正数据倾斜的特征?
  20. 怎么简单使用 PCA 来划分数据且可视化呢?
  21. 怎么简单使用 LDA 来划分数据且可视化呢?
  22. 怎么来管理我们的建模项目文件?

GitHub地址项目 GitHub 地址

最大规模并行语料库 – 45 亿语料,576 种语言

语料库是开发领域智能聊天机器人项目工程的核心资源 —— 当前自然语言处理NLP)中的大多数方法都是数据驱动的,大多数多语言模型(特别是神经机器翻译系统)都需要并行语料库进行训练。大多数的并行文本都只是适用于几个主要语言(例如英语、汉语),且限制于特定的领域。为了解决这一问题,在去年七月份,Facebook 曾发布了第一个系统处理 Wikipedia 上所有语言(包括资源贫乏的语言和方言)的数据集 WikiMatrix,大约包含了亿级的并行语料,覆盖 1,620 种语言对。

而最近,Facebook 基于新的方法和数据源,开发并开源了一个目前为止最大的并行语料数据集 CCMatrix。这个数据集包含 45 亿并行语料(是 WikiMatrix 的近 50 倍),覆盖 576 种语言对。

GitHub地址项目 GitHub 地址