NLP & Word Embeddings

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个输入层的逻辑回归单元参数,大幅降低计算量。

如何进行负样本选取

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

GloVe

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

定义

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

模型结构

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

分别是单词的context向量和target向量,分别为单词作为context单词时使用和作为target单词时使用,训练完成后可以使用作为最终的词向量。

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

词向量的应用

Sentiment Classification

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

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

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

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

消除词向量偏见

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

相关推荐
一个机器视觉工程师的自我修养13 分钟前
Halcon.Net与Numpy、OpenCV联合编程
人工智能·opencv·numpy
AndrewHZ20 分钟前
DeepSeek-R1技术革命:用强化学习重塑大语言模型的推理能力
人工智能·python·深度学习·算法·语言模型
漂亮_大男孩25 分钟前
深度学习|表示学习|Instance Normalization 全面总结|26
人工智能·深度学习·神经网络·学习·cnn
美狐美颜sdk33 分钟前
美颜SDK架构设计指南:性能优化与跨平台适配实战
人工智能·深度学习·性能优化·美颜sdk·视频美颜sdk
开出南方的花1 小时前
DeepSeek模型架构及优化内容
人工智能·pytorch·深度学习·机器学习·架构·nlp·attention
杀死这个程序员2 小时前
conda介绍及常用命令举例
人工智能·conda
说私域2 小时前
互联网企业线上业务拓展与开源AI智能名片2+1链动模式S2B2C商城小程序的创新应用
人工智能·小程序·开源
Orange_sparkle2 小时前
大模型基本原理(四)——如何武装ChatGPT
人工智能·语言模型·chatgpt
feifeikon2 小时前
NLP&深度学习 DAY7:平滑、语境学习、Scaling Law、大模型的发展、LLM的构建流程
深度学习·学习·自然语言处理