首页 > 其他分享 >NLP(四十七):损失函数

NLP(四十七):损失函数

时间:2023-07-16 18:22:38浏览次数:44  
标签:NLP 函数 loss 样本 矩阵 损失 四十七 距离

  1. 三元组损失 triplet loss

设计初衷:

让x与这个跟他同类的点距离更近,跟非同类的点距离更远。

d是距离,m的含义是,当x与x+的距离减去x与x-,如果小于-m时,对损失函数的贡献为0,

如果大于-m时,对损失的贡献大于0.

含义就是:当负例太简单时,不产生损失,这个损失的目标是,挑选困难样本进行分类。

这个损失函数的缺陷:

一个正例只能和一个负例进行对比。效率较低。

这个损失函数,算法如何求解?

 

2. InfoNCE损失

注意一点:

一个样本点u,一个正样本点和多个负样本点。而不是一个u,分子是u和多个正样本点的内积做exp。

如果对infonce改写,分子内积求和依然可以。但是从infonce的推导上不可以。

为什么?

3. hinge loss

t>0,是一个超参数。

当y<1/t时,l(y)大于0。说明该样本点贡献了损失。

当y>1/t时,l(y)等于0。说明该样本点没有贡献损失。

 

4. pairwise ranking loss

当两者不是同一个类的时候,如果两个的距离小于m,则贡献了损失,如果大于m则没有贡献损失。

可以从困难样本、简单样本角度来理解,只有困难样本才会拿去训练,简单样本不会拿去训练。

也可以从这个角度理解:当两个不属于同一类别,但是距离又比较近的时候,应该对其进行惩罚,让两者的距离变远。

上面两个式子,可以统一为下式,当y为1时,时positive pair。仅保留了前面那个距离。

当y为0时,仅保留了后面那个式子。

这个损失函数缺点是:每次仅考虑两个样本。

且m是超参数。

5. BPR算法,贝叶斯个性化排序(Bayesian Personalized Ranking, 以下简称BPR)

是用来做矩阵分解的,一般来说是评分矩阵,分解为W矩阵和H矩阵的乘法,求解W矩阵和H矩阵。

推荐系统遇上深度学习(二十)--贝叶斯个性化排序(BPR)算法原理及实战

标签:NLP,函数,loss,样本,矩阵,损失,四十七,距离
From: https://www.cnblogs.com/zhangxianrong/p/17558297.html

相关文章

  • 编写一个函数,令其交换两个int指针
    #include<iostream>#include<Windows.h>usingnamespacestd;voidChange1(int*&a,int*&b){int*tmp=a;a=b;b=tmp;}intmain(){inta=6,b=221;int*p=&a,*q=&b;cout<<"......
  • NLP(四十六):GLOVE
    转载自https://zhuanlan.zhihu.com/p/58916233在上节,我们学习了词向量的两种训练方式:Skip-Gram和CBOW,都是通过句子中的某个单词去预测另一个单词。而本节,我们将学习第三种词向量的训练模型:GLOVE[1]。GLOVE模型是由斯坦福教授Manning、Socher等人于2014年提出的一种词向量训练模......
  • 调度器、预选策略及优选函数
    开篇几张图展示,调度器:预选策略:CheckNodeCondition:GeneralPredicatesHostName:检查Pod对象是否定义了pod.spec.hostname,PodFitsHostPorts:pods.spec.containers.ports.hostPortMatchNodeSelector:pods.spec.nodeSelectorPodFitsResource......
  • 数据库(SQL注入问题、视图、触发器、事务、存储过程、内置函数、流程控制、索引)
    SQL注入问题SQL注入的原因:由于特殊符号的组合会产生特殊的效果 实际生活中,尤其是在注册用户名的时候会非常明显的提示你很多特殊符号不能用,会产生特殊的效果。结论:涉及到敏感数据部分,不要自己拼接,交给现成的方法拼接即可。importpymysql#链接MySQL服务端conn=pymysql.......
  • 编写一个函数,判断 string 对象中是否含有大写字母。编写另-个函数,把 string 对象全都
    第一个函数的任务是判断string对象中是否含有大写字母,无须修改参数的内容,因此将其设为常量引用类型。第二个函数需要修改参数的内容,所以应该将其设定为非常量引用类型。满足题意的程序如下所示:#include<iostream>#include<Windows.h>usingnamespacestd;boolhasUpper(......
  • 借助LOOKUP函数,获取本季度的第1天日期!
    1职场实例小伙伴们大家好,今天我们来学习一下如何在Excel中快速统计当前日期所属的本季度的第1天的日期。人们俗称的“季度”,就是把一年平均分成四份,也可以按照春、夏、秋、冬的分成四份。一年可以分为四个季度,每个季度历时3个月。第一季度:1月~3月第二季度:4月~6月第三季度:7月~9月第......
  • 高等数学暑假打卡行动 --【Day 1】-- 初等函数回顾+极限概念
    今日重点基本初等函数和初等函数区别基本初等函数包括:幂函数\(y=x^a\)、指数函数\(y=a^x\)、对数函数\(y=log_ax\)、三角函数\(y=sinx,y=cosx,y=secx,y=cscx\)和反三角函数\(y=arcsinx,y=arccosx,y=arctanx,y=arccotx\),多项式函数\(a_nx^n+a_{n-1}x^{n+1}+...+a_1x+......
  • C++ lambda函数
    一、格式大括号内是变量捕获,小括号内是参数列表。变量捕获的来源都是当前位置“能看得见”的变量。二、变量捕获上图左:将它“能看得见”的变量都按引用捕获。上图右:将它“能看得见”的变量都按值捕获。比如某个lambda表达式在语句块内,但是它全体引用捕获的话可以捕获全局......
  • 1-19 编写函数 reverse(s),将字符串 s 中的字符顺序颠倒过来。使用该函数 编写一个程
    ArchlinuxGCC13.1.1 202304292023-07-1521:41:44星期六 点击查看代码#include<stdio.h>#include<string.h>voidreverse(char*s);voidreverse_in();intmain(){reverse_in();return0;}voidreverse(char*s){inti,j;......
  • 五、函数的基础--2.函数的参数与返回值
    C语言函数的参数和返回值是函数定义时用来传递数据和返回结果的机制。函数参数:1.参数是函数定义中用于接收外部数据的变量。函数可以有零个或多个参数,每个参数包括类型和名称。2.参数允许将数据从函数的调用者传递到函数内部,函数在执行时可以使用这些参数来完成特定任务。3.参数......