NLL loss(负对数似然损失)

news2024/9/28 23:32:46

NLL损失在NLP中含义 :

在自然语言处理中,通常用于分类任务,例如语言模型、情感分类等。NLL损失全称为Negative Log-Likelihood Loss,其含义是负对数似然损失。

在NLP任务中,我们通常将文本数据表示为一个序列,例如单词序列或字符序列(一句话就是一个序列【sequence】)。对于分类任务,我们需要将每个序列映射到一个类别标签。因此,我们需要一个模型,能够将输入序列映射到输出标签。

在模型训练期间,我们需要最小化模型预测结果和真实标签之间的差异,以使模型的预测结果更加接近真实结果,使用NLL损失可以帮助我们实现这一点。

具体来说,对于一个输入序列 x 和真实标签 y,我们可以使用模型预测的标签分布 p(y|x) 和真实标签 y 的对数概率来计算NLL损失,计算公式就是右半部分:

NLL损失的含义是:如果我们的模型的预测结果 p(y|x) 越接近真实标签 y ,那么 NLL(p(y|x), y) 的值就越小。 

在模型训练期间,我们使用NLL损失来计算每个样本的损失值,并通过反向传播算法更新模型参数以最小化总体NLL损失。这样可以帮助我们训练出更好的模型,使其在测试数据上的表现更好。

损失函数一: 

  • 在该损失函数中,X_i 表示在第 i 个时间步中的随机变量,其取值可以是词汇表中的任何一个token。
  •  x_i 表示在第 i 个时间步中选择的token。因此,P(X_i=x_i|X_{i-1}=x_{i-1},...,X_1=x_1) 表示在给定前面所有token的情况下,模型选择 x_i 作为下一个token的概率。
  • 在训练中,使用了“Teacher’s forcing”(老师强制)的方法,该方法在训练阶段中,将前一个时间步的真实token作为当前时间步的输入,以帮助模型正确学习语法。因此,在训练期间,可以通过提供正确的输入来帮助模型生成下一个正确的token序列,从而减少损失函数的值。

 总之,这个损失函数的目的是通过最小化模型的预测值与真实token序列之间的差异来训练语言模型。在训练过程中,通过“Teacher’s forcing”方法,模型可以更好地学习语法和语义规则,提高模型在生成下一个token时的准确性和流畅性。

损失函数二: 

  • X_i 表示在第 i 个时间步中生成的随机变量,取值为词汇表中的任意一个token。
  •  x_i 表示在第 i 个时间步中选择的token。
  • S 表示输入序列。
  • P(X_i=x_i|X_{i-1}=x_{i-1},...,X_1=x_1,S=s) 表示在给定输入序列 s 和前面所有token的情况下,模型选择 x_i 作为下一个token的概率。
  • NL L_{Dec_T} 是一个负对数似然损失函数,它的目的是最小化模型预测的token序列与真实token序列之间的差异,使得生成的token序列更接近真实的标记序列。

具体来说,该损失函数的第一项是第一个时间步的损失,表示在给定输入序列 s 的情况下,模型生成第一个标记 x_1 的概率与真实标记的概率之间的差异。第二项是从第二个时间步开始的损失项,表示在给定输入序列和前面的标记的情况下,模型生成第 i 个标记 x_i 的概率与真实标记的概率之间的差异。

总之,该损失函数的目的是通过最小化模型预测的标记序列与真实标记序列之间的差异来训练生成模型,使其在给定输入序列的情况下能够生成符合语言规则和语义的标记序列。通过优化该损失函数,可以提高生成模型的生成准确性和流畅性。

将上面的损失函数写成NLL损失的样式:

假设 X_{1}, X_{2}, \ldots, X_{t} 是给定的序列,S 是上下文,x_{1}, x_{2}, \ldots, x_{t} 是可能的值,P\left(X_{i}=x_{i} \mid X_{i-1}=x_{i-1}, \ldots, X_{1}=x_{1}, S=s\right) 是给定先前历史和上下文 S=s 条件下,预测 X_ix_i 的概率。

NLL_Dec_T 可以表示为:

NLL_Dec_T = - \log \left[ P\left(X_{1}=x_{1} \mid S=s\right) \prod_{i=2}^{t} P\left(X_{i}=x_{i} \mid X_{i-1}=x_{i-1}, \ldots, X_{1}=x_{1}, S=s\right) \right]

NLL_Dec_T = -\log P\left(X_{1}=x_{1} \mid S=s\right) - \sum_{i=2}^{t} \log P\left(X_{i}=x_{i} \mid X_{i-1}=x_{i-1}, \ldots, X_{1}=x_{1}, S=s\right)

其中第一项是条件概率 P(X_1=x_1 | S=s) 的负对数,第二项是从第二个时刻开始的条件概率 P(X_i=x_i | X_{i-1}=x_{i-1}, \ldots, X_1=x_1, S=s) 的负对数之和。

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

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

相关文章

大数据是什么?学习后能找高薪工作么

大数据是什么,比较官方的定义是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 简单来说,大数据就是结构化的…

Unity使用webSocket与服务器通信(二)——C#服务器端使用Fleck时的简单服用方法

C#服务端用到Fleck包,它包含哪些可用的回调函数,有哪些常用的api方法? 演示:服务端收到Unity用户发来的信息 1、Fleck服务器提供哪些回调函数 Fleck提供的回调函数有下面几种: //用户连入服务器时... Action OnOp…

如何在Windows 10中安装PostgreSQL 15

PostgreSQL是一个强大的开源对象关系数据库系统,经过35年的积极开发,在可靠性、功能健壮性和性能方面赢得了很高的声誉。 通过官方文档可以找到大量的信息来描述如何安装和使用PostgreSQL。开源社区为熟悉PostgreSQL、发现它的工作原理和寻找职业机会提供了许多有用的地方。…

