NLP和词嵌入

  • 思维导图
  • 词汇表征
    • one-hot表征
    • 特征表征:词嵌入
  • 使用word Embeddings
    • 命名实体识别的例子:
    • 词嵌入的迁移学习:
    • 词嵌入和人脸编码
  • 词嵌入的特性
    • 类比推理的特性
    • 相似度函数:
  • 嵌入矩阵
  • 学习词嵌入
    • 其它的上下文和目标词对
  • Word2Vec
    • Skip-grams:
    • 模型流程
    • 存在的问题
    • 如何采样上下文

思维导图

词汇表征

在前面的学习内容中,我们来表征一个词汇是直接使用英文单词来进行表征的,但是对于计算就而言,是无法直接识别单词的,为了让计算机能更好的理解人类语言,建立更好的语言模型,我们需要对词汇进行表征,下面是几种不同的词汇表征方式

one-hot表征

我们用one-hot表征的方式对模型字典中的单词进行表征,对应的单词的位置用1表示,其余位置用0去表示,如下图所示:

缺点:
以10000个词为例,每个单词需要用10000维来表示,而且只有一个数是0,其它维度都是1,造成非常冗余,存储量大
每个词表示的向量相乘都为0,导致没能够表示出词汇之间的联系,比如orange和apple应该是联系紧密的,但是用上面的词典表示无法体现出这一点

特征表征:词嵌入

不同的特征来对各个词汇进行表征,相对于不同的特征,不同的单词均有不同的值
这种表征方式使得词与词之间的相似性很容易表征出来,这样对于不同的单词,模型的泛化性能会好很多,下面使用t-SNE算法将高维的词向量映射到2维空间,进而对词向量进行可视化,很明显可以看出对于相似的词总是聚集在一块

使用word Embeddings

Word Embeddings对不同单词进行了特征化的表示,那如何将这种表示方法应用到自然语言处理的应用中呢?

命名实体识别的例子:

如下面的一个句子中名字实体的定位识别问题,假如我们有一个比较小的数据集,可能不包含durain(榴莲)和cultivator(培育家)这样的词汇,那么我们就很难从包含这两个词汇的句子中识别名字实体。但是如果我们从网上的其他地方获取了一个学习好的word Embedding,它将告诉我们榴莲是一种水果,并且培育家和农民相似,那么我们就有可能从我们少量的训练集中,归纳出没有见过的词汇中的名字实体。

词嵌入的迁移学习:

有了词嵌入,我们就可以使用迁移学习,通过网上大量的无标签的文本中学习到知识,应用到我们少量文本训练集的任务中,下面是做迁移学习的步骤:
第一步:先从大量文本集合中学习词嵌入(词嵌入就是用一些特征来表示一个词汇,而不是通过one-hot表示),当然也可以直接使用别人预训练好的词嵌入模型
第二部:将词嵌入模型迁移到我们小训练集的新任务集
第三步:根据新任务的数据量来决定是否还要调整这些词嵌入,如果数据量很少的话,直接使用之前的词嵌入,数据多的话可以使用新的标记数据对词嵌入模型继续进行微调

词嵌入和人脸编码

词嵌入和人脸编码之间有很奇妙的联系,在人脸识别领域,我们会将人脸图片预编码成不同的编码向量,以表示不同的人脸,进而在识别的过程中使用编码来进行比对识别。词嵌入和人脸编码是有一定的相似性
区别:
对于人脸识别,我们可以将任意一个没有见过的人脸照片输入到我们到我们构建的网络中,则可输出一个对应的人脸编码,而在词嵌入模型中,所有词汇的编码是在一个固定的词汇表中进行学习单词的编码以及其之间的关系

词嵌入的特性

类比推理的特性

词嵌入还有一个重要的特性,它能够帮助实现类比推理,如下面的例子中,通过不同词向量之间的相减计算,可以发现不同词之间的类比关系,man-woman,king-queen,如下图所示:

这种思想帮助研究者们对词嵌入建立更加深刻的理解和认识
计算词与词之间的相似度,实际是在多维空间中,寻找词向量之间各个维度的距离相似度。

以上面的单词:
e m a n − e w o m a n ≈ e k i n g − e ? e_{man}-e_{woman} \approx e_{king}-e_? emanewomanekinge?
对于上面的式子,我们寻找 e ? e_? e?,则相当于寻找下面两个结果的向量之间的最大相似度:
a r g m a x s i m ( e ? , e k i n g − e m a n + e w o m a n ) argmax sim(e_?,e_{king}-e_{man}+e_{woman}) argmaxsim(e?,ekingeman+ewoman)

相似度函数:

余弦相似度函数:也就是向量 u u uv v v的内积
s i m ( u , v ) = u T v ∣ ∣ u ∣ ∣ 2 ∣ ∣ v ∣ ∣ 2 sim(u,v)=\frac{u^{T}v }{||u||_{2}||v||_2 } sim(u,v)=∣∣u2∣∣v2uTv
欧式距离:
∣ ∣ u − v ∣ ∣ 2 ||u-v||^2 ∣∣uv2

