如何用 TensorFlow 教用机器人示教器怎么使用作曲

导读:本文是基于谷歌大脑(Google Brain)發表在 arXiv 的最新论文《BEGAN:边界平衡生成对抗网络》实现的该工作针对GAN 面临的一些难题,例如如何衡量收敛如何控制分布多样性以及如何維持鉴别器和生成器之间的平衡等问题,提出了改善作者使用了很简单的网络结构以及标准的训练过程,在人脸生成任务中取得了优异嘚视觉效果达到了目前最先进水平。

Networks)的该方法在训练阶段能够维持生成器和鉴别器之间的平衡。除此之外该方法还提供了一种新嘚近似收敛策略,实现了快速稳定的训练并且达到了很高的视觉质量。作者还推导出一种能够控制图像多样性和视觉质量之间的权衡的方法该工作中,作者主要关注图像生成任务即使是在更高分辨率的情况下,也建立了视觉质量的新里程碑并且仅是使用一个相对简單的模型结构和标准的训练流程就实现了这些。

  论文有以下四个创新点:

  1. 一个简单且鲁棒的 GAN 结构使用标准的训练步骤实现了快速且穩定的收敛

  2. 一个平衡的概念,用于平衡判别器和生成器的竞争力

  3. 一种控制图像多样性和视觉质量之间的权衡的新方法

  4. 一种近似衡量收敛的方法目前已发表的这类方法的工作只有一个,就是 Wasserstein GAN(WGAN)

  在生成器的设计上BEGAN 则借鉴了 Wasserstein GAN 定义损失(loss)的思路。传统的GAN会尝试直接匹配數据分布作者提出的方法是使用从Wasserstein距离衍生而来的损失去匹配自编码器的损失分布。这是通过传统的GAN目标加上一个用来平衡鉴别器和生荿器的平衡项实现的

  在深度神经网络中,生成器的函数G和鉴别器的函数D的表示能力是一个必须要考虑的因素它们由模型实现函数嘚方法以及参数的数量共同决定。传统情况下G和D往往不能达到平衡,判别器D往往在训练早期就能竞争过生成器G为了解决这一问题,作鍺引入了平衡的概念

  作者提出了一个衡量生成样本多样性的超参数 γ : 生成样本损失的期望与真实样本损失的期望值之比。在作者嘚模型中判别器有两个目标:对真实图像自编码,并且将生成图像与真实图像区分开这个超参数能够平衡这两个目标。γ 值比较低会導致图像多样性较差因为判别器太过于关注对真实图像自编码。

  EBGAN网络结构:

  作者使用带有指数线性单元(ELUs)的3x3卷积每一层都偅复2次。每次下采样卷积滤波都线性增加下采样操作通过子采样完成,采样步长为2上采样通过最近邻方法实现。在编码器和解码器的邊界处处理过的数据块通过全卷积层,不需要任何非线性操作映射到嵌入态

  实验数据:来自celeA数据库的360000张名人人脸图像,保证了图潒多样性与质量

  基于能量的生成对抗网络(EBGAN)与作者提出的方法结果对比:

}

领域的热点之一相当长的时间裏,计算机已经能相当可靠地识别人脸或者猫但在更大的图片中去识别一个指定的物体还是

领域的“圣杯”。人类的大脑能非常好地识別物体我们可以毫无困难地把从物体上反射出来的具有不同频率的光子转化为关于我们周边世界的极度丰富的信息集。而机器学习还依嘫在为了完成这个简单的任务而奋斗不过近几年,机器学习已经取得了相当不错的进步

和一个超大的公共训练数据集(称为ImageNet)共同促荿了物体识别领域的一系列令人映像深刻的进步。TensorFlow是一个广为人知的框架它让在多种架构上实现深度学习算法变得很容易。TensorFlow善于利用GPU的運算能力从而使得它非常适合运行深度学习的算法。

我想造一个能自己识别物体的用机器人示教器怎么使用多年的开发程序和测试的經验已经把我塑造成了害怕和实际物体打交道。现实世界里测试一个有缺陷的物理设备可能会把房子烧了,或是烧毁引擎并让你等很哆天才能拿到替换的零件。

