吴恩达深度学习——词嵌入

内容来自https://www.bilibili.com/video/BV1FT4y1E74V,仅为本人学习所用。

文章目录

  • 词表特征
  • 词嵌入的类比推理
  • 嵌入矩阵
  • 词嵌入
    • Word2Vec
      • 跳字模型
      • 模型细节
      • 负采样
    • GloVe词向量(了解)
  • 情绪分类

词表特征

使用 one-hot 对词汇进行编码时,一个缺点是每个词之间彼此是独立的,联系能力不强。如果使用特征化的表示:
在这里插入图片描述
有6个关键词“Man”、“Woman”、“King”、“Queen”、“Apple”、“Orange”。在词嵌入空间中,每个词都被表示为一个向量,图中这些词向量在多个维度。例如,在Gender维度上,“Man”取值为 -1 ,“Woman”取值为 1 ,体现了性别差异;“King”在Royal维度上取值为 0.93,“Queen”在Royal维度上取值为 0.95 ,体现了其的皇室属性;“Apple”和“Orange”在Food维度上取值分别为 0.95 和 0.97 ,体现了其的食物属性。

如果有一个300维的词嵌入,使用t-SNE算法可视化到二维空间中,可以看到,一些特征相似的词分布的更近。
在这里插入图片描述

词嵌入的类比推理

假设有一个对应任务:男人对应女人,国王对应什么?国王应该对应王后。是否有一种算法来自动推导出这个关系?在这里插入图片描述
在词嵌入空间中,给出这些词的相关系数,在这里,使用 e m a n e_{man} eman表示man在空间中的位置,其他的类似。如图右下角, e m a n − e w o m a n e_{man}-e_{woman} emanewoman的结果和 e k i n g − e q u e e n e_{king}-e_{queen} ekingequeen的结果相似,都与性别有关系。
在这里插入图片描述

上述的做法写成式子: e m a n − e w o m a n ≈ e k i n g − e q u e e n e_{man} - e_{woman} \approx e_{king} - e_{queen} emanewomanekingequeen ,即“男人”的词向量减去“女人”的词向量,近似等于“国王”的词向量减去“王后”的词向量。公式是 arg max ⁡ w   s i m ( e w , e k i n g − e m a n + e w o m a n ) \underset{w}{\argmax} \ sim(e_w, e_{king} - e_{man} + e_{woman}) wargmax sim(ew,ekingeman+ewoman) s i m ( u , v ) = u T v ∥ u ∥ 2 ∥ v ∥ 2 sim(u, v)=\frac{u^Tv}{\|u\|_2\|v\|_2} sim(u,v)=u2v2uTv表示在给定词嵌入空间中,寻找一个词 w w w ,使得它的词向量 e w e_w ew e k i n g − e m a n + e w o m a n e_{king} - e_{man} + e_{woman} ekingeman+ewoman 的相似度( s i m sim sim )最大。在这个类比关系中,通过这样的词向量运算和相似度计算,可以推断出与“king”(国王)相对应的女性角色“queen”(王后)。

s i m sim sim余弦相似度公式中, ∥ u ∥ 2 \|u\|_2 u2 ∥ v ∥ 2 \|v\|_2 v2 分别是向量 u u u v v v L 2 L_2 L2 范数(欧几里得范数),值越接近 1 表示两个向量越相似,即对应的词语在语义上越相近。

嵌入矩阵

在这里插入图片描述
词嵌入矩阵E是一个二维矩阵,维度为 10000×300。矩阵的每一行代表一个维度,共 300 维;每一列对应一个单词,这里有 10000 个单词。单词“orange”(序号 6257 ),在词嵌入矩阵中对应一列,表示为 O 6257 O_{6257} O6257,即在6257位置上置1。

