【文本分类】深入理解embedding层的模型、结构与文本表示

article/2025/10/20 15:44:05

[1] 名词理解

  embedding层:嵌入层,神经网络结构中的一层,由embedding_size个神经元组成,[可调整的模型参数]。是input输入层的输出。

  词嵌入:也就是word embedding…根据维基百科,被定义为自然语言处理NLP中的一组语言建模和特征学习技术的集体名称,其中来自词汇表的单词或者短语被映射成实数向量。

  word2vec:词嵌入这个技术的具体实现,也可以理解成是将向量从高维度映射到低维度的计算过程。 具体的包含两种处理方式也就是两个典型的模型—CBOW模型和SG模型。假设,原始数据有F个特征,通过one-hot编码后,表示成N维的向量,即input层的维度是N,和权重矩阵相乘,变成embedding_size维的向量。(embedding_size <N)

  词向量:也就是通过word2vec计算处理后的结果的释义。比如说…从input输入层到embedding层的权重矩阵,记作是N*embedding_size的,那么这个矩阵的一行就是一个词向量,是第几行就对应input输入层one-hot编码中第几列那个1所对应的词。

[2] embedding层模型

  embedding层模型如下图所示:
请添加图片描述

很多人说【词向量只是embedding层训练的一个中间产物】,从上面的模型图中可以很容易理解。在深度学习处理此类问题中,我们关心的是文本如果通过向量表示,向量化的文本才是最终产物。对于embedding层,输入是分词后的序列,输出是向量化文本,中间会计算参数矩阵,就是词向量。所以说它是中间产物。

[2.1] 文本预处理

  首先拿到的数据集是比较原始的,一条文本(content)+标签(label):

content|label
皮肤真好啊|女性
翻开课本|校园

  然后要对文本进行分词,一条文本(词语list)+标签(label):

content|label
['皮肤','真好','啊']|女性
['翻开','课本']|校园

  构建数据集的词典,把文本用词典索引表示:
  · 词典:

0 '皮肤'
1 '真好'
2 '啊'
3 '翻开'
4 '课本'

   ·表示:

content|label
[0, 1, 2]|女性
[3, 4]|校园

[2.2] 数据集分批(batch)

  这里使用的是torch的分批。

  同一batch里,文本长度要一致。所以torch会使长度相近的文本分在一个batch里,这样降低填充/删减文本数据带来的误差。

[2.3] 参数矩阵(词向量)

  上图中,假设1个batch内的文本数为k,每篇文本中的词语数为4,嵌入层的维度为n,|v|为词典中的总词数,那么输入为(k,4)的张量,文本矩阵为(k,4,n)的三维张量,嵌入层参数矩阵形状为(|v|,n)。

  从降维的角度看,定义了嵌入层的维度为n后,词向量就是把词典中的所有词用n个维度来表征出来,相当于特征提取。

  举个例子:假设词典里面的每个词是一个个人,那么嵌入层维度就相当于人的‘鼻子’、‘眼睛’、‘身高’等等属于人的特征。那么我取嵌入层维度为n,就是取在我本次词典中的这些人,最能区别他们的前n个特征是什么、权重如何。只不过我们提取出的词典的n个特征并不是那么好理解,没法像‘鼻子’、‘眼睛’、‘身高’这么直观。

[2.4] 文本矩阵

  对于一个batch中的一条文本,会有一个文本矩阵。这个文本矩阵的行数是这个文本的词数,列数是嵌入层维度。好好看看上图,理解一下对应关系,图中已经用颜色标注。但这不是最终输出。

[2.5] 最终输出的文本矩阵

  在文本矩阵的基础上,相加求均值。

[3] embedding层批次与word2vec

  embedding层模型如上图所示。在得到batch数据之后,Embedding层还不能直接计算,需要使用word2vec算法思想来把数据进一步细分,之后才能训练。

  Word2Vec模型介绍

  Word2Vec模型实际上分为了两个部分,第一部分为训练数据集的构造,第二部分是通过模型获取词嵌入向量,即word embedding。

  Word2Vec的整个建模过程实际上与自编码器(auto-encoder)的思想很相似,即先基于训练数据构建一个神经网络,当这个模型训练好以后,并不会用这个训练好的模型处理新任务,而真正需要的是这个模型通过训练数据所更新到的参数。

  关于word embedding的发展,由于考虑上下文关系,所以模型的输入和输出分别是词汇表中的词组成,进而产生出了两种词模型方法:Skip-Gram和CBOW。同时,在隐藏层-输出层,也从softmax()方法演化到了分层softmax和negative sample方法。

  所以,要拿到每个词的词嵌入向量,首先需要理解Skip-Gram和CBOW。下图展示了CBOW和Skip-Gram的网络结构:
