从模型到部署 FPGA该怎样加速广告推荐算法

  • 时间:
  • 浏览:0
  • 来源:5分11选5娱乐平台-5分11选5下注平台_5分11选5注册平台

介绍一下推荐系统中的重要成员 CTR 预估模型,下面先让大伙对 CTR 预估模型有有五个多初步认识。CTR(Click-Through-Rate)点击率,它是在一定时间内点击量/曝光量*3000%,愿因 投放了 A 条广告有 A*CTR 条被点击了。ECPM(earning cost per mille)每 30000 次曝光带来收入。ECPM=30000*CTR*单条广告点击价格。

举个例子:

广告 A:点击率 4%,每个曝光 1 元钱,广告 B:点击率 1%,每个曝光 5 元钱。要怎样让我我让他 要投放 30000 条广告,让他选者广告 A,还是广告 B?直观上来看,广告 A 的点击率高,当然选者投放广告 A。

越来越 :ECPM=30000*CTR*点击出价:

ECPM(A)=30000*4%*1=40

ECPM(B)=30000*1%*5=3000

要怎样让从 ECPM 指标来看得话广告 B 带来的收益会更高,这就让广告竞拍的关键计算规则。

大伙可不可否 都看 CTR 是为广告排序用的,对于计算 ECPM 来说,可不可否 CTR 是未知的,要怎样让我准确得出 CTR 值就可不可否 了。要怎样让 CTR 预估也是广告竞拍系统的关键指标。广告系统的 CTR 预估在具体的数值上比推荐系统要求更高,比如推荐系统愿因 只还要知道 A 的 CTR 比 B 大就可不可否 排序了。

而广告愿因 与否直接用 CTR 进行排序,还加在了出价,要怎样让广告系统不仅要知道 A 的 CTR 比 B 大,要怎样让还还要知道 A 的 CTR 比 B 的 CTR 大有多少。

越来越 再看有五个多例子:

愿因 广告 A:点击率是 5%,广告 B:点击率也是 5%,点击价格也相同,该选者广告 A 还是广告 B?点击率相同,点击价格也相同,得出 ECPM 也相同,该为什么会选者投放广告 A 还是 B 呢?

此时就可不可否 根据广告属性做针对性推荐,针对不同的人群,做大慨的推荐。这类于:广告 A 是包,广告 B 是游戏,可做针对性推荐。即:针对一个女人什儿 群体投放广告 A、针对一个女人什儿 群体投放方告 B,原先则会提高总广告收益率。

CTR 模型是为什么会得出结果的呢?

大伙可不可否 根据经验判断决定广告点击率的属性:广告行业、用户年龄、用户性别等。由此可分为三类属性:

user:年龄、性别、收入、兴趣、工作等。

ad items:类别、价格、创意、实用等。

others:时间、投放位置、投放频率、当前热点等。

哪些地方地方决定属性在 CTR 预估模型中都叫做特性,而 CTR 预估模型含高一重要过程「特性工程」,将能影响点击率的特性找到并进行正确处理,比如把特性变成 0 和 1 的二值化、把连续的特性离散化、把特性平滑化、向量化。

原先 CTR 模型大慨是无数特性(x)的有五个多函数,CTR=f(x1,x2,x3,x4,x5…),输入历史数据训练,不断调整参数(超参数),模型根据输入的数据不断更新参数(权重),最终到迭代什儿 次,参数(权重)几乎不变化。当输入新的数据,就会预测该数据的结果,也就让点击率了。

越来越 有越来越 很好奇要怎样搭建并训练出有五个多好的 CTR 预估模型呢?

一、模型迭代过程

推荐系统什儿 场景常用的两大分类:CF-Based(协同过滤)、Content-Based(基于内容的推荐)。

协同过滤 (collaborative filtering) 就让指基于用户的推荐,用户 A 和 B 比较这类于,越来越 A 喜欢的 B 也愿因 喜欢。基于内容推荐是指物品 item1 和 item2 比较这类于,越来越 喜欢 item1 的用户多半也喜欢 item2。

对于接下来的模型无论是传统的机器学习还是结合现今火热的深度1学习模型后该 针对场景需求构建特性建模。

LR(Logistics Regression)==>

MLR(Mixed Logistic Regression)==>

LR+GBDT(Gradient Boost Decision Tree)==>

LR+DNN(Deep Neural Networks)即 Wide&Deep==>

1.1、LR

所谓推荐也就离不开 Rank 什儿 间题图片,要怎样讲不同的特性组通过有五个多表达式计算出分数的高低并排序是推荐的核心间题图片。通过线性回归的土办法找到一组满足什儿 规律的参数,公式如下:

