2020 Hulu AI Class 笔记

推荐算法模型1

传统推荐算法模型

推荐系统

  1. 目的:建立一个数学模型或者目标函数去预测用户在某一特定场景下对某个物品的偏好程度。
  2. 关键:用户、物品、场景

最简单的推荐模型:协同过滤

  1. 用户对物品的评价:显式评价(用户直接打分)、隐式评价(从用户的行为推断,观看时间、点击次数)。前者需要用户额外的工作,不容易获取,后者相反。
  2. 交互矩阵:记录每个用户对物品的评价。
  3. 从矩阵中已有的值预测矩阵中没有出现的评价。
    2020 Hulu AI Class 笔记_第1张图片
  4. 协同过滤不考虑用户所处场景,物以类聚人以群分,思想在于:the users who have agreed in the past tend to also agree in the future.
  5. 将用户对于某个物品的偏好值建模为一系列相似的用户或者相似的物品的一系列加权组合。
    r u , i = ∑ v w u v ⋅ r v , i #  of neighbors  r_{u, i}=\frac{\sum_{v} w_{u v} \cdot r_{v, i}}{\# \text { of neighbors }} ru,i=# of neighbors vwuvrv,i
  6. 关键:如何定义相似度。
  7. 常见相似度计算方法:余弦相似度(衡量两个向量夹角的大小)、皮尔逊系数(使用了用户的平均分,减少不同用户之间的喜好评价差异)……

2020 Hulu AI Class 笔记_第2张图片
8. 相似度计算的改进:对于大多数人都喜欢的作品的喜爱可能不具有很大参考性,应该对具有比较大争议的增加权重;计算相似度的时候考虑共同观看的剧的集数;设置条件过滤掉不是很相似的用户,设置阈值和最大相似用户数(邻居数)
9. 协同过滤的优劣:好处,好计算、可解释;坏处,需要大的内存、数据稀疏导致预测不准。

矩阵分解模型

  1. Intuition:表达更高级的属性

  2. 对每个用户和物品嵌入embeddings(隐含了很多特殊信息的向量)

  3. 将交互矩阵分解成为两个低秩矩阵获得embeddings。左边矩阵可以分解为右边两个矩阵的点积。矩阵分解的过程为最小化右下角的目标函数:第一项为使embeddings重构交互矩阵的误差尽可能小,第二项为正则项。优化问题可以通过梯度下降的方法来完成。
    2020 Hulu AI Class 笔记_第3张图片

  4. 有了embeddings后可以加入不同的元素,即在模型里面加入不同的偏置。

  5. 矩阵分解的优劣:优势,有一定泛化能力,存储空间小(只需存储低维的embeddings向量);劣势:比起协同过滤来说更难解释,以及稀疏性问题。

逻辑回归模型

  1. Intuition: add context information to our model
  2. 将推荐建模成为二分类任务,预测用户和物品产生交互的概率,根据概率的大小来推荐。二分类分为:会交互、不会交互两类。
  3. r u , i = 1 1 + e − ( W x + b ) r_{u, i}=\frac{1}{1+e^{-(W x+b)}} ru,i=1+e(Wx+b)1
      其中 W W W是权重,是训练得到的。 x x x是user、item、context等组成的特征向量。
  4. 由梯度下降法学习权重,用sigmoid进行映射,即用户会选择xx的概率。
  5. Example:
    2020 Hulu AI Class 笔记_第4张图片
  6. 转换成0、1特征便于表征,稀疏的特征易于处理计算。
  7. 优劣:优,好的解释性(从特征权重可以看出)、学习快、线上学习;劣,需要大量人力去选取合理的特征,线性模型表达能力受限。

因子分解机

  1. 逻辑回归的问题:左图考虑到了性别特征,右图没有考虑,导致结果差别大。因此特征切分、交叉,对于提升模型能力具有重要的作用。
    2020 Hulu AI Class 笔记_第5张图片
  2. 因子分解机把属于不同类型的特征进行一个交叉来解决这个问题。
  3. F : y ( x ) = sigmoid ⁡ ( w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n − 1 ∑ j = i + 1 n w i j x i x j ) \mathcal{F}: \quad y(x)=\operatorname{sigmoid}\left(w_{0}+\sum_{i=1}^{n} w_{i} x_{i}+\sum_{i=1}^{n-1} \sum_{j=i+1}^{n} w_{i j} x_{i} x_{j}\right) F:y(x)=sigmoid(w0+i=1nwixi+i=1n1j=i+1nwijxixj)
    其中,前两项对应特征的线性组合(逻辑回归),最后一项代表特征的交叉项。
    对于交叉项的理解:把特征进行两两组合,交叉即为逻辑且,相当于多了一些组合特征,并且给每个组合都分配一个权重。
    2020 Hulu AI Class 笔记_第6张图片
  4. FM:为了减少模型的参数量,将组合特征的权重转换为两个向量相乘 W = V V T W=VV^T W=VVT,这个向量成为隐向量(latent vector)。
  5. FFM:把不同的特征与之间的交叉赋予不同的隐向量。
  6. 优劣:优,表达能力强,有一定的泛化性,训练开销稍微大一些但可以接收;劣,二维交叉可以,但是对于更高维的特征交叉在工业界复杂度太高。

