深入理解Transformer的笔记记录(非小白贴)NNLM → Word2Vec

news2024/10/9 11:55:38

文章的整体介绍顺序为:

NNLM → Word2Vec → Seq2Seq → Seq2Seq with Attention → Transformer → Elmo → GPT → BERT

自然语言处理相关任务中要将自然语言交给机器学习中的算法来处理,通常需要将语言数学化,因为计算机机器只认数学符号。向量是人把自然界的东西抽象出来交给机器处理的数学性质的东西,基本上可以说向量是人对机器输入的主要方式了。词向量是对词语的向量表示,这些向量能捕获词语的语义信息,如相似意义的单词具有类似的向量。

假定我们有一系列样本(x,y),其中的 x 是词语,y 是它们的词性,我们要构建f(x) to y的映射:

    首先,这个数学模型 f(比如神经网络、SVM)只接受数值型输入;
    而 NLP 里的词语是人类语言的抽象总结,是符号形式的(比如中文、英文、拉丁文等等);
    如此一来,便需要把NLP里的词语转换成数值形式,或者嵌入到一个数学空间里;
    进一步,可以把文本分散嵌入到另一个离散空间,称作分布式表示,又称为词嵌入(word embedding)或词向量
    在各种词向量中,有一个简单的词向量是one-hot encoder。所谓one-hot编码,本质上是用一个只含一个 1、其他都是 0 的向量来唯一表示词语,不是所有的编码都是01编码,且one-hot编码无法反应词与词之间的语义相似度。

如单词“king”的词嵌入(在维基百科上训练的GloVe向量):

[ 0.50451 , 0.68607 , -0.59517 , -0.022801, 0.60046 , -0.13498 , -0.08813 , 0.47377 , -0.61798 , -0.31012 , -0.076666, 1.493 , -0.034189, -0.98173 , 0.68229 , 0.81722 , -0.51874 , -0.31503 , -0.55809 , 0.66421 , 0.1961 , -0.13495 , -0.11476 , -0.30344 , 0.41177 , -2.223 , -1.0756 , -1.0783 , -0.34354 , 0.33505 , 1.9927 , -0.04234 , -0.64319 , 0.71125 , 0.49159 , 0.16754 , 0.34344 , -0.25663 , -0.8523 , 0.1661 , 0.40102 , 1.1685 , -1.0137 , -0.21585 , -0.15155 , 0.78321 , -0.91241 , -1.6106 , -0.64426 , -0.51042 ]

1、NNLM

神经网络语言模型(Neural Network Language Model,简称NNLM)的核心是一个多层感知机(Multi-Layer Perceptron,简称MLP),它将词向量序列映射到一个固定长度的向量表示,然后将这个向量输入到一个softmax层中,计算出下一个词的概率分布。

第一步就是Look up Embedding,首先构建词映射矩阵,即一个映射单词表所有单词的矩阵,也称词嵌入矩阵,在这个映射矩阵(词嵌入矩阵)中查询输入的单词(即Look up embeddings)

          构建映射矩阵(词嵌入矩阵): 先是获取大量文本数据,然后建立一个可以沿文本滑动的窗(例如一个窗里包含三个单词),利用这样的滑动窗就能为训练模型生成大量样本数据,当这个窗口沿着文本滑动时,就能生成一套用于模型训练的数据集。(类似一个统计问题,根据前两个单词预测下一个单词出现的概率)

第二步则是计算出预测值
第三步则输出结果

2 、Word2Vec详解

 Word2Vec模型的核心思想是通过词语的上下文信息来学习词语的向量表示。具体来说,Word2Vec模型通过训练一个神经网络模型,使得给定一个词语的上下文时,能够预测该词语本身(CBOW模型),或者给定一个词语时,能够预测其上下文(Skip-gram模型)。Word2Vec的训练模型本质上是只具有一个隐含层的神经元网络。它的输入是采用One-Hot编码的词汇表向量,它的输出也是One-Hot编码的词汇表向量。使用所有的样本,训练这个神经元网络,等到收敛之后,从输入层到隐含层的那些权重,便是每一个词的采用Distributed Representation的词向量。

Word2Vec包括两种模型:主要包括CBOW和Skip-gram模型。 CBOW模型是根据上下文去预测目标词来训练得到词向量,而Skip-gram模型则是根据目标词去预测上下文来训练得到词向量。CBOW适合于数据集较小的情况,而Skip-gram在大型语料中表现更好。 如下图所示:

 

(1)输入层:输入的是单词的one-hot representation(考虑一个词表V,里面的每一个词 i 都有一个编号i∈{1,...,|V|},那么词的one-hot表示就是一个维度为|V|的向量,其中第i个元素值非零,其余元素全为0);

 

 