图1 能识别物体的用机器人示教器怎么使用的架构图片由Lukas Biewald授权使用

而新的第三代树莓派板是完成这个项目的较佳选择。在亚马孙上它仅售36美元还带有无线功能、一个四核的CPU、1G的内存。加上一个报价6美元的迷你SD卡就可以载入一个基于Debian的Raspberian操作系统圖1显示了所有这些部件是怎么组合在一起的。而图2则是这块板子的照片

图2 运行在我车库里的树莓派板。图片由Lukas Biewald授权使用

我很喜欢SainSmart制造的呮用11美元的用机器人示教器怎么使用底盘这个底盘可以控制不同轮子采用不同的转速,运转的令人惊讶得好(见图3)

让我在有更便宜嘚选择的时候还多花钱的东西就是这个Adafruit制造的电机扩展板(见图4)。这个直流电机的运行电压超过了树莓派板子可以提供的电压所以单獨的控制器就成为必须。而Adafruit电机扩展板极其方便好用使用这个电机扩展板是会要做一点焊接,但这个设备是极度的容错而且Adafruit还提供了┅个很好的库和教程来让你通过i2C总线来控制电机。我一开始用的是一个便宜的电机控制器但不小心把我的树莓派板给烧掉了,所以我决萣买一个质量好一点的替代品

图4 已经安装了摄像头和电机的树莓派板。图片由Lukas Biewald授权使用

一个标价15美元的摄像头正好能装在树莓派板上咜能提供实时的视频来作为物体识别的输入。摄像头的选择就太多了我选了一个带红外功能的摄像头,这样就可以让我的用机器人示教器怎么使用有夜视功能了

树莓派板需要大概2安培的电源,但3安培电流对于我要装的扬声器是一个更保险的选择iPhone的充电宝是这一任务的悝想选择。更低安培的充电宝一般不能产生足够的电流从而会导致一些问题。不过这个Lumsing power bank的充电宝却很不错而且只用18美元。

这几个HC-SR04型的聲呐传感器可以让用机器人示教器怎么使用免于撞车11美元就能买到5个。

我还买了我能找到的最便宜的USB扬声器然后用了一堆的胶带、热膠和泡沫板来把所有的东西粘到一起。作为废物利用我还把一些电子设备的包装材料给剪了,并在上面画了一些东西来给这个用机器人礻教器怎么使用增加一点点人性这里我要说的是,我实际上造了两个用机器人示教器怎么使用(见图5)因为我实验了不同的底盘、摄潒头、声呐、软件和其他的东西。结果加在一起发现足够造两个版本的用机器人示教器怎么使用了

图5 我的四驱动用机器人示教器怎么使鼡(右边的)和他的两驱动用机器人示教器怎么使用妹妹。图片由Lukas Biewald授权使用

把用机器人示教器怎么使用组装好了之后就该让它变聪明了。网上有海量的教程教你如何使用树莓派如果你曾用过

,树莓派的一切对你而言就都很熟悉了

如果你想把摄像头的视频记录下来,RPi Cam Web接ロ能很好地胜任它非常容易配置。默认是把来自摄像头的的画面存放在RAM磁盘的/dev/shm/mjpeg/cam.jpg里

如果你想把摄像头的数据发布到网页里(这对调试是非常有帮助的),你可以用Nginx一个极度快的开源网页服务器。我把Nginx配成对摄像头画面的网页请求直接指向上面文件的地址而其他的请求嘟发送到网页服务器。

我随后开发了一个简单的Python 网站服务器可以接收键盘的指令来转动用机器人示教器怎么使用的轮子。控制键盘本来昰一个的遥控汽车的

另外要说的是,利用声呐和驾驶系统来控制用机器人示教器怎么使用的行驶路线从而让它能避开物体是一件非常有趣的事

终于,是时候安装TensorFlow了安装TensorFlow有很多种方法,但TensorFlow提供了makefile命令从而能针对你特定的操作系统进行编译。这一步骤花费了我几个小时并需要一些依赖包,但总体来说还算顺利

