李宏毅机器学习(17)

Seq2seq

Generation

我们希望NN能生成structured object,比如:一句话。这个问题我们已经知道要用RNN来解决了。
在这里插入图片描述
类似的,我们可以讲一副图片拆成一个个像素,用RNN生成。
在这里插入图片描述
但更好的方法是,我们应该让就近的像素对生成的像素进行影响,而非按行来。可以进行 filter + 3维记忆空间 的方法。
在这里插入图片描述

Conditional Generation

但更多的时候,我们会给机器一个条件作为输入,从而获得相应的输出。
比如:输入一副图片,机器输出一句话来描述这幅图像。
那我们就可以用一个CNN把图像转化成一个 v e c t o r vector vector,然后再每个时刻都输入进RNN中,以防RNN忘记。
在这里插入图片描述
文字翻译也可以用类似的方法,其做法也并不复杂,大体可以分为两步:

  1. Encoder:把输入放进一个RNN中,最后输入一个 v e c t o r vector vector
  2. Decoder:把 v e c t o r vector vector每个时刻都输入另一个RNN中。

在这里插入图片描述
此外,在聊天机器人中,我们需要让之前的信息也输入到模型中,防止说重复的内容。
在这里插入图片描述

Attention

Attention是一种动态的Generation,即:每个时刻输入进Decoder的 v e c t o r vector vector不一样。
这样做有两个优势:

  1. 有时输入太大,不能只用一个 v e c t o r vector vector表示
  2. 输出的时候可以只考虑一个部分,简化了运算

在这里插入图片描述
做法也不复杂:
z 0 z^0 z0表示0时刻的参数。 m a t c h match match是自己设计的函数,可以train。这样就得到了每个 h h h对应的 α α α
在这里插入图片描述
之后,经过一个 softmax ,然后求和得到 c c c ,此时 c c c就是Decoder input 。此外,可以得到下一时刻的 z 1 z^1 z1
在这里插入图片描述

Image Caption Generation

将每个图片划分区域,把每个区域的向量与当前时刻的 z z z进行运算得到 w e i g h t weight weight,之后,进行 weighted sum,再交给 Decoder ,以此得到输出。
在这里插入图片描述

Memory Network

现在有这样的问题:我们有一篇文章Document,一个问题Query,我们需要输出一个答案Answer。
基本做法如下:
x 1 , x 2 , x 3 , . . . , x N x^1,x^2,x^3,...,x^N x1,x2,x3,...,xN表示文章的每个句子。向量q表示问题。两者经过Match函数得到对应的 α α α。而得到的新向量,可以与 q 进行运算,表示机器在反复“思考”。这个过程叫做 Hopping 。
在这里插入图片描述
更复杂的版本。
在这里插入图片描述

Neural Turing Machine

Neural Turing Machine 不仅可以读取memory,还可以修改memory。
在这里插入图片描述
基本流程如下:
我们现在有4个memory: m 0 1 , m 0 2 , m 0 3 , m 0 4 m_0^1,m_0^2,m_0^3,m_0^4 m01,m02,m03,m04,有对应的 w e i g h t weight weight α ^ 0 1 , α ^ 0 2 , α ^ 0 3 , α ^ 0 4 \widehat{α}_0^1,\widehat{α}_0^2,\widehat{α}_0^3,\widehat{α}_0^4 α 01,α 02,α 03,α 04。由此生成对应的向量 r 0 r^0 r0。函数 f f f输出三个值: k 1 , e 1 , a 1 k^1,e^1,a^1 k1,e1,a1
通过计算,得到新的 α ^ 1 1 , α ^ 1 2 , α ^ 1 3 , α ^ 1 4 \widehat{α}_1^1,\widehat{α}_1^2,\widehat{α}_1^3,\widehat{α}_1^4 α 11,α 12,α 13,α 14(实际计算很复杂)。
然后再用 e 1 , a 1 e^1,a^1 e1,a1修改memory得到 m 1 1 , m 1 2 , m 1 3 , m 1 4 m_1^1,m_1^2,m_1^3,m_1^4 m11,m12,m13,m14
这样就完成了一次更新。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Pointer Network

其实,凸包问题也可以用NN来解决。看起来可以用Seq2seq来解决,硬train一发即可。
在这里插入图片描述
但问题在于:输入的点集大小是不确定,train的时候可能只有50个点,输出的集合范围自然是1~50。但test的时候范围可能就变成了1-100。
在这里插入图片描述

这就需要对模型进行一点改造。
在这里插入图片描述

Recursive Network

是Recurrent Network的升级版本。

Application: Sentiment Analysis

比如,我要处理一个情感分析的问题。
对于Recursive,我们需要决定各个输入之间的关系。将某些输入值放在一起,输入到模型中。
在这里插入图片描述

Recursive Model

我们可以考虑用文法结构的顺序进行输入。
这个 f f f,不能用一个简单的函数。因此需要一个 network。
在这里插入图片描述
在这里插入图片描述

Recursive Neural Tensor Network

这个 f f f应该整什么样子呢。大概长下面这样。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值