前言

当今的大语言模型非常智能,但是你有没有想过这些事情:

  • 机器是怎么理解“国王”和“王后”之间的关系?

  • “猫”和“狗”是怎么在 AI 中“相似以及区分”的?

  • 文本又是怎么变成模型能读懂的数字?

这一切,都要和一个强大的工具有关系,词嵌入:Word2Vec!

先看一张图片,如下是一个tensflow实现的word2vec的密密麻麻的词图,是不是感觉很壮观,那么AI是如何做到的呢 ?
在这里插入图片描述

本篇就要说下, Word2Vec是如何让 AI “读懂”文字的,先看定义,如下

定义

Word2Vec 是 Google 在 2013 年提出的一个自然语言处理模型,它能把文字转换成向量(数字),而且这些向量还包含了语义信息!

用一句话总结它的核心价值:Word2Vec 把人类理解的词变成“计算机能理解的向量”,并且保留词与词之间的关系!

怎么这么神奇,这就需要去了解下输出增强

输出增强

在word2vec出来之前,传统做法是使用「独热编码 One-Hot Encoding」来表示单词,比如:

单词One-hot 向量(长度为5)
[1, 0, 0, 0, 0]
[0, 1, 0, 0, 0]
老鼠[0, 0, 1, 0, 0]

从表中看到,存在两个主要的问题:

  • 向量非常稀疏,占用内存

  • 单词之间没有任何语义关系

比如,“猫”和“狗”在独热向量中完全没有联系,而 Word2Vec 能让「相似意思」的词靠得更近!那么Word2Vec 输出的是什么样的向量?和独热向量比有啥优势?我们看下Word2Vec的输出向量

输出的向量

Word2Vec 会给每个词一个低维度的密集向量,比如:

单词向量(假设为3维)
[0.21, 0.54, -0.31]
[0.19, 0.50, -0.29]
老鼠[-0.42, 0.18, 0.33]

更神奇的是,它还能保留词之间的关系:具备了一种“类人思维”的意思。通过各个维度的数据相似度,来区分和相似猫狗老鼠,那么各个维度的数据又是怎么训练出来的呢?

训练方式

Word2Vec 有两种主要的训练方式:

  • CBOW训练
    CBOW(Continuous Bag of Words),是根据“上下文词”,预测“中心词”。

举例:

给定上下文:我 喜欢 __ 晚饭
模型要学会填空:“吃”

结构图:

上下文词 → 中间隐藏层 → 预测中心词

适合小数据集

  • Skip-Gram训练

根据“中心词”,预测“上下文词”。

举例:

中心词:“吃”,模型要学会预测“我”“喜欢”“晚饭”

结构图:

中心词 → 中间隐藏层 → 预测多个上下文词

适合大数据集

实战示例

我们用 Gensim 来实现 一个Word2Vec的示例如下

from gensim.models import Word2Vecsentences = [["我", "喜欢", "吃", "晚饭"],["猫", "喜欢", "鱼"],["狗", "也", "喜欢", "鱼"]]model = Word2Vec(sentences, vector_size=100, window=2, min_count=1, sg=1)  # sg=1表示用Skip-Gramprint(model.wv["猫"])  # 查看“猫”的词向量
print(model.wv.most_similar("猫"))  # 查找最相近的词

应用场景

场景示例
语义相似性推荐系统中:喜欢“披萨”的人可能也喜欢“汉堡”
文本聚类新闻分类、问答系统
情感分析正负面情绪词向量聚类
机器翻译词义对齐、多语言向量空间

局限性分析

虽然 Word2Vec 非常强大,但也有一些局限:

  • 静态词向量:一个词在不同语境下表示一样,比如“银行”在“金融银行”和“河岸”中的意思不同,但 Word2Vec 分不清

  • 对上下文敏感度弱:只靠邻近的词来训练

  • 冷启动问题:对新词不友好

但好在,这些问题在后来的 BERTELMo 等上下文嵌入模型中得到了改善。

总结