TensorFlow自带了一个预建好的模型,叫inception它可以完成物体识别。这是如何使用运行它的教程

对一张來自摄像头的画面运行tensorflow/contrib/pi_examples/label_image/gen/bin/label_image命令,TensorFlow会返回5个可能物体的猜测这个模型对于相当多的东西的识别都非常好,但是它也很明显地缺少一个确定的“先验条件”即它不知道将会看到的东西是什么。它的训练数据里也明显漏掉了不少物品比如,它能很好的识别我的笔记本即使是從很特殊的角度看。但当让它看我的装一堆电线的篮子的时候它就一直认为这是个烤面包机。当摄像头被遮挡拍到的图像为黑屏或是仳较模糊的时候,它就会认为是在看一些线虫很明显线虫是它的训练数据里的东西。

最后我采用Flite开源软件包来作为用机器人示教器怎么使用的输出部分把文字变成语音。这样用机器人示教器怎么使用就可以说出它看到的物体了(见图6)

看,这里就是我自制的两个可以使用深度学习进行物体识别的用机器人示教器怎么使用

2003到2005期间,我在斯坦福用机器人示教器怎么使用实验室工作那时候的用机器人示敎器怎么使用一般会要花费几十万美元,而且物体识别的能力也比不上我现在的这个用机器人示教器怎么使用我很希望能把这个软件装叺我的无人机里,这样就再也不用我自己找钥匙了

这里我也希望感谢在这个项目里帮助过我的人。我的邻居克里斯·冯·达克、施鲁蒂·咁地带给了我的用机器人示教器怎么使用的友好的人性我的朋友艾德·麦克洛大大提升了硬件部分的设计,并教会我使用热胶和泡沫板。工作在谷歌的皮蒂·沃顿帮助我在树莓派上很好地编译了TensorFlow,并提供了非常棒的客户支持

Lukas Biewald是CrowdFlower的创始人兼CEO。CrowdFlower始于2009年是一个数据增强的平台,可以帮助企业获得随需的人力来收集、产生训练数据以及参与人-机器学习循环的工作。 在从斯坦福大学拿到数学学士和计算机科学硕壵学位后Lukas领导了雅虎日本的搜索相关团队。随后他去了Powerset作为一个资深数据科学家进行工作。2008年Powerset被微软收购Lukas还被《公司》杂志评选为30位30岁以下的著名人士。 Lukas还是一位专家级的围棋选手

欢迎加入本站公开兴趣群

兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论分析工具,ETL工具数据仓库,数据挖掘工具报表系统等全方位知识

}

本文第一部分讲解自然语言处理嘚原理第二部分讲解聊天用机器人示教器怎么使用的实现原理,解决方案及挑战最后以 seq2seq+Attention 机制讲解模型结构。第三部分讲解如何从 0 开始訓练一个聊天用机器人示教器怎么使用

一、自然语言处理的原理

人工智能理解自然语言的原理,要解释清楚首先需要界定下这个问题嘚含义,一种是狭义的说如何用计算机来处理和分析自然语言;另一种是则是广义地理解关于“人工智能”、“自然语言”和“理解”的含义

我们先从广义层面探讨。弄清楚这几个名词

自然语言:就是人类社会中发明和演变的用于沟通和交流的语言。而人工智能在对事粅(不仅仅是自然语言)的理解往往包含两个层次:一是研究内容;二是方法论。研究内容上主要是现在流行的研究课题例如知识图譜、CV、语音识别、NLP 等。方法论是指实现人工智能的方法主要有三种:符号主义、联结主义、行为主义。符号主义是用数理逻辑的推理来模拟人的思维智能例如专家系统的实现。联结主义对人脑的仿生学研究最常见的就是神经网络模型。行为主义重点在可预测的人类行為上认为人类通过与外界环境的交互而得到自适应性,涉及的算法有遗传算法、强化学习等

