首页 > 技术文章 > 吴恩达深度学习课程脉络(五)序列建模

leoyes 2020-12-20 19:58 原文

第一周

1.1  Why RNN

  因为牛逼;

  在语言识别,音乐生成,情绪分类,DNA序列分析,机器翻译,视频活动识别,实体命名识别等领域有出色表现

1.2 数学符号

  x一个序列,有x1,x2,...,  Tx代表长度,词的one-hot表示法

1.3 RNN

  标准NN问题:

  1)不同case的 输入,输出长度会变,NN处理不了

  2)不同位置上,文本的特征不共享(如Harry在x1,x5都代表人名)

  RNN结构

 

  前向传播

 

  简化

 

1.4 时间反向传播

   这里的权重是共享的,针对不同的xi输入,权重都是Wa

 

 

1.5 不同类型RNN

多对多,一对多,多对一

 

  

 1.6 语言模型和序列生成

啥是语言模型? 一个句子缺个单词,填哪个好 ,选P(sentence)大的。语言模型是评估不同句子,及不同备选词出现的概率

怎么训练语言模型?先构建很大的语料库,用大量语言文本,经过tokenize标签化,转化为one-hot向量,(UKN)

RNN按序列一个个xi喂进去,根据cost调整学习;在生成序列时,前面预测出的yi会作为特征来用于接下来的预测

 

  1.7 新序列采样

  看看训好的RNN到底学到了啥,让它自己生成一个序列,一般a0=0,x1=0

  介绍一下character-level 语言模型,也可以,但不如基于词的模型捕捉那么长

1.8 RNN的梯度消失

  梯度爆炸也是一个问题,但最后数据都溢出了,容易发现;可通过梯度裁剪gradient clipping解决

  因此梯度消失是训练中主要的问题,以长句子的单复数举例,前面的词对后面词的影响大

1.9 GRU

  GRU - Gated Recurrent Unit 门控循环单元,能更好的捕捉深层的网络连接,解决梯度消失

  简化版GRU,实际上公式看起来更清楚,

    1) Ct-1 跟当前的Xt任何时候都共同起作用,无论对gate还是更新C的候选值

    2)sigmoid生成控制概率(update gate),tanh生成候选值

    3)update gate来调和 C的前值跟候选值

 

Full GRU

    1) Ct-1 跟当前的Xt任何时候都共同起作用,无论对gate还是更新C的候选值

    2)sigmoid生成控制概率(update gate),tanh生成候选值; 同时再生成了一个前值Ct-1的 ( forgot gate)权重,在生成候选值时遗忘加权

    3)update gate来调和 C的前值跟候选值

1.10   LSTM-长短期记忆

  跟GRU比,

  1)C跟a分开了,可以说是在C的基础上,另外创建了一个a,a为 C经过再次tanh激活值乘以一个output gate

  2)C的候选值的生成由Ct-1改为了a,且将此处的udpate gate去掉

  3)C值更新时,update gate直接对C候选值作用

  

  

    在LSTM中,C值(memory cell)的update gate设置合理时,比较容易保存很长时间。 常用的LSTM中,上图中的3个gate还包括C值,这叫peephole connection窥视孔连接.  

  C值有100维时,每个维度单独影响自己这个维度的更新; 

  LSTM比GRU早提出,更powerful灵活点,效果好点,是更多人的选择,GRU是一种LSTM的简化,简单点,可以构建和适应更大的网络

 

1.11  双向RNN

  一个可以使RNN更加powerful的idea是构建双向,以He said, Teddy **为例说明后面词对前面也有影响

 

 缺点是需要完整的序列才好预测,如语言识别时,需要整段语言读进去才后才能识别,实践的识别过程中算法需要加入其它的处理模块

 

1.12 Deep RNN 深度循环网络

 

第二周 NLP及词嵌入

 

