吴恩达序列模型学习记录

作业区
GRU
GRU里面的c和a是相等的,这和LSTM不一样


LSTM

在这里插入图片描述
在这里插入图片描述
这里使用的时a和x一起来计算门值(遗忘门,更新门,输出门),注意使用的tanh和sigmoid
在这里插入图片描述

  • 注意到上面的这条红线,只要确定的设置了遗忘门和更新门,LSTM就可以很容易把c0传递到右边,这就是为什么GRU和LSTM可以实现才能长时间的记忆的原因
  • 什么时候用GRU什么时候用LSTM没有统一的准则,而且在历史上,LSTM也是更早的出现,GRU也是最近才发明出来的,他可能源于在LSTM上面做的简化
    1. GRU使用的原因是它是个更简单的模型,可以创建更大的网络。而且在计算上,它只有两个门,运行的更快,所以可以扩大模型的规模,最近的几年,GRU收到越来越多的团队的支持和使用, 而且效果也还不错
    2. 但是LSTM更加的强大和灵活,他有三个门而不是两个,在历史进程上,LSTM是个更优先的模型
    3. 不管哪个都可以捕获更加深层连接的神经网络

了解了大部分RNN的关键的构件,还有两个方法可以使我们构件更好的模型:

  1. 双向RNN模型,这个模型可以让你在序列的某点处,不仅可以获取之前的信息,还可以获取未来的信息
  2. 深层的RNN

双向神经网络

在这里插入图片描述
这就是单向RNN的尴尬之处,不管这些构件单元是标准的RNN块,还是GRU,还是LSTM,都只是前向的,无法利用未来的信息来进行预测,所以无法识别Teddy是否是人名
在这里插入图片描述
两分都是前向传播,一个从左到右,一个从右到左,先两次前向传播(激活值)计算结束之后再计算y(预测)值结果了

  • 很多的nlp问题对于大量有nlp问题的文本,有LSTM单元的双向RNN模型是用的最多的,所以有nlp问题并且文本句子都是完整的,首先需要标记这些句子,然后使用带LSTM单元的双向RNN模型是首选
  • 双向RNN的缺点也很清楚了:你需要完整的数据的序列才能预测任意位置,比如做一个语音识别系统,需要等把这句话说完然后获取整个语音表达,然后才可以处理这段语音,然后进行语音识别对于实际的语音识别的应用,通常会用更复杂的模型,但是对于很多的nlp的应用,如果你总是可以获取整个句子,这个标准的的双向RNN算法实际上很高效

深层RNN

之前学习的不同的RNN版本每一个都可以独挡一面,但是要学习非常复杂的函数,通常会把RNN的多个堆叠在一起构建更深的模型

在这里插入图片描述
在这里插入图片描述

对于RNN来说,堆叠的层数其实达到3层就已经不少了,由于时间的维度,RNN网络会变得相当大,即使只有很少的几层。很少看到这种的堆叠到100层。但是有一种会很容易见到就是:在每一个上面堆叠循环层,即把y换成更深的层,但是这些层并不水平连接,只是一个深层的网络然后用来预测y,所以这种的网络我们会见的多一点

  • 通常这些单元(方形区域)也可以是GRU或者LSTM,当然也可以构件深层的双向的RNN网络
  • 但是深层的RNN会消耗大量的时间

开始将以上所讲知识应用到NLP中


词汇表征

在这里插入图片描述
通过不同的特征用特征值对其进行表示,这种高维发的特征表示可以做到比ONE-HOT更好的表示不同的单词,但是新的特征表示的东西不会像这么容易搞懂
在这里插入图片描述

  • 我们可以把那些高纬的词嵌入到二维的空间进行可视化,常用的可视化算法是t-SNE算法
    在这里插入图片描述
  • 至于嵌入的术语来源是把一个词嵌入到一个空间中,词嵌入已经成为NLP领域最重要的概念之一
  • 学习词嵌入的算法通常考察大量的文本集

