深入理解Transformer的笔记记录(精简版本)NNLM → Word2Vec

文章的整体介绍顺序为:

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.mzph.cn/news/881804.shtml

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

相关文章

Node.js管理工具NVM

nvm(Node Version Manager)是一个用于管理多个 Node.js 版本的工具。以下是 nvm 的使用方法和一些常见命令: 一、安装 nvm 下载 nvm: 地址:https://github.com/coreybutler/nvm-windows/releases访问 nvm 的 GitHub 仓…

稳字诀! 洞见 强者的社交格局:从不恋战——早读(逆天打工人爬取热门微信文章解读)

都是文字 引言Python 代码第一篇 洞见 强者的社交格局:从不恋战第二篇 稳字诀结尾 引言 今天很奇怪 一直都挺烦造的 好像有很多事情忙 但是就是忙着找不定 不能定下心来 主要还是在股市 其他方面应该没啥 计划表还是不够给力 没办法把心在约定住 稳字诀 勤燃香,奋…

GPT和BERT

GPT和BERT都是基于Trm的应用,可以理解为GPT是decoder的应用,BERT可以说是encoder的应用 GPT 如图,就是GPT的原理,GPT是做生成式的任务的,没有办法进行下游任务改造,训练也是针对生成式的任务进行训练 BE…

​微信小程序 页面间传递数据

在小程序中,给页面传递参数通常有以下几种方法: 通过URL传递参数: 在小程序中,可以在页面的路径后面添加参数,然后在页面的 onLoad 函数中获取这些参数。 // 在app.json中配置页面路径 "pages": [{"pat…

Spring Boot 核心理解-profile

在 Spring Boot 中,application.properties 和 application.yml 是用来管理应用程序配置的主要文件。为了方便在不同的环境(如 dev、test、prod)下进行配置管理,Spring Boot 提供了 Profile 的概念,这使得我们可以针对…

使用DeepKE训练命名实体识别模型DEMO(官方DEMO)

使用DeepKE训练命名实体识别模型DEMO(官方DEMO) 说明: 首次发表日期:2024-10-10DeepKE资源: 文档: https://www.zjukg.org/DeepKE/网站: http://deepke.zjukg.cn/cnschema: http:/…

云开发 | 微信小程序云开发无法获取数据库数据

1.我在我的云数据库中创建了一个数据表(即collection数据集)userList,并且存入了两条用户信息数据 2. 想要通过按钮触发事件拿取数据库中数据并且打印在控制台时,获取数据失败,控制台无输出 3. 初始化 | 在开始使用数据库 API 进…

“医者仁术”再进化,AI让乳腺癌筛查迎难而上

世卫组织最新数据显示,我国肿瘤疾病仍然呈上升趋势,肿瘤防控形势依然比较严峻。尤其是像乳腺癌等发病率较高的疾病,早诊断和早治疗意义重大,能够有效降低病死率。 另一方面,中国地域广阔且发展不平衡,各地…

Qt-界面优化盒子模型(71)

目录 描述 相关属性 使用 描述 盒子模型 例如下面房子模型 • Content 矩形区域: 存放控件内容.⽐如包含的⽂本/图标等. • Border 矩形区域: 控件的边框. • Padding 矩形区域: 内边距. 边框和内容之间的距离. • Margin 矩形区域: 外边距. 边框到控件 geometry 返回的矩形…

Qt5.14.2 安装详细教程(图文版)

Qt 是一个跨平台的 C 应用程序开发框架,主要用于开发图形用户界面(GUI)程序,但也支持非 GUI 程序的开发。Qt 提供了丰富的功能库和工具,使开发者能够在不同平台上编写、编译和运行应用程序,而无需修改代码。…

sql server中字符串类型的日期如何比较大小

SQL Server 计算两个时间相差 案例:计算 标准结束时间 和 实际结束时间 之间的秒数差,并根据这个差值判断是否超时。 假设 test 表中有以下数据: 标准结束时间实际结束时间2024-10-12 10:00:002024-10-12 10:30:002024-10-12 11:00:00202…

【分布式微服务云原生】掌握Java分布式事务:2PC、3PC、TCC与Seata全解析

目录 掌握Java分布式事务:2PC、3PC、TCC与Seata全解析一、分布式事务的由来二、两阶段提交2PC1. **准备阶段(投票阶段)**2. **提交阶段**3.**优缺点**优点:缺点: 三、三阶段提交3PC1. 准备阶段(Prepare Phase)2. 预提交…

Flutter路由管理(二)

路由(Route)在移动开发中通常是指页面(Page),这与Web开发的意义是相同的,Route在Andriod中通常指一个Activaty,在IOS中指一个ViewController,路由入栈(push)用…

原生小程序开发组件|地图组件汇总

map 基础库 2.0.12 开始支持, 低版本需做兼容处理。 依赖 MapKit 插件, 插件版本 > 2.2.2。 Tuya MiniApp Tools 上是通过 WebView 模拟的与真机存在差异,请以真机效果为主。 地图。相关 API:ty.createMapContext。这是基于异层渲染的原生组件, 请注意…

el-date-picker 自定义指令,输入数字自动转换显示yyyy-mm-dd格式

el-date-picker 自定义指令,输入数字显示yyyy-mm-dd格式 在main.js引入自定义指令direct.jsdirect.js公共部分时间日期控件,表格内编辑时间控件可用 - (年-月-日)时间范围控件 - (年-月-日)日期转换主要正则年-月-日/年-月-日 时:分/年-月-日 时:分:秒年…

Element-plus el-form、el-dialog 数据回显同时用时,重置失效问题

问题 当第一次打开网页并点击“编辑”按钮时,虽然对话框变量变为 true 使对话框可见,但同步代码会将 formData 对象的属性设置为默认值。由于 Vue 的异步更新机制,DOM 实际上还未更新,因此表单组件内绑定了这些有值的初始数据。这…

【病毒分析】DevicData家族扩散:全球企业和机构成为勒索病毒头号攻击目标!

1.背景 本文聚焦于勒索病毒家族 DevicData 的最新变种,命名为 .DevicData-P a2a9e9c勒索病毒。自2023年1月首次被发现以来,DevicData 家族一直对多个高价值目标展开攻击,包括企业用户、医疗机构和教育机构。这些目标通常持有大量敏感数据&a…

初始爬虫13(js逆向)

为了解决网页端的动态加载,加密设置等,所以需要js逆向操作。 JavaScript逆向可以分为三大部分:寻找入口,调试分析和模拟执行。 1.chrome在爬虫中的作用 1.1preserve log的使用 默认情况下,页面发生跳转之后&#xf…

已发布金融行业标准目录(截止2024年3月)

已发布金融行业标准目录2024年3月序号行业标准编号标准名称

MySQL学习(五):数据类型与约束

MySQL学习(五):数据类型与约束 文章目录 MySQL学习(五):数据类型与约束1. 数据类型与属性1.1 所有的数据类型1.2 所有属性 2. 数据类型详解2.1 整型2.2 浮点类型2.3 定点数类型2.4 位类型2.5 日期与时间2.6…