推荐系统:基本件

阅读量 ,评论量

函数变换

q_adjuster

有时模型预估值分布得较为密集,为了让不同的item更有区分性,方便下游使用,经常用一些函数变换来分布。这里列一些常用的。

一种是拉伸q值较小部分的: \[ q_{adjust} = \frac{q * (1+\text{factor})}{1+\text{factor} * q} \] 其中factor越接近于0,变换后的分布越等价于不变,越大越拉伸q值较小的部分,一般用1.5就差不多了。

norm

1、除以q的均值

2、

门控机制

element-wise multi

做gate时,用于计算gate的特征一般要先freeze掉:避免互相影响。

gate输出的值,一般都用[-15, 15]截断后过sigmoid再乘个2:正则化&保持输出的期望在1上。

senet

cgc

Attention

attention计算过程

其中query为目标语言端的h,key和value也为源语言端的两个不同空间的h,通过点积等方法计算相似度后得到该时刻t的a,将value与a做加权求和后得到attention value,即得到该t时刻目标语言端的h。

简单来说就是将当前时刻的目标语言与源语言的各个向量求个相似度,用来对源语言的各个向量做加权求和,从而通过attention机制实现源语言与目标语言的对齐。

attention可以有很多种计算方式: 加性attention、点积attention,还有带参数的计算方式。

以点积attention为例:

  1. self-attention的q, k, v都是同一个输入, 即当前序列由上一层输出的高维表达。
  2. cross-attention的q代表当前序列,k,v是同一个输入,对应的是encoder最后一层的输出结果(对decoder端的每一层来说,保持不变)

而每一层线性映射参数矩阵都是独立的,所以经过映射后的Q, K, V各不相同,模型参数优化的目标在于将q, k, v被映射到新的高维空间,使得每层的Q, K, V在不同抽象层面上捕获到q, k, v之间的关系。一般来说,底层layer捕获到的更多是lexical- level的关系,而高层layer捕获到的更多是semantic-level的关系。