seq2seq

具有注意力机制的seq2seq模型

ε祈祈猫儿з 提交于 2020-08-07 04:07:09
作者|Renu Khandelwal 编译|VK 来源|Towards Data Science 在本文中,你将了解: 为什么我们需要seq2seq模型的注意力机制? Bahdanua的注意力机制是如何运作的? Luong的注意力机制是如何运作的? 什么是局部和全局注意力? Bahdanua和Luong注意力机制的关键区别 什么是注意力,为什么我们需要seq2seq模型的注意力机制 让我们考虑两个场景,场景一,你正在阅读与当前新闻相关的文章。第二个场景是你正在阅读准备考试。两种情况下的注意力水平是相同还是不同? 与新闻文章相比,你在准备考试时会相当注意阅读。在准备测试的时候,你会更加关注关键词来帮助你记住一个简单或复杂的概念。这也意味着我们要专注于某一特定领域的任何深度学习任务。 序列到序列(Seq2Seq)模型使用编码器-解码器架构 。 seq2seq的几个场景 神经机器翻译(NMT) 图像字幕 聊天机器人 文本摘要等 Seq2Seq模型将源序列映射到目标序列。在神经机器翻译的情况下,源序列可以是英语,目标序列可以是印地语。 我们将英语源语句传递给编码器;编码器将源序列的完整信息编码为单个实值向量,也称为上下文向量。然后,这个上下文向量被传递到解码器上,以生成目标语言(如印地语)中的输出序列。上下文向量负责将整个输入序列汇总为单个向量。 如果输入的句子很长

seq2seq聊天机器人