特点Word2Vec
优点简洁、高效、能捕捉词的语义关系
训练方式CBOW / Skip-Gram
输出结果低维度、密集的词向量
主要应用NLP 中的基础词嵌入层
局限不考虑上下文、不支持多义词

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rsync+sersync实现数据实时同步(小白的“升级打怪”成长之路)

目录 一、rsync部署 push推数据 1、编写rsync配置文件 2、备份测试 3、检验结果 二、rsyncsersync 实现数据实时同步 1、安装sersync服务 2、检验结果 pull拉取数据 1、编写rsync配置文件 2、检验结果 三、脚本编写 1、客户端脚本编写 2、服务器脚本编写 一、rsy…

用 python 开发一个可调用工具的 AI Agent,实现电脑配置专业评价

在人工智能时代,AI Agent凭借其强大的任务处理能力,逐渐成为开发人员手中的得力工具。今天,我们就来一起动手,用Python打造一个能够调用工具的AI Agent,实现根据电脑信息对电脑配置进行专业评价的功能。 一、项目创建…

WSL 安装使用和常用命令

参考官方使用说明&#xff1a; https://learn.microsoft.com/zh-cn/windows/wsl/ 安装wsl: wsl --install --no-distribution --no-distribution&#xff1a;安装 WSL 时不要安装分发版 更新 wsl: wsl --update 设置wsl 默认版本&#xff1a; wsl --set-default-version <…

720全景VR拍摄制作实战教程

720全景VR拍摄制作实战教程 720全景VR拍摄制作是近年来兴起的一种沉浸式影像制作技术。它通过多角度拍摄&#xff0c;并将画面拼接成一个全景视角&#xff0c;使观众获得身临其境的观看体验。本教程将带你从准备阶段到拍摄阶段&#xff0c;再到后期处理阶段&#xff0c;一步步…

什么真正的云原生开发?如何区别本地开发后部署到云端?

以下是关于云原生开发的深度解析&#xff0c;以及与本地开发后迁移上云的本质区别&#xff1a; 一、真正的云原生开发&#xff1a;从理念到实践的全面革新 1. 定义与核心思想 云原生开发是一种以云计算能力为核心的架构设计和开发方法论&#xff0c;其本质是让应用从诞生之初…

从代码学习深度学习 - 词的相似性和类比任务 PyTorch版

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言加载预训练词向量TokenEmbedding 类详解预训练词向量简介 (GloVe)具体含义总结建议应用预训练词向量词相似度knn 函数get_similar_tokens 函数相似词查找示例词类比get_analogy 函数词类比任务…

ubuntu 22.04 安装部署elk(elasticsearch/logstash/kibana) 7.10.0详细教程

安装部署elk7.10.0详细教程 一、安装jdk 11环境二、安装elasticsearch 7.10.0三、安装kibana 7.10.0四、安装logstash 7.10.0五、安装ik7.10.0分词六、开启安全功能1. 开启用户名密码登录2. 开启es安全加密通信3. 开启Kibana安全功能 七、注意事项和常见错误八、其它操作及命令…

技术文章: 基板的吸水率

PCB基板或覆铜板的吸水率是一个重要的性能指标&#xff0c;它衡量了覆铜板在特定条件下&#xff08;通常是浸水后&#xff09;吸收水分的能力&#xff0c;通常用指定条件下吸水后与吸水前相比&#xff0c;质量增加的百分比来表示。当材料暴露扎起在潮湿空气中或浸没在水中时其抵…

九日集训第三天

