0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

wordNet词向量和词义

深度学习自然语言处理 来源:深度学习自然语言处理 作者:艾春辉 2020-11-02 15:16 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

review: Word2vec: More details

How do we have usable meaning in a computer?

wordNet的问题:?

1. 词语跟词语之间存在一定的语境差别 2. 有些单词的新含义缺少 3. 需要主观调整 4. 无法计算单词相似度 word2vec

步骤:

1. 寻找大量的文本 2. 固定词汇表中的每个单词都有一个向量表示 3. 文本中的每一个位置t,均存在中心词c和上下词o 4. 使用c和o的词向量相似性来计算给定c和o的概率 5.不断调整词向量来最大化这个概率

word2vec的一些参数:

1. U的每一行都是一个单词的词向量,点乘之后通过softmax可以得到概率分布,从而得到上下文分布。但是该分布和你在上下文哪个位置是无关的, 2. We want a model that gives a reasonably high probability estimate to all words that occur in the context (fairly often)----我们希望给出一个合理的高概率估计 3. 去除一些停用词 更细的细节

为什么每个单词都需要训练两个词向量

1. 更容易优化,最后都取平均值 2. 可以每个单词只⽤⼀个向量

两个模型变体

1. Skip-grams (SG)输⼊中⼼词并预测上下⽂中的单词 2. Continuous Bag of Words (CBOW)输⼊上下⽂中的单词并预测中⼼词 之前⼀直使⽤softmax(简单但代价很⾼的训练⽅法)

接下来使⽤负采样⽅法加快训练速率 The skip-gram model with negative sampling (HW2)

原始的论文中skip-gram模型是最大化的,这里给出:

课程中的公式:

我们希望中⼼词与真实上下⽂单词的向量点积更⼤,中⼼词与随机单词的点积更⼩

k是我们负采样的样本数⽬

这里的0.75次方是选择的比较好的,没有科学依据

But why not capture co-occurrence counts directly?共现矩阵

共现矩阵 X

1. 两个方法:windows vs. full document 2. Window :与word2vec类似,在每个单词周围都使⽤Window,包括语法(POS)和语义信息 3. Word-document 共现矩阵的基本假设是在同⼀篇⽂章中出现的单词更有可能相互关联。假设单词i出现在⽂章 中j,则矩阵元素$X_{ij}$加⼀,当我们处理完数据库中的所有⽂章后,就得到了矩阵 X,其⼤⼩为 |V|*M,其中|V|为词汇量,而M为文章数,这⼀构建单词⽂章co-occurrencematrix的⽅法也是经典的Latent Semantic Analysis所采⽤的。{>>潜在语义分析<<}  

利⽤某个定⻓窗⼝中单词与单词同时出现的次数来产⽣window-based (word-word) co-occurrence matrix

let me to tell you a example: 句子

1. I like deep learning. 2. I like NLP. 3. I enjoy flying. 则我们可以得到如下的word-word co-occurrence matrix:

使⽤共现次数衡量单词的相似性,但是会随着词汇量的增加⽽增⼤矩阵的⼤⼩,并且需要很多空间来存储这⼀⾼维矩阵,后续的分类模型也会由于矩阵的稀疏性⽽存在稀疏性问题,使得效果不佳。我们需要 对这⼀矩阵进⾏降维,获得低维(25-1000)的稠密向量 how to reduce the dimensionality?

方法一: SVD分解

方法二: Ramped windows that count closer words more----将window倾斜向能统计更接近的单词中

方法三: 采用person相关系数

glove

两种方法:

1. 基于计数:使⽤整个矩阵的全局统计数据来直接估计:

优点

1. 训练快速 2. 统计数据⾼效利⽤

缺点

1. 主要⽤于捕捉单词相似性 2. 对⼤量数据给予⽐例失调的重视 2. 转换计数:定义概率分布并试图预测单词

优点

1. 提⾼其他任务的性能 2. 能捕获除了单词相似性以外的复杂的模式

缺点

1. 与语料库⼤⼩有关的量表 2. 统计数据的低效使⽤(采样是对统计数据的低效使⽤) Encoding meaning in vector differences

采用共现矩阵的思想对meaning进行编码

为什么采用比值有用?这里摘抄至网上: 假如我们想区分ice(固体)和stream(蒸汽),它们之间的关系可通过与不同单词x的共线矩阵相似性比值来秒速,比如p(solid | ice)和p(solid | stream)相比,虽然它们之间的值都很小,不能透露有效消息,但是它们的比值却很大,所以相比之下,solid更常见的用来表示ice而不是stream