2.1 词表示

  介绍one-hot representation,但这种方法没法进行相识度计算,采用特征化表示:word embedding可以

  例子中特征有Gender,Royal,Age,Food,Size等,实践中的特征是很难解释。

  可以用t-SNE降维到3维进行可视化,降维过程叫embedding

 

2.2 词嵌入

  主要介绍词嵌入如何应用到NLP问题中,第3步微调建议只在本身自己的数据集较大的情况下做,在小数据集的时候,word embedding效果比较明显,例如实体命名识别named entity recognition,文本摘要text summarization,文本解析 co-reference resolution,指代消解for parsing, language module跟机器翻译 machine translation用得少,这些模型有大量的数据。

  

 

   Word embedding跟人脸识别的face encoding部分相似,其实embedding = encoding可以互换

 

2.3 词嵌入特性

  可以类比推理,用余弦相似度

  

2.5 嵌入矩阵 Embedding matrix

  

 

2.6 词嵌入学习

  embedding历史上用很复杂的算法学习,但后来的越来越简单的算法也可以学得很好。先从复杂的开始

  Neural language model建立一个语言模型是学习词嵌入的好方法。

  这里采用的前4(6)个词预测后一个的方法,每个词有300维,全部进入最后的全连接隐藏层,早期非常成功的方法

   

 

   下面是简单点的算法,连续的前4个预测1个是非常自然的语言模型,但如果仅仅是训练,则可以放宽些,前后范围内4个,最后一个,附近一个都行

 

 2.7 Word2Vec

  更简单有效学习Embedding matrix的方法,构建skip-grams算法不是为了监督学习本身,而是学习一个好的word embedding

  

 

   但分母需要计算整个词汇表里全部的词汇,计算量太大,有人提出Hierarchy softmax加速。 构造分类树,常用词汇在上面

   skip-grams是论文中的一个,还有一个CBOW连续词袋模型,用2边的词预测中间的词

 

2.8 负采样 Negative sampling

  修改了训练目标,训练集句子里选一对content - word,作为target=1,再在词汇表里面选5-20个词 跟content配对,作为target = 0 负样本,训练一个logistics 回归模型

  

     不用计算一个10000维的softmax,而转化为了10000个二分类问题,每次训练时,选定了Content,得到1正4负样本,实际只训练了5个2分类

 

    在词典里采样时,论文作者采取的采样概率为

    

2.9 GloVe词向量

  GloVe = global vectors for word representation,没那么火,但比较简单,也有不少人用,根据 target出现在content附近出现的频率 Xij = i(target) 出现在 j(content)附近的频率,Xij=Xji

 

 2.10 情绪分类

  有了Word embedding,中等大小的label数据集也能训练出不错的模型

  简单版如下,缺点是没法有效识别类似“”完全没有好的,好的,好的,。。。,“这类句子

  

    改用RNN模型

  

 2.11 词嵌入除偏

   由于现实的语境下的文本有一些偏向,因此训练处的word embedding也会有,如男女 vs 医生护士,程序员家庭工作者,反应了性别,年龄等偏见

   识别bias direction,以性别为例,直接找到不同性别对应的词对 (he-she,male-female),分别减去特征向量,再平均

  训练一个分类器来识别哪些是跟性别相关的,哪些不是,

  

第三周 seq2seq 模型(ing)

3.1 基本模型

  机器翻译

    

 

   图像描述-Image caption

      

 

   在这些里面模型里面,我们需要选择最好的,而不是随机选一个序列,如何生成最好的序列?

 

3.2 选择最大可能的句子

  seq2seq跟第一周的语言模型有相似,但也有不同

 

3.3 Beam search 

3.4 Beam search改进

3.5 Beam search误差分析

3.6 Bleu score(选)

3.7 Attention 模型Intuition

3.8 Attention 模型

3.9 语言识别 Speech recognition

3.10 触发字检测 Trigger word detection

3.11 Thanks

 

推荐阅读