词向量是用来将语言中的词进行数学化的一种方式,词向量就是把一个词表示成一个向量。 我们都知道词在送到神经网络训练之前需要将其编码成数值变量,常见的编码方式有两种:One-Hot Representation 和 Distributed Representation。

One-Hot Representation 容易受维数灾难的困扰,词汇鸿沟,不能很好地刻画词与词之间的相似性;强稀疏性; 向量中只有一个非零分量,非常集中

Distributed Representation 向量中有大量非零分量,相对分散,把词的信息分布到各个分量中去了。

(2)隐藏层:输入层到隐藏层之间有一个权重矩阵W,隐藏层得到的值是由输入X乘上权重矩阵得到的(one-hot编码向量乘上一个矩阵,就相当于选择了权重矩阵的某一行,如图:假设输入的向量X是[0,1,0,0,0,0],W的转置乘上X就相当于从矩阵中选择第2行[0.1, 0.2, 0.3]作为隐藏层的值);隐藏层h的值为多个词乘上权重矩阵之后加和求平均值。

 

 

 

 用一个9×3的矩阵来表示,初始化为

从输入层到隐藏层,进行矩阵乘法

隐藏层到输出层也有一个权重矩阵W',因此,输出层向量y的每一个值,其实就是隐藏层的向量点乘权重向量W'的每一列,比如输出层的第二个数,就是向量[0.1, 0.2, 0.3]和列向量点乘之后的结果

从隐藏层到输出层,我们可以用一个3×9的矩阵来表示,初始化为

从隐藏层到输出层,直接继续进行矩阵的乘法

(3)输出层:最终的输出需要经过softmax函数,将输出向量中的每一个元素归一化到0-1之间的概率,概率最大的,就是预测的词。 而我们的训练样本是希望其对应的概率要尽量的高,也就是对应的概率要为1,其它的概率为0,这样模型的输出和真实的样本存在了偏差,那们我们就可以直接利用这个误差来进行反向传递,调整我们模型的参数,从而达到了学习调优的目的。

Skip-gram model是通过输入一个词去预测多个词的概率。输入层到隐藏层的原理和simple CBOW一样,不同的是隐藏层到输出层,损失函数变成了C个词损失函数的总和,权重矩阵W'还是共享的。

Word2vec训练流程:不断缩小error

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

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

相关文章

SDUT数据结构与算法第二次机测

目录 7-1 括号匹配 7-2 后缀式求值 7-3 表达式转换 7-4 【模板】KMP字符串匹配 比较详细注释和图解请看KMP——字符串匹配-CSDN博客,(点击链接可跳转)一看就会 7-5 约瑟夫环(押题,重要) 7-6 单调栈&a…

加密软件的桌面管理系统有什么?

1、IT资源管控:协助企事业单位管理者对内部计算机、宽带、打印、外围设备等IT资源进行管控,提高IT资源利用率。 2、规范内网行为:规范员工的计算机使用行为、网络使用行为、IT资产使用行为、设备使用行为 等,令员工活动在合规范围…

YOLOv11改进,YOLOv11改进损失函数采用Powerful-IoU:自适应惩罚因子和基于锚框质量的梯度调节函数(2024年最新IOU)

摘要 边界框回归(BBR)是目标检测中的核心任务之一,BBR损失函数显著影响其性能。然而,观察到现有基于IoU的损失函数存在不合理的惩罚因子,导致回归过程中锚框扩展,并显著减缓收敛速度。为了解决这个问题,深入分析了锚框扩展的原因。针对这个问题,提出了一种新的Powerfu…

PDF无法导出中文