我们如何评判在线性表达下的共现矩阵相似度

1. log-bilinear 模型:

2. 向量差异:

公式推导部分来啦,非常非常重要的目标函数优化 基于对于以上概率比值的观察,我们假设模型的函数有如下形式:

其中,代表了context vector, 如上例中的solid, gas, water, fashion等。则是我们要比较的两个词汇, 如上例中的ice,steam。   F的可选的形式过多,我们希望有所限定。首先我们希望的是F能有效的在单词向量空间内表示概率比值,由于向显空问是线性率间,一个自然的假设是 F 是关于同显 的差的形式:

或:

在此,作者又对其进行了对称性分析,即对于word-word co-occurrence,将向量划分为center word还是context word的选择是不重要的,即我们在交换的时候该式仍然成立。如何保证这种对称性呢?     我们分两步来进行, 首先要求满足

该方程的解为 F=exp(参考上面的评价方法)同时与

相比较有

所以,

注意其中破坏了交换时的对称性, 但是这一项并不依赖于 k 所以我们可以将其融合进关于的bias项第二部就是为了平衡对称性, 我们再加入关于的bias项我们就可以得到的形式。另一方面作者注宣到模型的一个缺点是对于所有的co-occurence的权重是一样的,即使是那些较少发 生的co-occurrence。作者认为这些可能是噪声声,所以他加入了前面的项来做weighted least squares regression模型,即为

的形式。 其中权重项 f 需满足一下条件:

f(0)=0,因为要求 是有限的。

较少发生的co-occurrence所占比重较小。

对于较多发生的co-occurrence, f(x)也不能过大。

优点

训练快速

可以扩展到⼤型语料库

即使是⼩语料库和⼩向量,性能也很好

How to evaluate word vectors?

与NLP的⼀般评估相关:内在与外在

内在

对特定/中间⼦任务进⾏评估

计算速度快

有助于理解这个系统

不清楚是否真的有⽤,除⾮与实际任务建⽴了相关性

外在

对真实任务的评估

计算精确度可能需要很⻓时间

不清楚⼦系统是问题所在,是交互问题,还是其他⼦系统

如果⽤另⼀个⼦系统替换⼀个⼦系统可以提⾼精确度

Intrinsic word vector evaluation

词向量类⽐a:b = c:?,类似于之前的男人对国王,求女人对?

英文解释: This metric has an intuitive interpretation. Ideally, we want xb−xa = xd −xc (For instance, queen – king = actress – actor). This implies that we want xb−xa + xc = xd. Thus we identify the vector xd which maximizes the normalized dot-product between the two word vectors (i.e. cosine similarity).

一些结果举例子:

结论

1. 300是⼀个很好的词向量维度 2. 不对称上下⽂(只使⽤单侧的单词)不是很好,但是这在下游任务重可能不同 3. window size 设为 8 对 Glove向量来说⽐较好 4. window size设为2的时候实际上有效的,并且对于句法分析是更好的,因为句法效果⾮常局部 5. 当词向量的维度不断变大的时候,词向量的效果不会一直变差,并且会保持平稳 6. glove的训练时间越长越好 7. 数据集越大越好,尽量使用百科类数据集合 8. 使用余弦相似度 Another intrinsic word vector evaluation

the problem:Most words have lots of meanings!(一词多义问题)• Especially common words • Especially words that have existed for a long time

method1: Improving Word Representations Via Global Context And Multiple Word Prototypes (Huang et al. 2012) -------将常⽤词的所有上下⽂进⾏聚类,通过该词得到⼀些清晰的簇,从⽽将这个常⽤词分解为多个单词,例如 bank_1, bank_2, bank_3

method2: Linear Algebraic Structure of Word Senses, with Applications to Polysemy (Arora, …, Ma, …, TACL 2018)

Different senses of a word reside in a linear superposition (weighted sum) in standard word embeddings like word2vec -----------采用加权和的形式进行处理

令人惊讶的是,这个加权均值的效果非常好

Training for extrinsic tasks

到目前我们学的为止,我们的目标是内在任务,强调开发一个特别优秀的word embedding。接下来我们讨论如何处理外部任务

Problem Formulation

