1.使用词嵌入

给了一个命名实体识别的例子,如果两句分别是“orange farmer”和“apple farmer”,由于两种都是比较常见的,那么可以判断主语为人名。

但是如果是榴莲种植员可能就无法判断了,因为比较不常见。

此时使用 词嵌入,是一个训练好的模型,能够表示说,oragne和durian是类似的词,farmer和cultivator是同义词。

词向量需要在大量数据上进行训练,此时又谈到了迁移学习。

首先从大的语料库中学习词嵌入,然后将模型运用到小的数据集上,或许还可以从小数据集上更新模型。

2.词嵌入的特征

类比。给出几类名词,并且都有4个特征来表示,对于男人和女人,两个向量相减的结果≈国王-女王,可以发现发现了其中的相似性。对语言可以有更深入的理解。

假设在300维的空间中,对于图中,需要找到相似的单词,只需要对所有word遍历,计算给的式子的相似性就可以了。

提到了tsne中,进行数据降到2维是非线性的,就无法保持空间中平行四边形的结果了。

最常用的相似度是cosin,也就是两个向量之间的夹角。

如果在一个足够大的语料库中进行学习,语料库中每个word都有一个向量来表示,这样模型就可以学到很多相似的单词。比如图中给出的。

3.嵌入矩阵

有一个300*10000的特征矩阵,与一个one-hot向量相乘,可得到对应列表示的单词。

由于有大量的0存在,做矩阵运算很耗时,通常会找到one-hot向量中的1值。

在keras中有一个嵌入矩阵,可以从中提取你需要的列,而不是对矩阵进行运算。

4.学习词嵌入

对于一个句子,来预测下一个单词,给出了单词的index,通过E嵌入矩阵,将one-hot转化为300维的向量,那么输入就是6*300维的向量。

通过嵌入矩阵的变换,可能orange\apple\durian\pear等都会由相同的向量来表示。

还可以设置窗口,=4则考虑当前词的前4个来进行预测。

如果要建立一个语言模型,一般选择目标词之前的几个作为上下文;如果要学习词嵌入,可以选择其他的上下文。

被预测的juice被称为target,可以选取不同长度范围的上下文, 只选一个的预测算法被称为skip gram。

//但是到目前为止都没讲到底E是怎么学习得到的?

5.word2vec

假设选取好了上下文为orange,那么随机选择在它的一定范围内的word作为预测target,左右进行选择,是skip-gram主要解决的问题。

假设词典大小为10万,ec是上下文word的嵌入向量,Θt是与输出t有关的参数,即某个词和标签相符的概率???

index[orange]=6257,index[juice]=4834,输入one-hotc并通过E进行转化,然后使用softmax进行预测,y是一个one-hot向量,yhat也是一个形状和y一样的,

并且定义损失函数为交叉熵。softmax能够预测出,下一个单词为字典中每个单词的概率,也就是10万个概率。

这张PPT里讲到了两个点,

1.语料库通常都是非常大的,在计算softmax的分母时,会十分耗时,那么通常的解决办法是分级softmax,通过二叉树进行确定当前单词具体在前多少个(前5k,后5k?)位置,这样求和的范围就会变小了。

这样时间就变为了原来的log级别,通常应用的softmax不是正好二分平衡的,常会根据单词出现的频率而有不同的深度,常出现的就会在低等级,而像durian不常出现就会在下面。

2.如何采样上下文c呢?

如果等概率选,那么出现频率高的就会选中次数很多,从而他们的ec会被常常更新,所以采用不均概率采样。

6.负采样

选定了上下文,从词典中随机选取单词word,并且有对应的target值,重复k次,这样就得到了训练集。

对于k的选取,在小数据集中选5-20之间,大数据集是2-5之间。

在x中,context设置为t,word为t,在选中的样本中,正负比为1:K,

那么就可以进行训练,比如对于orange,得到的是一个10000的结果,其中一个就是juice的概率,可以将其视为10000个二元分类器,但并不是每次迭代都训练全部10000个,只需训练其中的5个,其中一个对应juice,令4个(K=4,选取4个负样本时)随机选取的负样本。

转化为10000个二元分类问题,每次训练只需更新其中5个,每一个都比较好计算。

关于如何对负样本采样,根据出现频率/频率的倒数,这样的都是不平均的, 由于语料库中的单词本来就不是平均出现的,所以论文里说最好的选取方法是从根据频率的3/4方,比上所以词频的3/4的和。

7.GloVe词向量

对于xij表示的是i出现在j的上下文中的次数,计数频率,i=t,j=c,在一定范围内任意的word组成的对。

xij=xji,因为是相对来说的。

如何进行优化呢?

就是幻灯片中所表现的内容,没有详细地讲f(xij)函数=0,当xij=0时,对所有word分别作为c和t就最小值,就是优化目标。

//没太明白这张幻灯片在讲什么,整理了公式。

8.情绪分类

给出了单词的index,通过嵌入矩阵转换为对应的嵌入向量,可以将其求和或者平均输入softmax分类器,最终输出1-5星。

但是这样不考虑词序的话,可能会导致问题,比如左下角的例子,有3个good很可能被判定为好评。那么使用RNN来进行。

9.词嵌入除偏

通过模型进行训练得到的,很可能是存在偏见bias的,比如男人对:程序员,女人对家庭主妇等等。

词嵌入能反映性别、种族、性取向等的歧视。//这还不是从材料中学习到的吗?AI的歧视不是由于人类世界中存在吗?..