再通过 sigmoid 函数将输出映射到(0,1)之间,得出二分类概率值。

LR 模型时不时 是 CTR 预估的 benchmark 模型,原理通俗易懂、可解释性强。要怎样让当特性与特性之间、特性与目标之间位于非线性关系时,模型效果就会大打折扣。要怎样让模型十分依赖大伙根据经验提取、构建特性。

另外,LR 模型可不可否 正确处理组合特性,这类于:年龄和性别的组合,不同年龄段不同性别对目标的偏爱程度会不相同,要怎样让模型无法自动挖掘什儿 隐含信息,依赖人工根据经验组合特性。这也直接使得它表达能力受限,基本里可不可否 正确处理线性可分或近似线性可分的间题图片。

为了让线性模型可不可否 学习到原始特性与拟合目标之间的非线性关系,通常还要对原始特性做什儿 非线性转换。常用的转换土办法包括:连续特性离散化、向量化、特性之间的交叉等。稍后该 介绍为哪些地方原先正确处理。

1.2、MLR

它大慨聚类+LR 的形式。将 X 聚成 m 类,之前 把每个类单独训练有五个多 LR。MLR 相较于 LR 有更好的非线性表达能力,是 LR 的一种生活生活拓展。

大伙知道 softmax 的公下:

将 x 进行聚类,即得拓展之前 的模型公式:

当聚类数目 m=1 时,退化为 LR。m 越大,模型的拟合能力越强,m 根据具体训练数据分布来设置。

图 2 MLR 模型特性

要怎样让 MLR 与 LR 一样,同样还要人工特性工程正确处理,愿因 目标函数是非凸函数(易陷入局部最优解),还要预训练,不然愿因 会不收敛,得可不可否 好的模型。

1.3、LR+GBDT

顾名思义 LR 模型和 GBDT 模型组合。GBDT 可做回归与分类,什儿 看另一方的需求。在 CTR 预估什儿 任务中要使用的是回归树而非决策树。梯度提升也就让朝着梯度下降的方向上建树,通过不断更新弱分类器,得到强分类器的过程。

每一子树与否学习之前 树的结论和的残差,通过最小化 log 损失函数找到最准确的分支,直到所有叶子节点的值唯一,愿因 达到树的深度1达到预设值。愿因 某叶子节点上的值不唯一,计算平均值作为预测值输出。

LR+GBDT:

Facebook 率先提出用 GBDT 模型正确处理 LR 模型的组合特性间题图片。特性工程分为两主次,一主次特性通过 GBDT 模型训练,把每颗树的叶子节点作为新特性,加入原始特性中,再用 LR 得到最终的模型。

GBDT 模型可不可否 学习高阶非线性特性组合,对应树的十根绳子 路径(用叶子节点来表示)。通常用 GBDT 模型训练连续值特性、值空间不大(value 种类较少)的特性,空间很大的特性在 LR 模型中训练。原先就能把高阶特性进行组合,一齐又能利用线性模型正确处理大规模稀疏特性。

图 3 LR+GBDT 模型特性图

1.4、LR+DNN(Wide&Deep)

先回想一下大伙学习的过程。从出生时代,不断学习历史知识,通过记忆达到见多识广的效果。要怎样让通过历史知识泛化 (generalize) 到之前 没见过的。要怎样让泛化的结果不一定都准确。记忆 (memorization) 又可不可否 修正泛化的规则 (generalized rules),作为特殊去正确处理。这就让通过 Memorization 和 Generalization 的学习土办法。

推荐系统还要正确处理有五个多间题图片:

记忆能力: 比如通过历史数据知道「喜欢吃水煮鱼」的也人「喜欢吃回锅肉」,当输入为「喜欢吃水煮鱼」,推出「喜欢吃回锅肉」

泛化能力: 推断在历史数据中从未见过的具体情况,「喜欢吃水煮鱼」,「喜欢吃回锅肉」,推出喜欢吃川菜,进而推荐出什儿 川菜

要怎样让,模型普遍都位于有五个多间题图片:

偏向于提取低阶愿因 高阶的组合特性,可不可否 一齐提取什儿 种生活类型的特性。

还要专业的领域知识来做特性工程。

线性模型结合深度1神经网络为哪些地方叫做 wide and deep 呢?

无论是线性模型、梯度下降树、因子分解机模型,与否通过不断学习历史数据特性,来适应新的数据,预测出新数据的表现。这说明模型要具备有五个多基本特性记忆能力,也就让 wide 主次。

