08 2021 档案
摘要:背景 在MultiTask任务中,不同task的loss尺度是不一样的,可能相差很大,这样会导致共享的权重被大尺度的task主导,导致小尺度loss的task学不好 为了解决这个问题,常用的一个方法是对权重加权: 这样做的缺点就是,不同task的loss大小在训练中是会发生变化的,而上面的w是固定的
阅读全文
摘要:MMOE 简介 MMOE 是一个 multitask 模型 multitask 主要有以下有点: 1. 把几个任务合为一个模型,相比于每个任务各训练一个模型来说,可以节省资源 2. 由于几个任务共享了数据,对于相关性比较大的任务来说,可以使数据学的更充分 multitask 也存在以下几个问题: 1
阅读全文
摘要:在推荐系统中,我们常常需要用用户的观看时长作为目标来进行建模,那么如何训练一个模型来预估模型的用户的播放时长呢? 很容易想到把播放时长的预估问题作为一个回归问题,采用mse loss,但是mse loss存在两个问题: 分布假设:假设是预估label、误差项符合正态分布 预估局限:对离群值敏感 Yo
阅读全文
摘要:概述 ranknet 是一种排序算法,即输入query,对检索出来的文档进行排序,且ranknet是一种pairwise的排序算法,即只需要计算两个文档的相对顺序 样本label ranknet 的样本label为(1,0.5, 0),1表示doc1比doc2相关性高,0.5表示一样,0表示doc1
阅读全文
摘要:make_shared的使用 C++11 中引入了智能指针, 同时还有一个模板函数 std::make_shared 可以返回一个指定类型的 std::shared_ptr shared_ptr<string> p1 = make_shared<string>(10, '9'); shared_pt
阅读全文
摘要:智能指针概念C/C++ 语言最为人所诟病的特性之一就是存在内存泄露问题,因此后来的大多数语言都提供了内置内存分配与释放功能,有的甚至干脆对语言的使用者屏蔽了内存指针这一概念。这里不置贬褒,手动分配内存与手动释放内存有利也有弊,自动分配内存和自动释放内存亦如此,这是两种不同的设计哲学。有人认为,内存如
阅读全文
摘要:在C++11中,标准库在<utility>中提供了一个有用的函数std::move,std::move并不能移动任何东西,它唯一的功能是将一个左值强制转化为右值引用,继而可以通过右值引用使用该值,以用于移动语义。从实现上讲,std::move基本等同于一个类型转换:static_cast<T&&>(
阅读全文
摘要:背景 DCN-m的整体思路和原理与DCN-v基本一致,由DNN和特征交叉两部分构成。它的关键在于对特征交叉的改进,通过在特征交叉层引入matrix形式的参数,使特征交叉层中的feature map可以进行差异化线性组合,从而提高对交叉特征的学习能力。 原理 cross net对比 DCN-v2 中的
阅读全文
摘要:背景 特征交叉最早是基于 LR方法,通过人工设计交叉项作为LR的输入,这种方法原理简单,可解释性强,但对人工经验依赖强,且推荐场景的特征高维稀疏,导致LR难以学好稀疏特征的交叉性。 基于FM的方法通过引入隐向量的方式,不同交叉项之间可以共享隐向量,从而解决了LR中稀疏特征交叉项难学的问题,同时也可以
阅读全文
摘要:lsof (lists openfiles) 功能:列出打开的文件 lsof -p 进程号 列出进程打开的文件 lsof -p 进程号 | grep log : 查看进程输出log的文件目录
阅读全文
摘要:https://blog.csdn.net/taoqick/article/details/102621605 原因一,使用交叉熵loss下降的更快; 原因二,使用交叉熵是凸优化,MSE是非凸优化 1. 损失函数角度 对一个多分类问题,我们一般用onehot编码来表示label,比如猫、老虎、狗的3
阅读全文
摘要:描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 示例1 输入: [3,4,5,1,2] 返回值:1 题解 把 mid 和 右端点值比较 taget = a
阅读全文
摘要:1. 修饰全局变量 static修饰全局变量时,表明一个全局变量只对定义在同一文件中的函数可见 2. 修饰局部变量 表明该变量的值不会因为函数终止而丢失 3. 修饰函数 表明该函数只在同一文件中调用 4. 修饰类中的成员变量 static 修饰类中的成员变量时,表明对该类所有对象这个数据成员都只有一
阅读全文