使用词嵌入的

在这里插入图片描述

  • 当文本集数据量不大时,可以使用迁移学习把从互联网学习到的知识迁移到一个任务(比如只有少量的标记的训练数据集的命名实体识别任务中)
用词嵌入做迁移学习的步骤:

在这里插入图片描述

  1. 先从非常大的文本集中学习词嵌入或者从网上下载预训练好的词嵌入模型
  2. 用上面的词嵌入模型把他迁移到你的新的只有少量标注训练集的任务中(比如用一个只有300维词嵌入来表示你的单词)。这么做的好处是可以用更低维的特征向量代替原来需要的高维ONE-HOT向量,而且这个低维的特征向量更为紧凑
  3. 在新的任务上训练模型时,在你只有少量标记数据集的命名实体识别任务上可以选择要不要继续微调,用新的数据词嵌入。实际上只有这个第二步中有很大的数据集我们才会怎么做,如果标记的数据集不是很大通常不要在词嵌入微调上浪费力气。当我们的训练集相对较小时,词嵌入的作用最明显,所以广泛性应用于NLP领域:命名实体识别、文本摘要、文本解析、指代消解,这些都是非常标准的NLP任务。但是词嵌入在语言模型、机器翻译领域用的少一些尤其是语言模型和机器翻译你有大量的数据,在其他的迁移学习情形中也一样,只有A中有大量的数据,B中数据少时迁移的过程才有用,所以对于很多NLP任务这些都是对的,而对于语言模型和机器翻译则不然

嵌入矩阵

在这里插入图片描述

  • 我们在实现的时候不会直接使用矩阵直接相乘,因为ONE_HOT向量的维度太高,并且几乎所有元素都是0,所以矩阵相乘效率太低,所以实践的时候我们会是使用单独的函数来矩阵E里面的单独的某一列

学习词嵌入
在这里插入图片描述

  • 如果使用的大小为4的固定窗口,来对我们的下一个单词进行预测的话,大小就不是我们使用全部的单词(6300)而是(4300)的矩阵大小
  • 最后参数使用反向传播进行更新
    在这里插入图片描述
    在这里插入图片描述
  • 如果你要建立一个语言模型的话一般选取目标词之前的几个词作为上下文。但是你的模型不是语言模型本身的话,而是学习词嵌入,可以使用大括号内的3种方法:你可以选择其他的上下文,选择哪个就把哪个传入神经网络来预测下一个词,还有一个简单高效的方法就是上下文就是附近的一个单词

WORD2VEC

在这里插入图片描述
在这里插入图片描述

  • 实际情况下,我们会考虑到分母求和的巨大的时间消耗,所以我们可以使用分级的softmax模型,这时计算成本与词汇表大小的对数成正比,并且分级softmax树的构建会采用把常用的词汇放在树的最上方,一遍检索
    在这里插入图片描述

  • 对上下文采样的方法是采用不同的启发式来平衡更常见和不那么常见的词

  • word2vec有skip-gram和CBOW两种模式,但是skip-gram在把上下文映射到目标词的实现实用的词嵌入的时候缺点也暴露出来:softmax计算十分的缓慢

负采样

  • 负采样可以做到skpi-gram相似的事情 但是采用了更加高效的学习算法
    在这里插入图片描述- 生成这些数据方式是先选择一个上下文词,再选择一个目标词就是图中的第一行,作为正样本,标记为1 ,然后再给定K次,选择相同的上下文词再从字典里面选取随机的词并标记为0。如果我们随机从字典里面抽取出来的词正好出现在上下文词的词距内也没关系(可以人为的标记为0),这就是如何生成训练集的方式。K的选取的话:小数据从5-20比较好,大数据的话k就选的小一点比如2-5,数据集越小,K就越大
    在这里插入图片描述
  • 所以问题就是给定两个词比如orange和juice,你觉得这两个词 是通过对靠近的两个词采样获得的吗还是分别在文本和词典中随机选取得到的。这个算法就是要区别这两种不同的采样方式
    在这里插入图片描述
  • 之所以叫做负采样是因为只有一个正样本,你会刻意生成其他k个负样本,即用是个负样本训练是个额外的二分类器
  • 重点:如何生成负样本
    在这里插入图片描述
    1. 根据词在语料库中出现的频率对其进行采样,但是这么做会导致比如the,of,and之类的词有很高的频率,但是采用上图对频率的公式可以得到较好的结果

