小奥的学习笔记

  • Home
  • Learning & Working
    • Speech Enhancement Notes
    • Programming language
    • Computer & DL
    • MOOC
  • Life
    • Life Time
    • Thinking & Comprehension
    • Volunteer
    • Plan
    • Travel
  • Footprints
  • GuestBook
  • About
    • About Me
    • 个人履历
    • 隐私策略
  1. 首页
  2. Study-notes
  3. Computer & DL
  4. Deep Learning
  5. 正文

吴恩达深度学习课程DeepLearning.ai笔记(5-1)

2018年3月11日 2163点热度 0人点赞 0条评论

序列模型

1. Why sequence models?

在实际的生活中,很多东西都是序列信号,例如语音信号、音乐产生、情感分类、DNA序列分析等,这些虽然可以使用一般神经网络去完成,但就如同图像识别一样,那样去做太过于复杂,因此在这里引入了循环神经网络(RNN)。

2. Notation

x:代表输入的语句,例如:Harry Potter and Herminone Granger invented a new spell.并且使用x<t>代表本句中第t个单词。

y:代表输出结果。例如上句中对人名进行定位,则输出结果为“1 1 0 1 1 0 0 0 0 ”。同样的,y<t>代表本句中第t个单词的结果。

Tx,Ty:分别代表输入和输出的长度。

x(i)<t>,y(i)<t>:代表第i个样本的第t个单词以及对其的结果输出。

利用one-hot编码,实现单词与符号的一一对应。每一个x实际上都是一个n维矩阵(n取决于句子的单词和符号数)。

3. Recurrent Neural Network Model

在1中已经提到,SNN(标准神经网络)不适合应用在当前我们要处理的问题,现在将主要存在的问题表述如下:

(1)在不同样本中,输入以及其输出的长度可能不相等;

(2)不能共享从文本不同位置所学习到的特征。

循环神经网络-前向传播

其结构如图1所示。在每一个时间步(Time step)中,循环神经网络会传递一个激活值到下一个时间步中,用于下一时间步的计算。

1520783815405623.jpg

图1

a<0>是一个需要编造一个激活值,通常输入一个零向量,有的研究人员会使用随机的方法对该初始激活向量进行初始化。各个参数的计算公式如图2所示。

2.jpg

图2

 这是一个简化版本的公示形式。实际上Wa=[Waa|Wax]。

循环神经网络-反向传播

RNN的前向传播和反向传播结构图如图3所示。定义的损失函数与逻辑回归中的损失函数相同,在此不再累述。

1520783880826862.jpg

图3

下面简单列举下几种不同类型的RNN模型:

1520783896475712.jpg

图4

梯度消失-GRU和LSTM

3.1 梯度消失

RNN在NLP中具有很大的应用价值,但是其存在一个很大的缺陷,那就是梯度消失的问题。例如下面的例句中:

The cat, which already ate ………..,was full;

The cats, which already ate ………..,were full.

在这两个句子中,cat对应着was,cats对应着were,(中间存在很多很长省略的单词),句子中存在长期依赖(long-term dependencies),前面的单词对后面的单词有很重要的影响。但是我们目前所见到的基本的RNN模型,是不擅长捕获这种长期依赖关系的。

对于梯度消失问题,在RNN的结构中是我们首要关心的问题,也更难解决;虽然梯度爆炸在RNN中也会出现,但对于梯度爆炸问题,因为参数会指数级的梯度,会让我们的网络参数变得很大,得到很多的Nan或者数值溢出,所以梯度爆炸是很容易发现的,我们的解决方法就是用梯度修剪,也就是观察梯度向量,如果其大于某个阈值,则对其进行缩放,保证它不会太大。

3.2 GRU(Gated Recurrent Unit)

RNN 单元:对于RNN的一个时间步的计算单元,在计算a<t>也就是下图右边的公式,能以左图的形式可视化呈现:

1520783936136351.jpg

图7

简化的GRU 单元:我们以时间步从左到右进行计算的时候,在GRU单元中,存在一个新的变量称为c,(代表cell),作为“记忆细胞”,其提供了长期的记忆能力。GRU的可视化实现如图8所示。

1520783958281164.jpg

图8

完整公式如图9所示。

1520783975127265.jpg

图9

第一个式子是指在每一个时间步上,给定一个候选值c˜<t>,用以替代原本的记忆细胞c<t>;

第二个式子是代表更新门,是一个0-1的值,用以决定是否对当前时间步的记忆细胞用候选值更新替代;

第三个式子是以定每个时间步的候选值;

第四个式子是记忆细胞的更新规则,门控值处于0-1之间,根据跟新公式能够有效地缓解梯度消失的问题;

第五个式子实际上记忆细胞输出的是在t时间步上的激活值a。

3.3 LSTM

GRU能够让我们在序列中学习到更深的联系,长短期记忆(long short-term memory, LSTM)对捕捉序列中更深层次的联系要比GRU更加有效。LSTM的公式以及可视化图如图10所示。

1520783998670206.jpg

图10

4. Language model and sequence generation