Most NLP extrinsic tasks can be formulated as classification tasks. For instance, given a sentence, we can classify the sentence to have positive, negative or neutral sentiment. Similarly, in named-entity recognition (NER), given a context and a central word, we want to classify the central word to be one of many classes. ------许多nlp的task都可以归类为分类任务

for example:我们有一个句子: Jim bought 300 shares of Acme Corp. in 2006,我们的目标是得到一个结果:[Jim]Person bought 300 shares of [Acme Corp.]Organization in [2006]Time.

对于这类问题,我们通常从以下形式的训练集合开始:

其中是一个d维度的词向量,是一个C维度的one-hot向量,表示我们wished label(情感词语,其他词语,命名主体词语,买卖决策,等)   在机器学习里面,对于上面问题,我们通常固定输入和输出的形式,然后采用一些优化算法训练权重。但在nlp里面,我们需要在训练外部任务的时候,对输入的词向量进行再次训练  Retraining Word Vectors 

我们预训练的词向量在外部评估中的表现仍然有提高的可能,然而,如果我们选择重新训练,我们会存在很大的风险------可能效果会比之前差得多

If we retrain word vectors using the extrinsic task, we need to ensure that the training set is large enough to cover most words from the vocabulary. -----因为word2vec和glove会产生一些语义接近的单词,并且这些单词位于同一个单词空间。如果我们在一个小的数据集上预训练,这些单词可能在向量空间中移动,这会导致我们的结果更差

举例子: 这两个例子可以清楚明白的看到,训练集合如果过于小,我们的分类结果非常差

结论:如果训练数据集合太小,就不应该对单词向量进行再训练。如果培训集很大,再培训可以提高性能Softmax Classification and Regularization

softmax的训练

1. 函数形式:

2. 上个式子,是我们计算x是j的概率,我们采用交叉熵损失函数:

3. 对上面损失函数优化,因为我们$y_j$为1,其他类别就是0,也就是说,对于单个词语我们的损失函数简化为:

4. 上式损失函数只是一个单词的,但是我们需要使用的训练集不止一个dancing,假设我们有N个单词,将损失函数扩展:

5. 为了防止过拟合,我们需要加入一个惩罚项:

为什么惩罚项的参数是?   我们需要同时训练模型的权值w和词向量x。对于权值来将,我们需要一个d维度向量的输入和一个C维度向量输出,所以是C*d;对于词向量来说,我们词汇表有v个词汇,每个词汇的维度是d维,所以是|v|*d       6. 如果我们调整好 λ 这个超参数的值,这会降低损失函数出现很大值的参数的可能性因为惩罚项的存在,同时,这个也能提高模型的泛化能力  Window Classification

我们通常的输入不是一个单词

更多的情况,我们模型的输入是一个单词序列(取决于你的问题的情况,确认窗口的大小),一般来讲,较窄的窗口会在句法测试中会存在更好的性能,而更宽的窗口在语义测试中表现更好

敲公式敲累了,偷个懒,这里就是在softmax里面我们扩展到你窗口大小就行

本文推荐阅读论文:

Improving Distributional Similarity with Lessons Learned from Word Embeddings

Evaluation methods for unsupervised word embeddings

责任编辑:xj

原文标题:【CS224N笔记】词向量和词义

文章出处:【微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 向量
    +关注

    关注

    0

    文章

    55

    浏览量

    11980
  • WordNet
    +关注

    关注

    0

    文章

    4

    浏览量

    7603