请添加图片描述
  以Skip-Gram为例,来理解词嵌入的相关知识。Skip-Gram是给定input word来预测上下文。我们可以用小学英语课上的造句来帮助理解,例如:“The __________”。

  关于Skip-Gram的模型结构,主要分为几下几步:

  1、从句子中定义一个中心词,即Skip-Gram的模型input word
  2、定义skip_window参数,用于表示从当前input word的一侧(左边及右边)选取词的数量。
  3、根据中心词和skip_window,构建窗口列表。
  4、定义num_skips参数,用于表示从当前窗口列表中选择多少个不同的词作为output word。

  假设有一句子"The quick brown fox jumps over the lazy dog" ,设定的窗口大小为2(window_size=2),也就是说仅选中心词(input word)前后各两个词和中心词(input word)进行组合。如下图所示,以步长为1对中心词进行滑动,其中蓝色代表input word,方框代表位于窗口列表的词。
请添加图片描述
  所以,我们可以使用Skip-Gram构建出神经网络的训练数据。

  我们需要明白,不能把一个词作为文本字符串输入到神经网络中,所以我们需要一种方法把词进行编码进而输入到网络。为了做到这一点,首先从需要训练的文档中构建出一个词汇表,假设有10,000个各不相同的词组成的词汇表。那么需要做的就是把每一个词做One hot representation。此外神经网络的输出是一个单一的向量(也有10000个分量),它包含了词汇表中每一个词随机选择附近的一个词的概率。


http://chatgpt.dhexx.cn/article/rGwLduay.shtml

相关文章

用万字长文聊一聊 Embedding 技术

作者&#xff1a;qfan&#xff0c;腾讯 WXG 应用研究员 随着深度学习在工业届不断火热&#xff0c;Embedding 技术便作为“基本操作”广泛应用于推荐、广告、搜索等互联网核心领域中。Embedding 作为深度学习的热门研究方向&#xff0c;经历了从序列样本、图样本、再到异构的多…

Embedding技术

1、Embedding 是什么 Embedding是用一个低维稠密的向量来“表示”一个对象&#xff08;这里的对象泛指一切可推荐的事物&#xff0c;比如商品、电影、音乐、新闻等&#xff09;&#xff0c;同时表示一词意味着Embedding能够表达相应对象的某些特征&#xff0c;同时向量之间的距…

什么是embedding?

本文转自&#xff1a;https://www.jianshu.com/p/6c977a9a53de    简单来说&#xff0c;embedding就是用一个低维的向量表示一个物体&#xff0c;可以是一个词&#xff0c;或是一个商品&#xff0c;或是一个电影等等。这个embedding向量的性质是能使距离相近的向量对应的物体…

Pairwise-ranking loss代码实现对比

Multi-label classification中Pairwise-ranking loss代码 定义 在多标签分类任务中&#xff0c;Pairwise-ranking loss中我们希望正标记的得分都比负标记的得分高&#xff0c;所以采用以下的形式作为损失函数。其中 c c_ c​是正标记&#xff0c; c − c_{-} c−​是负标记。…

【论文笔记】API-Net:Learning Attentive Pairwise Interaction for Fine-Grained Classification

API-Net 简介创新点mutual vector learning&#xff08;互向量学习&#xff09;gate vector generation&#xff08;门向量生成器&#xff09;pairwise interaction&#xff08;成对交互&#xff09; 队构造&#xff08;Pair Construction&#xff09;实验结果总结 简介 2020年…

白话点云dgcnn中的pairwise_distance

点云DGCNN中对于代码中pairwise_distance的分析与理解 2021年5月7日&#xff1a;已经勘误&#xff0c;请各位大佬不惜赐教。 一点一点读&#xff0c;相信我&#xff0c;我能讲清楚。 这个是本篇文章所要讨论的代码段 总体上把握&#xff0c;这个代码计算出了输入点云每对点之…

推荐系统[四]:精排-详解排序算法LTR (Learning to Rank): poitwise, pairwise, listwise相关评价指标,超详细知识指南。

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…

【torch】torch.pairwise_distance分析

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 记录torch.pairwise_distance 1. 一维 1.1 元素个数相同 1.1.1 元素个数为1 生成代码: t torch.randn(1) f torch.randn(1)计算代码&#xff0c;下…

pairwise损失_triplet损失_提升精排模型的trick

01标签 import torch import torch.nn as nn# 输入x是一个二维张量&#xff0c;每一行表示一个样本的分数&#xff0c;每一列表示一个特征或维度 x torch.tensor([[0.5, 0.7], [0.9, 0.8], [0.6, 0.4], [0.3, 0.6], [0.8, 0.7], [0.4, 0.5]])# 标签y是一个一维张量&#xff0c…

