自然语言处理(NLP)之跳字(元)模型<skip-gram>与连续词袋模型<continuous bag of words>

自然语言处理(Natural Language Processing, NLP)是AI里的一个非常重要的领域,比如现在很火爆的ChatGPT,首先就需要很好的理解输入内容的意思才能够做出合理的回复。

自然语言处理应用非常广泛,比如机器翻译、问题回答、文本语义对比、语音识别、自动文摘、写论文与判断论文是否抄袭等等,为了将这些应用做好,很关键的就是数学在其中的作用。

这节重点是讲解数学公式在损失函数中的推导,主要是掌握一些概率与微积分的相关知识,比如求导数与偏导数(梯度)。

NLP基本术语

在介绍模型之前,先熟悉一些常见的基本术语,这样在后续的实操中更清楚其中代表着的是什么。

1、自然语言:一套用来表达含义的复杂系统
2、词:自然语言中表达意思的基本单元
3、词向量:表示词的向量或说是词的表征,类似卷积神经网络中的特征值,也可说成词的特征向量,这个是很关键的东西,是计算机能够识别词的关键
4、词嵌入:将词映射成为实数域向量的技术(这个是为了解决独热编码存在的问题而提出的)
5、似然函数:描述样本数据出现的可能性的函数,是用来衡量模型参数的可能性,这个要跟“概率”区分开来,看起来比较像,其实是 截然不同的两个概念。概率是一种描述某件事情发生的可能性的概念,是用来衡量某件事情发生的可能性。给定输出x时,关于参数θ的似然函数L(θ|x)(在数值上)等于给定参数θ后求出变量X的概率:L(θ|x)=P(X=x|θ)。如果从深度学习领域来看,由公式我们可以给出更贴合的解释为, 概率是参数已知,求出的随机变量的结果。似然函数则相反,已知随机变量的输出结果,求参数的可能取值

为什么不使用独热编码

那在NLP中一般都不会选择使用独热码(One-Hot)向量,这是什么原因呢?

独热码就是长度为N的向量中,这个词的索引为i,在i位置为1,其余位置都为0的表达形式,这种结构我们最开始是在 MNIST数据集手写数字识别(一) 文章中介绍并应用过,对于这种分类任务没有问题,但用在NLP中,就有缺陷了,因为这样的编码方式不能表达出不同词之间的相似度。

为了解决上述的问题,就提出了词嵌入(word embedding),这节的两个模型就是来自word2vec工具,我们分别来介绍它

跳字模型(跳元模型)<skip-gram>

也有人叫做“跳字元模型”,当然意思都是一样,把词当作是元或字元,这个模型是通过基于某个词来生成它在文本序列周围的词。

举个例子:"the" "man" "loves" "his" "son",以"loves"为中心词,设背景窗口大小为2,生成与它距离不超过2个词的背景词"the" "man" "his" "son"的条件概率:

P("the","man","his","son" | "loves")

由于这些背景词的生成是相互独立的,所以可以改写成:

P("the" | "loves")*P("man" | "loves")*P("his" | "loves")*P("son" | "loves")

设中心词 在词典中的索引为c,背景词 在词典中的索引为o,给定中心词生成背景词的条件概率可以通过对向量做内积然后softmax运算得到:

假设给定一个长度为T的文本序列,时间步为t的词为,背景窗口大小为m,那么这个跳字模型的似然函数如下(给定任意中心词生成所有背景词的概率):

跳字模型的参数是每个词所对应的中心词向量和背景词向量。训练中我们通过最大似然函数来学习模型参数,或叫最大似然估计。等价于最小化下面这个损失函数:

如果使用随机梯度下降,那么每次迭代我们随机采样一个较短的子序列来计算有关该子序列的损失,然后计算梯度来更新模型参数。

梯度计算的关键是条件概率两边取自然对数,中心词向量与背景词向量的梯度如下推导:

两边取自然对数log

下面是对求梯度(偏导数)的推导过程,其中的一些详细细节步骤来自Aston Zhang大神的手写推导:

先将log整个那块用h(g(f(x)))来代替:

这三个组合起来就是

然后开始求梯度(其中索引i修改成j,防止分子分母约掉):

上述推导过程,涉及到常见的两种求导的结果(log在我们计算机中一般都表示自然对数,e为底):

logx的导数是1/x,e^x的导数不变,依然是e^x

它的计算需要词典中所有词以为中心词的条件概率。求其他词向量的梯度同理可得。

训练结束后,对于词典中的任意索引为i的词,我们均得到该词作为中心词和背景词的两组向量

在自然语言处理的应用中,跳字模型的中心词向量作为词的表征向量。

连续词袋模型<continuous bag of words>(CBOW)

