吴恩达DeepLearningCourse5-序列模型

终于在八月末学完了这门课程,这个月虽然为此不停地忙碌,但每天都在进步也是一种乐趣。
吴恩达教授的课程循序渐进,适合初学者,非常感谢他的辛苦付出。

在这里插入图片描述

文章目录

      • 第一周:循环序列模型
          • 循环神经网络(RNN)模型
          • 语言模型和序列生成
          • GRU(门控循环单元)
          • LSTM(长短期记忆)
          • 双向循环神经网络/BRNN
          • 深层RNN
      • 第二周:自然语言处理与词嵌入
          • 词汇表征
          • 使用词嵌入
          • 词嵌入的特性
          • 嵌入矩阵
          • 学习词嵌入:Word2Vec 的 skip-gram模型
          • 负采样
          • GloVe 词向量
          • 情感分类问题
          • 消除词嵌入中的歧视:以性别为例
      • 第三周:序列模型和注意力机制
          • 基础模型
          • 条件语言模型
          • 集束搜索及优化
          • 集束搜索的误差分析
          • 注意力模型

第一周:循环序列模型

循环神经网络(RNN)模型

在这里插入图片描述

代价计算和反向传播
在这里插入图片描述

更多RNN模型
在这里插入图片描述

语言模型和序列生成

语言模型做的最基本工作就是输入一个文本序列,然后语言模型会估计某个句子序列中各个单词出现的可能性。
如:语言模型可以根据输入计算出两句话各自的可能性,并选择可能性较大的一句。
当序列中含有字典中不存在的单词时,使用UNK代表未知词。
训练语言模型:
在这里插入图片描述

训练后对其进行取样,将y_hat1作为y_1输入到第二个单元并获得y_hat2,以此类推。

GRU(门控循环单元)

对很深的RNN网络从左到右做前向传播然后再反向传播。反向传播时只有距离较近的y才能影响附近的参数,而从输出y得到的梯度很难传播回去,影响靠前层的权重。可以使用GRU或LSTM解决远距离依赖的问题。
使用c(memory cell)记录需要保存,以备使用的值。
在这里插入图片描述

LSTM(长短期记忆)

在这里插入图片描述

双向循环神经网络/BRNN

基本单元不仅仅是标准 RNN 单元,也可以是 GRU单元或者 LSTM 单元。
每个单元的预测结果不仅输入了过去的信息,还考虑了未来的信息。
在这里插入图片描述

深层RNN

将单层的RNN堆叠可以得到深层RNN
深层RNN的层数通常不多,因为在时间维度上,每层RNN的计算量已经很大,多层RNN堆叠的算力需求更高
在这里插入图片描述

第二周:自然语言处理与词嵌入

词汇表征

嵌入是语言表示的一种方式,可以让算法自动的理解一些类似的词,比如男人和女人、国王和王后等。
相比较使用独热向量,用特征化的表示来表示每个词更能达到嵌入的目的。比如,将维度分为性别、年龄、大小等维度,而每个词对应一个维度长度的向量。

使用词嵌入

词嵌入能够达到这种效果,其中一个原因就是学习词嵌入的算法会考察非常大的文本集,数据集可以是 1 亿个单词,甚至达到 100 亿也都是合理的,大量的无标签的文本的训练集。通过考察大量的无标签文本,可以发现 orange 和 durian 相近,farmer 和 cultivator 相近。接下来可以把词嵌入应用到识别任务当中,训练集虽然比较小,但是可以使用迁移学习。

词嵌入的特性

man 如果对应 woman,那么 king 应该对应什么:
在这里插入图片描述

余弦相似度
在这里插入图片描述

嵌入矩阵

本质上是形状为 (特征数, 词汇数) 的矩阵,将其右侧乘以独热向量后,得到特定词汇的特征向量。

学习词嵌入:Word2Vec 的 skip-gram模型

在 Skip-Gram 模型中需要抽取上下文和目标词配对,来构造一个监督学习问题。上下文不一定总是目标单词之前离得最近的四个单词,或最近的n个单词。我们要的做的是随机选一个词作为上下文词,然后随机在一定词距内选另一个词。
在这里插入图片描述

缺点是Softmax计算会很慢。
分级的 softmax 分类器,不是立刻就确定到底是属于 10,000 类中的哪一类,而是逐步缩小范围直到找到目标。

负采样

