深度学习:词嵌入embedding和Word2Vec

news2024/10/7 10:43:45

目录

前言

一、词嵌入(Embedding)

1.传统自然语言处理问题

2.什么是词嵌入

二、Word2vec模型

1.Word2Vec的基本原理

三、CBOW模型训练过程


前言

        在机器学习里的自然语言处理,是将语料库中的词语转换成词向量矩阵,再使用朴素贝叶斯算法对其进行预测。这篇文章要讲的是深度学习里关于自然语言处理的一些概念

 

一、词嵌入(Embedding)

1.传统自然语言处理问题

  • 早期的模型没有考虑到词序和上下文关系,使得模型无法捕捉句子中词之间更复杂的语义联系
  • 某些传统算法可能需要大量的计算和存储资源,影响其可扩展性

例如:

  1. 一个语料库4960个词语
  2. 每个词语的独热编码都是4959个0和1个1按顺序组成
  3. 第一个词语就是[000000...0001],第二个[0000...0010],依此类推
  4. 将其转换成词向量矩阵就是(4960*4960)
  5. 每一行数据就是一个词
  6. 如果语料库很大,那么就会出现维度灾难
  7. 使用词嵌入解决这种情况

 

2.什么是词嵌入

        例如将一个词向量为(1*4960)的词语乘以一个(4960*300)的矩阵,将其变成(1*300)的词向量矩阵,从而达到降维的目的,解决了维度灾难。

 

二、Word2vec模型

  • Word2Vec是由Google的研究团队提出的一种用于词嵌入的模型,旨在将单词转换为向量,以便于计算机理解和处理自然语言。
  • 它能够捕捉词与词之间的语义关系,并在许多自然语言处理任务中得到了广泛应用。

1.Word2Vec的基本原理

连续词袋模型(CBOW):

  1. 目标是在给定上下文(周围词)的情况下预测中心词。
  2. 例如,在句子“我喜欢学习”中,如果上下文是“我”和“学习”,模型的目标是预测“喜欢”。
  3. 即输入“我”、“学习”的独热编码,“喜欢”当做被预测的值

跳字模型(Skip-gram):

  1. 目标是根据中心词预测其上下文。
  2. 例如,在句子“我喜欢学习”中,如果中心词是“喜欢”,模型的目标是预测“我”和“学习”。
  3. 输入“喜欢”的独热编码,“我”、“学习”当做被预测的值

 

三、CBOW模型训练过程

  1. 当前词的上下文词语的one-hot编码输入到输入层。
  2. 这些词分别乘以同一个矩阵W(V*N)后分别得到各自的1*N 向量。
  3. 将多个这些1*N 向量取平均为一个1*N 向量。
  4. 将这个1*N 向量乘矩阵 W'(N*V) ,变成一个1*V 向量。
  5. 将1*V 向量softmax归一化后输出取每个词的概率向量1*V
  6. 概率值最大的数对应的词作为预测词
  7. 将预测的结果1*V 向量和真实标签1*V 向量(真实标签中的V个值中有一个是1,其他是0)计算误差
  8. 在每次前向传播之后反向传播误差,不断调整 W(V*N)和 W'(N*V)矩阵的值。

拿一个词语为4960个的语料库来举例,使用CBOW模型完成词嵌入:

  1. 假设选取上下各选两个词语,输入层每一个神经元接收一个词语的独热编码,然后将其乘以第一个权重w1(4960*300)的矩阵,将结果(1*300)的矩阵传入中间层
  2. 中间层将输入层传入的四个结果组合成一个(4*300)的矩阵,然后再对每一列进行求和得到(1*300)的矩阵,将该矩阵传入输出层
  3. 输出层接收到输入层传入的(1*300)的矩阵,将其乘以第二个权重w2(300*4960)的矩阵,得到(1*4960)的矩阵,每一行就是每个词语的预测结果
  4. 对矩阵进行归一化,得到的每一行都是一个词语的概率值
  5. 概率值最大的即为预测词
  6. 然后将该词的预测结果与真实标签进行误差计算
  7. 在每次前向传播之后反向传播误差,不断调整w1和w2的值

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

远程调用的问题以及eureka原理

目录 服务调用出现的问题 问题分析 解决方案(eureka原理) eureka(两个角色) eureka的解决方案 此过程出现的问题 eureka的作用 总结 服务调用出现的问题 服务消费者该如何获取服务提供者的地址信息?如果有多个…

《黑神话:悟空》像素版 v0.1b [PC+安卓]

游戏简介 《黑神话:悟空》像素版是一款由火山哥哥与林学学LinkLin合作开发的游戏。这款游戏采用了像素化的艺术风格,巧妙地简化并再现了《黑神话:悟空》中的核心玩法和经典场景。游戏不仅成功复刻了原作中的战斗系统和角色动画,还…

FredNormer: 非平稳时间序列预测的频域正则化方法

时间序列预测是一个具有挑战性的任务,尤其是在处理非平稳数据时。现有的基于正则化的方法虽然在解决分布偏移问题上取得了一定成功但仍存在局限性。这些方法主要在时间域进行操作,可能无法充分捕捉在频域中更明显的动态模式,从而导致次优的结果。 FredNormer论文的研究目的主要…

AI大模型时代来了,35岁+程序员都去哪了?

在 AI 大潮中,AI 大模型如同一艘巨轮,引领着技术的前进方向。然而,随着这股浪潮的汹涌,人们开始关注那些35岁以上的程序员,在这个快速变化的时代中,面临着怎样的挑战和机遇?本文将带您深入了解程…

UART驱动学习二(TTY体系)

