计算广告并不是一门独立的学科,它更应该被看成是一个工业界的具体问题。
在进入具体的广告技术和算法之前,先概要性的介绍几个相关领域的技术和算法,为后面的算法章节做铺垫。
1. 信息检索
1.1 倒排索引
倒排索引是现代搜索引擎的核心技术之一,其核心目的是将从大量文档中查找某些词的文档集合这一任务,用o(1)或o(logn)的时间复杂度完成。
假设有如下几篇文档:
D0=“谷歌地图之父跳槽Facebook”
D1=“谷歌地图之父加盟Facebook”
D2=“谷歌地图创始人离开谷歌加盟Facebook”
D3=“谷歌地图创始人跳槽Facebook与Wave项目取消有关”
D4=“谷歌地图创始人拉斯加盟社交网络Facebook”
对每篇文档都进行分词、去除’与’这样的没有实际表意作用的停止词,之后建立一个倒排索引,也就是所有关键词的倒排链集合。表示如下:
谷歌->{D0,D1,D2,D3,D4}
地图->{D0,D1,D2,D3,D4}
之父->{D0,D1}
跳槽->{D0,D3}
……
倒排索引最基本的操作有两项:一是向索引中加入一个新文档,二是给定一个由多个关键词组成的查询时,返回对应的文档集合。
1.2 向量空间模型
向量空间模型考虑将文档向量化表示,是度量文档相似度的主要方法之一,向量空间模型的核心主要有两点,文档的表示方法和相似度计算方法。这里使用词袋(bag of words,BoW)假设,
对每个关键词,可以采用TF-IDF表示。
TF-IDF = TF*IDF,其中(图片取自维基百科)
TF
IDF 文档可以表示为 文档矢量 采用BoW的文档表示方法,在计算两个文档相似度时,一般采用其对应矢量的余弦距离: 向量的余弦矩阵
基于上述内容,可以建立起对海量文档进行检索的基本方案。在离线索引阶段,对文档集合进行分词,并按照BoW模型表示得到每个文档的TF-IDF矢量,对分此后的文档集合建立倒排索引。当在线查询到来时,也进行分词,从倒排索引中查出所有符合要求的文档候选,并对其中的每个候选评价其与查询的与仙居路,按距离由小到大进行排序。
2. 最优化方法
比上面的向量空间模型更加有效的计算广告方案,一般就要涉及到与数据挖掘和机器学习相关的算法问题,这一类都可以归为最优化问题。
最优化问题讨论的是,给定某个确定的目标函数,以及该函数自变量的一些约束条件,求解该函数的最大或最小值的问题,这样的问题可以表示为下面的一般形式: 最优化问题的一般形式其中f(x)是关于自变量的目标函数,而g(x)和h(x)为x的矢量函数。对应着一组不等式和等式约束约束条件。
根据约束条件以及目标函数的性质不同,最优化问题求解的思路也有很大的不同。其中无约束优化问题的方法是基础,而带约束优化问题则在一定条件下可以转化为无约束优化问题来求解,以下对优化方法进行一个梳理。(涉及方法较多,这里不详细展开)
-
带约束优化方法
- 拉格朗日法和凸优化
-
无约束优化方法
-
不可导或代价极大
- 下降单纯形法(又称阿米巴变形虫法)
-
可导
-
梯度下降法
-
批梯度下降
-
随机梯度下降
-
动量Momentum
-
AdaGrad
-
-
-
-
拟牛顿法(快速最优化)
3. 统计机器学习
这里很抱歉关于最大熵和EM算法笔者并没有看得太懂,以后有时间会补齐这个部分。
3.1 最大熵与指数族分布
最大熵原理:在某些约束条件下选择统计模型时,尽可能选择满足这些条件的模型中不确定性最大的那个。
3.2 混合模型和EM算法
EM算法是为了解决有隐变量存在时的最大似然估计问题的,每个迭代可以分为E-step和M-step:在E-step阶段,我们将参数变量和观测变量都固定,得到隐变量的后验分布;而在M-step阶段,我们将用得到的隐变量的后验分布和观测变量再去更新参数变量。
4.统计模型分布式优化框架
略
5.深度学习
深度神经网络并不是近年才有的新模型,要让复杂的网络结构发挥优势,一定要有大量的数据才行。目前开源的神经网络工具软件主要有tensorflow、caffe、mxnet等。
5.1 MLP(多层感知机)
MLP多层感知机示意图输入层的每一个节点代表一个已知的输入变量,在隐藏层中,每个节点接受前一级的输入,通过一个神经元的非线性变换(称为激活函数),将其映射为一个新变量,经过多层的映射后,输出层负责将最后一个隐藏层的变量加工为最终的输出变量,输出变量有可能是一个,也可能是多个。
5.2 卷积神经网络(CNN)
卷积层卷积神经网络是一种常见的深度神经网络,主要用于图像处理领域。
图像处理主要有两个特点:
- 局部感知。在图像上提取编译、发现物品等操作,往往只需要聚焦在图上的一个局部范围中。
- 参数共享。视觉元素的特征与位置无关,因此,在同一层中的不同神经元,可以共享一样的输入变量的权重。
5.3 循环神经网络(RNN):
循环神经网络主要用于处理时间序列数据的建模,典型例子是语音识别和机器翻译。
下面是RNN的网络结构
循环神经网络
可以看出,RNN在每个t时刻的局部结构是递归重复的、为了便于表达,也可以将其表达为图左侧的形式,其中的黑色方块表示该条边是到下一个时间单元相应位置的输入。在每一个时刻,其更新公式为:
image.png
由于RNN自身的特性,有时会导致反向传播的梯度过大也有可能会导致梯度极小,这会导致优化识别,因此为了解决这些问题,推出了长短时记忆LSTM以及GRU。
5.4 生成对抗网络(GAN):
生成对抗网络GAN一般来说,虽然发生扰动但人眼可能识别不出来会导致误分类的样本称为对抗样本,利用这种样本可以得到对抗网络,模型既训练正常的样本也训练这种自己造的对抗样本,从而改进模型的泛化能力。
对抗网络通常包含一个生成模型G和一个判别模型D,生成模型用噪声数据生成一个类似真实训练数据的样本,追求效果是尽可能像真实样本,D是一个二分类器,估计一个样本来自训练数据(而非生成数据)的概率。
训练时,通过固定一个模型的参数,更新另一个模型的参数,交替迭代,使对方的错误最大化。最后的目标是使G能准确描述出样本数据的分布。
章节相关名词
- VSM 向量空间模型 vector space model
- BoW 词袋 bag of words
- CNN 卷积神经网络 Convolutional Neural Network
- RNN 递归神经网络 Recursive Neural Network
- GAN 生成对抗网络 Generative Adversarial Net
- IR 信息检索 Information Retrieval
网友评论