馋奶兔 提交于 2020-08-06 10:55:14
seq2seq聊天机器人 作者:魏祖昌 一、背景介绍 人工智能技术的进步,语音识别技术、自然语言处理等技术的成熟,智能客服的发展很好的承接当下传统人工客服所面临的挑战。智能客服能够24小时在线为不同用户同时解决问题,工作效率高等特点,这是传统人工客服不能替代的,它能为公司节省大量的人工客服成本。在这次疫情当中,由于总总原因,大家肯定多多少少都见识过各种各样的智能客服。本文就基于seq2seq来介绍一个聊天机器人。 二、seq2seq Seq2Seq即Sequence to Sequence,是一种时序对映射的过程,实现了深度学习模型在序列问题中的应用,其中比较突出的是自然语言中的运用。它主要由Encoder和Decoder两个部分组成,正如图一所示。 图一:论文中seq2seq结构( https://arxiv.org/pdf/1409.3215.pdf ) seq2seq模型的encoder非常简单(上图中ABC对应的部分),就是RNN,可以是多层(GRU,LSTM)。decoder在训练和测试的时候,稍微有点不同。decoder训练的时候输入由两部分组成,一部分是encoder的last state,另一部分是target序列,如上图中的第一个<EOS> WXYZ;其中两个<EOS>表示的是序列开始符和结束符;decoder测试的时候输入也是由两部分组成

理解Pytorch中LSTM的输入输出参数含义

依然范特西╮ 提交于 2020-07-25 04:23:06
本文不会介绍LSTM的原理,具体可看如下两篇文章 Understanding LSTM Networks DeepLearning.ai学习笔记(五)序列模型 -- week1 循环序列模型 1、举个栗子 在介绍LSTM各种参数含义之前我们还是需要先用一个例子(参考 LSTM神经网络输入输出究竟是怎样的?Scofield的回答 )来理解LSTM。 Recurrent NNs,一般看的最多的图是这个: rnn但是这个图对初学者相当不太友好。个人认为,目前所有的关于描述RecurrentNNs的图都画得不好,不够明确,里面的细节丢失了。(事实上里面一个"A"仅仅表示了一层的变换,具体如下图所示。) 非常清楚,这是很多初学者不能理解RecurrentNNs的根本原因,即在于 Recurrent NNs是在time_step上的拓展 的这一特性。MLP好理解,CNN也好理解,但Recurrent NNs,就是无法搞清楚里面的拓扑结构,跟MLP联系不上。 先看看MLP,很好理解,就是一张网络清楚地显示了张量流向。 general MLP是这样的拓扑: mlp然后CNN也好理解,跟MLP无差若干,只是权重运算由 \(*\) 变为 \(\otimes\) 。CNN是这样的拓扑: 但RecurrentNNs的拓扑发生了一个很大的改动,即一个MLP会在time_step这个维度上进行延伸

AI算法效率每16月翻番,超越摩尔定律,OpenAI:长江后浪推前浪

人走茶凉 提交于 2020-05-08 02:19:19
人工智能算法也遵循着自己效率提升的「摩尔定律」。 在人工智能领域里,因为研究人员的努力,顶尖算法的效率提升速度超过了芯片中摩尔定律的速度。 著名人工智能研究机构 OpenAI 今天更新了有关业内顶尖机器学习模型算法需求的报告,并得出最新结论:自 2012 年以来,在著名数据集 ImageNet 上训练一个图像分类系统所需的算力每 16 个月减少一倍。 这一观点和 OpenAI 几个月前「最先进 AI 模型算力需求增长 30 万倍」的态度有了很大变化,其结论或许意味着人工智能在未来发展的过程中将不大可能受到算力瓶颈的掣肘。 除了关注模型的最优表现之外,OpenAI 本次研究发现的模型效率提升是最引人关注的地方。它还有着更深层次的意义:为 AI 的技术属性和社会影响提供依据。 「算法的改进是 AI 技术提升的核心。不过寻找衡量所有技术进步的标准非常困难,特别是它们在使用算力方面变化的趋势,」OpenAI 表示。「算法效率的提升使得研究人员可以在同样时间内进行更多实验,并减少资金花费。分析表明,政策制定者需要增加对于计算效率研究的投资,这不仅对于学术界有帮助,而且可以进一步帮助业界。」 此外,值得注意的是,OpenAI 并不是首个公开提出对 AI 模型的效率展开基准测试的机构。2019 年,艾伦人工智能研究所、卡内基梅隆大学以及华盛顿大学的科学家提议将效率作为 AI

MIT、DeepMind发布CLEVRER数据集,推动视频理解的因果逻辑推理

淺唱寂寞╮ 提交于 2020-04-24 13:34:55
  机器之心发布    机器之心编辑部       大多数视频推理数据集的侧重点是从复杂的视觉和语言输入中进行模式识别,而不是基于因果结构。在这篇 ICLR 2020 论文中,麻省理工、DeepMind 的研究者提出了一种针对时间和因果推理问题的数据集,包含 20,000 个关于碰撞物体的合成视频以及 300,000 多个问题和答案,从互补的角度研究了视频中的时间和因果推理问题。      论文链接:https://arxiv.org/abs/1910.01442   项目链接:http://clevrer.csail.mit.edu/   从视频的物理事件中识别物体并推断其运动轨迹的能力是人类认知发展的核心。人类,即使是幼儿,也能够通过运动将图片区域划分为多个物体,并使用物体的永久性、实体性和连贯性的概念来解释发生了什么,推断将发生什么以及想象在反事实情况下会发生什么。   在静态图像和视频上提出的各种数据集的推动下,复杂视觉推理问题已经在人工智能和计算机视觉领域得到了广泛研究。然而,大多数视频推理数据集的侧重点是从复杂的视觉和语言输入中进行模式识别,而不是基于因果结构。尽管这些数据集涵盖了视觉的复杂性和多样性,但推理过程背后的基本逻辑、时间和因果结构却很少被探索。   在这篇论文中,麻省理工和 DeepMind 的研究者从互补的角度研究了视频中的时间和因果推理问题

飞桨博士会第六期回顾|新时代AI课程与飞桨设计思想

和自甴很熟 提交于 2020-03-12 02:01:35
飞桨博士会第六期沙龙于11月30日在百度大厦举办,来自深度学习研究方向的博士齐聚西二旗进行交流。 本次沙龙首次特邀两位主讲嘉宾,百度深度学习技术平台部两位主任架构师——毕然和胡晓光,分别详解新时代AI课程、飞桨设计思想与编程指南。如下呈现本场主讲内容摘要,可供回顾参考。 01 新时代AI课程:机器学习的思考故事&零基础入门深度学习 毕然老师从“机器学习模型演进路线”和“从模型到系统到商业”两个部分对《机器学习的思考故事》课程进行概述。 机器学习模型演进路线可从框架拆解、学习理论、复杂模型和实用技巧四方面理解。毕然老师从机器学习的基本理论引入,进而延伸讲解如何构造非常强大的模型。机器执行学习时,需要圈定假设空间(包含不同参数之间的关系),并借助评价指标判断参数在不同取值中,哪一个情况下与真实情况接近。同时,毕然老师在这门课程中重点阐述具体算法在设计中更本质的原理。 在“从模型到系统到商业”部分,毕然老师首先提出观点,即模型建立要基于对整个系统非常深度的理解,而系统如果要成为长久的生意则需要满足市场需求,并且有合理的商业逻辑。机器学习的模型都需要嵌入进某个系统中,而这个系统目标是实现某个商业业务。这里毕然老师以百度图像搜索应用为例,由实际用户需求场景切入到技术思路,并和现场博士们就技术实现是采用分类模型还是检索模型讨论。 《零基础入门深度学习》从课程设计思想、学习平台进行介绍

如何搭建一个智能对话机器人?

☆樱花仙子☆ 提交于 2020-02-26 22:41:37
注:该文章来源——《智能对话机器人开发实战》 本篇文章会系统性的介绍智能对话机器人的构成组件,通过本篇文章的阅读,可以让你对智能对话机器人的体系结构有初步认识,了解智能对话机器人回答问题的工作原理。 概述 首先我们来看智能对话机器人体系结构的构成,从与机器交互的完整流程角度来给大家做一个系统性的概述。 当人通过声音信号把自己表达的内容以声音的方式来传递给机器的时候,机器人接收声音的过程涉及到了语音识别技术。 这个语音识别在这个里面其实是一个综合体,它既包括语音采集,也包括把声音信号转成文字信号。 其次,当我们把声音信号转换成文本信号后,要做的一件事情就是语义理解,因为你要让机器理解你,那么首先要让机器知道你说的是什么内容。机器在理解你说内容的过程中,依赖于中文分词、词性标注、实体意图识别、语义分析。那这部分内容就涉及到了语义理解技术。 在机器理解人所说的内容后,会把对应的内容交给对话管理平台来进行处理。那么对话管理平台涉及到的内容是什么呢?包括对话状态的跟踪同时也包括对话的策略模型。 对话状态跟踪负责两件事情,第一是负责对对话状态进行跟踪,第二是对“对话活动”进行决策。当完成了对话状态跟踪和对话活动的决策后,会生成对应的答案。那么这种答案往往很多时候有两种情况,一种情况是多答案的情况,另外一个是对多处理模式的选择。 当我在表达一句话的时候,如果机器在备选答案里面找到了多个回答

Tensorflow seq2seq chatbot always give the same outputs

此生再无相见时 提交于 2020-02-04 12:16:04
问题 I'm trying to make a seq2seq chatbot with Tensorflow, but it seems to converge to the same outputs despite different inputs. The model gives different outputs when first initialized, but quickly converges to the same outputs after a few epochs. This is still an issue even after a lot of epochs and low costs. However, the models seems to do fine when trained with smaller datasets (say 20) but it fails with larger ones. I'm training on the Cornell Movie Dialogs Corpus with a 100-dimensional and

百度AI攻略:图像风格转换

泄露秘密 提交于 2020-01-09 15:58:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1.功能描述: 将图像转换成卡通画或素描风格,可用于开展趣味活动或集成到美图应用 2.平台接入 具体接入方式比较简单,可以参考我的另一个帖子,这里就不重复了: http://ai.baidu.com/forum/topic/show/943327 3.调用攻略(Python3)及评测 3.1首先认证授权: 在开始调用任何API之前需要先进行认证授权,具体的说明请参考: http://ai.baidu.com/docs#/Auth/top 具体Python3代码如下: # -*- coding: utf-8 -*- #!/usr/bin/env python import urllib import base64 import json #client_id 为官网获取的AK, client_secret 为官网获取的SK client_id =【百度云应用的AK】 client_secret =【百度云应用的SK】 #获取token def get_token(): host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' +

Specifying a seq2seq autoencoder. What does RepeatVector do? And what is the effect of batch learning on predicting output?

柔情痞子 提交于 2019-12-23 22:34:14
问题 I am building a basic seq2seq autoencoder, but I'm not sure if I'm doing it correctly. model = Sequential() # Encoder model.add(LSTM(32, activation='relu', input_shape =(timesteps, n_features ), return_sequences=True)) model.add(LSTM(16, activation='relu', return_sequences=False)) model.add(RepeatVector(timesteps)) # Decoder model.add(LSTM(16, activation='relu', return_sequences=True)) model.add(LSTM(32, activation='relu', return_sequences=True)) model.add(TimeDistributed(Dense(n_features)))'