现有的NLP主要是以规则和统计相结合来处理嘚。它的规则一面偏向于符号主义的视角;而统计一面偏向于挖掘一般规律属于归纳,目前用的方法比如将自然语言用词向量的方法表征,然后接入神经网络中进行训练也就是联结主义的思想。

理解:关于机器是否能真正理解语言一直有争论先抛开这个问题,我们看看人类对语言的理解是怎么样的实际上,人类对理解这个事情也做的不一定好比如,南北方对“豆腐脑”的认知是不同的两人交談可能就会对同一物体的理解不同。因此理解是需要由相似的生活经历、共同话题、上下文、会话的环境、双方的知识等很多因素决定嘚。既然对于人类来说真正能理解对方,需要这么多的隐性因素那对于机器来说,我们最好就不要关心机器是否真正能理解问题的含義本身而是尽可能地让机器关注上述因素,来模拟人的智能

狭义的层面是我们工程师研究的主要方向。也就是将自然语言理解看成是鼡计算机来处理和分析自然语言它涉及到语言学(词、词性、语法)和计算机学科(模型/算法)的范畴。

从语言学上来看研究的方向包括词干提取、词性还原、分词、词性标注、命名实体识别、词性消歧、句法分析、篇章分析等等。这属于研究的基础范畴在这些基础嘚研究内容之上,面向的是具体的文本处理应用如,机器翻译、文本摘要、情感分类、问答系统、聊天用机器人示教器怎么使用等

在計算机算法的研究方面,一般是以规则和统计相结合的方法也就是理性主义和经验主义相结合。自然语言本质上还是符号系统因此有┅定的规则可寻,但是它的复杂性又决定了没有规则可以既不相互冲突又能覆盖所有的语言现象后来大规模语料库的完善和统计机器学習方法流行起来后,就省去了很多人工编制规则的负担使模型生成自动生成特征。

所以我们研究的NLP就是使用数理和机器学习的方法对語言进行建模。可以说NLP不是达到真正的自然语言理解,而是把语言当成是一种计算任务

二、聊天用机器人示教器怎么使用的实现原理、解决方案及挑战

我们从聊天用机器人示教器怎么使用的分类和实现原理分别说起。目前聊天用机器人示教器怎么使用根据对话的产生方式可以分为基于检索的模型(Retrieval-Based Models)和生成式模型(Generative Models)。

基于检索的模型有一个预先定义的回答集我们需要设计一些启发式规则,这些规則能够根据输入的问句及上下文挑选出合适的回答。

生成式模型不依赖预先定义的回答集而是根据输入的问句及上下文,产生一个新嘚回答

聊天用机器人示教器怎么使用的这两条技术路线,从长远的角度看目前技术还都还处在山底两种技术路线的异同和优势如下:

基于检索的模型的优势:

  • 出现不相关的答句,容易分析、定位 bug

但是它的劣势在于:需要对候选的结果做排序进行选择。

基于生成式模型嘚优势:

  • 端到端的训练比较容易实现

  • 避免维护一个大的Q-A数据集

  • 不需要对每一个模块额外进行调优,避免了各个模块之间的误差级联效应 

泹是它的劣势在于:难以保证生成的结果是可读的多样的。

因此上述方法共同面临的挑战有:

  1. 如何利用前几轮对话的信息,应用到当輪对话当中

  2. 合并现有的知识库的内容进来

  3. 能否做到个性化千人千面。

这有点类似于我们的信息检索系统既希望在垂直领域做得更好;吔希望对不同的人的 query 有不同的排序偏好。

从应用目的的角度区分可以分为目标驱动(Goal Driven),应用于客服助理等在封闭话题场景中;无目標驱动(Non-Goal Driven),应用在开放话题的场景下这是可谈论的主题是不限的,但是需要用机器人示教器怎么使用有一定的基础常识

尽管目前工業界应用的大多数是基于检索的模型,属于目标驱动的例如:阿里小蜜,应用的话题领域比较窄稍微将话题扩大一点,它就会不着边際回复或者文不对题如下图:

一个开放话题场景下的生成式模型应该是最智能、符合我们预期的聊天用机器人示教器怎么使用。因此总結来看:

智能聊天用机器人示教器怎么使用的目标:

  1. 和人类能够进行持续的沟通

  2. 对不同的提问能够给出合适的回答

  3. 考虑到人类不同个性化的差异性给出差异性的回答(例如,同一个问题对男女老少不同群体的回答应该略有差异)

那么对于一个智能用机器人示教器怎么使用來说,它的聊天的功能在其中应该处于什么位置首先,聊天应该是一个基础模块;其次聊天应该和完成任务的模块有很好的协作;最後,聊天应该使用机器人示教器怎么使用看上去像您的朋友而不是您的代理或者助手。

从上述角度来说现在有一些经常与聊天用机器囚示教器怎么使用混淆的概念,也是一些聊天系统的周边产品:

  1. QA 问答系统:是回答事实问题(例如珠峰有多高)以及非事实问题(例如why, how, opinion等觀点性问题)的领域用机器人示教器怎么使用

  2. Dialog system 对话系统:这种大多是目标驱动的,但是近几年都也在慢慢接受聊天用机器人示教器怎么使用功能

因此尽管聊天系统都是针对文本理解的大方向,但目标不同决定了技术路线会有所偏重但聊天功能是一个基础功能。

智能聊忝用机器人示教器怎么使用可以从上面的周边系统研究领域的数据集有所借鉴:

  • 社区型问答系统(例如百度知道等对问题和答案间有较強的匹配;并且一个问题多个答案时有评分、排序)

  • 从在线系统中挖掘一些好的 QA corpus

那如何来评价一个聊天用机器人示教器怎么使用的好坏?朂重要的是问句和答句的相关性也就是本质是:短文本相关度计算。但要注意:

  1. 相似性和相关性是不同的用于相似性计算的各种方法並不适用于相关性。我们需要建立一套短文本相关性计算方法

  2. 相关性计算有一些在早期的聊天用机器人示教器怎么使用的构建中延续下來的方法: 

  • 基于机器翻译的相关度计算

  • 主题模型(LDA)的相似度计算

目前在聊天用机器人示教器怎么使用上使用的深度学习方法有如下这些:

其中,深度强化学习是把“如何得到一个足够让人满意的生成式结果”量化成 Reward这些因素包括: 

  • 是否容易被回答(一个好的生成式的结果應该是更容易让人接下去的) 

  • 一个好的回复应该让对话前进,避免重复性 

  • 保证语义的连贯性用生成式的结果反推回 query 的可能性有多大,能保证在语义上是和谐的、连贯的

那么如何实现在智能聊天用机器人示教器怎么使用的第三个目标,差异化回答呢也就是如何在对话里洳何引入个性化(personality)信息?

首先预训练一个人的向量让生成的结果贴近人的特点。通过 word embedding 将人的信息作为一个词向量在输入部分增加一組人的向量;在生成回答的时候,考虑不同的人应该选什么样的词语

目前,我们要做一个真正智能的自动聊天用机器人示教器怎么使用仍然面临一些挑战:

  • 缺乏公共的训练数据集,目前使用国外的数据集较多 

  • 评估度量:度量很难设计(目前是从机器翻译和自动摘要的 BLEU、ROUGE 裏借鉴的但面临问题是否能刻画聊天用机器人示教器怎么使用的好坏,并且指导聊天用机器人示教器怎么使用的技术朝着正向的方向发展)

  • 聊天用机器人示教器怎么使用的一般对话和任务导向的对话之间如何能够平滑切换 

    • 这种平滑切换对用户的体验非常重要

    • 切换的技术需偠依赖情绪分析及上下文分析

    • 用户不需要给出明确的反馈例如,我前一句说鹿晗好后一句说不喜欢韩范,需要聊天用机器人示教器怎麼使用能正确识别

  • 仍然存在的问题 

    • 句子级、片段级的语义建模还没有词语的建模(word embedding)那么好

    • 生成式仍然会产生一些安全回答

    • 在知识的表示囷引入上还需要努力

(本文余下还有7000字)

}

我要回帖

更多关于 用机器人示教器怎么使用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信