要怎样让当输入什儿 之前 越来越 学习过的数据,此时模型表现却不优秀,可不可否 根据历史数据,有机组合,推出新的正确结论。此时单单依赖记忆能力是缺陷的。深度1学习却可不可否 构建多层隐层通过 FC(全连接)的土办法挖掘到特性与特性之间的深度1隐藏的信息,来提高模型的泛化能力,也就让 deep 主次。将这两主次的输出通过逻辑回归,得出预测类别。

图 4 Wide & Deep 模型特性图

它混合了有五个多线性模型(Wide part)和 Deep 模型 (Deep part)。这两主次模型还要不同的输入,而 Wide part 主次的输入,依旧依赖人工特性工程。本质上是线性模型 (左边主次, Wide model) 和 DNN 的融合 (右边主次,Deep Model)。

对于历史数据特性保证一定的记忆能力,对于新的数据特性拥有推理泛化能力。较大地提高了预测的准确率,这也是一次大胆的尝试,在推荐系统中引入深度1学习,在之前 的 CTR 模型发展中大多什儿 是按照此设计思路进行的。

1.5、数据正确处理

CTR 预估数据特点:

输入含高高类别型和连续型数据。类别型数据还要 one-hot(独热编码), 连续型数据可不可否 先离散化再 one-hot,也可不可否 直接保留原值。

维度非常高,特性值怪怪的多。

数据非常稀疏。如:city 含高各种不同的地方。

特性按照 Field 分组。如:city、brand、category 等都属于有五个多 Field,愿因 将哪些地方地方 Field 拆分为多个 Fidld。

正负样本不均衡。点击率一般都比较小,极少量负样本位于。

要怎样高效的提取哪些地方地方组合特性?CTR 预估重点在于学习组合特性。注意,组合特性包括二阶、三阶甚至更高阶的,复杂性的特性,网络不太容易学习、表达。一般做法是人工设置相关知识,进行特性工程。要怎样让原先做会非常耗费人力,另外人工引入知识就让能 做到全面。

1.6、模型搭建

以 Wide and Deep 为例,介绍网络的搭建。在 tensorflow.estimator 下有构建好的 API,下面将简要介绍要怎样使用它。

Wide 中不断提到原先一种生活生活变换用来生成组合特性:

tf.feature_column.categorical_column_with_vocabulary_list(file)()。知道所有的不同取值,要怎样让取值太多。可不可否 通过 list 愿因 file 的形式,列出还要训练的 value。

tf.feature_column.categorical_column_with_hash_bucket(),不知道所有不同取值,愿因 取值多。通过 hash 的土办法,生成对应的 hash_size 个值,要怎样让愿因 会时不时 出现哈希冲突的间题图片,一般我太多 产生哪些地方影响。

tf.feature_column.numeric_column(),对 number 类型的数据进行直接映射。一般会对 number 类型 feature 做归一化,标准化。

tf.feature_column.bucketized_column(),分桶离散化构造为 sparse 特性。什儿 做法的优点是模型可解释高,实现快速高效,特性重要度易于分析。特性分区间之前 ,每个区间上目标(y)的分布愿因 是不同的,从而每个区间对应的新特性在模型训练始于后都能拥有独立的权重系数。

特性离散化大慨把线性函数变成了分段线性函数,从而引入了非线性特性。比如不同年龄段的用户的行为模式愿因 是不同的,要怎样让太多愿因 年龄越大就对拟合目标(比如,点击率)的贡献越大,要怎样让直接把年龄作为特性值训练就太多花费。而把年龄分段(分桶正确处理)后,模型就可不可否 学习到不同年龄段的用户的不同偏好模式。

tf.feature_column.indicator_column(),离散类型数据转换查找,将类别型数据进行 one-hot,稀疏变量转换为稠密变量。

tf.feature_column.embedding_column(),(加深 feature 维度,将特性向量化,可使模型学到深度1次信息),对于 RNN 含高 tf.nn.embedding_lookup(), 将文字信息转为向量,具体算法可不可否 自行查一下。

离散化的什儿 好处还包括对数据中的噪音有更好的鲁棒性(异常值也落在有五个多划分区间,异常值一种生活生活的大小我太多 过度影响模型预测结果);离散化还使得模型更加稳定,特性值一种生活生活的微小变化(可不可否 还落在原先的划分区间)我太多 引起模型预测值的变化。

tf.feature_column.crossed_column(),构建交叉类别,将有五个多愿因 有五个多以上的 features 根据 hash 值拼接,对 hash_key(交叉类别数)取余。特性交叉是另一种生活生活常用的引入非线性性的特性工程土办法。

