[DeeplearningAI笔记]序列模型2.3-2.5余弦相似度/嵌入矩阵/学习词嵌入
5.2自然语言处理
觉得有用的话,欢迎一起讨论相互学习~Follow Me
2.3词嵌入的特性 properties of word embedding
Mikolov T, Yih W T, Zweig G. Linguistic regularities in continuous space word representations[J]. In HLT-NAACL, 2013.
- 词嵌入可以用来解决类比推理问题(reasonable analogies)

- man 如果对应woman,此时左方输入单词king,能否有一种算法能自动推导出右边的单词(queen)呢?
- 使用词嵌入表示方法,即Man表示为\(e_{man}\),Woman表示为\(e_{woman}\),将两个单词相减得\(e_{man}-e_{woman}=\left[\begin{matrix}-2\\-0.01\\0.01\\0.08\\\end{matrix}\right]\),\(e_{king}-e_{queen}=\left[\begin{matrix}-1.92\\-0.02\\0.01\\0.01\\\end{matrix}\right]\),根据向量表示man和woman的主要差异在性别Gender上,而king和queen的主要差异也是在Gender上。
- 在做类比推理的任务时:
- 首先计算\(e_{man}-e_{woman}\)的值
- 然后计算\(e_{king}-e_{all}\)集合
- 再取\(e_{king}-e_{all}\)集合中和\(e_{man}-e_{woman}\)值最接近的那个值,认为是King类比推理后的结果。
- \[e_{man}-e_{woman}\approx e_{king}-e_{queen?}\]
- \[e_{w}\approx e_{king}-e_{man}+e_{woman}\]
- 在300D的数据中,寻找的平行的向量如图所示:

但是经过t-SNE后,高维数据被映射到2维空间,则此时寻找平行向量的方法不再适用于这种情况。

余弦相似度 (Cosine similarity)
\[Sim(u,v)=\frac{u^{T}{v}}{\parallel u\parallel_2 \parallel v\parallel_2}\]
- 其中二范数即\(\parallel u\parallel_2\)是把向量中的所有元素求平方和再开平方根。
- 而分子是两个向量求内积,如果两个向量十分接近,则内积会越大。
得到的结果其实是两个向量的夹角的cos值
2.4嵌入矩阵 Embedding matrix
- 模型在学习词嵌入时,实际上是在学习一个词嵌入矩阵(Embedding matrix),假设词典中含有1W个单词。300个不同的特征,则特征矩阵是一个300*1W大小的矩阵。

Note
- 在实际应用中,使用词嵌入矩阵和词向量相乘的方法所需计算量很大,因为词向量是一个维度很高的向量,并且10000的维度中仅仅有一行的值是0,直接使用矩阵相乘的方法计算效率是十分低下。
- 所以在实际应用中,会用一个查找函数单独查找矩阵E的某列。 例如在Keras中,就会设置一个Embedding layer提取矩阵中特定的需要的列,而不是很慢很复杂的使用乘法运算
2.5学习词嵌入 learning word embedding
- 本节介绍使用深度学习来学习词嵌入的算法。
Bengio Y, Vincent P, Janvin C. A neural probabilistic language model[J]. Journal of Machine Learning Research, 2003, 3(6):1137-1155.

