机器学习之十二(读书笔记)

本文介绍了Pointer Network如何解决可变长度序列问题,特别是在序列到序列任务中的应用,如自动摘要和机器翻译。此外,还探讨了Recursive Structure在情感分析中的运用,包括Recursive Neural Tensor Network和Tree LSTM的原理及其优势。
摘要由CSDN通过智能技术生成
  • pointer network
  • Recursive Structure

十九、Pointer Network(指针网络)

  解一系列演算法:
  给十个data point,用自动的方法找出一些点,连接起来可以把其余的点包进去。
  一个neural network,它的input就是十个data point,每一个data point就用xy坐标表示,所以input就是10个二维的vector,丢到network里去,期待它的output为(4 2 7 6 5 3):
在这里插入图片描述
  那这个pointer network怎么解呢?
  input一排sequence,output另一个sequence,好像可以直接用sequence-to-sequence直接解:
在这里插入图片描述
  结果是不work的。为什么?如果input sequence长短不一样的时候,由于encoder是一个RNN,encoder可以处理,但是decoder的长短无法改变。
  解决:one can add attention。对attention做一下改造,让network可以动态地决定它输出的set有多大。
  做法:用attention的model,把sequence读进来,但是要加一个特别的符号 ( x 0 y 0 ) \begin{pmatrix} x_0\\ y_0 \end{pmatrix} (x0y0),代表“END”这个值。采用attention-based model,产生一个key z 0 z^0 z0,用这个key对input做attention,对每一个input产生一个attention weight,这个attention的weight就是output 的distribution,根据这个attention weight去取argmax,假设现在 h 1 h^1 h1的值最大,就是output 1,如下图所示:
在这里插入图片描述
  如何training?
  labeled data告诉我们,在第一个time state,output 1才是对的,就会希望在training的时候,得到由attention所构成的distribution它在 h 1 h^1 h1的值最大,其它值都趋近于0,然后去minimize cross-entropy。
  好处:随着input sequence的变化,现在output的set也会跟着改变。
  假设上图的output为1 ,现在就把 ( x 1 y 1 ) \begin{pmatrix} x_1\\ y_1 \end{pmatrix} (x1y1)丢进去,产生新的key z 1 z^1 z1,再用 z 1 z^1 z1去做attention,根据这个attention得到distribution,再从这个distribution做argmax,由于 h 4 h^4 h4几率最大,所以output为4,然后再把 ( x 4 y 4 ) \begin{pmatrix} x_4\\ y_4 \end{pmatrix} (x4y4)丢进去,再产生新的key…知道“END”出现,即代表“END” 的 ( x 0 y 0 ) \begin{pmatrix} x_0\\ y_0 \end{pmatrix} (x0y0)的attention weight最大的时候,结束。
在这里插入图片描述
  应用:
1、Summarization
在这里插入图片描述

  
2、Machine Translation
在这里插入图片描述
  
3、Chat-bot
在这里插入图片描述
  
  

二十、Recursive Structure(递归结构)

  Application:Sentiment Analysis
  做法:input一个word sequence,machine决定它的Sentiment是什么。这个word sequence就会被表示成一个vector sequence,可能用word embedding来表示每个word vector(或者1-of-N encoding),最后的output就是sentiment,假设把sentiment从正向到负向分为5个等级,那它就是一个5维的vector。
在这里插入图片描述
  假设使用Recurrent Structure,就是input h 0 h^0 h0,然后通过每一个function f f f,output h 1 h^1 h1,再把 h 1 h^1 h1 x 2 x^2 x2丢到一模一样的function f f f得到 h 2 h^2 h2…以此类推,最后等把整个sequence读完,就把最后一个output丢到另外一个function g g g里面,最后得到最终的output。
在这里插入图片描述
  如果使用Recursive Structure:需要先决定input word中间有什么样的关系,它们的structure长什么样子,然后根据input的word得到output的sentiment的vector。现在假设structure已经决定好了,然后把 x 1 x^1 x1 x 2 x^2 x2丢到function f f f里面, f f f得到 h 1 h^1 h1,接下来把 x 3 x^3 x3 x 4 x^4 x4丢到function f f f中,得到另一个output h 2 h^2 h2(那几个input word算在一起要事先决定),再把 h 1 h^1 h1 h 2 h^2 h2丢到function f f f中得到 h 3 h^3 h3,最后把 h 3 h^3 h3丢给function g g g,得到最后的output。
在这里插入图片描述
  为了让这些 f f f前后可以相接,需要让 h h h x x x的dimension是一样的,这样才能让这些 f f f堆叠起来。
  
1、Recursive Model
  假设现在input句子是“not very good”,现在决定它是positive还是negative。
  可以从句子得到它的syntactic structure(句法结构),假设文法结构是已知的:
在这里插入图片描述
  今天apply Recursive Network,首先先把所有的word都用一个vector(word embedding)来表示,接下来拿出那个function f f f,这个 f f f结合的顺序跟以上文法的结构是一样的,假设这些word vector的dimension都是 ∣ z ∣ |z| z,那么network f f f的input就是 2 × ∣ z ∣ 2\times |z| 2×z,output就是 ∣ z ∣ |z| z
在这里插入图片描述
  当我们apply这个function f f f时得到的output怎么解读呢?上图的output希望它代表“very good”的意思,这个 f f f可能不是一个简单的function,可能需要用到neural network,它的output不是简单的两个word vector的结合,而是它们的关系,比如:
在这里插入图片描述
在这里插入图片描述

  所以我们需要一个network帮我们处理这个问题, f f f要做到假设它看到“not”所代表的vector,它就要把另外一个输入的vector转向;比如看到“very”就是要把原来正面的东西变得更正面,把原来负面的东西变得更负面。
  这个function f f f怎么自动做到这件事情呢?透过training data自动学出来。
在这里插入图片描述
  同时train function f f f g g g
  
   f f f长什么样子呢?
  最简单就是把以下两个vector串接在一起,乘上一个参数 w w w,再通过一个激活函数,得到最后的output。
在这里插入图片描述
  但是这样可能没办法得到特别好的结果,有一个问题是现在考虑a和b之间的interaction(相互作用),我们希望a的每个component和b的component之间要互相影响。所以可能需要设计更复杂的function—Recursive Neural Tensor Network(递归神经张量网络):
  把刚才两个vector串接在一起的vector x x x乘上一个matrix w w w,再乘上 x T x^T xT,得到的是一个标量,即 ∑ i , j W i , j x i x j \sum_{i,j}^{}W_{i,j}x_ix_j i,jWi,jxixj
在这里插入图片描述
  但是这样得到标量无法与后面的式子相加,于是把以上的式子再做一次:
在这里插入图片描述
  以下是在文献上根据Recursive Neural Tensor Network所得到的结果:
在这里插入图片描述
  在Recursive Neural Tensor Network之前有一个方法Matrix-Vector Recursive Network(矩阵向量递归网络),它的performance较差。
在这里插入图片描述
  还有另外一个更复杂的方法叫做Tree LSTM
在这里插入图片描述
  
  
  


本文是对blibli上李宏毅机器学习2020的总结,如有侵权会立马删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值