推荐算法中的序列特征处理

在推荐领域中,行为序列特征是一种极为重要的特征。近年来,出现了很多有关行为序列特征建模的论文,研究如何将行为序列特征应用到推荐场景中,以更好挖掘用户的历史兴趣。本文将带大家梳理介绍这些论文中提出的方法。 序列特征 序列特征通常表现为时间上的跨度,具有很强的时间先后关系。如何在行为序列中挖掘用户兴趣的多样性以及实效性,是序列特模型研究的重点。 序列特征处理方法 本文将聚焦于$Pooling、attentio……

阅读全文

Transformer的细节

Transformer中的几个细节讨论 1. 为什么self-attention中需要$/\sqrt{d}$ 在自注意力(self-attention)机制中,将查询(Query, Q)与键(Key, K)相乘之后除以($\sqrt{d}$),其中d是键向量的维度,这是为了稳定梯度和防止数值不稳定。 具体原因如下: 避免数值过大:在没有缩放的情况下,Q和K的点积结果会随着维度$d$的增加而变得很大。点积的结果会随……

阅读全文

softmax计算优化

softmax上溢和下溢问题 解决这个问题的方法就是利用softmax的冗余性。我们可以看到对于任意一个数$a$, $x-a$和$x$在$softmax$中的结果都是一样的。 $$ \frac{\exp^{(x-a)}}{\sum_{i=1}^k \exp_i^{(x-a)}}=\frac{\exp ^{(x)} \exp ^{(-a)}}{\exp ^{(-a)} \sum_{i=1}^k \exp _i^{(x)}}=\frac{\exp ^{(x)}}{\sum_{i=1}^k \exp_i^{(x)}} $$ 对于一组输入,我们可以让a=max(x). 这样就可以保证x-a的最大值等于0,也就不会产生上溢的问题。同时,因为$x-a=0$, 所以$exp(0)=1$,分母就不可能为0。 $$ \begin{array}{l} \log \left(\frac{\exp^{(x-a)}}{\sum_{i=1}^k \exp_i^{(x-a)}}\right) &=\log \left(e^{(x-a)}\right)-\log \left(\sum_{i=1}^k \exp_i^{(x-a)}\right) \\ &=(x-a)-\log \left(\sum_{i=1}^k \exp_i^{(x-a)}\right) \end{array} $$……

阅读全文

Transformer模型理解

Transformer模型在2017年被google提出,直接基于Self-Attention结构,并且迅速取代了之前NLP任务中常用的RNN神经网络结构,成为主流。本文将探讨关于transformer模型的实现细节 Transformer Encoder Self-attention $$ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V $$ Transformer 中token的输入表示$a$由$Word\ Embedding$ 和位置 $Positional\ Encoding$ 相加得到。 Add & Norm Add & Norm 层由 Add 和 Norm 两部分组成,其计算公式如下: $$\textit{LayerNorm}\big(X+\text{MultiHeadAttention}(X)\big)$$ Feed Forward Feed Forward 层比较简单,是一个两层的全连接层,第一……

阅读全文

XGBoost的原理分析以及实践

XGBoost算法 原理 任何机器学习的问题都可以从目标函数(objective function)出发,目标函数的主要由两部分组成 $损失函数+正则项$: $$ Obj(\Theta)=L(\Theta)+\Omega(\Theta) $$ 在这里,当选择树模型为基学习器时,需要正则的对象,或者说需要控制复杂度的对象就是这K颗树,通常树的参数有树的深度,叶子节点的个数,叶子节点值的取值(xgboost里称为权重weight)。 所以,我们的目标函数形式如下: $$ \mathcal{L}=\sum_{i} l\left(\hat{y_i}, y_{i}\right)+\sum_{k} \Omega\left(f_{k}\right) $$ 这里前一半代表预……

阅读全文

模型特征重要性的计算

深度学习的兴起,使得各种复杂的NN网络应用变得流行。但是,对于这些黑盒的模型,我们一般很难知晓哪些特征对模型的学习比较重要, 即对缺乏特征重要性的解释。这里,我们会介绍一些主流的方法,来计算模型特征的重要性。 Tree_base 树模型的解释性一般要优于NN模型,因为书模型的学习是可解释的,大多数Tree模型也都带有查看特征重要性的接口,以xgboost为例: xgboost如何用于特征选择: 缺点: 无法迁移到NN模型上。……

阅读全文

FM算法原理

FM的提出 LR为普通的线性模型,优点是复杂度低、方便求解,但缺点也很明显,没有考虑特征之间的交叉,表达能力有限。 $$ y=\omega_0+\sum_{i=1}^n \omega_i x_i $$ FM在线性模型的基础上添加了一个多项式,用于描述特征之间的二阶交叉: $$ y=\omega_0+\sum_{i=1}^n \omega_i x_i+\sum_{i=1}^{n-1} \sum_{j=i+1}^n \omega_{i j} x_i x_j $$ 其中,$n$代表样本的特征数量,$x_i$是第$i$个特征的值, $w_0, w_i, w_{ij}$是模型参数。 问题 参数 $w_{i j}$ 学习困难, 因为对 $w_{i j}$ 进行更新时, 求得的梯度对应为 $x_i x_j$, 当且仅当 $x_i$ 与 $x_j$ 都非0时参数才会得……

阅读全文

CUPED方差缩减

对于成熟的产品来说,大多数的改动带来的提升可能都是微小的, 通常情况下,为提升AB实验的灵敏度,提升AB的显著性,有两种常见做法: 增加流量 增长实验时间 本质上,无论是延长实验时间还是增加流量一方面都是为了增加样本量,因为样本越多,方差越小,p值越显著,越容易检测出一些微小的改进。 如果能合理的通过统计方法降低方差,就可能更快,更少的样本的检测到微小的效果提升! 微软2013年发表过一篇论文,介绍了一种利用……

阅读全文

对比损失中温度系数的作用

温度系数 对比损失(Contrastive Loss)中的参数$\tau$是一个神秘的参数,大部分论文都默认采用较小的值来进行自监督对比学习(例如 $\tau = 0.05$),但是很少有文章详细讲解参数$\tau$的作用,本文将详解对比损失中的超参数 ,并借此分析对比学习的核心机制。 首先总结下本文的发现: 对比损失是一个具备困难负样本自发现性质的损失函数,这一性质对于学习高质量的自监督表示是至关重要的。关注困难样本的……

阅读全文

Beta分布和Thompson采样

$Beta$分布 $Beta$分布是一个定义在[0,1]区间上的连续概率分布族,它有两个正值参数,称为形状参数,一般用$\alpha$和$\beta$表示 $Beta$分布的概率密度为: $$ f(x ; \alpha, \beta)=\frac{x^{\alpha-1}(1-x)^{\beta-1}}{\int_{0}^{1} u^{\alpha-1}(1-u)^{\beta-1} d u}=\frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha) \Gamma(\beta)} x^{\alpha-1}(1-x)^{\beta-1}=\frac{1}{B(\alpha, \beta)} x^{\alpha-1}(1-x)^{\beta-1} $$ 随机变量$X$服从参数为$\alpha, \beta$的$beta$分布,一般记作: $$ X \sim \operatorname {Beta} (\alpha, \beta) $$ $Beta$分布的期望: $$ \frac{\alpha}{\alpha + \beta} $$ $Beta$分布的方差: $$ \frac{\alpha \beta}{(\alpha+\beta)^{2}(\alpha+\beta+1)} $$ $Beta$分布的概率密度图……

阅读全文