连续词袋模型跟跳字模型很像,不同点在于连续词袋模型是基于某个中心词在文本序列前后的背景词来生成的该中心词,比如上面例子中的"loves"为中心词生成背景词"the" "man" "his" "son",这里就是通过背景词"the" "man" "his" "son"来生成 "loves"这个中心词。

那这里的条件概率就跟上面跳字模型相反

P("loves"|"the","man","his","son")

由于背景词有多个,所以将这些背景词向量取平均,然后后面的推导就跟跳字模型一样。

假定中心词在词典中索引是c,背景词是,在词典中索引为,那么给定这些背景词生成中心词的条件概率为:

其中这里的两组向量分别是背景词和中心词,跟跳字模型相反。

我们简化下公式,设定,且,简写成:

给定一个长度为T的文本序列,设时间步t的词为,背景窗口大小为m,连续词袋模型的似然函数是由背景词生成任一中心词的概率:

训练连续词袋模型跟跳字模型基本是一样的,这里的连续词袋模型的最大似然估计等价于最小化损失函数:

然后跟跳字模型一样的公式推导,我们最终可以得到有关任一背景词向量的梯度:

有关其的词向量的梯度同理可得,跟跳字模型不一样的地方就是,一般都使用连续词袋模型的背景词向量作为词的表征向量。

小结:需要明白公式的意义与推导,两个模型之间的共同点与不同点,以及对术语的熟悉,为后面的NLP打好基础。LaTeX公式的输入还是比较繁琐,比较耗时,不过呈现的效果还是很不错的,值得。

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

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

相关文章

DeepMind:用 GNN 学习通用推理算法

文 | 智商掉了一地 小孩子才做选择&#xff0c;我的模型全&#xff01;都&#xff01;要&#xff01; 近年来&#xff0c;基于深度神经网络的机器学习系统取得了巨大进步&#xff0c;尤其是在以感知为主的任务上。这一领域表现突出的模型通常要在分布中进行泛化&#xff0c;意味…

GPT-4发布:人工智能新高度,以图生文技术震撼,短时间内挤爆OpenAI模型付费系统

“GPT-4&#xff0c;起飞&#xff01;”今日凌晨1点&#xff0c;OpenAI正式推出史上最强大的GPT-4文本生成AI系统 GPT-4&#xff1a;人工智能的新里程碑 你可能已经听说过GPT-3&#xff0c;它是一种能够生成自然语言文本的强大模型&#xff0c;可以用来回答问题、写文章、编程…

从BERT到ChatGPT,9大研究机构全面综述:「预训练基础模型」

来自&#xff1a;新智元 编辑&#xff1a;LRS 【导读】2023年了&#xff0c;还有人从头开始训模型吗&#xff1f;追踪一下从Bert以来的那些预训练模型。 ChatGPT在few-shot和zero-shot场景下展现出的惊人性能&#xff0c;让研究人员们更坚定「预训练」是一条正确的路线。 预训练…

【AI项目实战】某语言模型-stable diffusion-vits-cqhttp 实现能对话能语音能绘画的Q群机器人

好久没写文章了&#xff0c;终于想起来我有个博客账号系列。。 项目已开源在github上。 文章已滤敏&#xff0c;一切涉及语言模型名字的内容都以某语言模型代替 提示&#xff1a;AI绘画部分建议6G显存以上。 cqhttp 用于接收群友消息&#xff0c;并回复消息。 某语言模型 基于…

微信PC端各个数据库文件结构与功能简述 - 根目录

异想之旅&#xff1a;本人原创博客完全手敲&#xff0c;绝对非搬运&#xff0c;全网不可能有重复&#xff1b;本人无团队&#xff0c;仅为技术爱好者进行分享&#xff0c;所有内容不牵扯广告。本人所有文章仅在CSDN、掘金和个人博客&#xff08;一定是异想之旅域名&#xff09;…

springboot+vue集成websocket实现聊天功能

1、添加pom依赖 <!-- websocket --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency> 2、创建一个config文件夹&#xff0c;在config文件夹中创建…

广州租房房价分析

利用八爪鱼爬链家网上广州市租房房源数据&#xff0c;网址为https://gz.lianjia.com/zufang/&#xff0c;爬取字段为价格、租赁方式、房型、楼层、面积、朝向、地铁、小区、位置、经度、纬度等&#xff0c;保存到E盘数据分析课程设计文件夹下&#xff0c;存为“gz_zufang.csv”…

房价数据分析

文章目录 一、数据预处理1、删除多余列2、缺失值、异常值处理 二、 数据探索分析1、DistanceKM与房价关系2、14岁及以下比重与房价关系3、自驾实际值与房价关系4、65岁及以上比重与房价关系5、人口占比与房价关系 三、机器学习预测房价1、模型选择2、模型调参 四、总结 一、数据…