题外话:想好再nlp方向取得好的进展,去下载别人的词向量是个好方法,在此基础上改进


Glove

虽然这个模型不如word2vec和skip-gram用的人多,但还是有人热衷于它
在这里插入图片描述
X i j X_{ij} Xij表示j出现在i的上下文范围内的次数(彼此相近的频数计数器), X j i X_{ji} Xji X i j X_{ij} Xij之间是对称的(除非规定只选取上下文词的某一边为范围)
在这里插入图片描述

  • 目的是最小化这个函数,函数的意义是:i和j的联系有多大,多么紧密,并且在添加一项权重项 f ( X i j ) f(X_{ij}) f(Xij),但是对于 l o g X i j logX_{ij} logXij等于0的时候我们直接 0 l o g X i j = 0 0logX_{ij}=0 0logXij=0,加权函数的选择具有启发性的原则,对频率高的词(of,the)给予更高但是不过分的权重,对于出现次数少的词也可以给予大量有意义的运算
    在这里插入图片描述
    在这里插入图片描述
  • 由于 θ , e \theta,e θ,e具有对称性,所以一种训练的方法是一致的初始化这两个参数然后使用梯度下降最小化输出,当每个词训练完之后取平均(如上图)

情感分类

在这里插入图片描述

  • 把该句的词向量做平均或者进行求和,最后经过softmax得到分类,但是对于像:“没有好的服务,好的质量”这样的评论,因为“好的”的词嵌入取平均之后占有很大的比例,会导致错误的分类, 这时我们可以使用RNN进行分类

词嵌入除偏

在这里插入图片描述

  • 一般情况下词嵌入的情况如上所示,bias维度导致了性别偏见的问题,但是竖轴却并不会(无偏见趋势),有些词是性别相关的但是有些词是性别无关的(babysister,性别中立),对于性别中立的词,我们可以使得他们更加的往竖轴靠近(第二步:中和步 )

在这里插入图片描述
在这里插入图片描述*(均衡步) 我们对(father,mother)这样的词只希望性别是其区别,但是babysister与grandmother之间的距离小于babysister和gramdfather之间的距离,我们就可能觉得grandmother和babysister是一对,所以我们在均衡步希望mother和father能够有一致的相似度或者说和babysister之间有相等的距离,(通过移动让他们是的关于竖轴对称)


选择最准确的句子

在这里插入图片描述

  • 机器翻译模型和语言模型的区别在于,原因模型是以0向量作为输入的,而翻译模型是以一系列的seq向量得到的输出向量作为输入的,所以下面的模型又叫做条件语言模型。
  • 句子的输出取决于输入句子,也就是说最后的输出是翻译句子相对于输入句子的可能性
    在这里插入图片描述
    从输入的词向量中我们可以得到所有的输出的结果,也就是y,但是我们的输出意思可能相差的比较大,但是考虑到上图的情况,使用贪心算法的话可能输出的结果很拗口,像is,going这两个在英文中连续出现的几率很大,所以我们需要找到一个比较好的算法来选择我们的最好的结果(束搜索)如图:在这里插入图片描述

