首页 > 编程知识 正文

如何理解参数方程,车胎尺寸参数怎么理解

时间:2023-05-04 20:00:08 阅读:158146 作者:3553

原文: 3359 www.Sohu.com/a/251772910 _ 633698

什么是CTR报价

CTR(click-through-rate )或点击直通率是互联网广告中常用术语,是互联网广告(照片广告/文字广告/关键词广告/排行榜广告/视频广告等)的点击到达

CTR是衡量网络广告效果的重要指标。

CTR估计数据特征:

输入包括类别类型和连续类型的数据。 类型数据需要one-hot,连续型数据可以离散化后再one-hot,重点是保留原始值维数非常高的数据的非常稀疏的特征,按照Field对CTR进行分组来学习特征。 请注意,组合的特征包括二阶、三阶或更高阶的,阶数越高越复杂,不容易学习。

谷歌的论文研究表明,高阶和低阶组合的特征非常重要,同时学习到这两种组合特征的性能优于只考虑其中一种。

那么,重要的问题是如何有效地提取这些组合的特征。 一种方法是引入领域知识人工进行特色工程。 这样做的弊端是提取高次组合的特征非常困难,需要大量的劳动力。 另外,有名的“尿布和啤酒”问题等,隐藏在数据中的组合特征,专家也未必能提取出来。

在DeepFM提出之前,已经有LR、FM、FFM、FNN、PNN (以及三种变体,IPNN、OPNN、PNN* )、WideDeep模型,这些模型可以是CTR或推荐系统

CTR模型演化历程

1. 线性模型

最初在CTR和推荐系统领域,一些线性模型取得了良好的效果。 例如LR、FTRL。

线性模型有致命的缺点。 无法提取高阶组合特征。 所以常用的是人为加入pairwise feature interactions。

即使如此,对于出现很少或者没有出现的组合特征和高次组合特征也无法提取。

LR的最大缺点是不能组合特征,并且依赖于人工特征的组合,这也直接限制了其表示能力,并且基本上只能处理线性可分离或者接近线性可分离的问题。

2. FM模型

线性模型出乎意料,调频模型诞生了。 (在Kaggle比赛并提交,取得了第一名的成绩)。

FM以隐向量latent vector为内积表示组合特征,理论上解决了低阶和高阶组合特征提取的问题。

但在实际应用中受到计算复杂度的限制,一般只考虑二阶交叉特征。

后来进行了改进,提出了FFM,增加了Field的概念。

3. 遇上深度学习

随着DNN在图像、语音、NLP等领域的突破,人们意识到DNN在特征表示方面的天然优势,相继提出了利用CNN或RNN进行CTR估计的模型。

但是,CNN模型的缺点是偏向于学习邻接特征的组合特征。 RNN模型的缺点是比较适合于有序列(时间序列)关系的数据。

FNN的建议应该是一个非常好的尝试,使用预先训练的FM得到隐藏向量,然后作为DNN的输入来训练模型。 缺点是受限于调频预训练的效果。

随后,提出了PNN,为了捕捉高阶组合特征,PNN在嵌入层和第一隐藏层之间增加了产品层。

根据产品层采用内积、外积、混合分别推导出IPNN、OPNN、PNN*种。

无论是FNN还是PNN,他们都有绕圈子的缺点。 关于低次组合的特征,学习很少。 如上所述,低阶特征对CTR也非常重要。

谷歌注意到了这个问题,为了同时学习低阶和高阶组合的特征,提出了WideDeep模型。

线性模型(Wide part )和深度模型(Deep part )混合在一起。 这两个模型需要不同的输入,但Wide part部分的输入仍然依赖于人工特征工程。

但是,这些模型一般有两个问题。

偏重于提取低阶或高阶组合特征。 不能同时提取这两种类型的特征。 需要专业领域的知识。

DeepFM基于WideDeep进行了改进,解决了这两个问题,并进行了一些改进。 其优点/优点如下。

不事先训练调频就不需要得到隐藏的向量。 人工特征工程可以同时学习低阶和高阶组合特征FM模块和Deep模块共享Feature Embedding部分。 可以更快地训练,可以进行更正确的训练和学习。 那么,我们进入DeepFM的世界,看看它是如何解决这些问题的吧。

DeepFM

主要做法如下:

首先,使用FM组件深度组件。 FM提取高阶组合特征,Deep提取高阶组合特征。 但是,与WideDeep不同,DeepFM是端到端的训练,不需要人工特征工程。

接下来,共享feature embedding。 FM和Deep共享输入和feature embedding不仅可以加快训练速度

得训练更加准确。

相比之下,Wide&Deep中,input vector非常大,里面包含了大量的人工设计的pairwise组合特征,增加了他的计算复杂度。

DeepFM架构图:

1. FM Component

FM部分的输出由两部分组成:一个Addition Unit,多个内积单元。