font/SIMSUN.TTC with Identity-H is not recognized. 查看BaseFont源码发现".ttc," 改为"SIMSUN.TTC,a"提示数字转换异常 改为"SIMSUN.TTC,11"提示数字索引必须介于0和1之间 改为0或1结果正常 BaseFont baseFont BaseFont.createFont("/U…

办公AI推荐:阅读总结视频翻译文档文章等—包阅AI

目录 官网首页 网页阅读 思维导图 图书对话功能 1. 关键词 2. 总结 3. 主要内容 随心笔记 视频阅读 Mysql数据库案例 思维导图 内容评价 总结 想象一下,当您能在几分钟内掌握一小时视频的精华,或瞬间生成一本书的思维导图,您的学…

【2024最新】基于springboot+vue的旧物置换网站lw+ppt

作者:计算机搬砖家 开发技术:SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:Java精选实战项…

富士胶片人像汽车照片Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色介绍 富士胶片人像汽车照片的调色旨在营造出独特的复古、文艺氛围。通过 Lightroom 的调色工具,将人像与汽车完美融合在具有富士胶片特色的画面中,展现出别样的美感。 预设信息 调色风格:富士胶片风格预设适合类型:人像&am…

读懂NCHW和NHWC

vscode ssh连接防火墙关闭 sudo ufw allow ssh打开即可 TensorRT推理参考: 一篇就够:高性能推理引擎理论与实践 (TensorRT)-阿里云开发者社区 下面很好的描述了各种不同的格式。 参考文档 Tensor 内存布局 — MegEngine 1.13.2 文档 对于”NCHW” 而言&#xff0c…

Spring与Spring Boot之间的区别

Spring和Spring Boot是用于开发Java企业应用的两个主流框架。虽然它们都属于Spring生态系统的一部分,但是它们各自有不同的使用场景和特点。 在本文中,我们将探讨Spring与Spring Boot之间的差异,针对他们之间特性的差异,做一个详…

网安加·百家讲坛 | 潘继平:AI赋能DevOps平台:全面提升代码安全性

作者简介:潘继平,中国软协项目管理专委会专家,深圳市软件行业协会特聘专家。华为土耳其研究所外聘高级项目顾问,负责华为云应用生态圈产品线研发管理。曾为华为全球技术服务中心、华为制造IT以及华为流程IT解决方案提供等多个部门…

图书商城|基于springBoot的图书商城管理系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书(可指定任意题目) 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数…

pgadmin4敏感信息泄露 CVE-2024-9014

0x01 产品描述: pgAdmin是全球最先进的开源数据库Postgres的领先开源管理工具。 pgAdmin 4旨在满足新手和经验丰富的Postgres用户的需求,提供了强大的图形界面,可简化数据库对象的创建,维护和使用。其可以在Linux,Unix…

Python绘制--绘制心形曲线

今天,我们将通过Python代码来绘制一个心形曲线,这是一个经典的数学表达。 一、心形曲线的数学原理 心形曲线,也被称为心脏曲线,是一个代数曲线,可以通过参数方程定义。其数学表达式如下: x16sin⁡3(t)x16…

【汇编语言】寄存器(CPU工作原理)(六)—— 修改CS,IP的指令以及代码段

文章目录 前言1. 修改CS、IP的指令2. 问题分析:CPU运行的流程3. 代码段小结结语 前言 📌 汇编语言是很多相关课程(如数据结构、操作系统、微机原理)的重要基础。但仅仅从课程的角度出发就太片面了,其实学习汇编语言可以深入理解计…

flatten-maven-plugin统一版本打包失败问题记录

问题: dependencies.dependency.version for xxx:jar is missing. xxx:${revision} 子模块打包不会自动打包依赖的其他包 排查过程: 1:查看flatten-maven-plugin版本是否有冲突,与maven.compiler版本是否有冲突 目前版本&…

成都睿明智科技有限公司怎么样靠谱吗?

随着短视频与直播的深度融合,抖音电商凭借其强大的流量入口、精准的算法推荐以及便捷的购物体验,迅速崛起。对于传统企业和新兴品牌而言,这无疑是一个不可多得的机遇。然而,如何在这片红海中脱颖而出,就需要借助专业的…

u盘部分文件无故消失是怎么回事?5个妙招让其重新出现!

在使用U盘的过程中,我们也会遇上U盘部分文件无故消失的烦恼。防不胜防的数据丢失让我们的生活节奏被扰乱,不免得会心生烦躁与焦虑。但现在已经有很多方法去应对U盘的文件丢失,能够帮助我们找回丢失的重要资料!U盘文件无故消失了怎…

Spring Boot 之 Lombok 使用详解

Lombok 是一个 Java 库,它通过注解自动生成样板代码,例如 getter、setter、构造函数、equals()、hashCode() 等,从而减少代码冗余,提高开发效率。在 Spring Boot 项目中使用 Lombok 可以使代码更加简洁易读。 本文将详细介绍 Lom…

YOLO11改进|注意力机制篇|引入线性注意力机制FLAttention

目录 一、【FLA】注意力机制1.1【FLA】注意力介绍1.2【FLA】核心代码 二、添加【FLA】注意力机制2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【FLA】注意力机制 1.1【FLA】注意力介绍 下图是【FLA】的结构图,让我们简单分…

Java并发:同步工具类(信号量,等待完成,阶段同步,Exchanger,Phaser)

1,信号量(Stemaphore) Semaphore也就是信号量,提供了资源数量的并发访问控制,其使用代码很简单,如下所示: // 一开始有5份共享资源。第二个参数表示是否是公平 // 公平锁排队,非公…