对于下面的例子:

The apple and pair salad.

The apple and pear salad.

两句话有相似的发音,但是想表达的意义和正确性却不相同,如何让我们的构建的语音识别系统能够输出正确地给出想要的输出。也就是对于语言模型来说,从输入的句子中,评估各个句子中各个单词出现的可能性,进而给出整个句子出现的可能性。

使用RNN来构建语言模型:

所谓训练集(Training Set)就是一大堆语言文本的集合(语料库)。Tokenize:将句子使用字典库标记化。

注意:未出现在字典库中的词使用“UNK”来表示。

第一步:使用零向量对输出进行预测,即预测第一个单词是某个单词的可能性;

第二步:通过前面的输入,逐步预测后面一个单词出现的概率;

训练网络:使用softmax损失函数计算损失,对网络进行参数更新,提升语言模型的准确率。

5. Sampling novel sequences

在完成一个序列模型的训练之后,如果我们想要了解这个模型学到了什么,其中一种非正式的方法就是进行一次新序列采样(sample novel sequences)。

对于一个序列模型,其模拟了任意特定单词序列的概率,如P(y<1>,⋯,y<Ty>),而我们要做的就是对这个概率分布进行采样,来生成一个新的单词序列。

如下面的一个已经训练好的RNN结构,我们为了进行采样需要做的:

首先输入x<1>=0,a<0>=0在这第一个时间步,我们得到所有可能的输出经过softmax层后可能的概率,根据这个softmax的分布,进行随机采样,获取第一个随机采样单词y^<1>;

然后继续下一个时间步,我们以刚刚采样得到的y^<1>作为下一个时间步的输入,进而softmax层会预测下一个输出y^<2>,依次类推;

如果字典中有结束的标志如:“EOS”,那么输出是该符号时则表示结束;若没有这种标志,则我们可以自行设置结束的时间步。

图5是基于单词的一个采样模型,图6是基于字母的采样模型。

1520784086943175.jpg

图5

1520784057122128.jpg

图6

但是基于字符的语言模型,一个主要的缺点就是我们最后会得到太多太长的输出序列,其对于捕捉句子前后依赖关系,也就是句子前部分如何影响后面部分,不如基于词汇的语言模型那样效果好;同时基于字符的语言模型训练代价比较高。所以目前的趋势和常见的均是基于词汇的语言模型。但随着计算机运算能力的增强,在一些特定的情况下,也会开始使用基于字符的语言模型。

6. Bidirectional RNN

双向RNN则可以解决单向RNN存在的弊端。在BRNN中,不仅有从左向右的前向连接层,还存在一个从右向左的反向连接层。

1520784037759136.jpg

图11

    其中,预测输出的值预测结果即有前向的信息,又有反向的信息。在NLP问题中,常用的就是使用双向RNN的LSTM。


本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 人工智能 机器学习 神经网络
最后更新:2018年3月11日

davidcheung

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

搜索
欢迎关注我的个人公众号
最新 热点 随机
最新 热点 随机
DEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架 奥地利匈牙利九日游旅程 论文阅读之Study of the General Kalman Filter for Echo Cancellation 小奥看房之鸿荣源珈誉府 杭州往返旅途及西溪喜来登和万怡的体验报告 2022年的第一篇碎碎念
奥地利匈牙利九日游旅程论文阅读之Study of the General Kalman Filter for Echo CancellationDEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架
张玉帅2018年9月——2019年1月总体规划 山东省高校第四届机器人大赛获奖名单公示 S.V Beijing Travel 11&12:Capital Museum & film museum 我校举办“我的世园,我的志愿”对话交流活动 《ultraman china》第三话新的英雄(下) Java语言程序设计【学堂在线】(第四章)整理
标签聚合
学习 Java 鸟哥的linux私房菜 Python leetcode linux 生活 python学习 高中 算法
最近评论
davidcheung 发布于 5 个月前(02月09日) The problem has been fixed. May I ask if you can s...
tk88 发布于 5 个月前(02月07日) Hmm is anyone else having problems with the pictur...
cuicui 发布于 9 个月前(10月20日) :wink:
niming 发布于 10 个月前(09月19日) 同级校友,能刷到太巧了
davidcheung 发布于 2 年前(08月16日) 我得找一下我之前整理的word文档看一下,如果找到了我就更新一下这篇文章。
Nolan 发布于 2 年前(07月25日) 您的笔记非常有帮助。贴图不显示了,可以更新一下吗?
davidcheung 发布于 3 年前(06月19日) 到没有看webrtc的代码。现在主要在看我们公司的代码了。。。只是偶尔看一看webrtc的东西。。。
aobai 发布于 3 年前(03月13日) gain_change_hangover_ 应该是每三个block 只能够调整一次,这样保证每帧...
匿名 发布于 5 年前(12月30日) 烫
小奥 发布于 5 年前(12月12日) webRTC里面的NS本身我记得就是在C++里面呀

COPYRIGHT © 2025 小奥的学习笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

陕ICP备19003234号-1

鲁公网安备37120202000100号