要获取该单词的词向量,将嵌入矩阵 E E E(10000×300)与一个 one-hot 编码向量 o 6257 o_{6257} o6257 (10000×1 )相乘,得到单词“orange”的词向量 e 6257 e_{6257} e6257 (300×1 ) 。因此,有 E ⋅ O i = e i E \cdot O_i = e_i EOi=ei O i O_i Oi 是单词 i i i 的 one-hot 编码, e i e_i ei 是单词 i i i 的词向量。但是在实践中,不会做乘法运算,而是使用专门的函数来单独寻找该列。比如在TensorFlow中,使用使用 keras的 Embedding 层获取对应的词向量。

词嵌入

在这里插入图片描述

在早期处理词嵌入时,对于句子“I want a glass of orange ?.”,每个单词都有对应的索引,如“I”对应4343,“want”对应9665等。这些单词首先被转换为 one - hot 编码向量,如 o 4343 o_{4343} o4343 o 9665 o_{9665} o9665等。

one - hot 编码向量 o i o_i oi乘以嵌入矩阵 E E E,得到对应的词向量 e i e_i ei,如 e 4343 = E ⋅ o 4343 e_{4343} = E \cdot o_{4343} e4343=Eo4343

将得到的词向量输入到后续的神经网络层,经过一系列计算,最后通过Softmax层输出。Softmax层的输出维度为词表大小,预测下一个单词的概率分布。

更常见的是通过固定大小的历史窗口,比如4个大小的窗口(只看前4个单词)。在这个算法下,苹果和橙子学到了相似的嵌入。
在这里插入图片描述
经过不断的演变,如果目标是学习一个嵌入向量,那么可以使用不同类型的上下文;目标是建立语言模型,一般选取目标词的前几个词作为上下文。

在句子“I want a glass of orange juice to go along with my cereal.”中:

  • 上下文和目标词:图中以“orange”为例,标注了它作为目标词,其上下文可以有多种定义方式。
  • 上下文窗口设定
    • “Context: Last 4 words”表示将目标词前面的 4 个词作为上下文。
    • “4 words on left & right”指目标词左右各 4 个词作为上下文。
    • “Last 1 word”即目标词前面的 1 个词为上下文。
    • “Nearby 1 word”这种方式与跳字模型相关,跳字模型通常是根据一个词预测其附近的词。

Word2Vec

Word2Vec是基于分布式假设,即语义相近的词在文本中出现的上下文相似。通过对大规模文本语料库训练,将每个单词映射为低维实数向量。其中一个主要架构是跳字模型:

跳字模型

在这里插入图片描述
在句子“I want a glass of orange juice to go along with my cereal.”中,选取上下文和目标配对,比如选“orange”作为Context,随机在一定距离选另外一个词作为Target。比如“juice”“glass”“my”等。模型会根据“orange”这个词去预测这些在其附近出现的词。通过大量这样的训练样本,模型能够学习到词语之间的语义关系,并生成有效的词嵌入向量,使得语义相近的词在向量空间中位置接近。

模型细节

在这里插入图片描述
词表大小(Vocab size)为10,000,即模型处理的词汇量为10,000个单词。

上下文词(Context):“orange”,其索引为6257。目标词(Target):“juice”,索引为4834。

计算过程是:给定一个词,将这个词的one - hot编码计算词向量,再经过softmax得到预测值用于预测这个词左侧或者右侧跳过几个词后的某一个词应该是什么。

  1. 词嵌入:上下文词的 one - hot 编码 o c o_c oc乘以嵌入矩阵 E E E,得到上下文词的词向量 e c e_c ec,即 e c = E ⋅ o c e_c = E \cdot o_c ec=Eoc
  2. Softmax层计算:将词向量 e c e_c ec输入到Softmax层,计算在给定上下文词 c c c的情况下,目标词 t t t出现的概率 p ( t ∣ c ) p(t|c) p(tc)。计算公式为 p ( t ∣ c ) = e θ t T e c ∑ j = 1 10000 e θ j T e c p(t|c)=\frac{e^{\theta_t^T e_c}}{\sum_{j = 1}^{10000}e^{\theta_j^T e_c}} p(tc)=j=110000eθjTeceθtTec,其中 θ t \theta_t θt是与目标词 t t t相关的参数。
  3. 损失函数:使用交叉熵损失函数 L ( y ^ , y ) = − ∑ i = 1 10000 y i log ⁡ y ^ i L(\hat{y}, y)=-\sum_{i = 1}^{10000}y_i \log \hat{y}_i L(y^,y)=i=110000yilogy^i来衡量预测概率 y ^ \hat{y} y^与真实标签 y y y之间的差异。真实标签 y y y是一个 one - hot 编码向量,对应目标词“juice”的位置为1,其余位置为0。