问题就是给定一对单词,比如 orange 和 juice,我们要去预测这是否是一对上下文词-目标词。
生成这些数据的方式是我们选择一个上下文词,再选一个目标词,作为表的第一行,它代表一个正样本,并给定标签为 1。然后给定K(小数据集的话,K从 5 到 20 比较好。如果数据集很大,K就选的小一点,例中K=4),用相同的上下文词,再从字典中选取随机的词作为目标词,并标记 0,这些就会成为负样本。如果从字典中随机选到的词,正好出现在了词距内也没关系。
在这里插入图片描述

目标是定义一个逻辑回归模型,给定输入的(c,t)的条件下,y =1的概率,即:
在这里插入图片描述

把这些看作 10,000 个二分类逻辑回归分类器,但并不是每次迭代都训练全部 10,000 个,而是只训练其中的 5 个,训练对应真正目标词那一个分类器,再训练 4 个随机选取的负样本,这就是K= 4的情况。所以不使用一个巨大的 10,000 维度的 softmax,因为计算成本很高,而是把它转变为 10,000 个二分类问题,每个都很容易计算,每次迭代只是训练它们其中的 5 个,一般而言就是K + 1个,其中K个负样本和 1 个正样本。这也是为什么这个算法计算成本更低。
这个算法有一个重要的细节就是如何选取负样本,即在选取了上下文词 orange 之后,你如何对这些词进行采样生成负样本?一个办法是对中间的这些词进行采样,即候选的目标词,你可以根据其在语料中的经验频率进行采样,就是通过词出现的频率对其进行采样。但问题是这会导致你在 like、the、of、and 诸如此类的词上有很高的频率。另一个极端就是用1 除以词汇表总词数,即 1/|v|,均匀且随机地抽取负样本,这对于英文单词的分布是非常没有代表性的。一种根据经验的结论是:
在这里插入图片描述

GloVe 词向量

假定𝑋𝑖𝑗是单词𝑖在单词𝑗上下文中出现的次数,那么这里𝑖和𝑗就和𝑡和𝑐的功能一样。对于 GloVe 算法,我们定义上下文和目标词为任意两个位置相近的单词,假设是左右各10 词的距离,那么𝑋𝑖𝑗就是一个能够获取单词𝑖和单词𝑗出现位置相近时的频率的计数器。
该模型的目的是优化:
在这里插入图片描述

是如果𝑋𝑖𝑗是等于 0 的话,那么𝑙𝑜𝑔0就是未定义的,是负无穷大的,所以我们想要对𝑋𝑖𝑗为 0 时进行求和,因此要做的就是添加一个额外的加权项𝑓(𝑋𝑖𝑗)。如果𝑋𝑖𝑗等于 0 的话,同时我们会用一个约定,即0𝑙𝑜𝑔0 = 0,这个的意思是如果𝑋𝑖𝑗 = 0,先不要进行求和,所以这个𝑙𝑜𝑔0项就是不相关项。
加权因子
𝑓(𝑋𝑖𝑗)可以让即使是像 durion 这样不常用的词,它也能给予大量有意义的运算,同时也能够给像 this,is,of,a 这样在英语里出现更频繁的词更大但不至于过分的权重。因此有一些对加权函数𝑓的选择有着启发性的原则,就是既不给这些词(this,is,of,a)过分的权重,也不给这些不常用词(durion)太小的权值。

情感分类问题

情感分类任务就是看一段文本,然后分辨这个人是否喜欢他们在讨论的这个东西。
算法1:
在这里插入图片描述

这个算法有一个问题就是没考虑词序,尤其是这样一个负面的评价"Completely lackingin good taste, good service, and good ambiance.",但是 good 这个词出现了很多次,有 3 个good,忽略词序,仅仅把所有单词的词嵌入加起来或者平均下来,最后的特征向量会有很多 good 的表示,分类器很可能认为这是一个好的评论。
算法2:使用RNN
在这里插入图片描述

消除词嵌入中的歧视:以性别为例

在这里插入图片描述

第三周:序列模型和注意力机制

基础模型

从序列到序列:对应RNN模型中,多输入多输出的例子。在所有输入完成后得到特征向量,传递给后层的输出单元。
在这里插入图片描述

从图像到序列:对输入图像进行卷积神经网络操作,得到特征向量,同上。
在这里插入图片描述

条件语言模型

相比较一般的语言模型 ,条件语言模型附加了输入作为条件。
相比之前的模型随机地生成句子,在该模型中要找到最可能的英语翻译。当使用这个模型来进行机器翻译时你并不是从得到的分布中进行随机取样,而是要找到英语句子y,使得条件概率P(y_1…y_Ty | x_1…x_Tx)最大化。
在这里插入图片描述