这里的d是输入one-hot之后的维度,我们一般称之为feature_size。对应的是one-hot之前的特征维度,我们称之为field_size。

FM架构图:

Addition Unit反映的是1阶的特征。内积单元反映的是2阶的组合特征对于预测结果的影响。

注意:

虽然公式上Y_fm是所有部分都求和,是一个标量。但是从FM模块的架构图上我们可以看到,输入到输出单元的部分并不是一个标量,应该是一个向量。

实际实现中采用的是FM化简之后的内积公式,最终的维度是:field_size + embedding_size

这里分别展开解释下维度的两部分是怎么来的,对于理解模型还是很重要的:

第一、field_size对应的是

这里的X是one-hot之后的,one-hot之后,我们认为X的每一列都是一个单独的维度的特征。

这里我们表达的是X的1阶特征,说白了就是单独考虑X的每个特征,他们对最终预测的影响是多少。

是多少那?是W!W对应的就是这些维度特征的权重。假设one-hot之后特征数量是feature_size,那么W的维度就是 (feature_size, 1)。

这里 是把X和W每一个位置对应相乘相加。由于X是one-hot之后的,所以相当于是进行了一次Embedding!X在W上进行一次嵌入,或者说是一次选择,选择的是W的行,按照X中不为0的那些特征对应的index,选择W中row=index的行。

这里解释下Embedding: W是一个矩阵,每一行对应X的一个维度的特征(这里是one-hot之后的维度,一定要注意)。W的列数为1,表示嵌入之后的维度是1。

W的每一行对应一个特征,相当于是我们拿输入Xi作为一个index, Xi的任意一个Field i中只有1个为1,其余的都是0。哪个位置的特征值为1,那么就选中W中对应的行,作为嵌入后这个Field i对应的新的特征表示。

对于每一个Field都执行这样的操作,就选出来了X_i Embedding之后的表示。注意到,每个Field都肯定会选出且仅选出W中的某一行(想想为什么?),因为W的列数是固定的,每一个Field都选出W.cols作为对应的新特征。

把每个Field选出来的这些W的行,拼接起来就得到了X Embedding后的新的表示:维度是num(Field) * num(W.cols)。虽然每个Field的长度可能不同,但是都是在W中选择一行,所以选出来的长度是相同的。

这也是Embedding的一个特性:虽然输入的Field长度不同,但是Embedding之后的长度是相同的。

什么?Embedding这么复杂,怎么实现的?非常简单!直接把X和W做内积即可。是的,你没看错,就是这么简单(tensoflow中封装了下,改成了tf.nn.embedding_lookup(embeddings, index),原理就是不做乘法,直接选出对应的行)。

自己写个例子试试:X.shape=(1, feature_size), W.shape = (feture_size, embedding_size)就知道为什么选出1对应W的行和做内积结果是一样的是怎么回事了。

所以:FM模块图中,黑线部分是一个全连接!W就是里面的权重。把输入X和W相乘就得到了输出。至于Addition Unit,我们就不纠结了,这里并没有做什么加法,就把他当成是反应1阶特征对输出的影响就行了。

FM论文中给出了化简后的公式:

这里最后的结果中是在[1,K]上的一个求和。 K就是W的列数,就是Embedding后的维度,也就是embedding_size。也就是说,在DeepFM的FM模块中,最后没有对结果从[1,K]进行求和。而是把这K个数拼接起来形成了一个K维度的向量。

FM Component总结:

FM模块实现了对于1阶和2阶组合特征的建模。没有使用预训练没有人工特征工程embedding矩阵的大小是:特征数量 * 嵌入维度。 然后用一个index表示选择了哪个特征

需要训练的有两部分:

input_vector和Addition Unit相连的全连接层,也就是1阶的Embedding矩阵Sparse Feature到Dense Embedding的Embedding矩阵,中间也是全连接的,要训练的是中间的权重矩阵,这个权重矩阵也就是隐向量V

Deep Component

Deep Component架构图:

Deep Component是用来学习高阶组合特征的。网络里面黑色的线是全连接层,参数需要神经网络去学习。

由于CTR或推荐系统的数据one-hot之后特别稀疏,如果直接放入到DNN中,参数非常多,我们没有这么多的数据去训练这样一个网络。所以增加了一个Embedding层,用于降低纬度。

这里继续补充下Embedding层,两个特点:

尽管输入的长度不同,但是映射后长度都是相同的.embedding_size 或 kembedding层的参数其实是全连接的Weights,是通过神经网络自己学习到的

Embedding层的架构图:

值得注意的是:FM模块和Deep模块是共享feature embedding的(也就是V)。

好处:模型可以从最原始的特征中,同时学习低阶和高阶组合特征 不再需要人工特征工程。Wide&Deep中低阶组合特征就是同过特征工程得到的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。