通常 CTR 预估涉及到用户、物品、上下文等几方面的特性,有时某个单个 feature 对目标判定的影响会较小,而多种类型的 features 组合在一齐就可不可否 对目标的判定产生较大的影响。比如 user 的性别和 item 的类别交叉就可不可否 刻画这类于「一个女人偏爱女装」,「男性喜欢男装」的知识。交叉类别可不可否 把领域知识(先验知识)融入模型。

Deep 主次,通过 build_columns(), 得到可分别得到 wide 和 deep 主次,通过 tf.estimator.DNNLinearCombinedClassifier(),可设置隐藏层层数,节点数,优化土办法(dnn 中 Adagrad,linear 中 Ftrl),dropout,BN,激活函数等。将 linear 和 dnn 连接起来。将点击率设置为 lebel1,从经验实测效果上说,理论愿因 这里就不赘述了。

将训练数据序列化为 protobuf 格式,加快 io 时间,设置 batch_size、epoch 等参数就可不可否 训练模型了。

二、模型优化

对于不同数据,选者不同的 features,不同的数据清理土办法,模型效果也会有不同,通过测试集验证模型评价指标,对于 CTR 预估模型来说,AUC 是关键指标(稍后介绍)。一齐监测查准(precision),查全率(recall),选者模型还要优化的方向,对于正负不均衡具体情况还可不可否 加大小样本的权重系数。

一般来说,AUC 指标可不可否 达到 0.7-0.8。当 AUC 在什儿 范围时,愿因 准确率较低,说明模型效果还有待提高,可不可否 调整隐藏层数目(3-5)层和节点数(2**n,具体看另一方的 features 输出维度),构建组合特性,构建交叉特性。学习率可设置有五个多稍微大点的初始值,要怎样让设置逐渐衰减的学习率,加快收敛。优化手段千变万化,掌握其本质,在尽愿因 学习到更多的特性性正确处理过拟合。具体优化优化土办法由模型的表现来决定。

三、模型评估

AUC(Area under Curve):Roc 曲线下的面积,介于 0.5 和 1 之间。AUC 作为数值可不可否 直观的评价分类器的好坏,值越大越好。

直观理解就让:AUC 是有五个多概率值,当你随机选者有五个多正样本以及负样本,当前的分类算法根据计算得到的 Score 值将什儿 正样本排在负样本前面的概率就让 AUC 值,AUC 值越大,当前分类算法越有愿因 将正样本排在负样本前面,从而可不可否 更好地分类。

下表是经过调整后,不同算法实现的模型效果对比表:

图 5 模型效果对比表

不断优化后得出有多少模型的不同效果,将每一次广告曝光按照预测的 CTR 从小到大排序,可不可否 根据预测的 CTR 值根据 ECPM 公式,按照单位曝光量统计出预估的 ECPM 和真实的 ECMP 进行比较,就可不可否 知道预估的 CTR 值与否可靠了。

正确预估 CTR 是为了把真正高 CTR 的广告挑出并展示出来么,错误地预估——把高的 CTR 低估或把低的 CTR 高估后该 让高的 ECPM 我太多 排在最前面。在实际的实践过程中,CTR 预测正确通常 ECPM、CTR、收入哪些地方地方指标通常后该 涨。

四、模型部署

通常对于 AI 算法模型与否通过 GPU 服务器部署模型,要怎样让对于推荐系统类算法逻辑计算较多,在下行速率 上反而越来越 优势,部署成本也比较高,经济性很差。什儿 大都通过 CPU 云服务器部署,要怎样让下行速率 又缺陷理想。越来越 有越来越 另外一种生活生活愿因 ?

答案是肯定的,可不可否 通过 FPGA+CPU 的土办法,大型推荐系统的上线与否通过云端部署,一齐用在线和离线土办法更新模型。雪湖科技 FPGA 开发团队把以 Wide and Deep 为基础网络的模型移植到阿里云 FPGA 服务器 F3(FPGA:VU9P)上,用户可不可否 通过镜像文件部署。模型精度损失可控制在千分之一。

相较于 CPU 服务器,FPGA 服务器的吞吐量提高了 3~5 倍。当模型更新时,通过雪湖科技提供的工具可直接载入模型参数,可做到一键式更新模型参数。

五、CTR 模型发展

Wide&Deep 虽然效果很好,要怎样让随着算法的不断迭代基于 Wide&Deep 模型思想,有什儿 新的模型被开发出来,基本思想是用 FM、FFM 代替 LR 主次,通过串联愿因 并联的土办法与 DNN 主次组合成新的模型,这类于 FNN,PNN,DeepFM,DeepFFM,AFM,DeepCross 等等,雪湖科技公司也致力于将所有 CTR 预估模型都完美兼容,在保证精度的前提下,增大吞吐量。

注:文章内的所有配图皆为网络转载图片,侵权即删!