原文标题:【CS224N笔记】词向量和词义

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    用哪吒D1开发板体验riscv向量底层编程

    1.前言 2.机器模式处理器状态寄存器(MSTATUS) 3.编译选项支持V扩展 4.RISCV向量计算的原理 5.通过实例分析RISCV V扩展的运作机制 6.RVV使用体验 1.前言
    发表于 10-29 06:21

    Vector向量指令集简介(一)

    RV32V将数据寄存器和长度与向量寄存器关联而不是指令操作码。程序在执行V指令之前会用数据类型和数据宽度来标记向量寄存器,因为每个V指令通常有8个整数版本和三个浮点版本。 这个编码一共5位,低
    发表于 10-23 08:28

    Vector向量指令集简介(三)

    首先是vl寄存器,这个寄存器保存一个无符号数,位宽为XLEN,表示向量指令的结果将要更新的元素的数量。这个寄存器通过vset{i}vl{i}指令来更新 vlenb寄存器是一个只读的寄存器,它记录
    发表于 10-23 06:23

    Vector向量指令集简介(二)

    上次我们讲vtype讲到一般,今天把剩下的部分给讲完。 Vma和vta表示的是向量尾部不可知与向量掩码不可知的设置位。 这两个位的值,都是在设置为0的时候表示未受干扰,设置为1的时候表示
    发表于 10-23 06:05

    Vector向量指令集简介(四)

    前面讲的都是状态寄存器的概念介绍,今天开始讲解Vector向量指令的指令格式。 对于load/store两类指令,它们都是对内存直接操作的指令。 比较值得说的是,rs1的值索引的是内存的基地
    发表于 10-22 06:06

    使用MATLAB的支持向量机解决方案

    支持向量机 (SVM) 是一种有监督机器学习算法,它能找到分离两个类的数据点的最佳超平面。
    的头像 发表于 10-21 15:00 307次阅读
    使用MATLAB的支持<b class='flag-5'>向量</b>机解决方案

    搜索关键获取商品详情接口的设计与实现

    ​   在电商、内容平台等应用中,用户经常通过输入关键搜索商品并获取详情。设计一个高效、可靠的API接口是核心需求。本文将逐步介绍如何设计并实现一个“搜索关键获取商品详情”的接口,涵盖
    的头像 发表于 10-20 15:37 302次阅读
    搜索关键<b class='flag-5'>词</b>获取商品详情接口的设计与实现

    零基础在智能硬件上克隆原神可莉实现桌面陪伴(提供人设提示、知识库、固件下载)

    个步骤:1、创建智能体:配置可莉的基础信息2、声音复刻:克隆可莉的声音3、配置知识库:配置可莉和嘟嘟可的背景、故事经历、语录等知识库 4、自定义唤醒:修改唤醒和唤醒回复语 (篇尾提供修改了唤醒
    发表于 08-22 19:51

    在中断向量表中,数字较小的中断向量能否以 larg 中断中断向量

    在中断向量表中,数字较小的中断向量能否以 larg 中断中断向量
    发表于 08-21 08:17

    Copilot操作指南(二):使用预置提示管理您自己的“工具”

    “  新版本的 Copilot 支持 Prompt 提示的保存、导入及导出。您可以直接调用常用的提示,结合与图纸的交互功能,快速实现一些非常酷的功能。  ” 预置 Prompt 提示
    的头像 发表于 07-21 11:15 3224次阅读
    Copilot操作指南(二):使用预置提示<b class='flag-5'>词</b>管理您自己的“工具”

    milvus向量数据库的主要特性和应用场景

    Milvus 是一个开源的向量数据库,专门为处理和分析大规模向量数据而设计。它适用于需要高效存储、检索和管理向量数据的应用场景,如机器学习、人工智能、计算机视觉和自然语言处理等。
    的头像 发表于 07-04 11:36 735次阅读
    milvus<b class='flag-5'>向量</b>数据库的主要特性和应用场景

    RISC-V架构下的编译器自动向量

    进迭时空专注于研发基于RISC-V的高性能新AICPU,对于充分发挥CPU核的性能而言,编译器是不可或缺的一环,而在AI时代,毫无疑问向量算力将发挥越来越重要的作用。进迭时空非常重视RISC-V
    的头像 发表于 06-06 16:59 936次阅读
    RISC-V架构下的编译器自动<b class='flag-5'>向量</b>化

    Redis 8 向量搜索实测:轻松扩展至 10 亿向量

    艾体宝Redis 8 向量搜索实测轻松支持 10 亿向量,仍保持低延迟与高吞吐。中位延迟仅200毫秒,90%精确度;处理50并发搜索请求中位延迟仅1.3秒,95%精确度。
    的头像 发表于 05-13 14:00 563次阅读
    Redis 8 <b class='flag-5'>向量</b>搜索实测:轻松扩展至 10 亿<b class='flag-5'>向量</b>

    EE-116:SHARC简DMA

    电子发烧友网站提供《EE-116:SHARC简DMA.pdf》资料免费下载
    发表于 01-05 09:56 0次下载
    EE-116:SHARC简<b class='flag-5'>词</b>DMA

    硬件钱包-库神-种子密码-私钥-助记

    硬件钱包,谁会解密吗,知道种子密码,可以找回助记私钥吗
    发表于 12-14 12:59