目录 一、TTY体系中设备节点的差别1. 傻傻分不清 /dev/tty*2. 要讲历史了2.1 电传机teletype2.2 计算机需要控制2.2.1 使用teletype2.2.2 teletype被淘汰了2.2.3 个人电脑和虚拟终端 3. tty相关设备节点3.1 各类设备节点的差别3.2 /dev/ttyN(N1,2,3,..., 63)3.3 /dev/tty03.4 /…

python数据分析与可视化介绍

本文主要讲述了数据可视化的基础知识,包括什么是数据可视化,数据可视化应用以及Python可视化工具库。 什么是数据可视化 可视化是一种通过视觉的方式有效传达信息的技术。数据可视化旨在借助于图形化手段,将数据以视觉形式来呈现&#xff0c…

什么样的孩子适合学C++?

随着科技的飞速发展,编程已成为许多家长和教育者重视的技能之一。在众多编程语言中,C因其强大的功能和广泛的应用,成为许多青少年学习编程的首选。然而,C相较于其他编程语言,如Python或Scratch,其学习难度更…

Golang | Leetcode Golang题解之第461题汉明距离

题目: 题解: func hammingDistance(x, y int) (ans int) {for s : x ^ y; s > 0; s & s - 1 {ans}return }

AutoSar CP 通信服务核心—Com模块详解

文章目录 Com模块的主要功能Com模块的配置与其他模块的交互应用举例应用层通过Com模块接收CAN报文应用层通过Com模块发送CAN报文 在AUTOSAR Classic Platform (CP) 中, Com模块(Communication模块)是负责实现 应用层与通信栈之间的接口。它…

Windows 通过 Docker 安装 GitLab

1. 安装 Docker Desktop 下载网站:Windows | Docker Docs 2. 拉取 GitLab Docker 镜像 打开 PowerShell 或 命令提示符,拉取 GitLab 镜像: docker pull gitlab/gitlab-ee:latest或则使用社区版: docker pull gitlab/gitlab-ce…

【五分钟学会】YOLO11 自定义数据集从训练到部署

数据集地址 数据集包含 360 张红血细胞图像及其注释文件,分为训练集与验证集。训练文件夹包含 300 张带有注释的图像。测试和验证文件夹都包含 60 张带有注释的图像。我们对原始数据集进行了一些修改以准备此 CBC 数据集,并将数据集分成三部分。在360张…

feign文件上传

记录一下 feign文件上传 环境 spring-boot 2.3.7 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.7.RELEASE</version><relativePath/> <!-- lo…

NIO实现聊天室之:一切都要从网络编程的基础开始聊起!

一、写在开头 大家好,Build哥回来啦!停更了大概2个月之久,之前有段时间去写小说去了,后来又因为公司活太多,牛马干的太投入,就拉下了博客的更新,国庆节期间,难得的闲下来,准备回归老本行啦。 大致的翻看了一下之前更新的内容,已经写到了Java的IO部分,作为网络传输…

通过 LLMs 自动探索量化投资策略

作者&#xff1a;老余捞鱼 原创不易&#xff0c;转载请标明出处及原作者。 写在前面的话&#xff1a; 本文提出了一个利用大型语言模型&#xff08;LLMs&#xff09;和多代理架构的新框架&#xff0c;用于量化股票投资和投资组合管理。该框架通过整合LLMs生成多样化的al…

SpringBoot项目:前后端打包与部署(使用 Maven)

文章目录 IDEA后端打包与部署&#xff08;使用 Maven&#xff09;1. 确保 Maven 已安装&#xff0c;并引入 pom 插件2. 清理并安装项目3. 定位生成的 JAR 包和配置文件4. 创建部署文件夹5. 上传到服务器 前端打包与部署&#xff08;使用 npm&#xff09;1. 确保 Node.js 和 npm…

提升LLM结果:何时使用知识图谱RAG

通过知识图谱增强 RAG 可以帮助检索&#xff0c;使系统能够更深入地挖掘数据集以提供详细的响应。 译自Boost LLM Results: When to Use Knowledge Graph RAG&#xff0c;作者 Brian Godsey。 有时&#xff0c;检索增强生成 (RAG) 系统无法深入文档集以找到所需的答案。我们可能…

同质化的卷需要支撑多样化的环境来调和

(*^__^*) 代价高昂的免费机器人课程{人工智能与机器人教育之个人感悟}_从事机器人工程专业或机器人方向相关课程开发3年多的时间,从编写控制机器人的第一-CSDN博客 如上这篇写于2016&#xff0c;发表在博客的时间是2018。 总是觉得要补充些什么&#xff0c;但是&#xff0c;…

【模板进阶】std::true_type和std::false_type

一、 s t d : : t r u e _ t y p e std::true\_type std::true_type和 s t d : : f a l s e _ t y p e std::false\_type std::false_type的实现 s t d : : t r u e _ t y p e std::true\_type std::true_type和 s t d : : f a l s e _ t y p e std::false\_type std::false_t…

Unity WebGL使用nginx作反向代理处理跨域,一些跨域的错误处理(添加了反向代理的配置依旧不能跨域)

反向代理与跨域描述 什么是跨域&#xff1f; 跨域&#xff08;Cross-Origin Resource Sharing, CORS&#xff09;是指在浏览器中&#xff0c;当一个网页的脚本试图从一个域名&#xff08;协议、域名、端口&#xff09;请求另一个域名的资源时&#xff0c;浏览器会阻止这种请求…

php常用的注释符号

如果没有安装vscode和小皮&#xff0c;请点击下方链接安装&#xff1a; Vscode、小皮面板安装-CSDN博客 在学习php过程中&#xff0c;肯定少不了注释&#xff0c;也可以理解为备注的信息&#xff0c;来提醒自己这段代码有什么用&#xff0c;是什么意思等&#xff0c;接下来就介…