- 对于语句 I want a glass of orange juice to go along with my cereal.
- 对于之前的方法中,使用juice 前的四个单词 “a glass of orange ”来进行预测。
- 也可以使用 目标单词前后的四个词 进行预测
- 当然也可以只把 目标单词前的一个词输入模型
- 使用相近的一个词
总结
- 研究者们发现 如果你想建立一个语言模型,用目标词的前几个单词作为上下文是常见做法
- 但如果你的目标是学习词嵌入,使用以上提出的四种方法也能很好的学习词嵌入。
[DeeplearningAI笔记]序列模型2.3-2.5余弦相似度/嵌入矩阵/学习词嵌入的更多相关文章
- [DeeplearningAI笔记]序列模型2.1-2.2词嵌入word embedding
5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.1词汇表征 Word representation 原先都是使用词汇表来表示词汇,并且使用1-hot编码的方式来表示词汇 ...
- [DeeplearningAI笔记]序列模型3.9-3.10语音辨识/CTC损失函数/触发字检测
5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.9语音辨识 Speech recognition 问题描述 对于音频片段(audio clip)x ,y生成文本 ...
- [DeeplearningAI笔记]序列模型3.7-3.8注意力模型
5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.7注意力模型直观理解Attention model intuition 长序列问题 The problem of ...
- [DeeplearningAI笔记]序列模型3.6Bleu得分/机器翻译得分指标
5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.6Bleu得分 在机器翻译中往往对应有多种翻译,而且同样好,此时怎样评估一个机器翻译系统是一个难题. 常见的解决 ...
- [DeeplearningAI笔记]序列模型3.3集束搜索
5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.3 集束搜索Beam Search 对于机器翻译来说,给定输入的句子,会返回一个随机的英语翻译结果,但是你想要一 ...
- [DeeplearningAI笔记]序列模型3.2有条件的语言模型与贪心搜索的不可行性
5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.2选择最可能的句子 Picking the most likely sentence condition lan ...
- [DeeplearningAI笔记]序列模型3.1基本的 Seq2Seq /image to Seq
5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.1基础模型 [1] Sutskever I, Vinyals O, Le Q V. Sequence to Se ...
- [DeeplearningAI笔记]序列模型1.10-1.12LSTM/BRNN/DeepRNN
5.1循环序列模型 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.10长短期记忆网络(Long short term memory)LSTM Hochreiter S, Schmidhu ...
- [DeeplearningAI笔记]序列模型1.7-1.9RNN对新序列采样/GRU门控循环神经网络
5.1循环序列模型 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.7对新序列采样 基于词汇进行采样模型 在训练完一个模型之后你想要知道模型学到了什么,一种非正式的方法就是进行一次新序列采 ...
随机推荐
- PSP阶段和WBS
项目:PSP Daily 详情请见项目功能说明书 PSP2.1 Personal Software Process Stages 预估耗时长 Planning 计划 · Estimate · 开发 ...
- HDU 5862 Counting Intersections 扫描线+树状数组
题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5862 Counting Intersections Time Limit: 12000/ ...
- Python数据挖掘学习路程--起步
一.首先第一步我去了解了Python开发环境:Python(程序运行基础的解释器)+第三方类库(功能扩展)+编辑器(提高代码编辑效率) 编辑器有:Pycharm.Spyder.jupyter note ...
- map的默认排序和自定义排序
STL的容器map为我们处理有序key-value形式数据提供了非常大的便利,由于内部红黑树结构的存储,查找的时间复杂度为O(log2N). 一般而言,使用map的时候直接采取map<typen ...
- 0511团队项目2.0--产品product backlog
介绍Scrum之product backlog Scrum的基本概念其实并不复杂,但是想做好并不容易,大家都知道product backlog的重要性,但是我们如何制定和展现它,如何评定优先级,如何进 ...
- 解释Spring中IOC, DI, AOP
oc就是控制翻转或是依赖注入.通俗的讲就是如果在什么地方需要一个对象,你自己不用去通过new 生成你需要的对象,而是通过spring的bean工厂为你长生这样一个对象.aop就是面向切面的编程.比如说 ...
- find . -name file -exec echo abc > {} \; fail
find . -name file -exec echo abc > {} \; fail 应该改用: find . -name file -exec bash -c 'echo abc > ...
- 2nd scrum站立会议
scrum站立会议 站立会议是让团队成员每日面对面站立互相交流他们所承担任务的进度.它的一个附带好处是让同组成员了解到工作的情况.本质上是为了团队交流,不是会议报告. 站立会议的目的: 1.让整个团队 ...
- PAT 甲级 1020 Tree Traversals
https://pintia.cn/problem-sets/994805342720868352/problems/994805485033603072 Suppose that all the k ...
- 使用vue-cli3新建一个项目,并写好基本配置
1. 使用vue-cli3新建项目: https://cli.vuejs.org/zh/guide/creating-a-project.html 注意,我这里用gitbash不好选择选项,我就用了基 ...