理解召回和LTR 参考文章:万变不离其宗:用统一框架理解向量化召回 召回本质召回本质上和排序其实存在很大的区别: 召回模型特征是解耦的,排序模型的特征是交叉的,这个是性能上的考虑。 召回是样本的艺术,排序是特征的艺术。召回的负样本如果用的是曝光未点击,和排序类似的话,就有问题,这样召回的训练和预估的数据分布不一致了。因此召回的负样本是随机采样。 召回的几种类型 i2i:拿用户喜欢的item找相似item。就比如 2022-08-10 搜推广
计算广告基础概念 广告类型 原生广告 原生广告在视觉形式上与广告投放到的应用内容界面相契合,可为用户带来浑然一体的体验。这种类型的广告就是原生广告。(这个就是不容易让人发现它是一个广告) 搜索广告 搜索广告是以上下文查询词为粒度进行受众定向,并按照竞价方式售卖和CPC(即“按点击收费”)结算的广告产品。例如大家在百度上面搜索python,就会搜索出一堆培训机构放在前面,这就是搜索广告。 信息流广告 信息流 2022-08-10 搜推广
Attention和Transformer 一、背景Attention是目前最热的深度学习方向,最开始从NLP领域的机器翻译方向发源,到如今百花齐放到各个领域,包括推荐搜索,计算广告等等,万物皆可embedding,万物皆可attention,因为attention的本质就是为了更好的做embedding。 本篇文章按照attention发展的顺序来阐述: Seq2Seq模型 Attention机制 Transformer的Self-At 2022-08-10 深度学习
类变量和实例变量 注意事项类和实例都可以访问 类变量,但是实例只能访问,无法修改,一旦修改了,则会生成一个同名的实例变量,而非本身的类变量。 12345678910class A(object): a = 1 # 类变量print(A.a) # 1t = A()print(t.a) # 1, 访问的是类变量t.a = 4 # 生成一个实例变量,而非修改类变量print(t.a) # 4print(A 2021-06-25 编程开发 > Python
C++虚函数和Java类比 小结: 在C++中,多态是靠虚函数实现的,因为如果是普通函数,调用的方法是根据当前指针类型来判断的,而不是根据指针所指向对象的类型,JAVA则是根据实际对象分配的,所以JAVA的普通函数就类似C++的虚函数。 所以C++如果一个类是基类,它的析构函数一定是虚函数。 C++的纯虚函数就类似JAVA的抽象函数,也就是只有函数定义。 C++的抽象类就是JAVA的抽象类,也就是有至少有一个纯虚函数/抽 2021-05-31 编程开发 > C++
理解blade 今天在研究一个大型c++工程如何做单元测试,这个工程是用blade进行构建的,之前不是特别懂blade,看了网上的相关博客以及github的wiki,大致明白了blade原理,确实相比makefile而言,blade构建是更加方便简洁的。 参考相关博客:blade学习 , blade git wiki ,blade cc wiki 具体不解释了,主要记录几个关键点: cc_library就是要打 2021-02-03 编程开发 > C++
系统管理工具Systemd 以前linux用的是initd工具来管理系统,后来渐渐被systemd取代了。具体可看这篇博客,介绍得非常详细。 注意以下几点: systemd是可以直接与系统内核交互的,比如关机,关电源,停止cpu计算等。 unit是一个资源的概念,不仅仅包含service,还有很多其他的比如挂载,硬件设备等资源。 target是一个unit组的概念,相当于以前的run_level。比如poweroff,re 2021-01-20 操作系统 > Linux
内积、叉积和外积 内积首先介绍点积(dot product),点积是一种接受两个等长的数字序列(通常是坐标向量)、返回单个数字的代数运算。 而内积(inner product)就是两个笛卡尔坐标向量的点积。 符号:$a \cdot b $ 叉积叉积(cross product),又称向量积(vector product)。 外积首先介绍张量积(tensor product),记为$\otimes$,可以应用于不同 2021-01-08 数学
RNN的BPTT RNN采用的梯度更新策略是BPTT,梯度分为两部分: 竖直方向的输出层权重:这个和传统反向传播没什么区别,因为这一层的权重只与当前loss有关 竖直方向的输入层和水平权重:这个就稍微复杂点,因为rnn的总loss是所有时刻loss相加的,同时每个时刻的loss又会影响到这里所说的所有权重,所以操作是: 计算某个时刻Et的误差项,通过反向传播来计算,最后计算梯度。 汇总所有的时刻计算的梯度。 2021-01-08 深度学习
关于线程/进程的理解 最近对线程有了一些的新的理解,再整理一下知识点: 线程的执行单位是core,一个cpu可以有多个core,所以为啥现在计算就主打多核cpu.. 但实际上即使是一个core,也可以实现并发,因为线程之间可以随时切换,因为有thread context这个信息,下面会提。 我们实现一个服务/进程,有多时候都会用多线程来并发处理,那么来看下线程的共享资源单位: 代码区:毫无疑问,就是二进制的代码文件 2020-12-16 大数据 > Spark #并发