Gradient Boosting Decision Tree(GBDT) 梯度提升树

  1. 思想:寻找能够完美拟合训练数据的函数 F ( x ) F(x) F(x),但是很难。所以寻找不是很完美拟合的函数 f ( x ) f(x) f(x),为了让其更完美,在 f ( x ) f(x) f(x)上再加一个小的模型 f 1 ( x ) f_1(x) f1(x),如此下去,来逼近优化目标。
    2020 Hulu AI Class 笔记_第7张图片
  2. 改进:XGBoost & Light GBM,不仅限于回归树而是任何函数,对于优化目标也进行了改进,更好。
  3. 优劣:优,好的表达能力,不用复杂的特征工程;劣,很难并行化,相对于逻辑回归来说,不能进行增量式的训练。

GBDT+LR

  1. 思想:模型代替人去做特征工程。即GBDT去做特征工程,用逻辑回归去做学习。

总结

2020 Hulu AI Class 笔记_第8张图片
2020 Hulu AI Class 笔记_第9张图片

特征工程

数据清洗

  1. 针对空值:填充(均值、中位数、随机森林),drop column
  2. 针对异常值:填充,drop row

特征转换

  1. 离散型特征:one-hot编码(只有一个0),multi-hot编码(可以有多个1)。
  2. 数值型特征:归一化 X i − X min ⁡ X max ⁡ − X min ⁡ \frac{X_{i}-X_{\min }}{X_{\max }-X_{\min }} XmaxXminXiXmin、标准化 X i − μ σ \frac{X_{i}-\mu}{\sigma} σXiμ、离散化。

特征选择

  1. 过滤法:计算相关性,选择top k个,衡量相关性的指标有Pearson coefficient, Chi-square test……
  2. 包装法:逻辑回归模型,训练得到的特征有权重,扔掉权重低的再进行训练,一直重复知道accuarcy下降很快
  3. 很强的特征->信息泄露:数据泄露、特征泄露

Embedding

one-hot ids

  1. 概念,比如五个东西,表示的其中第3个,编码就是[0,0,1,0,0],就是只有一个1,其他都是0。这样会导致物品多的时候编码的向量会很大,这会使模型不能够太复杂(复杂就会需要更多的参数)。
  2. one-hot编码所包含的信息很少,只能说明两个东西是不一样的。如果想让模型根据one-hot编码输入来进行分类,模型就需要比较复杂,任务很重。

Embedding构建

  1. 由One-hot编码可以发现我们需要能够物品表示大量信息的一种方法,即矩阵分解,让大型的稀疏矩阵分解成两个小的。
  2. Embedding:嵌入->高维稀疏离散空间嵌入到低维稠密连续空间。就是包含大量信息的内容的稠密表示。
  3. 可以通过两种方式得到Embedding:From Interaction、From Metadata/Description。

From Interaction

  1. 矩阵分解:对每个user和每个Item建立embedding,通过user和Item的相似程度重建交互矩阵。通过达到优化目标来得到Embedding
  2. 向量分解机:还有别的信息。
    2020 Hulu AI Class 笔记_第10张图片
  3. Word2vec:对每个show随机初始化一个embedding,然后根据embedding训练一个分类器,根据用户的context(观影历史……)来预测show,或者根据show来预测context。比如用户看过A B C D的show,那么通过D的embedding来预测ABC的index,这样使得上下文类似的show能得到相似的embedding。
    2020 Hulu AI Class 笔记_第11张图片

From Metadata/Description

  1. Graphical的数据:构建metadata图,然后通过随机游走采样得到伪交互矩阵,然后用Word2vec的方法得到。
  2. Textual:BERT、Sequence2Sequence
  3. Audio/Visual:用预训练好的CNN提取特征得到embedding向量。