集束搜索及优化

确定超参数值B,即进行每层输出时,同时考虑可能性最大的B个情况。
当B=1时本质上是贪心算法。
在这里插入图片描述

操作时,为了防止多个概率P相乘时数值下溢(即数值过小导致计算机无法精确存储):
在这里插入图片描述

集束搜索不是精确的搜索算法,不保证能找到最优解。

集束搜索的误差分析

集束搜索的神经网络分为 RNN(编码) 和 BeamSearch(解码) 两部分
对同一个输入,人工翻译结果为y*,算法翻译结果为y^
若P(y* | x)>P(y^ | x),说明BeamSearch出错
若P(y* | x)<=P(y^ | x),说明RNN出错

注意力模型

在输出每个翻译后的词时,考虑到输入词加权后的影响因素。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307202.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IdentityServer4系列 | 客户端凭证模式

一、前言从上一篇关于 快速搭建简易项目中&#xff0c;通过手动或者官方模板的方式简易的实现了我们的IdentityServer授权服务器搭建&#xff0c;并做了相应的配置和UI配置&#xff0c;实现了获取Token方式。而其中我们也注意到了三点就是&#xff0c;有哪些用户(users)可以通过…

数据结构 - 链表

准备重启尘封一年的博客作为学习笔记&#xff0c;看看自己能坚持多久。 最近会记录做过的算法题&#xff0c;语言描述只用于会意&#xff0c;仅供参考。 文章目录0.从尾到头获取链表的值&#xff08;不是反转链表&#xff09;1.寻找/删除单链表倒数第k个节点3.寻找单链表的中点…

[读书笔记] 《修炼之道:.NET 开发要点精讲》

《修炼之道:.NET 开发要点精讲》目录《修炼之道:.NET 开发要点精讲》第 1 章 另辟蹊径&#xff1a;解读.NET1.7 本章思考 > 位置 465第 2 章 高屋建瓴&#xff1a;梳理编程约定2.2 方法与线程的关系 > 位置 5192.7 线程安全 > 位置 5952.8 调用与回调 > 位置 6612.…

数据结构 - 概述

存储方式 数据结构的存储方式只有顺序存储&#xff08;对应数组&#xff09;、链式存储&#xff08;对应链表&#xff09;两种。所有上层的数据结构&#xff0c;如树、堆、栈等&#xff0c;存储方式均属于以上两种。顺序存储的优势是支持随机访问&#xff0c;缺点是需要连续的…

ASP.NET Core 使用 gRPC 初探

&#xff08;RPC通讯示意图&#xff09;为什么突然说到gRPC呢&#xff0c;其实以前就想说一说这个东西&#xff0c;也想尝试使用一下&#xff0c;一直没有机会&#xff0c;一直看我公众号的小伙伴肯定都知道&#xff0c;这几天一直在录制一个《eShopOnContainer微服务架构》系列…

源码都没调试过,怎么能说熟悉 redis 呢?

一&#xff1a;背景 1. 讲故事记得在很久之前给初学的朋友们录制 redis 视频课程&#xff0c;当时结合了不少源码进行解读&#xff0c;自以为讲的还算可以&#xff0c;但还是有一个非常核心的点没被分享到&#xff0c;那就是源码级调试&#xff0c; 对&#xff0c;读源码还远远…

算法 - DFS/BFS

写DFS函数的时候首先确定当前位置是否已经加入路径 DFS函数大概率会传递“位置信息”&#xff0c;根据位置信息获取下一步的选择&#xff0c;&#xff08;大部分是在循环中&#xff09;选择、执行、回退 在哪做选择&#xff0c;就在哪退出选择&#xff0c;参考题9 def DFS()…

你想象中的Task后续,很简单?

【导读】前不久&#xff0c;写过一篇关于Task的简短文章&#xff0c;通过评论和转载得到好评&#xff0c;刚好我昨晚又写了一篇实现简单的消息队列也提到了Task&#xff0c;难道不应该是看具体执行什么操作&#xff0c;再考虑最佳方案&#xff1f;本文我们再次通过简短内容谈谈…

算法 - 动态规划

动态规划是一种自底向上的算法&#xff0c;通常用于解决最大、最小等最值问题。 能使用动态规划解决的问题&#xff0c;一定具备&#xff1a; 重叠子问题&#xff1a;和暴力搜索不同&#xff0c;需要记录子问题的解&#xff0c;避免重复求解&#xff08;剪枝&#xff09;最优…

