Example Application

Slot filling

填空

  • 如果使用Feedforward network(前馈神经网络)
    • Input a word
    • 1-of-N encoding
      • 可能需要有other维度来处理词汇表中不存在的表示
      • 对英文单词的话,使用word hashing,例如a-a-a(
        • apple app, ppl, ple
    • 作为一个分类任务
      • 每一个词属于各个slot的概率
    • 但是
    • feedforward network不存在上下文信息,所以同一个词的输出不会随着语意和顺序发生改变

Recurrent Neural Network

How to keep memory

增加一个记忆模块,把输出存进记忆里,记忆里的数值参与下一次运算
大概是这么个流程来实现记忆

记忆里面的数值随着输入迭代

  • 仍然是slot filling 的任务,每个word进入得到它的分类情况
  • 后一次迭代考虑前一次的内容
  • 很明显虽然由后往前有记忆性,对于先输入的词来说,后输入的词没有被考虑到(没有后文信息)

RNN

Elman Network

Elman Network 将hidden layer的输出存到记忆里,参与下一次计算

Jordan Network

Jordan Network 把最终的输出存进记忆里,参与下一次运算
传说比较好

可以解释为,hidden的输出没有target,比较难学到有用的记忆,最终输出有target,比较好学?

Bidirectional RNN

同时train两个RNN,方向不同,将二者的输出给一个output layer得到最终输出

这样就能够考虑到前后文

Long Short-term Memory (LSTM)

长 短期 记忆
一种比较持久的短期记忆机制
一种记忆的机制,四个部分

  • Memory cell
    • 存储记忆
  • Input Gate
    • 是否输入到记忆里
  • Output Gate
    • 是否输出参与计算
  • Forget Gate
    • 是否忘记当前记忆

需要有四种输入来控制记忆,产生一个输出

  • 控制三个门的输入
  • 可能存入记忆的输入
  • 可能产生的输出

How does it work

表示输入, 表示输出, 表示当前的记忆

Gates的activation function一般是sigmoid,sigmoid输出在0-1之间,代表gate打开的程度

流程

  1. 输入一个,经过activation function得到, input gate输出 相乘,得到输入的新记忆
    1. 此时作为输入开关,如果为0,则输入的新记忆为0
  2. 输入经过sigmoid得到 ,与当前记忆相乘,得到加权的当前记忆 ,与输入的新记忆 加和,更新记忆
    1. 此时如果为0,则旧记忆被遗忘
  3. 记忆经过activation function得到 ,与output gate输出 相乘,得到输出
    1. 此时如果是0,则没有输出

几个Input都是由模型输入与权重相乘得到的加权和

结构

LSTM把memory cell 当成一个neuron
一个neuron需要四组参数

对于整个网络

  • memory cell 变成网络的neuron
  • 输入x乘以不同的matrix,得到四组输入向量,dimension与这一层的neuron数量一致

实际上,计算不是以memory cell为单位进行的


每个输入向量,过 activation function后与相乘, 过activation function后与记忆 相乘,二者相加得到新记忆,新记忆过activation function后与过activation function的结果相乘得到output

然后进入下一轮

实际上,输入处还会加入新记忆(peephole)和上一次的输出,把并在一起

然后叠多层

现在使用RNN基本就是用LSTM

GRU是LSTM的简化版,少了一个gate,参数比较少,据说表现差不多

Training

如果是slot fliing
一个序列(句子)作为输入,一个word一个label,对应一个reference vector,然后计算cross entropy

输入的本质是一个词,但是需要把一个序列当成一个整体,顺序不能改变

Backpropagation through time(BPTT)

相比于普通的backpropagation多考虑了时间因素

待补👈 可能补吧

Problem

Rough error surface

error surface 要么很平坦要么很陡峭

解决方法可以使用clipping
设置阈值,当梯度大于阈值时就等于阈值

但是为什么

  • BPTT
  • 或者实际例子
  • 一个简单的RNN,1层1个neuron
An Example

输入一个长度为1000的序列

通过稍微改变权重,看看梯度怎么变化

在权重为1和1.01时 gradient explode

在权重为0.99和0.01时 gradient vanishing

由于序列每个输入之间的联系是累乘的,所以transition部分参数变化的影响是指数级的

Helpful Techniques
  • Long Short-term Memory(LSTM)

    • can deal with gradient vanishing 把平坦的部分拿掉
    • 为什么
      • memory和input是相加的
      • forget gate是可以开启的,保留记忆的影响 (一般bias比较小,确保开启)
      • 但是感觉不对👈查一下
    • GRU
  • Clockwise RNN

  • Structually Constrained Recurrent Network (SCRN)

还有奇怪的点

  • 使用random intialization的话,sigmoid activation function 比较好
  • 使用identity matrix 的话,ReLU比较好
    • 一般的RNN就很强

Applications

  • slot filling (vector sequence as input, each word has a label)
  • Input a vector sequence, output a vector (多对一)
    • 情感分析
      • 最后把hidden layer拿出来,做一些transform,做分类
    • Key term extraction
  • Input a vector sequence, output a vector sequence (多对多)
    • output shorter
      • speech recognition
        • 每个vector有一个label,然后trimming(去重),有的本来就有重复无法解决
        • Connectionist Temporal Classification (CTC)
          • 允许output null字符
          • 很强
    • 不确定长短 Seq-to-Seq
      • 把原输入给RNN滚过一遍,存下记忆,先产生第一个字
      • 然后第一个字作为输入,结合记忆,产生第二个字,以此类推
      • 如何停止 --- 特殊字符
  • Beyond Sequence (still sequence to sequence)
    • Syntactic parsing tree 语法分析树
    • sequnce to sequence auto encoder
      • 用在文字上
        • 把document 变成 vector
        • 用RNN把句子滚一遍,然后经过decoder得到原句字(类比RNN seq-to-seq)的做法
      • 用在语音上
        • 例如语音比对
        • audio segment to vector由RNN来做
          • 声音讯号用RNN滚一遍,最后得到的向量就是我们需要的vector
          • 训练的时候还需要有一个decoder还原声音讯号
          • encoder和decoder一起train
      • chat bot
        • 收集对话
        • encoder-decoder

Attention-baesd Model

注意力
Neural turing machine
input 进来,DNN/RNN控制reading head controller在memory中读取。writting head controller同理。

Reading Comprehension

整篇文章转换成语义的vector,query进来,DNN/RNN通过reading head决定哪个vector与reading head有关,重复多次读出信息。

Visual Question Answering

DNN/RNN 通过reading head选择读取图片的某些位置来获取信息。

Speech Question Answering


将问题转化成语义的vector,通过语音辨识得到语音的语义。通过reading head选择读取语音语义的部分内容,得出答案
甚至可以通过attention修正答案,将最终答案和选项计算相似度,得到选项答案

这些是一起train的

RNN & Structured Learning

  • RNN LSTM
  • HMM,CRF, Structured perception/SVM

  • RNN, LSTM
    • 需要双向的RNN才能考虑整个sequence
    • cost和error不是很相关
    • 但是鬼哉深度学习
  • structured learning
    • 能比较简单考虑整个句子
    • 能显式的增加一些限制
    • cost 和 error 是相关的
    • 但是效果不如深度学习(linear)

二者结合,将deep作为内部,deep的输出作为structured的输入