为促成不同文本生成任务的快速搭建以及任务之间的技术共享,由 Petuum 公司和卡耐基梅隆大学 (CMU) 为主要贡献者的通用 工具 包——Texar 正式开源。该工具包支持广泛的机器学习应用,重点聚焦于文本生成任务,尤其适合从事快速模型原型设计和实验的研究人员及从业者。
文本生成简介
文本生成旨在基于输入数据或机器表示生成自然语言, 包括广泛的自然语言处理(NLP)任务,例如机器翻译、对话系统、文本摘要、文章写作、文本复述及修改、图像加注等。尽管由于深度学习方法的整合,该领域在学术和产业方面都发展迅速,但为了改进技术、真正实现在现实世界的应用,还需要投入巨大的科研力量。
文本生成任务有很多共同的属性及两个中心目标:
-
生成人类水平的、合乎语法的可读文本。
-
生成包含所有从输入中推断出的相关信息的文本。例如,在机器翻译中,生成的翻译句子必须与原句表达相同的含义。
为了达到这些目标,几种关键技术的应用越来越广泛,如神经编码-解码器、注意力机制、记忆网络、对抗方法、强化学习、结构化监督,以及优化、数据预处理、结果后处理和评价等。这些技术经常以多种不同的方式结合在一起,解决不同的问题(见图 1)。
图 1:文本生成任务中用到的几种模型架构示例。E:编码器(encoder);D:解码器(decoder);C:分类器(classifier);A:注意力(attention);Prior:先验分布(prior distribution);M:记忆(memory)。
因此需要一个开源平台将这些不同但紧密相关的文本生成应用整合起来,提供核心算法的清晰、一致的实现。这一整合平台将实现不同算法之间共有要素的重复使用;将设计、实现及实验标准化;促进可复现的研究;特别是促成不同文本生成任务之间的技术共享---基于此,为特定任务改进的算法将得以迅速评估并泛化到许多其他任务。
Texar 简介
为此,我们开发了 Texar,一个专注于文本生成任务的开源工具包,使用TensorFlow 语言。基于模块化、多功能及可扩展的核心设计理念,Texar 提取了文本生成中不同任务和方法的共同模式,并创建了一个高度可重复利用的模块和功能库。
图 2:Texar 的主要模块和功能
多功能性
Texar 包含广泛的模块和功能,用于组成任意的模型架构并实现各种学习算法,如最大似然估计、强化学习、对抗性学习、概率建模等(图 2)。
模块化
Texar 将各种复杂的机器学习模型/算法分解成高度可重复利用的模型架构、损失函数和学习过程模块等。
用户可以像组装积木一样组装 Texar 的模块,轻松直观地构建任意自己想要的模型。模块化的设计使得各模块的插入和替换变得简单,例如,在最大似然学习和强化学习之间切换只需改变几行代码即可。
可扩展性
Texar 可以轻松地与任何用户定制的外部模块集成,并且与TensorFlow 开源社区完全兼容,包括TensorFlow 本身的接口、功能和其他资源都能直接与 Texar 一起使用。
可用性
使用 Texar,用户既可以通过简单的 Python/YAML 配置文件来定制已有的模型, 也可以通过 Texar Python API 编程实现任意复杂的模型,达到最大的可定制性。
Texar 提供了自动的变量重用机制(无需担心复杂的TensorFlow 变量范围)、简单的函数式调用来执行各模块的逻辑功能,而且每个模块都有丰富的配置选项和合理的默认值。
Texar 本身的代码有良好的结构、统一的 设计模式 、一致的代码风格,可读性强。Texar 也提供了清晰的文档和丰富的教程示例。
Texar 目前已用于支持Petuum公司的若干个研究和工程项目。他们希望这一工具包也能帮助社区加速文本生成及其它技术的发展,并欢迎研究人员及从业者的加入社区,进一步丰富这一工具,共同推进文本生成研究及相关应用的进展。
打开以下链接,了解更多关于 Texar 的信息:
-
网站:https://texar.io
-
GitHub:https://github.com/asyml/texar
-
示例:https://github.com/asyml/texar/blob/master/examples
-
文档:https://texar.readthedocs.io/
-
博客: https://medium.com/@texar
-
技术报告:https://arxiv.org/pdf/1809.00794.pdf
原文链接: https://medium.com/@Petuum/introducing-texar-a-modularized-versatile-and-extensible-toolkit-for-text-generation-and-beyond-b4e3289d5205
工程 Petuum CMU NLP 文本生成
相关数据
Attention mechanism
我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。
来源:机器之心
Logic
人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。
来源:机器之心
Machine Learning
机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。
来源:Mitchell, T. (1997). Machine Learning. McGraw Hill.
Loss function
在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。
来源: Wikipedia
Maximum Likelihood Estimation
极大似然估计是统计学中用来估计概率模型参数的一种方法
来源: R. A. Fisher. (1922). On the Mathematical Foundations of Theoretical Statistics
Natural language processing
自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。
来源: 维基百科
Machine translation
机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。
来源:机器之心
Reinforcement learning
强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。
来源:机器之心
Deep learning
深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。
来源: LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. nature, 521(7553), 436.
Petuum
Petuum is a software infrastructure and ecosystem provider that enables AI for enterprise. Petuum’s operating system gives users a single platform to build any Machine Learning or Deep Learning application using large amounts of data, and deploy it at scale on any hardware – such as workstations, datacenters, the internet of things, and edge computing.The Petuum development platform and gallery of AI building blocks work with any programming language and any type of data, allowing managers and analysts to quickly build AI applications without any coding, while engineers and coders can further re-program applications as needed. With Petuum, many AI applications and hardware can be created and managed from a single laptop or terminal, driving higher productivity, better service, lower costs, and faster delivery. By standardizing AI solutions, Petuum lowers the barrier to AI adoption and allows for the integration of AI into every industry.
Tensor
张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。
来源: 维基百科
TensorFlow
TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。
来源: 维基百科
机器之心是国内领先的前沿科技媒体和产业服务平台,关注人工智能、机器人和神经认知科学,坚持为从业者提供高质量内容和多项产业服务。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Android模块化改造以及模块化通信框架
- Laravel 模块化开发模块 – Caffienate
- ASP.NET Core模块化前后端分离快速开发框架介绍之4、模块化实现思路
- 前端模块化架构设计与实现(二|模块接口设计)
- JavaScript模块化
- 前端模块化总结
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
A Project Guide to UX Design
Russ Unger、Carolyn Chandler / New Riders Press / 2009-3-23 / USD 39.99
"If you are a young designer entering or contemplating entering the UX field this is a canonical book. If you are an organization that really needs to start grokking UX this book is also for you. " -......一起来看看 《A Project Guide to UX Design》 这本书的介绍吧!