在计算 p ( t ∣ c ) p(t|c) p(tc)时,分母的求和会消耗大量的时间,使用负采样进行优化。

负采样

在这里插入图片描述

对这样一个句子,假设选取context词为"orange",在该词的句子上下文中另外选择一个word,比如"juice",橙子汁是有关联的,将target手动标记为1,是一个正样本。在词表中随机又选了一个词"king"(不一定是上下文),"orange"与"king"关联不大,标记为0,是一个负样本…每组中,第一个是正样本,剩下的k个是负样本。算法将 c o n t e x t − w o r d context - word contextword 对作为 x x x输入,将 t a r g e t target target作为 y y y输出。算法要学习如何分辨是正样本还是负样本,这样,生成了一个训练集。

k的取值是:若数据集较大,k值建议在2-5;若数据集较小,k值建议在5-20。
在这里插入图片描述
采用负采样的方法,公式变为 P ( y = 1 ∣ c , t ) = σ ( θ t T e c ) P(y = 1|c, t)=\sigma(\theta_t^T e_c) P(y=1∣c,t)=σ(θtTec) θ t \theta_t θt 是与目标词 t t t 相关的参数向量, e c e_c ec 是上下文 c c c 的词向量。

以“orange”(索引为6257 )为例:

  1. 首先将其 one-hot 编码 o 6257 o_{6257} o6257 乘以嵌入矩阵 E E E ,得到词向量 e 6257 e_{6257} e6257
  2. 然后通过计算 θ t T e 6257 \theta_t^T e_{6257} θtTe6257 并经过sigmoid函数,判断当前词(如“juice”“king”等,词表大小为10000 )是否为“orange”合理的上下文相关词(即判断是否为正样本)。如果是正样本, y = 1 y = 1 y=1;如果是负样本, y = 0 y = 0 y=0 。这个过程用于训练模型区分正样本(语义相关词)和负样本(语义无关词)。之前的公式是计算整整一万个分类,而采用负采样后,只计算一个正样本和k个负样本。

GloVe词向量(了解)

