吴恩达序列模型第一周循环序列模型

1.序列模型实例
语音识别:输入语音,输出文本;
音乐生成:输入:空集或单一整数,输出:序列;
情感分类:输入:序列,输出:数字;
DNA序列分析:输入:序列;输出:序列;
机器翻译:输入:序列;输出:序列;
视频活动识别:输入:视频帧;输出:动作;
命名实体识别:输入:句子,输出:人名;搜索,查找不同类型的文本中的人名、公司名、地点、时间、国家名、货币等,
输入、输出序列长度可能不同;
如何表示一个句子中单独的单词;
词汇表;
构建词典:遍历训练集,找到前10000个常用词或网络词典(英语中最常用的10000个词)
词典中的单词:0ne-hot表示法;x是one-hot向量;
用序列模型在X和输出Y之间学习建立一个映射;监督学习(x,y);
遇到不在词表中的单词,使用UNK表示;
notation:表示训练数据中的x和y;
循环神经网络中学习构建x->y的映射;
方案1:标准神经网络,
问题1:输入输出数据不同例子有不同的长度;
问题2:不共享从文本不同位置上学到的特征;部分学到的内容迅速推广到其他部分;用更好的表达方式可减少模型中的参数数量;
在每一个时间步中,循环神经网络传递一个激活值到下一个时间步中,用于计算。
要开始整个流程,在零时刻需要编造一个激活值,通常是零向量;
循环神经网络从左到右扫描数据,同时每个时间步的参数也是共享的。每个时间步使用的是相同的Wax;激活值由Waa决定,每个时间步使用相同的参数waa;输出结果由Way决定;
缺点:只使用了这个序列之前的信息做出预测;解决方法:双向循环神经网络(BRNN);
循环神经网络常用:
前向传播:
a=g1(Waaa+Waxx+ba) tanh、ReLU;
y=g2(Wyaa+by) sigmoid, softmax;
符号简化之后
a=g1(Wa[a+x])+ba)
y=g2(Wa
a+by)
在编程框架中自动处理反向传播
L=-ylogy^ -(1-y)logy^;
L=(1,Tx)L;
不同类型的RNN
many-to-one 结构(情感分类)
one-to-one
one-to-many
many-to-many
在这里插入图片描述
在这里插入图片描述
构建语言模型
用RNN构建语言模型,生成莎士比亚文风的文本或其他类型文本;
语言模型告诉你某个特定的句子,出现的概率是多少;是语音识别系统和机器翻译系统的基础;
输入一个文本序列,估计某个句子序列中各个单词出现的可能性;
训练集:很大的英文文本语料库;
语料库:数量众多的英文句子组成的文本;
(1)标记化句子;定义句子的结尾EOS;
(2)建立字典,word转为one-hot向量;
针对UNK建立概率模型;
(1)表示句子中的单词;
(2)构建序列的概率模型(RNN)
y的输出是softmax的计算结果;
x=y,通过softmax层来预测字典中的任意词会是第一个词的概率;
softmax损失函数:
在这里插入图片描述
在这里插入图片描述
把三个概率相乘,得到含3个词的整个句子的概率;
用RNN训练语言模型。
了解模型学到了什么,进行一次新序列采样;
对概率分布进行采样,生成新的单词序列;
从RNN语言模型中生成随机选择的一个句子(基于词汇的RNN模型);
基于字符的语言模型(a~z;A ~Z;空格)
优点:不会出现未知词汇;
缺点:得到的句子太大、太长;无法捕捉长范围的依赖关系,计算成本高昂;
大多使用基于词汇的模型,随着计算机性能的提升,特殊使用基于字符的模型(许多未知词汇和专有词汇);
从训练的语言模型采样(test);
序列生成;简历RNN语言模型,并使用它;
具体应用:命名实体问题、语言模型;反向传播应用于RNN;基本RNN的问题:训练RNN的问题:梯度消失,解决方法:GRU,并捕获长期依赖;
梯度爆炸:易于发现,参数大到崩溃,NaN解决方法:梯度修剪,最大值阈值;
GRU:捕获深层连接、解决梯度消失问题;
GRU新的变量C:记忆细胞;
在这里插入图片描述
在这里插入图片描述
GRU:捕捉长范围依赖,让RNN更加有效;
C,F、C~也可是向量,不同的比特代表不同的记忆单元;
在这里插入图片描述
神经网络总最常用的是GRU和LSTM。
在这里插入图片描述
在这里插入图片描述
GRU:是更加简单的模型,更容易创建更大的网络,运行快;
LSTM:更加强大;
在这里插入图片描述
窥视孔连接Fo还取决于c;c也能影响门;
第一周随课测验:
语言模型做的是,在t时间步上,
在这里插入图片描述
双向RNN:

构成无环图;
BRNN:考虑过去和未来的信息,进行预测;
一个有LSTM单元的双向RNN模型;有i全向和反向过程;
缺点:需要完整的数据序列,才能预测任意位置;语音识别,获取完整的句子后,才可以进行预测;实际的语音识别系统,有更加复杂的模型,
完成训练RNN语言模型,使用这个去采样随机句子;在每一个时间t内做得是:

在这里插入图片描述
深层RNNs
学习更加复杂的函数,把RNN的多个层堆叠在一起;
在这里插入图片描述
对于RNN,三层已经很多了;
在这里插入图片描述
利用工具箱的工具,构建学习序列模型;
第一周随堂测验完成;
自然语言处理与词嵌入
RNN、GRU、LSTM应用到NLP;
(1)用词汇表表示,one-hot表示,把每一个词汇孤立起来,算法对相关词泛化能力不强;
(2)特征化表示,任意一个单词,学习词的特征或者数值化(词的特征值);
e_5391,词汇表中的每一个词汇用很多的特征来表征;(300维的词嵌入,可视化算法t-SNE,将300维度数据,可视化到二维空间)
对于不同的单词,算法泛化能力更好;高维表征,更好地表示不同的单词;特征表示方法:词嵌入;
在这里插入图片描述
对于相近的概念,学到的特征也相近;相似的概念映射为相似的特征向量;
词嵌入作为输入训练好的模型,模型泛化能力强;适用于很小的标记训练集;
学习词嵌入的算法会考虑非常大的文本集;
在这里插入图片描述
使用迁移学习,无标签文本学到的知识迁移到一个任务中(只有少量标记的训练数据集)。
用词嵌入实现迁移学习:
(1)从大量的文本集中学习词嵌入(下载网上预训练好的词嵌入模型);
(2)将词嵌入模型迁移到只有少量训练数据的新任务中;用更低维度的特征向量代替原来10000维的one-hot向量;
(3)在新任务中训练模型,可选:使用仅有的少量词训练数据微调词嵌入模型;
词嵌入使用很多,在标准的NLP任务:命名实体识别、文本摘要、文本解析、指代消解;
词嵌入在语言模型、机器翻译中使用得少一些(任务有大量的训练数据);
词嵌入和人脸编码的关系:
有一个固定的词汇表

猜你喜欢

转载自blog.csdn.net/u010070587/article/details/82772983