APP违法违规收集使用个人信息合规评流程和范围

近期,工信部通报2023年第1批《侵害用户权益行为的APP通报》(总第27批),共通报46款APP(SDK),这些被责令限期整改的APP(SDK),涉及的问题主要包括3个方面&#x…

Easy Deep Learning——卷积层

为什么需要卷积层,深度学习中的卷积是什么? 在介绍卷积之前,先引入一个场景 假设您在草地上漫步,手里拿着一个尺子,想要测量草地上某些物体的大小,比如一片叶子。但是叶子的形状各异,并且草地非…

【Unity3D小技巧】Unity3D中判断Animation以及Animator动画播放结束,以及动画播放结束之后执行函数

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 在日常开发中,可能会遇到要判断Animation或者Anima…

MySQL workbench数据表和数据结构

数据表和数据结构的关系 数据表 学号姓名位置26002351李晓丽126002589张明伟226003214李雪冬326002132汪涵426006541邱明罕526003654李丽6 怎样去描述上面的数据表,用【数据表结构】表示 表头字段名字段类型位数备注学号xuehao整数/字符8 姓名xingming字符4 座…

煤矿人员精确定位解决方案,维护作业人员生命安全

近日,应急管理部党委书记、部长王祥喜主持召开全国安全防范工作视频会议。会议强调,要深刻吸取内蒙古露天煤矿坍塌等重特大事故教训,举一反三全面排查整治重点行业领域重大安全隐患,坚决遏制重特大事故,切实维护人民群…

【数据结构·考研】后序线索二叉树

之前我们介绍了中序线索二叉树的构造、遍历、寻找前趋和寻找后继;先序线索二叉树的构造、遍历、寻找后继。先序线索二叉树无法解决寻找前趋的任务,中序线索二叉树既可以寻找前趋结点也可以寻找后继结点。 今天我们再来看一下后序线索二叉树的构造&#…

apt-get通过代理更新系统

apt-get通过代理更新系统1. 源由2. 需求3. 分析4. 步骤4.1 安装CCProxy4.2 配置CCProxy4.3 apt-get更新4.4 apt-get升级4.5 apt-get安装5. 补充资料 命令行设置代理6. 参考资料1. 源由 apt-get经典操作就是通过网络与服务器通信,下载相应的包来安装和更新软件。 这…

docker容器内安装gcc(trunk 最新版本)以及LLVM

1、docker内部只有wget以及git命令 项目需要,得更新docker容器中的gcc和LLVM版本但是由于没有预先安装apt、apt-get以及yum,导致很多安装过程就是鸡生蛋蛋生鸡反应。暂时没有找到合适的解决的方法,如果有大佬知道的话,欢迎留言哈…

ZeroTier实现内网穿透详细教程,无需公网IP,实现异地组网

ZeroTier实现内网穿透详细教程,无需公网IP,实现异地组网ZeroTier1.官网注册账号,创建自己的局域网段2.点击创建好的网络,进入设置界面进行设置3.下载客户端,安装客户端,然后连接到网络中4.加入网络成功后&a…

pocsuite3安装及使用

pocsuite3安装及使用简介项目地址环境配置及安装环境要求安装(详情可以参考[https://pocsuite.org/](https://pocsuite.org/))使用方法运行模块加载目标参数:Console模式查看有哪些模块使用Telnet 弱密码模块这里以flask模板注入漏洞为例pocs…

阿里云短信验证

1.了解阿里云用户权限操作 需要通过个人账户获得 授权码(id、密码),再通过这些信息获得服务 阿里云网址 :https://www.aliyun.com/ 1.登陆阿里云服务器2.进入个人账号然后点击 AccessKey 管理3.创建用户组4.添加用户组权限&…

SYSU程设c++(第三周) 对象类、类的成员、类与结构体的区别、类的静态成员

对象&类 类用于指定对象的形式,它包含数据的表示方法和用于处理数据的方法。 • 类中的数据和方法称为类的成员。 • 函数在一个类中也被称为类的成员。 定义一个类,其效果是定义一个数据类型的蓝图。它定义了类的对象包括了什么,以及可…

C++基础了解-08-C++运算符

C运算符 一、C 运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 二、算术运算符 下表显示了 C 支持的算术运算符…

led灯性价比最高的是哪款?2023最新的哪种led灯质量比较好

Led作为一种固态半导体,具有自发光、高可控性的特点,高效节能,省电环保,并且根据材料的不同,发出的光线颜色也不同,因此广泛用于各种照明灯具,台灯也不例外。 作为一种适合工作学习或者工作休闲…

跑步耳机入耳好还是不入耳好、十大跑步运动耳机品牌排行榜推荐

健身房经常会播放一些节奏较快的歌曲,这样能够激发大家在运动过程中的动力,所以运动时聆听音乐确实比较有效果,居家运动、室外跑步时选择运动耳机就变成了刚需,首先不能影响其他人、佩戴时要稳定,音质和续航要有保证&a…

npm install 原理

npm基本使用node.jsNode.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境。在任何地方安装了node,那么就可以运行JavaScript。所以在服务器上就可以运行js了。js就全栈了。node安装的同时就安装了npm。直接去官网下载,双击安装即可。安装完毕之后…

java基于springboot仓库管理系统的设计与实现

项目介绍 基于 SpringBoot 的仓库管理系统拥有多种角色,可供用户自定义使用。 功能模块 一、业务模块 1、客户管理 2、供应商管理 3、商品管理 4、商品进货管理 5、商品退货管理 6、商品销售管理 7、商品销售退货管理 二、系统模块 菜单管理,角色管…