LTR (Learning to Rank): 排序算法 poitwise, pairwise, listwise常见方案总结

目录 1 Learing to Rank介绍2 The Pointwise Approach3 The Pairwise Approach3.1 RankNet 4 The Listwise Approach4.1 直接优化评测指标4.1.1 LambdaRank4.1.2 LambdaMART 4.2 定义Listwise损失函数4.2.1 ListNet4.2.2 ListMLE 5 排序评估指标5.1 Mean Reciprocal Rank (MRR)…

【论文精读】Pairwise learning for medical image segmentation

Published in: Medical Image Analysis 2020 论文&#xff1a;https://www.sciencedirect.com/science/article/abs/pii/S1361841520302401 代码&#xff1a;https://github.com/renzhenwang/pairwise_segmentation 目录 Published in: Medical Image Analysis 2020 摘要 一…

pairwise相似度计算

做了一个比赛&#xff0c;其中为了更好的构建负样本&#xff0c;需要计算不同句子之间的相似性&#xff0c;句子大概有100w&#xff0c;句子向量是300维&#xff0c;中间踩了很多坑&#xff0c;记录一下。 暴力计算 最简单的idea是预分配一个100w x 100w的矩阵&#xff0c;一…

如何计算 Pairwise correlations

Pairwise Correlation的定义是啥&#xff1f;配对相关性&#xff1f;和pearson correlations有什么区别&#xff1f; Pairwise Correlation顾名思义&#xff0c;用来计算两个变量间的相关性&#xff0c;而pearson correlations只是计算相关性的一种方法罢了。 1、pearson相关系…

再谈排序算法的pairwise,pointwise,listwise

NewBeeNLP干货 作者&#xff1a;DOTA 大家好&#xff0c;这里是 NewBeeNLP。 最近因为工作上的一些调整&#xff0c;好久更新文章和个人的一些经验总结了&#xff0c;下午恰好有时间&#xff0c;看了看各渠道的一些问题和讨论&#xff0c;看到一个熟悉的问题&#xff0c;在这…

【推荐】pairwise、pointwise 、 listwise算法是什么?怎么理解?主要区别是什么?

写在前面&#xff1a;写博客当成了学习笔记&#xff0c;容易找到去完善&#xff0c;不用于商业用途。通过各种途径网罗到知识汇总与此&#xff0c;如有侵权&#xff0c;请联系我&#xff0c;我下掉该内容~~ 排序学习的模型通常分为单点法&#xff08;Pointwise Approach&#…

软件测试用例设计之Pairwise算法

Pairwise算法简介 Pairwise是L. L. Thurstone(29 May1887 – 30 September 1955)在1927年首先提出来的。他是美国的一位心理统计学家。Pairwise也正是基于数学统计和对传统的正交分析法进行优化后得到的产物。 测试过程中&#xff0c;对于多参数参数多值的情况进行测试用例组…

磁盘配额中quotacheck不能创建aquota.user和aquota.group文件的问题

在centos6.5学习中有关磁盘配额的内容中&#xff0c;发现quotacheck -augv 命令无法创建aquota.group 和aquota.user文件&#xff0c; 操作系统挂载在/home下&#xff0c;经排查发现是SELinux的问题&#xff0c;使用setenforce 0命令将其关闭后&#xff0c;重新执行quotacheck…

Linux从入门到精通(八)——Linux磁盘管理

文章篇幅较长&#xff0c;建议先收藏&#xff0c;防止迷路 文章跳转Linux从入门到精通&#xff08;八&#xff09;——Linux磁盘管理goLinux从入门到精通&#xff08;九&#xff09;——Linux编程goLinux从入门到精通&#xff08;十&#xff09;——进程管理goLinux从入门到精…

Linux:Quota 的基本命令​​​​​​​

在开始进行 quota 的实作之前&#xff0c;我们得来了解一下 quota 要使用的指令啰&#xff01; 基本上分为两种&#xff0c;一种是查询功能&#xff08;quota, quotacheck, quotastats, warnquota, repquota&#xff09;&#xff0c;另一种则是编辑 quota 的内容&#xff08; …

01_Linux系统管理_基础知识_高级文件系统管理_磁盘配额(quota)

环境 虚拟机&#xff1a;VMware-10.0.7 build-2844087Linux系统&#xff1a;CentOS 6.8远程工具&#xff1a;Xshell 6 (Build 0197) 01_Linux系统管理_基础知识_高级文件系统管理_磁盘配额 一、什么是磁盘配额&#xff08;quota&#xff09; 磁盘配额概念 对用户和用户组使用磁…