嵌入矩阵

如果词汇量是10000,每个词汇由300个特征表示,那么嵌入矩阵就是一个300*10000的矩阵,嵌入矩阵与某个词汇的one-hot表示的向量相乘会得到该词汇的嵌入表示(即300维表示)
上面的相乘由于one-hot只有特定的值是1,所以相乘的本质是取出该词汇在嵌入矩阵的位置的那一列,实际中不会进行这么复杂的矩阵乘法运算,而是用其它方法直接取出那一列

学习词嵌入

词嵌入的学习算法随着时间的进行逐渐变得越来越简单
早期的学习算法:

  • 通过将每个单词的one-hot向量与嵌入矩阵相乘,得到相应的Embedding
  • 利用窗口控制影响预测结果的单词数量,并将窗口内的单词Embedding堆叠起来,输入到神经网络中
  • 最后通过softmax层输出整个词汇表各个单词的概率
  • 其中,隐藏层和softmax层都有自己的参数,假设词汇表的大小为10000,每个单词的Embedding的大小是300,历史窗口的大小是4,那么输入的大小就是1200,softmax的输出大小就是词汇表的大小
  • 整个模型的参数就是嵌入矩阵E,以及隐藏层和softmax层的参数 w [ 1 ] , b [ 1 ] , w [ 2 ] , b [ 2 ] w^{[1]},b^{[1]},w^{[2]},b^{[2]} w[1],b[1],w[2],b[2]
  • 可以利用反向传播算法进行梯度下降,最大化训练极大似然函数,不断地从语料库中预测最后一个词的输出

在不断训练的过程中,算法会发现想要最好拟合训练集,就要使得一些特性相似的词汇具有相似的特征向量,从而得到最后的词嵌入矩阵E

其它的上下文和目标词对

我们把将要预测的单词称为目标词,通过上下文推测出来的,对于不同的问题,上下文的大小和长度以及选择的方法有所不同
选取目标词之前的几个词;
选取目标词前后的几个词;
选取目标词前的一个词;
选取目标词附近的一个词,(一种Skip-Gram模型的思想)

Word2Vec

Word2Vec算法是一种简单的计算,并以更加高效的方式实现对词嵌入的学习

Skip-grams:

在Skip-grams模型中,我们需要抽取上下文和目标词配对,来构造一个监督学习问题
上下文不一定是要目标词前面或者后面离得最近的几个单词,而是随机选择一个词作为上下文,同时在上下文的一定距离范围内随机选择另外一个词作为目标词。
构造这样一个监督学习问题的目的,并不是想要解决监督学习问题的本身,而是想要使用这个问题来学习一个好的词嵌入模型

模型流程

  • 使用一个具有大量词汇的词汇表,如Vocab size =10000k;
  • 构建基本的监督学习问题,也就是构建上下文(C)和目标词(T)的映射关系:C——T
  • o c o_c oc(one-hot)——E(词嵌入矩阵)—— e c = E ∗ o c e_c=E*o_c ec=Eoc(词嵌入)——Softmax层——y^
  • s o f t m a x : p ( t ∣ c ) = e Θ t T e c ∑ j = 1 10000 e Θ t T e c softmax:p(t|c)=\frac{e^{\Theta _{t}^{T}e_c } }{\sum_{j=1}^{10000}e^{\Theta _{t}^{T}e_c } } softmax:p(tc)=j=110000eΘtTeceΘtTec,其中 Θ t \Theta _{t} Θt是与输出t有关的参数
  • 损失函数: L ( y ^ , y ) = − ∑ i = 1 10000 y i l o g y i ^ L(\hat{y} ,y)=-\sum_{i=1}^{10000} y_ilog\hat{y_i} L(y^,y)=i=110000yilogyi^,这是在目标词y表示为one-hot向量时,常用的softmax损失函数
  • 通过反向传播梯度下降训练过程,可以得到模型的参数E和softmax的参数

存在的问题

采用上面的算法有一个问题就是计算量非常大,比如在上面softmax单元中,我们需要对10000个整个词汇表的词做求和计算,计算量庞大,计算速度慢,解决的方法有分级的softmax分类器和负采样
分级的思路是(以10000个词汇为例),第一个分类器先告诉你目标词在前5000还是后5000,然后第二个分类器告诉你是前2500还是后2500,这样计算复杂度是词汇输取对数,而不是线性的。另外所形成的树一般常见的词在比较浅的地方,少见的词在更深的地方,不是一个平衡二叉树

如何采样上下文

1.对语料库均匀且随机地采样:使得如the、of、a等这样的一些词会出现的相当频繁,导致上下文和目标词对经常出现这类词汇,但我们想要的目标词却很少出现。
2.采用不同的启发来平衡常见和不常见的词进行采样。这种方法是实际使用的方法。

