NLP Word Embeddings

ops/2025/2/12 9:46:21/

Word representation

One-hot形式

在上一周介绍RNN类模型时,使用了One-hot向量来表示单词的方式。它的缺点是将每个单词视为独立的,算法很难学习到单词之间的关系。

比如下面的例子,即使语言模型已经知道orange juice是常用组合词,但是却不容易泛化到知道apple juice。这主要是因为单词之间的内积是0向量。

因此我们可以用非One-hot的多维向量描述一个单词,单词之间的距离可以描述单词之间的相似度,这样可以让算法更快的学习到单词之间的联系。

多维向量形式

使用多维向量,向量每一维是一个浮点数,这样可以使用更少维度的dense向量表征单词。

1. 可以使用迁移学习的思想,预训练大量数据获取每个单词的embdding,或者直接从网络找到其他人训练好的模型获取Embedding。

2. 获取到Embdding之后可以再应用到你的任务当中,比如名字识别等模型,这是你的训练集可能是比较小的。

3. 如果你的训练集很大,也可以尝试fine-tune第一步中的预训练模型

单词之间的相似度

使用多维向量表征单词时,可以使用cos距离或者L2距离等来表征单词之间的相似度

Learning Word Embddings

在NLP最开始的时候,研究人员尝试用很复杂的模型来获取Word Embdding,但是后来大家发现可以用越来越简单的模型来获取并且效果很好,尤其是在大数据集下。该小节从复杂模型讲起,然后逐步简化。

早期模型

每次取数据集中句子中待预测词前面的4(超参)个单词,输入到模型中,模型输出层是softmax输出每个单词的可能性。

Word2Vec 之 skip-grams

原始论文中作者提供了Word2Vec的两个版本:skip-grams、CBow。

CBow是利用中间词周围的上下文预测中间词,有优点有缺点,不展开讲,这里只介绍skip-grams。

定义

首先介绍什么是skip-grams,skip-grams需要提供一个context单词和一个target单词,先选定context单词,然后在其前后k(超参)个相邻单词的窗口内,随机选取一个target单词组成一个pair

模型结构

输出层为词库大小个softmax分类单元

缺点

这个算法存在一些问题:

1. softmax在词库很大时计算成本很高,可以使用多层softmax降低计算量(后面的课程中有更优的解决方案,这里没展开),建立多层softmax树时,可以使用启发式算法优化(不展开),把常用词放在浅层,低频词放在深层,减少检索成本。

2. 如何选取context单词,如果正态分布选取会导致抽取的都是高频词,低频词很难被取出来,也需要用启发式算法抽样(不展开)。

Negative Sampling

定义

负采样是对原始skip-grams的优化,可以有效降低多类分类问题的计算量。

负采样是选取一个context单词,然后从其前后一定窗口内选取一个临近的target单词作为正样本,其标签是1;然后用同样的context单词,从词库随机选取k(超参)次target单词分别组成负样本,其标签是0。

小概率会抽到实际也是context单词附近的单词,因为是随机误差所以影响不大。

模型结构

跟skip-grams相比,模型的输出层将词库大小个softmax单元,替换为了词库大小个逻辑回归单元,并且在每次迭代中只需要更新跟正负样本相关的k+1个输入层的逻辑回归单元参数,大幅降低计算量。

如何进行负样本选取

既不是随机采样,也不是按照词频采样,作者用了一个经验公式(无法证明是最好的,但是现在都用的这个公式):

P(w_i)=\frac{f(w_i)^{\frac{3}{4}}}{\sum_{j=1}^{10000}f(w_j)^{\frac{3}{4}}}

GloVe

全称:Global Vectors for word representation。使用不如Word2Vec广泛。

定义

首先统计词库中每两个单词在训练集中一起出现的次数,然后输入context单词模型预测其跟target词出现次数并最小化两者之间的差值。

模型结构

在实际模型中,增加了一个权重系数经验公式f(x_{ij})用于对低频词提权,高频词降权。

\thetae分别是单词的context向量和target向量,分别为单词作为context单词时使用和作为target单词时使用,训练完成后可以使用\theta_w\frac{\theta_w+e_w}{2}作为最终的词向量。

偏置项存在的意义ChatGPT的解释如下

词向量的应用

Sentiment Classification

通过分析文本的情感表达来确定其情感倾向。在NLP中经常使用。

在有词向量的情况下,你可以使用中等大小的标注训练集来进行情感分类,而不需要大量标注数据集。

如下图可以将评价中的所有词向量相加或取平均作为输入预测分数,但是这样存在一个问题,无法理解上下文,比如左下角例子,good出现更多可能预测分较高,但实际是差评

进一步使用RNN模型逐次输入每个单词词向量,输出打分。

消除词向量偏见

以性别偏见为例,计算he/she、male/female这些词向量的差并计算平均值,找到性别差异向量;然后对于不应该跟性别关联的词如医生、婴儿看护在这个方向上移动到0坐标;然后对性别差异的反义词组在这个方向上移动为对称的。


http://www.ppmy.cn/ops/157740.html

相关文章

存储异常导致的Oracle重大生产故障

📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验 Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯…

C语言操作符详解

引言 C语言作为一种强大而灵活的编程语言,操作符是其重要组成部分。操作符用于执行各种运算,如算术运算、逻辑运算、比较运算等。深入理解C语言操作符,能帮助开发者编写出高效、准确的代码。 算术操作符 基本算术操作符 - (加法…

快速部署 DeepSeek R1 模型

1. DeepSeek R1 模型的介绍 DeepSeek R1 模型是专为自然语言处理(NLP)和其他复杂任务设计的先进大规模深度学习模型 ,其高效的架构设计是一大亮点,能够更高效地提取特征,减少冗余计算。这意味着在处理海量数据时&…

C#上位机--Net Framework

NET Framework 是由微软开发的一个托管代码编程模型,支持多种编程语言。自首次发布以来经历了多个版本迭代,每个新版本都引入了新的特性和改进。 Net Framework 的核心是公共语言运行库(CLR),后面所说的托管程序就是在CLR中运行 并被管理的,比如垃圾回收…

react使用if判断

1、第一种 function Dade(req:any){console.log(req)if(req.data.id 1){return <span>66666</span>}return <span style{{color:"red"}}>8888</span>}2、使用 {win.map((req,index) > ( <> <Dade data{req}/>{req.id 1 ?…

Word 编辑密码解密教程

如果你遇到 word 不能打开编辑或忘记密码的情况&#xff0c;别担心&#xff0c;这里有最简单的办法。具体步骤如下&#xff1a;在手机或电脑浏览器上输入 文件密码.top 进入密码找回网站&#xff0c;然后点击“立即开始”&#xff0c;上传文件&#xff0c;无需下载软件&#xf…

开启对话式智能分析新纪元——Wyn商业智能 BI 携手Deepseek 驱动数据分析变革

2月18号&#xff0c;Wyn 商业智能 V8.0Update1 版本将重磅推出对话式智能分析&#xff0c;集成Deepseek R1大模型&#xff0c;通过AI技术的深度融合&#xff0c;致力于打造"会思考的BI系统"&#xff0c;让数据价值触手可及&#xff0c;助力企业实现从数据洞察到决策执…

计算机毕业设计——Springboot点餐平台网站

&#x1f389;**欢迎来到琛哥的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 琛哥&#xff0c;一名来自世界500强的资深程序猿&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 琛哥在深度学习任务中展现出卓越的能力&a…