5G在工业互联网应用的机遇与挑战

移动通讯经过十年一代的发展&#xff0c;已经从1G发展到了5G&#xff0c;峰值速率实现十年千倍的增长&#xff0c;1G到4G是面向个人的&#xff0c;而5G是面向产业互联网和智慧城市服务。5G是一个颠覆性的技术&#xff0c;低时延&#xff08;每秒钟下载一部高清电影&#xff09;…

算法 - 前缀和

记录在做hot100时遇到的前缀和的题目。 目前见过的题目&#xff0c;都是前缀和结合其它的方法一起使用&#xff1a;用于求取一段连续路径的和&#xff08;最大值/最小值/目标出现次数&#xff09;。 需要注意的是&#xff0c;前缀和的判定方法是node2.val-node1.val target&am…

[C#.NET 拾遗补漏]10:理解 volatile 关键字

要理解 C# 中的 volatile 关键字&#xff0c;就要先知道编译器背后的一个基本优化原理。比如对于下面这段代码&#xff1a;public class Example {public int x;public void DoWork(){x 5;var y x 10;Debug.WriteLine("x " x ", y " y);} }在 Releas…

跟我一起学.NetCore之MediatR好像有点火

前言随着微服务的流行&#xff0c;而DDD(领域驱动设计)也光速般兴起&#xff0c;CRQS(Command Query Responsibility Seperation--命令查询职责分离)、领域事件名词是不是经常在耳边环绕&#xff0c;而MediatR组件经常用来对其技术的落地&#xff0c;凭这&#xff0c;小伙伴们说…

数据结构 - 单调栈、单调队列

单调栈&#xff1a;每日温度 请根据每日 气温 列表 temperatures &#xff0c;请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替单调栈基本只处理NGE问题&#xff08;Next GreaterElement&#xff09;。对序列中每个元…

不想写脚本清理 mongodb 中的垃圾数据,ttlIndex 能帮到你!

mongodb一直都在不断的更新&#xff0c;不断的发展&#xff0c;那些非常好玩也非常实用的功能都逐步加入到了mongodb中&#xff0c;这不就有了本篇对ttlindex的介绍&#xff0c;刚好我们的生产业务场景中就有一个案例。。。一&#xff1a;案例分析 生产的推荐系统要给用户发送短…

数据结构 - 最小堆最大堆

可以在O(nlogn)的时间复杂度内完成排序典型的用法是&#xff0c;寻找 第k个/前k个 最大/最小元素&#xff0c;k个有序序列合并 1.合并K个升序链表&#xff08;最小堆实现&#xff09; 或许可以改进成每次堆只存放K个元素&#xff1f; # Definition for singly-linked list. …

python程序启动其他python程序,如何使用Python启动应用程序的实例?

I am creating a Python script where it does a bunch of tasks and one of those tasks is to launch and open an instance of Excel. What is the ideal way of accomplishing that in my script?解决方案While the Popen answers are reasonable for the general case, I…

工作这几年所获、所感、所悟

【导读】截止到目前&#xff0c;给甲方所做项目已接近尾声&#xff0c;在此写下一点个人关于技术方面的感受。若后续时间上允许或充裕的话&#xff0c;打算私下花一点时间分享封装可通用的组件今年也是我首次带小伙伴&#xff0c;有刚毕业没什么技术经验&#xff0c;也有毕业不…

后端学习 - 基础 《Java编程的逻辑》读书笔记

文章目录一 基础概念1 有关Java2 JVM / JDK / JRE3 与C的联系和区别4 各类型数据占用空间大小5 和 equals() 的区别、hashCode() 方法6 包装类型7 final 关键字8 参数传递机制&#xff1a;值传递9 String 的内存情况10 访问修饰符11 引用拷贝、浅拷贝与深拷贝三 面向对象1 面向…

cheatengine找不到数值_彩票中奖500万,领了还不到一半?这些问题不解决,钱都拿不走...

长期以来&#xff0c;“一夜暴富”是很多人梦寐以求的梦想&#xff0c;而作为最能让人“一夜暴富”的方式要数我国的福利彩票了&#xff0c;这也是很多人最容易活动暴富的机会&#xff0c;不少彩民长久以来一直买彩票的梦想就是“一夜暴富”。而突然暴富是很多人的梦想&#xf…