Embedding的用处

  1. 可以直接用作推荐模型的输入,来得到好的效果。
  2. 可以用来计算show之间的相似度。

总结

● What does embedding do?
○ More informative and compact representation of shows
○ Help to create more expressive models
● How to generate embeddings?
○ Through item’s interaction history
○ Through item’s descriptive metadata - can be applied when with no interaction
○ MF/FM/Word2Vec/BERT/…
● How is embedding used?
○ Pretrained embeddings in recommendation models
○ For calculating relevance

深度神经网络模型

  1. 包括Retriever和Ranker。Retriever为轻量的模型,用于从所有数据中选取少量的show作为候选show。Ranker为排序模型,为每个候选show打分(根据点击率、观看时长等),然后排序得到预测的CTR。
  2. 典型的DNN网络结构如下,field为各种类型的输入,embedding层根据这些输入来构建embedding,比如usesr age embedding、user gender embedding……,最后将embedding连接成一个大的特征然后通过全连接层提取特征、降维得到CTR。将N个show的N个CTR排序,进行额外处理后将show呈现给用户。
    2020 Hulu AI Class 笔记_第12张图片
    2020 Hulu AI Class 笔记_第13张图片
  3. 近期的模型:FNN、PNN、Wide$Deep、DIN(应用了attention)

工业推荐模型

  1. 整个流程:前端向推荐系统发出一个请求,系统读取用户ID和上下文等信息,并抓取相关的行为信息。推荐系统还读取大的候选集列表信息等,根据这些信息调用推荐模型或者其他推荐逻辑,最终返回排序后的top-n列表到用户。同时不断收集用户的反馈,生成训练数据集,不断对模型进行更新。
  2. 经典架构:
    2020 Hulu AI Class 笔记_第14张图片

ONLINE部分需要很快的计算速度和比较高的可靠性。Event Distribution为用户对推荐结果作出反应的事件,经过OFFLINE的大数据对数据进行处理,最终变成训练集,用于对现有模型更新以及新模型的研究。OFFLINE时间和性能要求不高。NEARLINE是OFFLINE和ONLINE的折中设计,帮助维持只和用户行为有关的数据的新鲜度,比ONLINE有一定的延迟,是由事件触发的,一般用于处理和上下文无关的计算。
2020 Hulu AI Class 笔记_第15张图片
3. 不同的推荐场景和大小、数据类型和组织、推荐模型和策略等都shape一个推荐系统。
4. 推荐场景决定推荐目标。
5. 推荐流程:
2020 Hulu AI Class 笔记_第16张图片
retriever部分是从所有可能的item中,召回几百或者几千的items,性能要求高、准确度要求低。rank就是对召回的东西进行排序;Re-ranker作用比较多样,用于达到一些特殊的目的,比如冷门内容的发掘、新内容的曝光等。
6. 油管2016:
2020 Hulu AI Class 笔记_第17张图片
2020 Hulu AI Class 笔记_第18张图片
线上serving和线下训练不同,线上serving没有使用完整的模型,而是将模型当成了一个embedding的生成方法,将最上面的ReLU的输出当成是user embedding,将softmax的输出当成是video embedding。线上serving得到user embedding之后在先前算好的vedio embedding的库里用了最近邻查询,查询最近的N个embedding,使得在serving中速度很快。
2020 Hulu AI Class 笔记_第19张图片
因为油管需要用户观看时间长,所以目标是用户的impression带来的用户观看时长。ranker结构和召回模型很像,但是加入了待排序视频的相关信息。ranker对用户和每个待排序的视频打个分,最后根据打分排序返回推荐视频列表。它要预测的是期望观看的时长。

  1. 数据收集与制作。用户只对推荐的其中一个视频感兴趣,然后看了一分钟就关了,这样怎么设置数据?
    要尽量使样本处理方式和目标贴近。
  2. 模型训练:线下训练,线上模型更新。
    线上:尽可能使用最新的特征、最新的模型。
    i. 可以用线下训练的全局模型来进行更新。
    ii. 或者在已存在的全局模型的基础上,使用增量学习更新(NEARLINE……但是可能会偏离全局最优,会跑偏,因此也需要定时进行全局更新)。
    iii. 或者使用Online Learning。每获得一个新样本或者几个新样本就进行一次模型的更新。在强化学习中用的比较多。稀疏性问题、局部最优问题。
    iiii. 对模型进行拆分,多种训练方式联合使用。
    2020 Hulu AI Class 笔记_第20张图片

你可能感兴趣的:(推荐系统)