目录 搜索旋转排序数组 搜索旋转排序数组|| 寻找旋转排序中的数组最小值 爬楼梯 斐波那契数 第N个泰波那契数 差的绝对值为K的数对数目 猜数字 拿硬币 山峰数组的峰顶索引 搜索旋转排序数组 class Solution { public:int search(vector<int>& nums, int t…

CppCon 2017 学习:folly::Function A Non-copyable Alternative to std::function

你说的内容是关于 C 中 可调用类型&#xff08;Callable Types&#xff09; 的基础知识&#xff0c;我帮你理清并补充理解。 Callable Types&#xff08;可调用类型&#xff09;简介 C 中任何可以用 () 括号操作符“调用”的对象&#xff0c;都叫做 可调用类型。典型包括&…

PyTorch 中Tensor常用数据结构(int, list, numpy array等)互相转换和实战示例

在 PyTorch 中&#xff0c;tensor 是一种强大且灵活的数据结构&#xff0c;可以与多种 Python 常用数据结构&#xff08;如 int, list, numpy array 等&#xff09;互相转换。下面是详细解释和代码示例&#xff1a; 1. Tensor ↔ int / float 转为 int / float&#xff08;前提…

计算机网络与数据通信基础

第一章 计算机网络概述 1. 计算机网络的核心概念 1.1 定义 将 地理分散 的、具有 独立处理能力 的计算机系统&#xff08;主机/Host&#xff09;&#xff0c;通过 传输介质 与 网络设备 互连&#xff0c;在 网络协议 和 软件 支持下实现 资源共享 与 数据通信 的系统。 关键术…

【统计术语】

文章目录 基础概念术语基期与现期增长量与增长率环比与同比 比重术语平均数术语特殊增长术语其他常用术语 基础概念术语 基期与现期 基期&#xff1a;作为基础参照的时期&#xff0c;一般指过去的时间 现期&#xff1a;与基期对比的时期&#xff0c;一般指现在的时间 示例&am…

XXE(XML外部实体注入)详解

目录 一、XXE漏洞简介 二、XML详解 (一) XML文档结构 1. 文档声明 2. XML文档类型定义&#xff08;DTD&#xff09; 3. XML文档元素 4. XML文档示例 三、XXE漏洞类型 四、XXE漏洞挖掘技巧 五、XXE漏洞危害 (一) 文件读取 (二) 内网探测 1. 端口探测 2. 主机存活探…

深入解析JVM字节码执行引擎

JVM 字节码执行引擎。它是 JVM 核心组件之一&#xff0c;负责实际执行加载到内存中的字节码指令。你可以将它想象成 JVM 的“CPU”。 核心职责&#xff1a; 加载待执行的字节码&#xff1a; 从方法区&#xff08;元空间&#xff09;获取已加载类的方法字节码。创建和管理栈帧…

华为OD机试-MELON的难题-DFS(JAVA 2025A卷)

题意是从N快雨花石中找出最少拿出雨花石的块数&#xff0c;使得雨花石可以均分&#xff0c;直接使用dfs解决此类组合问题 package com.example.demo.bean;import java.util.Arrays; import java.util.LinkedList; import java.util.Scanner;public class YuHuaStone {public s…

鸿蒙数据库操作

一、使用关系型数据库实现数据持久化&#xff0c;需要获取一个RdbStore&#xff0c;其中包括建库、建表、升降级等操作。 const STORE_CONFIG: relationalStore.StoreConfig {name: AnyOffice.db, // 数据库文件名securityLevel: relationalStore.SecurityLevel.S1, // 数据库…

基于ARM SoC的半导体测试

ARM SoC&#xff08;System on Chip&#xff09; 是一种集成了多个关键计算组件的单片系统芯片&#xff0c;广泛应用于移动设备、嵌入式系统、物联网&#xff08;IoT&#xff09;和半导体测试设备等领域。它的核心设计理念是“高度集成”&#xff0c;将处理器、内存、外设接口等…

JavaEE->多线程2

目录 一、线程安全&#xff08;重点&#xff09; 1.线程安全演示 2.线程不安全的原因 1.线程是抢占式执行的&#xff08;执行顺序是随机的&#xff09; 2.多个线程同时修改了同一个变量 3.原子性 4.内存可见性 5.指令重排序&#xff08;有序性&#xff09; 二、解决线…

Flutter TCP通信

启动TCP服务 Future<void> startServer() async {final server await ServerSocket.bind(InternetAddress.anyIPv4, 12345);print(Server listening on ${server.address}:${server.port});server.listen((Socket socket) {print(Client connected: ${socket.remoteAddr…