GloVe是另一个词嵌入的方式。定义 x i j x_{ij} xij是词 i i i在词 j j j中出现的次数,如果上下文和目标词的范围在其左右各10个词之内,有对应关系 x i j = x j i x_{ij}=x_{ji} xij=xji;如果上下文的范围是目标词的前一个,就没有此对应关系。在该算法中,定义上下文和目标词是任意两个位置相近的单词,假设是左右各10词的距离,公式是
在这里插入图片描述
GloVe: J = ∑ i = 1 V ∑ j = 1 V f ( X i j ) ( θ i T e j + b i + b j ′ − log ⁡ X i j ) 2 J = \sum_{i=1}^{V}\sum_{j=1}^{V} f(X_{ij}) (\theta_i^T e_j + b_i + b_j' - \log X_{ij})^2 J=i=1Vj=1Vf(Xij)(θiTej+bi+bjlogXij)2

  • V V V:表示词表的大小,即词表中单词的总数。
  • X i j X_{ij} Xij:表示单词 j j j 在单词 i i i 的上下文中出现的次数。反映了单词之间的共现关系。
  • f ( X i j ) f(X_{ij}) f(Xij):是一个加权函数,作用是调整不同共现次数的权重。当 X i j = 0 X_{ij}=0 Xij=0 时, f ( X i j ) = 0 f(X_{ij}) = 0 f(Xij)=0,这避免了对没有共现关系的单词对进行不必要的计算,同时也防止了 log ⁡ 0 \log 0 log0 这种无定义的情况出现。一般来说,对于共现次数较少的单词对给予较高的权重,对于共现次数较多的单词对适当降低权重,以平衡不同频率单词对的影响。
  • θ i \theta_i θi e j e_j ej:是待学习的词向量参数。 θ i \theta_i θi 可以看作是单词 i i i 作为上下文词时的向量表示, e j e_j ej 是单词 j j j 作为目标词时的向量表示 。通过训练不断调整,使得模型能够捕捉到单词之间的语义关系。
  • b i b_i bi b j ′ b_j' bj:分别是与单词 i i i 和单词 j j j 相关的偏置项,用于对模型的预测进行微调。

该公式定义了一个需要最小化的损失函数 J J J 。通过最小化这个损失函数,模型可以学习到合适的词向量 θ i \theta_i θi e j e_j ej 以及偏置项 b i b_i bi b j ′ b_j' bj 。GloVe模型基于单词共现矩阵,利用这个公式来拟合单词之间的共现概率关系,得到能够反映单词语义信息的词嵌入向量,使得语义相近的单词在向量空间中的距离较近。

情绪分类

情绪分类任务是看一段文本,分辨这个人是否喜欢他们讨论的内容。
在这里插入图片描述
因为可标记的训练集没那么多,所以采用词嵌入能够带来更好的效果。将每个单词的 one-hot 编码(如 o 8928 o_{8928} o8928 o 2468 o_{2468} o2468等)乘以嵌入矩阵 E E E,得到对应的词向量(如 e 8928 e_{8928} e8928 e 2468 e_{2468} e2468等),这里词向量维度为300维,然后把所有词向量进行平均操作(将所有单词的意思平均起来),得到一个综合的文本特征向量,继续综合特征向量输入Softmax层,输出1 - 5星级的情感评分( y ^ \hat{y} y^),判断文本的情感倾向,这里星级越高表示情感越积极。

但是该算法有个缺点:没考虑词序。比如下面一段话,good出现了很多次,但是意思确实完全相反的。该算法会认为这个人给了个好评。
在这里插入图片描述
考虑词序问题,可以使用RNN。将RNN用于情感分类的循环神经网络,属于多对一的结构。
在这里插入图片描述
句子“Completely lacking in good… ambience”中的每个单词(如“Completely”“lacking”等),首先通过嵌入矩阵 E E E转换为对应的词向量(如 e 1852 e_{1852} e1852 e 4966 e_{4966} e4966等)。词嵌入将单词映射为低维实数向量,以捕捉单词语义信息。

在RNN部分,RNN初始隐藏状态 a < 0 > a^{<0>} a<0> 。对于每个时间步,当前单词的词向量输入到RNN中,与上一个时间步的隐藏状态一起计算得到当前时间步的隐藏状态。例如, e 1852 e_{1852} e1852 a < 0 > a^{<0>} a<0>参与计算得到 a < 1 > a^{<1>} a<1>,以此类推。这种结构使得RNN能够处理序列数据,并捕捉序列中的上下文信息。

最后一个时间步的隐藏状态 a < 10 > a^{<10>} a<10>输入到Softmax层,Softmax层将其转换为情感分类的概率分布,输出预测的情感类别 y ^ \hat{y} y^

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/969804.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构——Makefile、算法、排序(2025.2.13)

目录 一、Makefile 1.功能 2.基本语法和相关操作 &#xff08;1&#xff09;创建Makefile文件 &#xff08;2&#xff09;编译规则 &#xff08;3&#xff09;编译 &#xff08;4&#xff09;变量 ①系统变量 ②自定义变量 二、 算法 1.定义 2.算法的设计 &#xff…

达梦:TPCC 压测

目录 造数1. 脚本启动2. 检查数据库信息3. 删除旧用户和表空间4. 创建新的表空间5. 创建用户和表6. 数据加载7. 创建索引8. 创建存储过程和序列9. 检查数据空间使用情况10. 启用表的快速访问池11. 数据加载完成总结 压测1. 脚本启动2. 检查数据表空间3. 设置表的快速池标志4. 检…

2024 StoryDiffusion 文字/文字+图像----->视频

基于扩散模型的生成模型在生成长序列图像和视频时面临内容一致性的重大挑战&#xff0c;尤其是涉及复杂主题和细节的场景中&#xff0c;角色身份、服饰风格等元素难以保持连贯。传统方法通常依赖潜在空间的运动预测&#xff0c;但长视频生成时易出现不稳定性。针对这些问题&…

在带有Intel Arc GPU的Windows上安装IPEX-LLM

在带有Intel Arc GPU的Windows上安装IPEX-LLM 在带有Intel Arc GPU的Windows上安装IPEX-LLM先决条件安装 GPU 驱动安装 Visual Studio 2022 社区版安装 Intel oneAPI Base Toolkit安装 IPEX-LLM创建虚拟环境环境验证 可能遇到的问题 在带有Intel Arc GPU的Windows上安装IPEX-LL…

流程控制(if—elif—else,while , for ... in ...)

1. 流程控制 流程&#xff1a;计算机执行代码的顺序 流程控制&#xff1a;对计算机执行代码的顺序的管理 2. 流程控制分类 流程控制分类&#xff1a; 顺序流程&#xff1a;自上而下的执行结构&#xff0c;即 Python 默认流程 选择/分支流程&#xff1a;根据某一步的判断&am…

SpringBoot实战:高效获取视频资源

文章目录 前言技术实现SpringBoot项目构建产品选取配置数据采集 号外号外 前言 在短视频行业高速发展的背景下&#xff0c;海量内容数据日益增长&#xff0c;每天都有新的视频、评论、点赞、分享等数据涌现。如何高效、精准地获取并处理这些庞大的数据&#xff0c;已成为各大平…

SSL域名证书怎么申请?

在数字化时代&#xff0c;网络安全已成为企业和个人不可忽视的重要议题。SSL&#xff08;Secure Sockets Layer&#xff0c;安全套接层&#xff09;域名证书&#xff0c;作为保障网站数据传输安全的关键工具&#xff0c;其重要性日益凸显。 一、SSL域名证书&#xff1a;网络安…

用大模型学大模型04-模型与网络

目前已经学完深度学习的数学基础&#xff0c;开始学习各种 模型和网络阶段&#xff0c;给出一个从简单到入门的&#xff0c;层层递进的学习路线。并给出学习每种模型需要的前置知识。增加注意力机制&#xff0c;bert, 大模型&#xff0c;gpt, transformer&#xff0c; MOE等流行…

DeepSeek4j 已开源,支持思维链,自定义参数,Spring Boot Starter 轻松集成,快速入门!建议收藏

DeepSeek4j Spring Boot Starter 快速入门 简介 DeepSeek4j 是一个专为 Spring Boot 设计的 AI 能力集成启动器&#xff0c;可快速接入 DeepSeek 大模型服务。通过简洁的配置和易用的 API&#xff0c;开发者可轻松实现对话交互功能。 环境要求 JDK 8Spring Boot 2.7Maven/Gr…

graphRAG的原理及代码实战(2)基本原理介绍(中)

graphRAG-结果解读 1、简介 前文中&#xff0c;graphRAG项目index索引建立完成后&#xff0c;会生成7个parquet文件。 为什么用 Parquet 格式保存知识图谱&#xff1f; 高效存储&#xff1a; 知识图谱中的数据通常是结构化的&#xff0c;包含大量的实体、关系、嵌入等。Parq…

TLQ-CN10.0.2.0 (TongLINK/Q-CN 集群)部署指引 (by lqw)

文章目录 安装准备虚拟机部署部署zk集群安装zk集群启动zk集群初始化元数据&#xff08;zk&#xff09;关闭zk集群 部署BookKeeper集群安装BookKeeper集群初始化元数据&#xff08;bk&#xff09;启动BookKeeper停止 BookKeeper 部署Brokers集群安装Brokers集群启动 broker停止 …

深入剖析推理模型:从DeepSeek R1看LLM推理能力构建与优化

著名 AI 研究者和博主 Sebastian Raschka 又更新博客了。原文地址&#xff1a;https://sebastianraschka.com/blog/2025/understanding-reasoning-llms.html。这一次&#xff0c;他将立足于 DeepSeek 技术报告&#xff0c;介绍用于构建推理模型的四种主要方法&#xff0c;也就是…

【Sceneform-EQR】实现3D场景背景颜色的定制化(背景融合的方式、Filament材质定制)

写在前面的话 Sceneform-EQR是基于&#xff08;filament&#xff09;扩展的一个用于安卓端的渲染引擎。故本文内容对Sceneform-EQR与Filament都适用。 需求场景 在使用Filament加载三维场景的过程中&#xff0c;一个3D场景对应加载一个背景纹理。而这样的话&#xff0c;即便…

Visual Studio 2022在配置远程调试服务器时无法连接到OpenEuler24.03

表现为在VS中为OpenEuler24.03创建远程服务器时&#xff0c;界面上直接报主机密钥算法失败&#xff0c;或直接提示无法连接到服务器&#xff0c;导致无法创建远程服务器。 经查询日志发现一些蛛丝马迹 09:25:15.2035105 [Info, Thread 53] liblinux.Local.Services.WslEnumer…

常用架构图:业务架构、产品架构、系统架构、数据架构、技术架构、应用架构、功能架构及信息架构

文章目录 引言常见的架构图I 业务架构图-案例模块功能说明1. 用户界面层 (UI)2. 应用服务层3. 数据管理层4. 基础设施层业务流程图示例技术实现II 功能架构图 -案例功能模块说明1. 船舶监控模块2. 报警管理模块3. 应急响应模块4. 通信管理模块5. 数据分析模块数据管理层基础设施…

【电脑】u盘重装win7

u盘必须8GB以上 1. CPU型号 首先查看CPU的型号看看到底能不能装win7 2. 下载光盘映像文件 网址 看电脑是多少位的机器(32位下载x86 64位下载x64) 一共是这么多个版本按需下载对应的版本 电脑小白推荐无脑下载旗舰版 将链接复制到迅雷进行下载 3. 下载软碟通 网址 下…

Java 大视界 -- 大数据伦理与法律:Java 技术在合规中的作用与挑战(87)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

制造业物联网的十大用例

预计到 2026 年&#xff0c;物联网制造市场价值将达到 4000 亿美元。实时收集和分析来自联网物联网设备与传感器的数据&#xff0c;这一能力为制造商提供了对生产流程前所未有的深入洞察。物联网&#xff08;IoT&#xff09;有潜力彻底改变制造业&#xff0c;使工厂能够更高效地…

无法读取配置节“system.web.extensions”,因为它缺少节声明

无法读取配置节“system.web.extensions”&#xff0c;因为它缺少节声明 在IIS配置.net接口时&#xff0c;报错&#xff1a; 无法读取配置节“system.web.extensions”&#xff0c;因为它缺少节声明 解决办法&#xff1a;打开IIS&#xff0c;右键>>管理网站>>高级…

Android Studio:键值对存储sharedPreferences

一、了解 SharedPreferences SharedPreferences是Android的一个轻量级存储工具&#xff0c;它采用的存储结构是Key-Value的键值对方式&#xff0c;类似于Java的Properties&#xff0c;二者都是把Key-Value的键值对保存在配置文件中。不同的是&#xff0c;Properties的文件内容形…