【吴恩达深度学习】——NLP和Word Embedding相关推荐

  1. 吴恩达深度学习 | (24) 序列模型专项第二周学习笔记

    课程视频 吴恩达深度学习专项课程共分为五个部分,本篇博客将介绍第五部分序列模型专项的第二周课程:自然语言处理与词嵌入. 目录 1. 词汇表征 2. 使用词嵌入 3. 词嵌入的特性 4. 嵌入矩阵 5. ...

  2. 360题带你走进深度学习!吴恩达深度学习课程测试题中英对照版发布

    吴恩达的深度学习课程(deepLearning.ai)是公认的入门深度学习的宝典,本站将课程的课后测试题进行了翻译,建议初学者学习.所有题目都翻译完毕,适合英文不好的同学学习. 主要翻译者:黄海广 内 ...

  3. github标星8331+:吴恩达深度学习课程资源(完整笔记、中英文字幕视频、python作业,提供百度云镜像!)...

    吴恩达老师的深度学习课程(deeplearning.ai),可以说是深度学习入门的最热门课程,我和志愿者编写了这门课的笔记,并在github开源,star数达到8331+,曾经有相关报道文章.为解决g ...

  4. 深度学习入门首推资料--吴恩达深度学习全程笔记分享

    本文首发于微信公众号"StrongerTang",可打开微信搜一搜,或扫描文末二维码,关注查看更多文章. 原文链接:(https://mp.weixin.qq.com/s?__bi ...

  5. 吴恩达深度学习教程——中文笔记网上资料整理

    吴恩达深度学习笔记整理 内容为网上博主博文整理,如有侵权,请私信联系. 课程内容: Coursera:官方课程安排(英文字幕).付费用户在课程作业中可以获得作业评分,每门课程修完可获得结课证书:不付费 ...

  6. 【吴恩达深度学习】自然语言处理---个人总结(持续更新)

    这门大课主要知识点有: 吴恩达深度学习专业-自然语言处理--个人总结 一.GRU--Gated Recurrent Unit 二.LSTM-- Long short-term memory 三.Wor ...

  7. 吴恩达 深度学习1 2022, 浙大AI第一课

    强推![浙大公开课]2022B站最好最全的机器学习课程,从入门到实战!人工智能/AI/机器学习/数学基础_哔哩哔哩_bilibili 我们规定了行为和收益函数后,就不管了,构造一个算法,让计算机自己去 ...

  8. [转载]《吴恩达深度学习核心笔记》发布,黄海广博士整理!

    红色石头 深度学习专栏 深度学习入门首推课程就是吴恩达的深度学习专项课程系列的 5 门课.该专项课程最大的特色就是内容全面.通俗易懂并配备了丰富的实战项目.今天,给大家推荐一份关于该专项课程的核心笔记 ...

  9. 737 页《吴恩达深度学习核心笔记》发布,黄海广博士整理!

    点击上方"AI有道",选择"置顶"公众号 重磅干货,第一时间送达 深度学习入门首推课程就是吴恩达的深度学习专项课程系列的 5 门课.该专项课程最大的特色就是内容 ...

  10. 吴恩达深度学习笔记1-Course1-Week1【深度学习概论】

    2018.5.7 吴恩达深度学习视频教程网址 网易云课堂:https://mooc.study.163.com/smartSpec/detail/1001319001.htm Coursera:htt ...

最新文章

  1. iptables防火墙的基本配置
  2. cad怎么查找未闭合_CAD无法填充的这四种方法肯定能解你燃眉之急
  3. PHP 字符串与数组间的相互转化
  4. 操作系统原理:操作系统的启动 中断/异常/系统调用
  5. tilecache2.11在windows apache2.22安装部署
  6. 8篇SCI,总影响因子46.464!这位博士,毕业后带着女友一起援疆!
  7. 男友问别人:你裙子里穿什么了?
  8. refprop物性库_refprop 9.0 下载-refprop9.0 32/64位下载(NIST物性查询软件) 中文版 - 河东下载站...
  9. Android MTP 模式 驱动无法安装解决方案
  10. Zune无法连接手机的解决办法
  11. 信噪比计算方式(小问题解惑)
  12. 基于Android的虚拟校园移动学习系统
  13. 计算机网络——TCP
  14. 微信小程序头像怎么改变形状_如何实现微信小程序换头像?三步帮你搞定!
  15. linux开启PREEMPT_RT
  16. 很有意境的语句[转]
  17. 5G NR RLC层
  18. android加入聊天功能,app实现聊天功能 - houwanmin的个人空间 - OSCHINA - 中文开源技术交流社区...
  19. CDS — 数据管理分析平台
  20. 2020年有寓意的领证日期_2020有寓意的领证日期是什么时候?什么时候领证吉利?...

热门文章

  1. Next.js v4.1.4 文档中文翻译
  2. oracle表启用online,Oracle 表空间联机(online)与脱机(offline)
  3. 电影记忆之16(人工智能)
  4. 全选与反选 (转)
  5. traits简单介绍
  6. fastJson---如何获取json中所有kv(工具类-scala实现)
  7. 保理业务系统-产品介绍
  8. 1525_AURIX TC275 BootROM上
  9. 清十二帝疑案(阎崇年)37集全集 百家讲坛 DVD高清晰版
  10. OpenGL - Deferred Rendering