北京二手房房价分析(建模篇)

数据科学俱乐部 中国数据科学家社区 本篇将继续上一篇数据分析用Python分析北京二手房房价之后进行数据挖掘建模预测&#xff0c;这两部分构成了一个简单的完整项目。结合两篇文章通过数据分析和挖掘的方法可以达到二手房屋价格预测的效果。 下面从特征工程开始讲述。 特征工程…

我国主要城市2023年房价数据

房价是一个城市发展程度的重要体现&#xff0c;一个城市的房价越高通常代表这个城市越发达&#xff0c;对于人口的吸引力越大&#xff01;因此&#xff0c;房价数据是我们在各项城市研究中都非常常用的数据&#xff01; 本次我们为大家带来的是我国主要城市的房价数据&#xf…

分析天津市房价的空间因素影响

所有代码与解析 # -*- coding: utf-8 -*- """ Created on Thu Mar 4 16:23:30 2021author: 89344 """import numpy as np import pandas as pd import matplotlib.pyplot as plt import warnings warnings.filterwarnings(ignore) from bokeh.…

Python爬取天津房价并进行可视化

Python爬取天津房价并进行可视化 步骤代码 步骤 1.爬取网页信息 2.解析网页信息&#xff0c;获取需要的数据&#xff0c;存入CSV文件中 3.读取CSV文件&#xff0c;对数据进行处理&#xff0c;包括剔除异常值&#xff0c;空值等&#xff0c;进行可视化 代码 import requests …

房价概况:2013年2月26日天津各区县房价一览

2013年2月26日全市新建商品房交易373套、面积37502.8平方米&#xff0c;平均价格每平方米10504元。其中&#xff0c;住宅335套、面积34159.8平方米&#xff0c;平均价格每平方米9844元。二手住宅交易275套、面积22696.8平方米&#xff0c;平均价格每平方米8579元。

Spring实战----Taco Cloud(墨西哥煎玉米卷在线订购系统)

记录一下根据《Spring实战&#xff08;第五版&#xff09;》(人民邮电出版社)所学习的过程 目录 项目初始化 开发WEB应用 使用数据库 使用Spring Data JPA进行持久化数据 使用Spring Security保护Spring 自定义用户验证 项目初始化 New一个Project&#xff0c;选择Sprin…

C/C++字符串

一.C风格的字符串 1. char a[6] { h,e,l,l,o,\0 }; printf("%s", a);//hello#include<iostream> #include<string> using namespace std; int main() {char a[6] { h,e,l,l,o,\0 };char b[5] { h,e,l,l,o};//空间至少大一位留出\0位置char c[6] { h,e…

Qt输入窗口部件编程(一) QComboBox和QFontComboBox

文章目录 前言1、 Qt常用的输入窗口控件2、QFontComboBox 和 QComboBox控件编程2.1 控件简介2.1.1 QComboBox组合框2.1.2 QFontComboBox字体组合框 2.2 例程功能设计2.3 例程执行效果2.4 生成项目2.5 代码编辑2.5.1 修改项目文件_qcombobox.pro2.5.2 修改 main.cpp2.5.3 修改 w…

Xmind8 乱码问题解决(查看文件字体并下载安装相应字体)

每台电脑引起Xmind软件出现乱码的原因也不一样&#xff0c;本文仅适用于解决字体缺少或者字体版本不对而引发的乱码问题。每台电脑缺少的字体包也不一样&#xff0c;要通过“工具”-》“提取样式”菜单&#xff0c;具体分析自己的Xmind文件需要什么字体&#xff0c;然后搜索对应…

idea主题 插件 乱码 快捷键

idea样式网站 http://www.easycolor.cc/ http://www.riaway.com/ idea 乱码情况 中文乱码问题分类&#xff1a; 1.编码普通中文乱码 2.properties文件中文乱码 3.console控制台中文乱码 4.搜索框中文乱码 5.svn注释中文乱码 解决方法&#xff1a; 1、编码普通中文乱码 ①s…

基于声学模型共享的零资源韩语识别系统

声学模型共享方法是极低资源小语种语音识别一种解决方案&#xff0c;能够实现不需要任何语音数据的语音识别。本文介绍清华大学语音与音频技术实验室的零资源韩语语音系统&#xff0c;其在不使用任何韩语语音数据的情况下&#xff0c;在Zeroth韩语数据集上的测试CER达到了27.33…

韩语在线翻译图片识别_图片怎么转表格excel

图片转表格excel&#xff0c;快来免费用 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 相信大部分小伙伴选择拍图识字 是因为强大的ocr识别功能 图片文字一键提取导出 但是&#xff0c;有多少人知道 拍图识字还可以成为你的私人翻译&#xff01;1 多语言转换 拍图识字首页点击拍照/…