【大模型LLM面试合集】大语言模型基础_Word2Vec
Word2Vec
文章来源:Word2Vec详解 - 知乎 (zhihu.com)
1.Word2Vec概述
Word2Vec是google在2013年推出的一个NLP工具,它的特点是能够将单词转化为向量来表示,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系。
用词向量来表示词并不是Word2Vec的首创,在很久之前就出现了。最早的词向量采用One-Hot编码,又称为一位有效编码,每个词向量维度大小为整个词汇表的大小,对于每个具体的词汇表中的词,将对应的位置置为1。比如下面的5个词组成的词汇表,
采用One-Hot编码方式来表示词向量非常简单,但缺点也是显而易见的,
- 一方面实际使用的词汇表很大,经常是百万级以上,这么高维的数据处理起来会消耗大量的计算资源与时间。
- 另一方面,One-Hot编码中所有词向量之间彼此正交,没有体现词与词之间的相似关系。
Distributed representation可以解决One-Hot编码存在的问题,它的思路是通过训练,将原来One-Hot编码的每个词都映射到一个较短的词向量上来,而这个较短的词向量的维度可以由自己在训练时根据任务需要来指定。
下图是采用Distributed representation的一个例子,将词汇表里的词用 “Royalty”, “Masculinity”, “Femininity” 和 "Age"4个维度来表示,King这个词对应的词向量可能是(0.99,0.99,0.05,0.7)
。当然在实际情况中,并不能对词向量的每个维度做一个很好的解释。
有了用Distributed Representation表示的较短的词向量,就可以较容易的分析词之间的关系了,比如将词的维度降维到2维,有一个有趣的研究表明,用下图的词向量表示词时,可以发现:
可见只要得到了词汇表里所有词对应的词向量,那么就可以做很多有趣的事情了。不过,怎么训练才能得到合适的词向量呢?针对这个问题,Google的Tomas Mikolov在他的论文中提出了CBOW
和Skip-gram
两种神经网络模型。
2.Word2Vec原理
Word2Vec 的训练模型本质上是只具有一个隐含层的神经元网络(如下图)。
它的输入是采用One-Hot编码的词汇表向量,它的输出也是One-Hot编码的词汇表向量。
使用所有的样本,训练这个神经元网络,等到收敛之后,从输入层到隐含层的那些权重,便是每一个词的采用Distributed Representation的词向量。比如,上图中单词的Word embedding后的向量便是矩阵 W V × N W_{V×N} WV×N 的第i
行的转置。这样就把原本维数为V
的词向量变成了维数为N
的词向量(N远小于V),并且词向量间保留了一定的相关关系。
Google的Mikolov在关于Word2Vec的论文中提出了CBOW
和Skip-gram
两种模型,**CBOW
适合于数据集较小的情况,而Skip-Gram
**在大型语料中表现更好。
- 其中CBOW如下图左部分所示,使用围绕目标单词的其他单词(语境)作为输入,在映射层做加权处理后输出目标单词。
- 与CBOW根据语境预测目标单词不同,Skip-gram根据当前单词预测语境,如下图右部分所示。
假如有一个句子“There is an apple on the table
”作为训练数据,CBOW的输入为(is,an,on,the),输出为apple。而Skip-gram的输入为apple,输出为(is,an,on,the)。
3.CBOW
- 输入层:上下文单词的One-Hot编码词向量,V为词汇表单词个数,C为上下文单词个数。以上文那句话为例,这里C=4,所以模型的输入是(is,an,on,the)4个单词的One-Hot编码词向量。
- 初始化一个权重矩阵 W V × N W_{V×N} WV×N ,然后用所有输入的One-Hot编码词向量左乘该矩阵,得到维数为N的向量 ω 1 , ω 2 , … , ω c ω_1,ω_2,…,ω_c ω1,ω2,…,ωc ,这里的
N
根据任务需要设置。 - 将所得的向量 ω 1 , ω 2 , … , ω c ω_1,ω_2,…,ω_c ω1,ω2,…,ωc 相加求平均作为隐藏层向量
h
。 - 初始化另一个权重矩阵 W N × V ′ W_{N×V}^{'} WN×V′ ,用隐藏层向量 h h h左乘 W N × V ′ W_{N×V}^{'} WN×V′ ,再经激活函数处理得到 V V V维的向量 y y y, y y y的每一个元素代表相对应的每个单词的概率分布。
- y y y中概率最大的元素所指示的单词为预测出的中间词(target word)与true label的One-Hot编码词向量做比较,误差越小越好(根据误差更新两个权重矩阵)
在训练前需要定义好损失函数(一般为交叉熵代价函数),采用梯度下降算法更新 W W W和 W ′ W' W′。
训练完毕后,输入层的每个单词与矩阵W相乘得到的向量的就是Distributed Representation表示的词向量,也叫做word embedding。因为One-Hot编码词向量中只有一个元素为1,其他都为0,所以第i
个词向量乘以矩阵 W W W得到的就是矩阵的第i
行,所以这个矩阵也叫做look up table,有了look up table就可以免去训练过程,直接查表得到单词的词向量了。
4.Skip-gram
在前面的章节中,已经介绍过Skip-Gram是给定input word来预测上下文,其模型结构如上图所示。
它的做法是,将一个词所在的上下文中的词作为输出,而那个词本身作为输入,也就是说,给出一个词,希望预测可能出现的上下文的词。通过在一个大的语料库训练,得到一个从输入层到隐含层的权重模型。“apple”的上下文词是(’there’, ’is’, ’an’, ’on’, ’the’, ’table’ ).那么以apple的One-Hot词向量作为输入,输出则是(’there’, ’is’, ’an’, ’on’, ’the’, ’table’)的One-Hot词向量。训练完成后,就得到了每个词到隐含层的每个维度的权重,就是每个词的向量(和CBOW中一样)。接下来具体介绍如何训练神经网络。
假如有一个句子“There is an apple on the table”。
- 首先选句子中间的一个词作为输入词,例如选取“
apple
”作为input word; - 有了input word以后,再定义一个叫做
skip_window
的参数,它代表着从当前input word的一侧(左边或右边)选取词的数量。如果设置skip_window=2
,那么最终获得窗口中的词(包括input word在内)就是[‘is’,’an’,’apple’,’on’,’the’ ]。skip_window=2
代表着选取左input word左侧2个词和右侧2个词进入窗口,所以整个窗口大小span=2x2=4
。另一个参数叫num_skips
,它代表着从整个窗口中选取多少个不同的词作为output word,当skip_window=2
,num_skips=2
时,将会得到两组 (input word, output word) 形式的训练数据,即 (‘apple’, ‘an’),(‘apple’, ‘one’)。 - 神经网络基于这些训练数据中每对单词出现的次数习得统计结果,并输出一个概率分布,这个概率分布代表着到我们词典中每个词有多大可能性跟input word同时出现。举个例子,如果向神经网络模型中输入一个单词“中国“,那么最终模型的输出概率中,像“英国”, ”俄罗斯“这种相关词的概率将远高于像”苹果“,”蝈蝈“非相关词的概率。因为”英国“,”俄罗斯“在文本中更大可能在”中国“的窗口中出现。我们将通过给神经网络输入文本中成对的单词来训练它完成上面所说的概率计算。
- 通过梯度下降和反向传播更新矩阵 W W W
- W W W中的行向量即为每个单词的Word embedding表示
在前面两节中介绍了CBOW
和Skip-gram
最理想情况下的实现,即训练迭代两个矩阵 W W W和 W ’ W’ W’,之后在输出层采用softmax函数来计算输出各个词的概率。但在实际应用中这种方法的训练开销很大,不具有很强的实用性,为了使得模型便于训练,有学者提出了**Hierarchical Softmax
和Negative Sampling
**两种改进方法。
5.Hierarchical Softmax
Hierarchical Softmax对原模型的改进主要有两点,
- 第一点是从输入层到隐藏层的映射,没有采用原先的与矩阵W相乘然后相加求平均的方法,而是直接对所有输入的词向量求和。假设输入的词向量为(0,1,0,0)和(0,0,0,1),那么隐藏层的向量为(0,1,0,1)。
- 第二点改进是采用哈夫曼树来替换了原先的从隐藏层到输出层的矩阵W’。哈夫曼树的叶节点个数为词汇表的单词个数V,一个叶节点代表一个单词,而从根节点到该叶节点的路径确定了这个单词最终输出的词向量。
具体来说,这棵哈夫曼树除了根结点以外的所有非叶节点中都含有一个由参数θ
确定的sigmoid函数,不同节点中的θ
不一样。训练时隐藏层的向量与这个sigmoid函数进行运算,根据结果进行分类,若分类为负类则沿左子树向下传递,编码为0;若分类为正类则沿右子树向下传递,编码为1。
6.Negative Sampling
尽管哈夫曼树的引入为模型的训练缩短了许多开销,但对于一些不常见、较生僻的词汇,哈夫曼树在计算它们的词向量时仍然需要做大量的运算。
负采样是另一种用来提高Word2Vec效率的方法,它是基于这样的观察:训练一个神经网络意味着使用一个训练样本就要稍微调整一下神经网络中所有的权重,这样才能够确保预测训练样本更加精确,如果能设计一种方法每次只更新一部分权重,那么计算复杂度将大大降低。
将以上观察引入Word2Vec就是:当通过(”fox”, “quick”)词对来训练神经网络时,回想起这个神经网络的“标签”或者是“正确的输出”是一个one-hot向量。也就是说,对于神经网络中对应于”quick”这个单词的神经元对应为1,而其他上千个的输出神经元则对应为0。
使用负采样,通过随机选择一个较少数目(比如说5个)的“负”样本来更新对应的权重。(在这个条件下,“负”单词就是希望神经网络输出为0的神经元对应的单词)。并且仍然为“正”单词更新对应的权重(也就是当前样本下”quick”对应的神经元仍然输出为1)。
相关文章:
![](https://i-blog.csdnimg.cn/direct/273e9ffe60f74512a01c101ef96f4977.png)
【大模型LLM面试合集】大语言模型基础_Word2Vec
Word2Vec 文章来源:Word2Vec详解 - 知乎 (zhihu.com) 1.Word2Vec概述 Word2Vec是google在2013年推出的一个NLP工具,它的特点是能够将单词转化为向量来表示,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系。 …...
![](https://www.ngui.cc/images/no-images.jpg)
图论基础概念(详细讲解)
今天,我们讲解一下图论的概念,首先我们知道图是一个什么东西。 图你可以理解成一个网络系统,两个节点之间可能会有边,边链接两个节点,可能是有向(就比如说a只能往b,或者b只能往c),可能是无向&a…...
![](https://www.ngui.cc/images/no-images.jpg)
未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序报错的解决办法
今天在免费云服务器,三丰云上运行c#或python程序,都提示:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序,PHP程序就直接乱码,odbc_connect(): SQL error: [Microsoft][ODBC ���&…...
![](https://www.ngui.cc/images/no-images.jpg)
《从零开始学习Linux》——开篇
前言 近日笔者新开专栏,《从零开始学习Linux》,Linux水深而且大,学了一圈之后,有懂得有不懂的,一直没有机会整体的全部重新捋一遍,本专栏的目的是,带着大家包括我自己重新学习Linux一遍这些知识…...
![](https://i-blog.csdnimg.cn/direct/8b1c3154360f4a28a50fd74d571a1de4.jpeg)
3D工艺大师快速生成装配动画,驱动汽车工业装配流程革新
在现代制造业的一般生产流程中,车间装配环节是产品由蓝图迈向市场前至关重要的一道工序。随着产品结构的日益复杂化和个性化需求的不断增长,车间装配工作面临着前所未有的挑战。高精密度的装配要求、错综复杂的组件关系以及频繁变更的生产计划࿰…...
![](https://i-blog.csdnimg.cn/direct/ab5716b1bc1a4438892835dbb0179ef8.png)
gateway
gateway核心概念 1. 路由(route) 路由是网关中最基础的部分,路由信息包括一个ID、一个目的URI、一组断言工厂、一组Filter组成。如果断言为真,则说明请求的URL 和 配置的路由匹配。 2. 断言(predicates) 断言函数允许开发者去定义匹配Htt…...
![](https://i-blog.csdnimg.cn/direct/a4519ccceca348be8b79cf2720397e3d.jpeg)
第一个ffmpeg程序
在进行使用ffmpeg进行编写程序时,首先要记得进行注册设备(avdevice_register_all ),程序运行时,只需要注册一次就可以 avdevice_register_all 是 FFmpeg 多媒体处理库中的一个函数,其作用是注册所有可用的音…...
![](https://i-blog.csdnimg.cn/direct/9f1ff63356294417979b24a1a9ac95f0.png)
论文翻译:Large Language Models for Education: A Survey and Outlook
https://arxiv.org/abs/2403.18105 目录 教育领域的大型语言模型:一项调查和展望摘要1. 引言2. 教育应用中的LLM2.1 概述2.2 学习辅助2.2.1 问题解决(QS) 2.2.2 错误纠正(EC)2.2.3 困惑助手(CH)…...
![](https://www.ngui.cc/images/no-images.jpg)
python为什么慢?(自用)
《Cython系列》1. Cython 是什么?为什么要有 Cython?为什么我们要用 Cython? - 古明地盆 - 博客园 (cnblogs.com) 古明地盆的主页 - 博客园 (cnblogs.com) 我原本认为,python慢的原因是“逐行解释程序并执行”,那么我…...
![](https://i-blog.csdnimg.cn/direct/7fe897bf5b264b4a8fbd2ae2ae0ff40c.png)
压缩感知3——重构算法正交匹配追踪算法
算法流程 问题的实质是:AX Y 求解(A是M维,Y是N维且N>>M并且稀疏度K<M)明显X有无穷多解,重构过程是M次采样得到的采样值升维的过程。OMP算法的具体步骤:(1)用X表示信号,初始化残差e0 …...
![](https://i-blog.csdnimg.cn/direct/3c91e2674cf84380a554887c92d0712f.png)
“好物”推荐+Xshell连接实例+使用Conda创建独立的Python环境
目录 主题:好易智算平台推荐RTX 4090DGPU实例租用演示安装配置torch1.9.1cuda11.1.1环境引言:算力的新时代平台介绍:技术与信任的结晶使用案例:实际使用展示创建实例开始使用连接实例(下文演示使用Xshell连接ÿ…...
![](https://i-blog.csdnimg.cn/direct/06080e5a3ff146478810a2c93751064a.png)
浪潮天启防火墙TQ2000远程配置方法SSL-V偏、L2xx 配置方法
前言 本次设置只针对配置V偏,其他防火墙配置不涉及。建议把防火墙内外网都调通后再进行V偏配置。 其他配置可参考:浪潮天启防火墙配置手册 配置SSLVxx 在外网端口开启SSLVxx信息 开启SSLVxx功能 1、勾选 “启用SSL-Vxx” 2、设置登录端口号࿰…...
![](https://www.ngui.cc/images/no-images.jpg)
java八股文面试题
Java八股文面试题通常涵盖了Java语言的基础知识、高级特性、框架应用、数据库操作等多个方面。以下是一些常见的Java面试题及其详细回答,按照不同的主题进行分类: 一、Java基础 面向对象的特征有哪些? 抽象:忽略与当前目标无关的…...
![](https://img-blog.csdnimg.cn/ae666600e3f8492191b4e355bc04b05e.png)
【服务器】在Linux查看运行的Python程序,并找到特定的Python程序
在Linux查看运行的Python程序并找到特定的Python程序 写在最前面1. 使用ps命令查看所有Python进程查看详细信息 2. 使用pgrep命令查找Python进程ID 3. 使用top或htop命令使用top命令使用htop命令 4. 使用lsof命令查找Python进程打开的文件 5. 使用nvidia-smi命令查看GPU使用情况…...
![](https://img-blog.csdnimg.cn/img_convert/d75558bf641b5edd0357a2d0470659a6.png)
安全防御---防火墙实验1
安全防御—防火墙实验1 一、实验拓扑与要求 要求: 1、DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问,生产区的设备全天可以访问 2、生产区不允许访问互联网,办公区和游客区允许访问互联网 …...
![](https://www.ngui.cc/images/no-images.jpg)
SpringBoot配置Swagger开启页面访问限制
在Spring Boot项目中配置Swagger时,开启页面访问限制通常意味着你希望控制哪些用户或角色可以访问Swagger UI文档页面。由于Swagger UI是一个静态资源,它本身并不直接支持基于角色的访问控制(RBAC)。但是,你可以通过Sp…...
![](https://www.ngui.cc/images/no-images.jpg)
前端代码基本逻辑-vue3
前端vue建立过程 安装nodejs 官网下载安装,并且记住安装路径,记得配置系统变量Path 安装VUE/CLI npm install -g vue/cli --全局安装vue 使用VUE/CLI生成代码框架 vue create your-project-name --我的your-project-name为web 运行项目 cd your-…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
怎么用PPT录制微课?详细步骤解析!
随着信息技术的不断发展,微课作为一种新型的教学形式,因其短小精悍、针对性强等特点,在教育领域得到了广泛的应用。而PPT作为一款常用的演示工具,不仅可以用来制作课件,还可以利用其内置的录屏功能或结合专业的录屏软件…...
![](https://www.ngui.cc/images/no-images.jpg)
Git使用方法
Git是一种分布式版本控制系统,它可以记录和管理软件开发过程中的变更。 Git的基本概念包括以下几个部分: 仓库(Repository):Git用仓库来存储项目的代码和历史记录。一个仓库可以包含多个分支。 分支(Bran…...
![](https://www.ngui.cc/images/no-images.jpg)
HTTP的请求报文和响应报文是怎样的,有哪些常见字段?
http报文分为请求报文和响应报文 请求报文包含:请求行、请求头、空行、、请求体 请求行包含: 方法:即要执行的操作,如get,post、put、delet 资源路径:请求的资源的URL HTTP版本:使用的http协议…...
![](https://i-blog.csdnimg.cn/direct/0c396ca73fbd4fa7ae709ebd263843c5.png)
自注意力简介
在注意力机制中,每个查询都会关注所有的键值对并生成一个注意力输出。如果查询q,键k和值v都来自于同一组输入,那么这个注意力就被称为是自注意力(self-attention)。自注意力这部分理论,我觉得台大李宏毅老师…...
![](https://www.ngui.cc/images/no-images.jpg)
【GameFramework框架】7-2、GameFramework框架是否“过度设计”?
推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群:398291828大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录: https://blog.csdn.net/q764424567/article/details/1…...
![](https://img-blog.csdnimg.cn/direct/e349662f1b4446e0b3d4c9c92f198217.png)
RISC-V异常处理流程概述(2):异常处理机制
RISC-V异常处理流程概述(2):异常处理机制 一、异常处理流程和异常委托1.1 异常处理流程1.2 异常委托二、RISC-V异常处理中软件相关内容2.1 异常处理准备工作2.2 异常处理函数2.3 Opensbi系统调用的注册一、异常处理流程和异常委托 1.1 异常处理流程 发生异常时,首先需要执…...
![](https://www.ngui.cc/images/no-images.jpg)
Unity3D中如何降低游戏的Drawcall详解
在Unity3D游戏开发中,Drawcall是一个至关重要的性能指标,它指的是CPU通知GPU绘制一个物体的命令次数。过多的Drawcall会导致游戏性能下降,因此优化Drawcall的数量是提高游戏性能的关键。本文将详细介绍Unity3D中降低Drawcall的几种主要方法&a…...
![](https://i-blog.csdnimg.cn/direct/01081024fcba4a0a81ed8135b33f2abf.png)
小程序-设置环境变量
在实际开发中,不同的开发环境,调用的接口地址是不一样的 例如:开发环境需要调用开发版的接口地址,生产环境需要正式版的接口地址 这时候,我们就可以使用小程序提供了 wx.getAccountInfoSync() 接口,用来获取…...
![](https://i-blog.csdnimg.cn/direct/11158fac96564b9ab318056374b3ff09.png#pic_center)
【RabbitMQ】一文详解消息可靠性
目录: 1.前言 2.生产者 3.数据持久化 4.消费者 5.死信队列 1.前言 RabbitMQ 是一款高性能、高可靠性的消息中间件,广泛应用于分布式系统中。它允许系统中的各个模块进行异步通信,提供了高度的灵活性和可伸缩性。然而,这种通…...
![](https://www.ngui.cc/images/no-images.jpg)
RuntimeError: Unexpected error from cudaGetDeviceCount
RuntimeError: Unexpected error from cudaGetDeviceCount 0. 引言1. 临时解决方法 0. 引言 使用 vllm-0.4.2 部署时,多卡正常运行。升级到 vllm-0.5.1 时,报错如下: (VllmWorkerProcess pid30692) WARNING 07-12 08:16:22 utils.py:562] U…...
![](https://www.ngui.cc/images/no-images.jpg)
uboot学习:(一)基础认知
目录 uboot是一个裸机程序(bootloader) 作用 要运行linux系统时,如何从外置的flash拷贝到DDR中,才能启动 uboot使用步骤 步骤1中的命令例子 注意 uboot源码获取方法 uboot是一个裸机程序(bootloader)…...
![](https://www.ngui.cc/images/no-images.jpg)
每天一个数据分析题(四百二十六)- 总体方差
为了比较两个总体方差,我们通常检验两个总体的() A. 方差差 B. 方差比 C. 方差乘积 D. 方差和 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Python,SQL,统计学&a…...
![](https://i-blog.csdnimg.cn/direct/0b4ee8b4271747679a4cf4268bd422eb.png#pic_center)
【C++】设计一套基于C++与C#的视频播放软件
在开发一款集视频播放与丰富交互功能于一体的软件时,结合C的高性能与C#在界面开发上的便捷性,是一个高效且实用的选择。以下,我们将概述这样一个系统的架构设计、关键技术点以及各功能模块的详细实现思路。 一、系统架构设计 1. 架构概览 …...
![](/images/no-images.jpg)
档案馆网站建设/什么时候网络推广
https://blog.csdn.net/my_heart_/article/details/52601924 端口号的范围是从1~65535 端口的概念: 在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem、…...
![](/images/no-images.jpg)
互联网 网站设计/个人网站源码免费下载
题目描述 有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。输入 N输出 数列前N项和样例输入 10 样例输出 16.48 1 #include "stdio.h"2 3 int main(int argc, char const *argv[])4 {5 6 int N, m…...
![](/images/no-images.jpg)
wordpress博客站点统计代码/公众号开发网站公司
常见的 10个 Redis可视化工具,最全横向评测! 转载:https://mp.weixin.qq.com/s/_CsaEsQ-TnzAju3zwspf4g 转载理由:很实用...
![](/images/no-images.jpg)
如何做英文网站的外链/seo描述快速排名
常用的shell命令包括:ls(列出文件)、cd(切换目录)、mkdir(创建目录)、mv(移动或重命名文件)、rm(删除文件)、cat(显示文件内容)、echo(显示文本)、man(查看命令手册)等。...
wordpress上卖什么用/网站seo优化案例
当前,我国融资租赁业正处于转型发展的关键时期。在推动经济高质量发展的浪潮之下,除了要充分发挥行业的跨界属性,延伸业务链。同时还要借助大数据等新兴技术,提升业务创新能力、风险防控能力。 关键词:融资租赁 机遇 …...
![](https://img-blog.csdnimg.cn/20210318152526198.png?)
分销pc网站/长沙seo管理
自动化始终只是辅助测试工作的一个手段,对于测试人员而言,测试基础和测试用例的设计才是核心。如果测试用例的覆盖率或者质量不高,那将这部分用例实现为自动化用例的意义也就不大了。 那么,接口测试用例应该怎么编写呢?…...