如何解决问题,对那些不涉及性别的单词,对在非歧视方向做投影,使他们到性别的举例相等。

DLNg序列模型第二周NLP与词嵌入的更多相关文章

  1. DLNg序列模型第一周

    1.为何选择序列模型? 给出上面一些序列数据的例子,真的很神奇,语音识别.音乐生成.情感分类.DNS序列分析.机器翻译.视频活动检测.命名实体识别. 2.数字符号 对于输入序列x,进行人名识别,输出中 ...

  2. DeepLearning.ai学习笔记(五)序列模型 -- week2 自然语言处理与词嵌入

    一.词汇表征 首先回顾一下之前介绍的单词表示方法,即one hot表示法. 如下图示,"Man"这个单词可以用 \(O_{5391}\) 表示,其中O表示One_hot.其他单词同 ...

  3. deeplearning.ai 序列模型 Week 2 NLP & Word Embeddings

    1. Word representation One-hot representation的缺点:把每个单词独立对待,导致对相关词的泛化能力不强.比如训练出“I want a glass of ora ...

  4. 带你了解NLP的词嵌入

    摘要:今天带领大家学习自然语言处理中的词嵌入的内容. 本文分享自华为云社区<[MindSpore易点通]深度学习系列-词嵌入>,作者:Skytier. 1 特征表示 在自然语言处理中,有一 ...

  5. Deep Learning.ai学习笔记_第五门课_序列模型

    目录 第一周 循环序列模型 第二周 自然语言处理与词嵌入 第三周 序列模型和注意力机制 第一周 循环序列模型 在进行语音识别时,给定一个输入音频片段X,并要求输出对应的文字记录Y,这个例子中输入和输出 ...

  6. 词向量表示:word2vec与词嵌入

    在NLP任务中,训练数据一般是一句话(中文或英文),输入序列数据的每一步是一个字母.我们需要对数据进行的预处理是:先对这些字母使用独热编码再把它输入到RNN中,如字母a表示为(1, 0, 0, 0, ...

  7. TensorFlow NMT的词嵌入(Word Embeddings)

    本文转载自:http://blog.stupidme.me/2018/08/05/tensorflow-nmt-word-embeddings/,本站转载出于传递更多信息之目的,版权归原作者或者来源机 ...

  8. 吴恩达《深度学习》-课后测验-第五门课 序列模型(Sequence Models)-Week 2: Natural Language Processing and Word Embeddings (第二周测验:自然语言处理与词嵌入)

    Week 2 Quiz: Natural Language Processing and Word Embeddings (第二周测验:自然语言处理与词嵌入) 1.Suppose you learn ...

  9. 吴恩达《深度学习》-第五门课 序列模型(Sequence Models)-第二周 自然语言处理与词嵌入(Natural Language Processing and Word Embeddings)-课程笔记

    第二周 自然语言处理与词嵌入(Natural Language Processing and Word Embeddings) 2.1 词汇表征(Word Representation) 词汇表示,目 ...

随机推荐

  1. jenkins 使用curl调用时带文件参数

    最近在使用jenkins时,需要使用curl去调用,但原有的jenkins中需要有file参数,baidu查询之未找到. 特意记录下 curl -X POST http://localhost:808 ...

  2. MFC从资源加载文本

    bool CWizardSheet::GetTextResource(UINT uID, CString& csContent) { HMODULE hModule=GetModuleHand ...

  3. SQL 2017 远程连接被拒绝

    1.防火墙端口 2.数据库要能帐号登录 可是还是不行 打开:SQL Server 2017 配置管理器->SQL Server 服务 ->SQLServer(你的实例名)-> 右键- ...

  4. 如何选择windows 10 系统中默认打开程序

    有时候我们会遇到打开某些文件需要通过open with 选择打开的应用程序,然后再点选always open with. 但是有时候这个方法不起作用,我们可以用如下方法: 1.从settings找到a ...

  5. jdbc ---- DBUTilDao 类

    1, 列用工具包  阿里的 DbUtils: JDBC Utility Component Examples 再次封装成通用的 update, query package com.ljs.dao; i ...

  6. React组件的State

    React组件的State 1.正确定义State React把组件看成一个状态机.通过与用户的交互,实现不同状态,然后渲染UI,让用户界面和数据保持一致.组件的任何UI改变,都可以从State的变化 ...

  7. 【每日一题】Flooded! UVA - 815 模拟阅读格式题

    https://cn.vjudge.net/problem/UVA-815 题意:给你一个矩阵,每个格子的数代表一个海拔并且每个格子的面积100平方米.给你整个区域的降水量(立方米),问降水量(米). ...

  8. echarts 使用问题

    总结下使用echarts的使用echarts 真的很好! 1 折线图line  1)有时出现赋值后,坐标轴显示数量比应该显示的少,是因为 显示不开,导致部分不显示(可通过调整字体大小等方式解决) 2) ...

  9. struts2 中 paramsPrepareParamsStack 拦截器

    struts2二次参数拦截器内容: 规定了请求的执行顺序 在struts2中,其拦截器为框架精华部分,而二次参数拦截器paramsPrepareParamsStack  对于解决数据回显,对象修改属性 ...

  10. 于dm-0 dm-1

    dm是device mapper的意思,dm-0, dm-1的实体可以通过下面几个命令看出,lvm会把每个lv连接到一个/dev/dm-x的设备档,这个设备档并不是一个真正的磁盘,所以不会有分区表存在 ...