定向搜索(集束搜索)

  1. 在这里插入图片描述
    先挑选第一个可能的单词,避免贪婪策略,设置集束宽度,比如B=3,模型将从字典里面选择最有可能的前3个存放在y<1>
    在这里插入图片描述在这里插入图片描述
  2. 针对每一个挑选出来的单词对第二个单词进行评估,需要注意的时,我们同时关注 P ( y &lt; 1 &gt; , y &lt; 2 &gt; ∣ x ) P(y^{&lt;1&gt;},y{&lt;2&gt;}|x) P(y<1>,y<2>x)的结果在这里插入图片描述
  3. 但是要注意的时,当第一个和第二个词对找最有可能的三个选择,就会把剩下的第一个单词去掉在这里插入图片描述
  4. 对于第三个词,我们使用同样的方法估计

改进定向搜索

在这里插入图片描述在这里插入图片描述

  1. 长度归一化。由于计算机浮点计算的约束,我们采用第二种方式来进行最大化,但是这可能不自然的倾向于简短的翻译结果,因为尖端句子是由更少数量的单词组成,所以我们把他归一化,减少对输出长度的惩罚,但是实验结果表明使用 α = 0.7 \alpha=0.7 α=0.7的时候效果更好(柔和)
  2. 如何设置B的大小。在产品系统中经常可以看到B=10,当B=100时显得有些大,但是在科研中为了压榨出全部的性能会设置B=1000、3000,当B很大时,性能的提升会越来越小(比如1->3->10性能的提升会很大,从1000->3000提升就很小了)

定向搜索的误差分析

在这里插入图片描述

  1. 把最佳的翻译结果和机器翻译的结果填入到解码器的位置,得到两个的概率
    在这里插入图片描述
  2. 对于第一种结果,表现的是:束搜索并没有给出一个使的P最大化的y值(因为小于最佳的结果的P),所以是束搜索除了问题;相反,就是RNN出了问题,因为对于最佳结果,RNN却赋予它更低的可能性
  3. 特别注意,当使用了长度归一化之后,我们比较的就不是两个 P ( y ∣ x ) P(y|x) P(yx)之间的大小,而是长度归一化之后的最优化目标函数值在这里插入图片描述
  4. 遍历我们的开发集,最后得到一个束搜索和RNN出错的比例

Bleu score


注意力模型

  • 应用于更长的句子
    在这里插入图片描述在这里插入图片描述
  • α &lt; i . j &gt; 表 示 在 计 算 S &lt; i &gt; 的 时 候 因 该 放 多 少 注 意 力 ( 注 意 力 权 重 值 ) 在 x &lt; j &gt; 上 面 \alpha^{&lt;i.j&gt;}表示在计算S^{&lt;i&gt;}的时候因该放多少注意力(注意力权重值)在x^{&lt;j&gt;}上面 α<i.j>S<i>x<j>在这里插入图片描述
  • 每 个 α t 每个\alpha^{t} αt的值要等于一,利用softmax可以解决,但是问题在于我们需要找到一个函数(通过使用训练一个简单的伸进网络)使上一隐含层的激活值 s t − 1 s^{t-1} st1 a t ′ a^{t^{&#x27;}} at作为输入得到 e &lt; t , t ′ &gt; e^{&lt;t,t^{&#x27;}&gt;} e<t,t>
  • 这个网络的一个缺点就是他的复杂度是 O ( n 3 ) O(n^3) O(n3),如果有x个输入单词和y个输出单词,那么注意力参数的总数就是x*y,所以这个算法有三次方的消耗,但是在机器翻译方面,由于输入和输出的句子不会太长所以这个消耗可以接受

seq2seq

在这里插入图片描述

  • 由于人耳并不会处理原始波形,而是通过一种特殊的物理结构测量不同的频率和强度的声波,音频处理的常见处理步骤是运行原始的音频数据然后生成一个声谱图;伪空白输出也经常应用于预处理步骤
    在这里插入图片描述
  • CTC可以折叠被_分割开的相同的字母
  • (通常这个网络很深!!)

触发字检测

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值