七月在线公开课笔记(二十九)

人工智能—深度学习公开课(七月在线出品) - P3:NeuralStyle艺术化图片(学梵高作画背后的原理) - 七月在线-julyedu - BV1EW411K7Mw

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们先提一下new style,我不知道这个部分,老师有没有给大家第五节课的时候,老师有没有给大家提到啊,所以这个是给大家的一个当时一个承诺。我们说我们做了这个实验,一定会给大家讲清楚这个原理。

所以我今天一定会一定会给大家讲清楚new style的原理,我希望大家能够呃仔细的听。而且一会儿我会带大家看一眼代码好吗?

所以new style呢源于这个2015年的这篇论文叫做 neural a of啊,反正大大大概就是说我能够造出来一些具有艺术风格的这样一些话,它做的事情非常的简单,说我有一张原始的图片。

我有一张大师的手绘图,我能生成一张具有大师手绘图的这样一张图片。原始照片的风格的这样的一张图片。对吧所以大家看到了这样一些结果,对不对?所以大家都在画这个梵高的画。

毕加索的画啊呃毕得到梵高风格或者是毕加索风格的这样一些照片。好,所以这个东西它是怎么去做的呢?我仔细的讲,大家也仔细的听,有问题,随随时提出来。我原始输入是不是会有两两部分的东西。

有一部分是我的原始的照片,有一部分是大师的手绘的风格图。我有两个组件,对吧?这是我的输入,有这么两幅图。我希望得到一个结果是我得到的结果是第三幅图,对不对?那这个地方要提到一个概念,这个概念是。

你怎么去评估两幅图之间的相近度?相近度包括两个内容的相近度。有一个相近度是我在内容上的相近度,叫做content similarity。所以在它的基础上,我会得到一个counttent loss。

听清楚了,这个东西衡量的是。你得到的最终的结果和我原始结果在内容上的一个相近度。大大家先不要管细节,这一点大家理解清楚了吗?有这么一个概念叫做conent loss。

叫做conent similarity评估的是这样一个东西。好。所以你怎么去说我这幅图像具有大师的手绘图的风格呢?所以一定会有一个风代替风格的相近度的这样一个东西。这个东西叫syle loss。

所以听清楚吗?有两个组件,第一个组件叫做conent loss,第二个叫做style loss。接着这两个东西会不断的打架。我就告诉大家,训练的过程是一个他们俩在不断的斗争的一个过程。

因为当他的在内容上和原始图非常接近的时候,他就比较难去学到那种抽象的大师手绘图的风格。啊,当他在风格上和大师的手绘图非常接近的时候,他在内容上就会丧失掉一部分的可理解性。所以从广义上来说。

这个地方会有两部分的loss。因为所有的mine learning的问题都是我会定义一个los function损失函数。接着我会不断的去最小化这个样一个损失函数,对不对?

大家告诉我这个这个概念大家有吧?所有的 machine型 learningning的问题。大部分情况下有监督的问题,我们都会定义一个los function,或者叫做cost function代价函数。

我们会不断的去最小化这样一个东西。好。所以这里头会有两个损失,会有两个los。第一个los叫做countant loss是评估它和原图里头内容的一个相近度。第二个lo叫做style loss。

它评估的是和原图的一个风格的一个接接近度啊,一个风格的一个差异度,我们应该叫啊,上面这个是和内容的一个差异度。接着我会把这两部分组在一起,说,你一直给我最小化一下吧。然后它就会在里面不断的斗争。好。

我先提到这样一个点,接着我们再往下看。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

啊,下面这一页呢就会有非常非常复杂的公式。所以为了避免大家看到公式头晕,我决定给大家呃用很通俗易懂的方式去讲这个东西。大概是在这个15年的时候呢,这个德国小哥啊,这个论文最早源于源于德国的一个小哥啊。

这个德国小哥当时在做算法的改进,所以他就在想,他说我能不能有一个办法去得到一个更好的一个神经网络呢?所以他在想我有哪些优化的点呢?他就开始思考他说哎要不我来试试lo function吧损失函数嘛。

因为大家一般都是用的一些啊ok cross entropylo或者是一些ing loss吧VM他说我能不能去造一造一些别的lo出来呢?他就开始自己做实验了,做了一堆实验。

后来就发现哎这话居然发现了一个新的lo function这个lo function非常非常的神奇,他能够衡量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

它能够衡量。两幅图之间的一个个性化风格的一个相近度。有那样的一个概念,能评估它们之间的一个相近度,或者说一个差异度。ok。😊,所以。那个。okK这个我我先我说这个德国小哥他在做实验啊。

所以大家大家之前做的事情呢都是一些这个cros entropy loss,或者是这个L two的这个lo。然后。接着这个时候他他去做这个事情的话。

他想一想我们有没有其他的一些方式可以去衡量图片之间的一个差异度,对吧?OK所以。我们来看一看count loss和这个style loss都是怎么怎么求出来的。呃,这个东西看起来好吧。

我们直接这么说好了。有一幅图片,这幅图片过了一个卷积神经网络以后。告诉我,如果我抽啊举个例子啊,我抽的这个地方是第五个卷积层,我的卷积层是不是1个HC乘以H乘以W的一个矩阵呢?

一个特征一个一个feature map,一个特征矩阵啊,其中的C表示前一层有C个小朋友表示我有C个通道H和W分别是我现在。但长度。那那大家这个能理解到吗?这个大家没问题吧。😡,OK所以听清楚啊。

这个时候会有H会有W,对吧?会有C,对吧?我们来举一个例子啊,我们来举一个例子,我们假设现在C是512。OK前面一层有512个小朋友,A,W和H呢分别是64乘以64好了。所以。

我们怎么去衡量countant loss呢?这里头这个东西很有意思啊。如果如果有同学去了解这个,比如说淘宝的拍立淘是怎么做的,因为拍立淘他要做的事情不就是去搜索这个商品。

你拍的这个商品在我的库里面到底有还是没有嘛。所以它肯定是一个评估这个你的这个商品的内容,实际内容的这么一个。一一套准则嘛,可以他是怎么去做的呢?😡,你的。这个原始代表内容的这幅图。

一号图是不是过这样一个卷积神经网络以后,是不是会拿到这样一个结果,512乘以64乘以64的结果。没有问题吧。我最后训练得到的这个结果,是不是先不要管结果怎么训练得到的啊,我就问大家。

假如我现在已经有一张图片了,我要衡量他们两个之间在内容上有多大的差异。我这张图去过这样一个卷积神经网络,把第5个卷积层的结果拿出来,是不是也会有一个512乘以604乘以60字的一个feture map。

这个大家能听明白吗?ok没有问题,对吧?好,所以我现在用两个这样的举阵。好,我现在要开始给大家讲了啊,这个count loss和style loss分别是怎么来的啊?

countent loss是这样说的。因为每一层听清楚啊,这个channelC个channel通道里头,每一个通道的结果是怎么得到的呀,是不是一个小朋友看的呀?是不是一个小朋友看到的呀?

所以我直接就去比对同样一个小朋友看到两幅图的结果的一个差异不就可以了吗?所以他做的事情非常非常的简单。我把每一层的64乘以64的矩阵,这样一个矩阵去做一个差值主点的差值。我把这个差值的这个。

平方加和加在一起。这个大家能理解吗?能理解我说的意思吗?你有512个小朋友,我对,是一个类似L two的一个一个计算方式。我把每一个小朋友看到的两幅图的差异算出来。

也就是每一个小朋友啊对应第一个第一个位置,第一个faature map啊,这一层的faature map,在两幅图上的差异,64乘以64个矩阵,这个矩阵去做主点的差值,再去求一个平方和。

就是大家看到的这个地方。这个公式现在大家能看明白了吗?现在大家能看明白了吗?这是。同一层看到了吧?这个L表示是一层,同一层去。主点做差,把它们差值的平方求和。

表示我两幅图在内容上的差异度可以定义出来一个countent loss。大家告诉我这个部分都跟上了吗?countent loss好,没有问题。所以德国小哥最大的创新在于下面那个style loss。

你来想一想风格这个东西。怎么去体现风格啊?怎么去体现风格这样一个东西啊?你想一想啊,这个地方有512个小朋友。是不是每个小朋友会有自己的一套世界观,一套价值观,一套看似这幅图像的方法呀?

所以当他们两个方法之间的差异,当他们看到的东西。对同一幅图而言啊,听清楚。对同一幅图而言,两个不同的小朋友看到的东西差异度越大,是不是代表这个东西可能它本身的抽象程度或者它本身的一个一个差异度。

这个风格的差异度会。会更不一样啊。😡,所以他做了一个事情是这样的,这地方是不是有512个小朋友啊?这512个小朋友,每一个小朋,比如说一号小朋友,你告诉我他是不是1个64乘以64的矩阵。

2号小朋友是不是1个64乘以64的一个矩阵?注意啊,我说的是同一幅图得到的这这一个非ature map啊,这一个C乘以H乘以W的非ature map里头,我取了两个小朋友的结果出来。

比如说一号小朋友和2号小朋友。这两个小朋友得到的64乘以6464的矩阵,每一个位置。主点的做乘法,再把得到乘法的结果求一个和。这个运算我给大家说清楚了吗?这512个小朋友里头,我取了两个小朋友出来。

这两个小朋友是60,都是64乘以64的矩阵。我把这2个64乘以64的矩阵主点对应的点去求乘积,再做求和的操作。主点的乘法在求和点击。即。数学上叫做。这个操作大家能理解吗?

对两个不同的小朋友的解输出64乘以64的举证结果去做点击。所以总共有512个小朋友,大家告诉我,512个小朋友两两之间去做点击。我最后的结果是一个什么样的结果呀?是不是C5122啊?也就是是不是一个。

啊,你可以自己和自己啊,对是不是512乘以512的一个矩阵呢?告诉我是不是这样一个结果,是不是1个512乘以512的。结果值,因为你先从512个小朋友里头取一个出来。

再从512个小朋友里头再取一个出来去计算这两个小朋友的一个结果嘛。这一步大家能跟上吗?512乘以512的矩阵。我对每一个每一幅图,我都能得到1个512乘以512的矩阵,这个大家跟上了吗?

这个矩阵在数学上有一个定义,它叫做gramme matrix。所以我问你。刚才的512的小朋友。在原始的这幅一号在原始的这幅风格图。

2号这幅风格图上是不是会有1个512乘以512的1个gram matrix?是不是在我的结果的三号图上也会有1个512乘以512的1个gram一个gram matrix。

所以这2个512乘以512的grammatic可以去做这样的一个事情,看清楚了吗?这就是刚才我们给大家讲到的啊,你不用管它前面这个系数啊,大家先不要管这个系数,只看后面这一部分,这一部分就是两个。

grab matrix去做刚才和前面countent的 loss里头一模一样的操作,只不过我不是在原始的结果上去做差值,我是在我生成了这样1个512乘以512的结果上面去做这样一个差值。

大家听清楚了这两部分lo怎么得到的吗?这个是countent loss。因为看公式可能怕大家比较懵啊,所以我我我直接给大家讲一遍啊,这个是tyle loss。

所以countent loss和tyle loss两个东西是需要去斗争的,怎么去斗争呢?谁更重要,对吧?家里头会有这个哥哥弟弟,那哪哪个哥哥和弟弟哪个会更受父母的这个宠爱一些。

这个东西是需要你自己去定义的。所以你大家会看到前面会有一个有会有一个系数阿尔法和一个系数贝塔,他们分别去描述,到底是我内容上更重要一些,还是我的风格上接近度更重要一些。不要着急啊,我会把所有的点都讲到。

大家先follow我的。我讲到的东西先跟着看看我讲的这个东西,大家明白了没有?所以你可以说我内容上要非常接近0。90。1,也可以说我要非常强的风格接近度0。80。2,这个大家能明白吗?

我的spi loss只设计对第二张图和第三张图听清楚了,只设计第二张图和第三张图。所以我现在要开始给大。我现在要开始给大家讲到。我们是怎么去做这个训练的啊?所以刚才last function。

损式函数的定义大家都听明白了,对吧?conent loss和tyle loss,而且我们知道我的countent loss,我的内容的一个lo是在第一张图和第三张图上去求的。

我的style loss是在第二张图和第三张图上去求的对吧?我现在要开始给大家讲这个训练是怎么训练的,所以我们是这么去做训练的,你说我开始我也不知道我要生成的图到底是什么样的对吧?

所以我这个地方有3张图,O一号图,这个是countent的图,对吧?所以是照片,对吧?好,2号图是什么呢?2号图是我的大师的。手绘图对吧?大师的画对吧?那我三号图是我要生成的图,对吧?

那生成的图我也不知道这个图是什么呀,那没关系,你先给一张白的图好吗?给一个随机的结果。比如说你取一个啊okK。你取一个全零的一个矩阵好吗?没问题吧。所以这是我一个。这是我的一个X一啊,我表示我的照片。

这是我大师的画风格画啊,我表示XX2,对吧?我要生成的结果是这个X对吧?大家想一想,我们传统去训练一个卷积神经网络是怎么训练的呀?我是不是fix住我的。图片和结果我去调WY等于WX加B啊。

我们假如啊那我是不是我做的事情是不是要去训练W和B啊?这个大家能明白吗?我需要去做我传统的卷积神经网络做的事情是我固定住我的输入,我去让我的W和B最贴合我的输入和X和我的Y。对吗?😡。

这个小哥做了一些变更,他说我现在是要生成图啊,图在哪儿,图在哪儿,图是不是在X上面啊?所以我去拉了一个卷积神经网络下来,拉了一个VGG下来。他说我W不动啊。我固定住这样一组W,我只是去调整我的X。

X现在是变量。所以我每调整一次X之后,我是不是可以求出来一次conent loss,求出来一次dial loss啊。我每一个batch的图片上,我是不是sorry不是 batchch的图片啊。

我每每一次我生成的结果图上,我是不是可以求出来一个cont loss和tyle loss啊?大家跟上了吗?这个地方我拉下来了一个VGG这样的神经网络,我固定住了我所有的权重W和B,我不断的去调整我的X。

我每做一次调整,调整完我的X之后。🤧我都可以得到一个counton loss和excel loss,对吧?接着我我要最小化我刚才的这样一个公式。

阿尔法倍的counttent loss再加上贝塔贝的tial loss。变更的东西是W,听清楚了吗?你原来求的是los function,对W的偏导,我现在是求的los function,对X的偏导。

我不需要Y,我需要的东西是什么呀?我需要的东西是中间的特征,用来求这两个los,听清楚了吗?这个loss只跟我中间产出的特征有关系。这个时候我的V机G只是用来抽特征。我的微GG我要用的是它那一组W和B。

我需要用它去做一个图像的表达。我说清楚了吗?这个问题,这个video analysis这个同学。我刚才花了很大的时间给大家去讲这个los,就是我让大家明白和外没有关系。

是我中间层的产出去比对这个loss的。对你的微GG可以指forward到第第五个卷基层,这个是完全可以的。所以。OK吗?这个东西我我这么给大家讲原理,我讲清楚了吗?

从counton loss和tyle loss怎么去求到怎么去做训练。然后有兴趣的同学可以咱们可以看一眼代码啊,这个代码这是一个tensor floor写的版本。

tensor floor写的版本呢呃我我们。这个。这个有点小啊,放大一点放大一点。然后咱们来看看啊,看看到没有?这个地方有一个countent image,对吗?这个是style image,对吗?

会有一个内容图,会有一个风格图,对吗?有同学在问系数是怎么来的啊,问系数在怎么来的?这个同学回去看看我们第三节课的卷基神经网络,最后的fin tune,好吧。最后的fin呃。

我的这个代码代码的这个位代码的话,我有贴在我们的。PPT上啊,我再发到群里头一下。ok点进去,好吧,这是tens of raw代码。

因为tensor raw代码比较好读cay的话cay的话写在proto test里头了,所以会相对麻烦一些啊。所以。所以大家来看这个地方的话啊,不在这个地方啊,在这个文件里头,在这个size这个里头啊。

看清楚了啊,这个地方testflow直接load进来了一个网络load进来了一个VGG看到了吗?VGG是固定主权中的啊,这是人家训练好的模型放到model组里头,我拉下来的,我把模型载入进来了。

VGG载入进来了,然后我做的事情非常的简单,我会去求两个lo,看到countent loss了吗?大家看到countent loss了吗?怎么做的,是不是刚才这个公式。

大家看到了是我两幅图里头抽出来的这个这个layer,然后直接去做差值吗?看到这一行了吗?countent loss。内容接近度的这个损失,是不是刚才这个公式,大家看到L to loss了吗?

有看到L to loss吗?这个地方。都能理解吧?好,style loss的话,是不是我先求了一个gramme matrix啊,看到了吗?style gra。这个就是ex matrix。

我在这个grammmatics的角基础上去求了一个L to loss,看到了吗?在我刚才求得的512乘以512的gram matrix上去求了一个L to loss,能理解能理解到这个这个意思吗?

我先求出来了一个gram matrix这个东西用来衡量风格的一个。这幅图的一个风格。接着我在两幅图的风格的这个得到的结果上去求了一个L two loss。就是咱们公式嘛,这个地方的公式嘛。

两个两个grammatic,然后去做。L to loss吗?对不对?所以我我这两个重要的点给大家说到了ok吗?其他的大家自己去看好吗?你看这个最后的一个los,就是对这两个los啊。

你看到style loss。对style loss和count loss去求一个和,看到了吗?总的lo就是conent loss,再加style loss。他这个地方没给系数啊,你可以自己给系数。

比如说你想让它更接近风格一点,你可以给风格的这个东西权重给高一些,然后内容的这个权重给低一些,它这个地方很均衡的给了0。5和0。5,就是一和一。OK啊,这个地方有个TV loss啊。

这个大家不用不用care。这个TV loss是一个图像的平滑。它为了让最后出来的结果,最后出来的结果,这幅图看起来更自然。所以。啊,我会有这么一个东西啊,它它是一个varions一个一个图像的一个降噪。

一个dennoizing啊,有兴趣的同学可以去查一下啊。在在Vki上面会有啊啊维基百科上有好吧,所以最后这个los大家不用care,前面两个lo比较重要啊,content loss和t loss。好。

我这么我讲到这儿,大家OK吗?这个东西。😊,这个newer styleyle大家都。OK了吗?这个代码我你们一定能看得懂啊,这个代码就是刚才的公式,好吧?好好嗯,好,没问题的话,咱们就接着往后走了。

好吧。所以今年还有一大部分啊,这个地方大家看到了吧?如果我把我把这个count loss调成0。8的话,大概是这样一个结果。我把conent loss调成0。5的话,大概是这样一个结果。

我把conent loss调成0。1的话,大概是这样的一个结果,看到了吗?很抽象啊,很抽象。因为我只关注风格,这个我我比较关注内容,所以我会产出一个内容非常接近啊,中间这个0点5。

说明我两边都要我这个这个毕加索的这个话,我这个风格和它的内容我都要考虑一下,所以我给了1个0。5,你拿到这样一个结果。ok。好吗?这个是系数啊,在自己可以调代码我代码我们也给大家,刚才也看到了啊。

你自己去加系数,你自己去尝试,好吧。啊,对,有同学问到一个问题问的很好啊,说风格的los是试验出来的吗?对我可以告诉大家。那篇那那篇paper发出来之后,作者自己没有讲清楚为什么会有这样的一个结果。

然后我给我刚才给大家一个直观的理解是这样的。我们有512个小朋友,我认为每个小朋友会有一个关注的点,对不对?当我两个小朋友之间的这个512乘以512啊。

每这个两个小朋友之间的这个差异度越大代表就是两个小朋友之间的这种碰撞,他能够描述出来这幅图的一个风格。因为每个小朋友他看到的细节,他看到的风格是不一样的嘛。

所以直观的一个理解是刚才这个gramandmatic说的事情是。我用我通过不同的小朋友去看到的结果,互相的去做运算,能够描绘出来一些近似描述这幅图像风格的一些一些东西。我我简单的这么给大家。说一下。

我我不知道能不能帮助大家稍微理解一点这个地方。做的事情。对吧也就是你去评估两个小朋友之间看到东西的一个相近度或者是差异度啊,因为他们看到的是不同的内容嘛,关注的是不同的风格嘛,类似于对吧?

所以我只能我只能简单的给大家这么提一下。然后刚才我们前面讲到的所有内容啊,我这个这个这个部分我给大家讲了RCNfas RRCNfa RRCNRCN呢最后看有没有时间吧。

然后new style呢这个地方有cafe的版本那个呃我们的这个tenor floor版本,我已经发给大家了。好吧,我已经在群里头发给大家了啊。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

人工智能—深度学习公开课(七月在线出品) - P4:TensorFlow推荐系统 - 七月在线-julyedu - BV1EW411K7Mw

OK所以第一件事情是把数据拿过来嘛。这个数据的话用的movie lens数据啊。昨我大家还记得我们自己处理一份那个就是歌歌歌单上处理出来的一份和movie lens一模一样格式的数据,对吧?

所以你只要把你只需要用那个脚本去把其他的一些。数据啊,不管是我们这个地方提到这个音乐推荐的歌单数据,还是其他的一些大家在实际能拿得到的一些推荐。电商里头一些推荐的一些数据拿过来以后整理成这个形式。

你就可以用下面这个模板,好吧?然后所以它的数据格式大家也知道了是一个user一个item,一个打分 rating一个timet一个时间戳。然后数据处理的部分呢。

我们来我们用tensil因为用tensl flow去搭建模型的话,大家知道这个 neural network神经网络的训练方式是一一批一批数据往里头送的对吧?

一个 batchch一个 batch的数据往里头送的。所以我们需要想办法去产出。一批批的数据OK所以我我下面就是这个对,下面就是我们的这个具体的程序了。所以大家可以看到。

最上面这一行是因为我用的是python的22。7的版本。那t flow里头呢有很多的。语法句句法其实是和三有有点类似的。所以这个地方我from future去import一下这个print函数啊。

然后一些这个除法okK等等。然后我把n派和padas load进来了,n派做科学计算,pas可以去呃加载数据做一些数据分析和数据处理事情。啊。

然后第一个函我写了一个函数叫read data and process。这个很简单,就是我们的文件的格式是us item rating和time,对吧?所以我把这个co指定一个co name。

然后我用pandas的read cSV直接把这个文件load进来了。对,所以文件名,我告诉他说我是以这个杠T啊,就table键做分隔符的。然后我没有header,我自己取了一下。每一列的列名对吧?

叫做叫做useritem rating和ST,然后我的啊 engine就不用看了,然后。这个data frame user和data frame的这个item啊,这两列的话。先减去一OK。

然后这个地啊我们我们一会儿可以带带大家跑一下啊,就是看看这个数据载入进去大概是什么样的。我们要去做一些数据格式的一些转换。比如说这个地方load进来以后,实际上是一些呃字符串,对吧?

所以你需要去实际上你你需要去对它做一些类型的一些转换,比如说转成fat转成int floatat,对吧?那us和item是us ID的用户的ID和ite ID对吧?

所以我把user ID和item ID呢去转成in32的ok类型。然后我的打分向量应该是打分是一个连一个连续值,对吧?一个小数的连续值flow,所以我把它转成一个fat类型的啊,就这么简单啊。

所以这个函数做的事情就是把数据读进来,并做一些简单的数据的处理,包括数据类型的转换等等。然后下面写了两个class,一个class叫做ser data iter。它做的事情是我随机的去产出一个bach。

一个 batchch的数据。所以。这个地方呢我们训练的过程啊,就是在神经网络当中,通常通常我们经供我们灌进去的数据呢,我们灌进去做训练的数据。对对对,有对对对,有同学回答了。

就是有同学问到说为什么要减一是下标从零开始嘛?我们我们在我们下标是从零开始的。OK然后这个地方的ser data做的事情是。我们产出训练数据,一批一批的训练数据。那大其实如果有同学熟神经网络的话。

你会知道我们在做训练的时候,我们其实并不希望输入来的输输入进来的数据是顺序的,我希望你随机的产出一个batch给我,对吧?因为如果你顺序的往里头输入的话,你看你我去做这个。图像的识别。

你顺序的输一个文件夹,一个文件夹输过来。那你上次输的全是猫,这次全是狗,我我什么也学不到,对吧?所以我希望它能够有更多的丰富度在。

对以我希望我产出的数据能是一个打乱顺序的随机产出的一个bach一批一批的数据。所以这个地方这个shaer data iterator做的事情,实际上就是打乱顺序之后,从打乱的这个数据里头去取出来。

需要的这个一个betch,1个EP的数据。那init我就不说了,初始化初始化的话,我就是输入,然后你要设定一下be size,对吧?每次有多少个样本未进去学习。

那我的numb of columns有有多少列?我的数据是我的数据到底有样本,总共的样本有多少,对吧?有多少数据样本,这个地方self点inputs,就是我把它用n派去做一个做一个转制了。

transpo。然后这个地方定义的这个L就是求求长度嘛。啊,然后往下的话,next next函数是一个找出下一批数据。那下一批数据我们看看next函数是怎么定义的,就是。这个函数啊我给大家讲一下。

大家不一定大家不一定这个。哦。这个函数我告诉大家干嘛用的,我来。对我们来做个小实验吧,import non派 SNPO然后我们来产出看到这个地方是0,举个例子啊,0到100之间。我去随机的产出5个下标。

我来我来给大家演示一下这个东西的效果是什么?看到吗?是5062、63、61、57,它是从0到100之间随机的产出5个数。作为5个下标。okK如果我再运行一遍,你看是不是现在达到结果又不一样。

我再运行一遍,是不是拿到结果又不一样。所以这一行做的事情呢就是我从。我们回到上面的代码,所以这一行做的事情就是我从所有的样本,你看到self点 lens,就是所有的样本长度啊,这么长的样本。

所有的样本当中去产出一个batch的大小的随机数。我说明白了吗?比如说产出你每次灌11万个样本进去,产出1万个下标。对吧然后我把我根据你给的下标。

从原始的数据里头input里头去抽出来这对应下标的这么多个样本。所以这个啊前面这个class这个类没有什么可说的,最关键的就是这个地方。我我给大家做了个演示啊,所以大家应该看明白了。

所以我每次就是从这若干个啊,比如说我总共有有有这个10万啊100万个样本啊,我这个地方总共有100万个样本,100万个样本里头,每次取出来1万个样本,每次取出来1万个样本。

但是我每次取了一万个样本都不一样。而且它是有随机性的O好吧,这是这个,然后我又写另外一个类,这个类叫做一这个类是顺序的去产出结果。为什么我们又需要一个顺序产出结果的这样的一个类呢。

因为我们在做测试的时候啊,或者说 evaluationval做评估的时候,我们希望是能够有序的一批一批去做评估的。因为你如果是随机的话,随机的话。

你就容易上次随上次随到了这个这次又随到这个就做评估不太合适啊,做训练,你可以反复的看这个样本,做评估的话,我还是希望所有的所有的样本我都能评估一遍嘛,测试机里头,那如果你随机的话可能有些就随不到。

所以做评估的话,我是希望111个step一个step往前推。所以大家大体上你可以不用仔细去看这个做的事情啊,就是这个地方这个这个iterator做的事情就是我往前一步一步的推。

你看我有个for循环 for for循环,然后我我一次去截一段出来,一次截一段出来啊,这个地方呃如果对这些函数不太明白的同学没有关系,你去放几个数进去,比如说这个地方你放。100对吧?总共100个样本。

然后你你bet size每次取10个,你可以看一下,它实际上就是产出了一些桩子,把这个数据总共总共100个数100个样本,中间立了几个桩子,把它分割成了不同的段儿啊,就这个意思好吧。

然后底下这个大家可以自己去。如果n派不熟的话啊,n派这个科学计算库不熟的话,你只要自己输几个数进去做一个例子,你就能看得懂。呃,是这样的,我们训练的时候训练对训练的时候为什么不按顺序来呢?

因为神经网络的神经网络训练的时候呢,我们可能会迭代非常非常多轮。如果你按照顺序来的话,一个是它的丰富度不够。另外一个是你每一次喂进去的一批数据都长得一模一样的话,它很容易过拟核。

很容易overfitting。我不知道我说明白了吗?就是100个样本,你每次输进去10个,对,第一批第二批第三批,等你到第二轮的时候,他又看到是这些 batch长得一模一样。

它很容易过拟核overfitting。所以我训练的时候,我希望能够打乱顺序。所以我们这个地方写了一个fferdata的一个iterator。好吧,就这个意思。好,所以这个就是有一个数据处理的过程啊。

我就给大家简单的说到这,我运行一下啊,这就是定义的函数,我就运行完了啊。好,然后呃我看下前面啊,前面没有代码可以运行。然后我们去搭建一个模型,搭建这个模型非常非常简单,就是按照刚才的公式来的。

按照刚才的公式来的。所以我们公式里头告诉我们说我们最后的预测的得分是怎么来的呀。预测得分是一个user的一个向量和一个item的一个向量,两个向量去做一个什么做一个乘积,对不对?

所以大家看到这个地方有个乘积,看到了吗?一个user的一个embedding向量和一个item embedding向量去做一个乘积,用tflow嘛做一个乘积,做完成积以后,然后完了吗?没有完。

我加了什么东西啊,我加了一个user的bi看到了吧?我在这个沉积的结果上做了一个求和的操作。求和了是哪几个东西?首先求和了一个global的一个一个bias,一个全局的一个bias。

然后加了一个user的一个bias,加了一个item的一个bias,对吧?就是一个乘法两三个加法嘛,你看乘法在这儿啊,第一个加法对吧?在这第二个加法在这儿。对吧然后然后就出去了,就是就是加网嘛。

所以就是这样的一个网络结构,用用tensor floor去搭。所以呃搭建的过程也很简单,import tenorflowF对吧?然后我们使用矩阵分解来搭建一个网络结构。

所以我们写了1个SVD的这样的一个呃函数,这个函数呢它的参数有这么一些user的 batch,对吧?输进来的user一批一批的user和一批的item。然后user的number啊数量我得知道。

因为这里头大量都是矩阵运算嘛,我得知道矩阵运算的运算的维度嘛,对item的数量。我的维度。是多少?然后我的这个device就是我到底有有个设备用什么?我们这个地方用的CPU啊,我可以告诉大家。

这个CPU跑得动,就是在这个例子当中,因为它不是一个深层的神经网络,它就是一个简单的一个向量和向量的乘法,在做一些加法。它没有很多呃隐层,所以是跑得动的。然后所以我们啊with device cU啊。

就是如果我们用CPU的话,我们做的事情是什么呢?先初始化几个bias的项,对吧?所以在当中,我们需要先这样做去TF点get,所以去去有几个这个bi的项对吧?

包括这个gbal这个user的和item的一个bi一个偏置项,所这么几个偏置项。然后你有些你是需要告诉他维度的对吧?因为global bias的话就是全局的偏置项。

我认为每一个都一每一个用户和每一个item上面都是一样的,所以我不需要去我用一个数就可以了。但是user bias的话,因为你是一批用户进来嘛,所以每一这一批户里头每一个用户你都需要一个。

一个这个啊biance对吧?对以这个地方的话,你要给定这个形状shape形状。那下面是一个bias的一个向量了。那这个地方是用的embedding呃,embedding的话。

你可以简单的认为它就是一个就是一个向量,就是一个稠密向量。所以他是从。一个用户他是有1个ID对吧?所以按理来说,每一个用户有一个下标,他应该编码完了,应该是一个独热向量编码的那种形式。

但我现在做的方式就是我把每个用户,我会把它映射成一个稠密的向量。所以这个地方在tsorflow里头用的是emeddding的 lookup,它有一个表,一个叫做嵌入表。

叫embeddding table。然后在这个embeddding table里头去做一个lookup做一个查找。所以在这里头去找到bias的向量。

找到用户的bios的向量item的 biasos的向量。然后底下是一个user和item的一个权重一个wat。然后初始化一下user和item的两个向量,刚才是刚才是偏置向量啊,刚才是偏置向量。

是bias,现在是真正的user和item userer和ite的这个inbedding的向量。然后实际的计算就非常非常简单了。你看计算你有什么,哪些过程。

就是把user的向量和item的向量去做一个乘法。对吧就做一个惩罚,做完乘罚以后,我。做一个求和嘛,因为它是它是内基嘛,内基是主点呃内基的话是主点去做乘法,再求和嘛,然后我再加三个偏置项嘛。

ad add add三个偏置项加进来,然后再加上正则化项嘛,对吧?正则化就是LRL two loss啊,L2正正则化对吧?加上user的1个LR loss emdding的1个LR loss。

然 two的一个lo对吧?加进来,然后这就完成了return回来,然后。这个网络搭建完了之后,你是需要对网络去做优化的。所以网络去做优化。

核心的东西是这个地方的lo function或者叫cost function是吧?损失函数。这损失函数的话,你。直接用tensor floor里头。自带的这个比如说这个地方的L two loss,对吧?

它就是一个Y减去外貌嘛,我预测的Y减去Y predictive,然后它的平方嘛,1个L two的一个。L2的一个损失嘛。

所以你看实际上你就是把这个输出来的结果去做一个你预测结果和标准答案结果去做1个L2的一个损失嘛。对吧。O然后只不过说这个LR的损失尾巴上还要加上这个正则画,加上正则画像,因为你防止它过拟合嘛。

防止它过拟合,所以要加一个正则画像。这个地方是用tensor的一个ad一个求和操作。然后只要你把只要你把损失函数求出来了,后面的事情就非常简单了。你就or直接调它的一个im一个优化器。

但是这个地方大家不要去调这个啊就是啊grading啊,千万不要调梯度下降啊,因为梯度因为它是一个非 two的函数,它的 function是非 two的,所以你调你调用这个grading梯度下降的话。

它可能会调到局部对点如果你调这个你可以去选选一些其他的,比如说SG对吧?这个随机梯度下降是可以的SGD的或这个地方的om是加了动量的优化器,那你还可以去选一些其他的,比如说这个n啊等等啊。

这个你可以大家可以自己去查tensor floor APII它就是一就是一个优化器,它就是一个优化器。这个优化器需要你指定一个学习率,然后去优化的东西告诉他就可以了。

比如说优化的东西是这个地方的一个损一个代价函数,一个损失函数co对吧?对,这个就是整个网络的搭建和我优化的过程很短啊,就这样一段代码。所以我们运行我们。对,回车了,所以就定义好了函数。好。

再往下就是实际数据上去做一个模型的训练了。呃,有同学问到了一个问题,说,embedding的lookup的user和item的表是什么表呢?就是初始化的时候是一个随机的表。比如说你总共有100个用户。

你每1个100,每个用户想映射成1个200维的一个向量的话,它初始化就是1个100乘以200的一个随机的一个矩阵。然后这个矩阵一会儿是会更新的。

因为我们的目标就是为了学习出来user和item的一个表示嘛。对吧us和ite的一个表示。一个向量的表示。那这个地方之所以它叫做查表的原因啊,如果有同学啊这个会涉及到一些底层的一些一些原理。

就是如果有同学仔细去想一想这个问题的话。从one hoting codinging读热向量编码到一个embedding嵌入的这个形式,实际上就是从原来的一个大的。

embedding的矩阵当中去找出其中的一行或者是一列。所以在tenor floor当中,它的定义叫look up。叫做查找啊,你就简单的理解就是这个东西有一个很大的表。

这个表是可以用来查出来其中的user和item的这个向量的。就可以了。然后这个表是会去更新的,它更新。对对对对。啊,对对对,你说的是对的,这个同学说的是对的。

你可以用work to vector这个地方和work vector的关系不是特别大。这个地方是user和item是一个引语义模型,它和底层的k factor有关系。

和和 word vector没关系啊。如果你做NLP的问题的话,你做自然语言处理的问题的话,你是可以用呃work vector或者glove这样的。模型去做一遍初始化的,你是可以用它做初始化。

但在咱们这个问题当中不行,因为场景不一样啊,它不是NLP的问题。所以呃刚才呃sorry啊,这个这个有同学问到问题,所以我稍微提的有点远啊。我再回顾一下刚才我们做的事情。

我们写了一下一个数数据处理的部分去完成数据的读取去产出随机产产出其中一个一批的数据,一个ba数据和我顺序产出其中一个ba的数据。对,然后我模型的搭建呢?呃,不要看这么复杂的图。

模型的搭建就是根据上面这个公式来的。所以它最核心的部分就只有这么几步实际的计算就只有这么几步什么计算用户的向量和U item的向量去做一个内积,然后再加上三个偏置项最最核心的就只是这么一个运算。

上面这一大堆的东西呢就是tensorflow规定的说你必须要初始化这个随机的变量,你必须要先。定义一个长度为这么长的一个向量啊,就是一些初始化的事情。大家知道吧?前面这一大堆就是初始化的事情。

实际上真正的计算,真正的做prediction就是这这一步,然后真正的求ross啊,求正则化,就是这样一步。就是这样一步。然后深圳的做优化的时候,你最需要关注的东西就是怎么去求这个损失求lo。

那它就是一个L two的一个lo。再加上后面尾巴上,你看TF点ad嘛,ad就是求和嘛,再加上尾巴上的这个正则画像啊,就这么简单,然后你就可以随便去调一个opimizer调一个优化器去做优化。

然后这个地方因为它是一个飞 to它的损失函数是非 to的,所以不能去调gradingcent啊,就除掉梯度下降以外,其他的那些呃SGD这个adom或者是其他的一些这个n等等啊,随你随便选一个用就好了。

这个ad deelta等等啊,都可以。然后再往下的话,就是我们去调用刚才的函数去在实际的数据上去完成训练。所以大家会看到这个地方有啊tensel floor,对吧?import进来,我们来定义一些东西。

比如说我定义我每一次输进去的一数据的样本有多大。比如说这个地方数据的样本是1000,我可以定义大一点,比如说我定义成2000,好吧。好,所以我定义成2000,然后我的用户数总共的用户数是6040个用户。

在3952部电影啊,我这个时候用的是默认的,我们找了一个movie less数据集啊,这个是比较简单一个数据集。然后如果大家有其他的数据集的话,只要转成一样的格式就能用。所以在3952部电影上的评分。

我的factor的维度就是刚才大家看到的每一个用户要表示成多少维,每个item要表示成多少维的向量啊,我定义是15维最大的迭代的轮数,你们可以自己去定啊。我这个地方定的100,你可以写写成200。

然后device就是你我到底用什么样的设备,我用CPU还是GPU这个时候我写的CPU。然后再往下大家看到的这个clip就是一些功能性的一些函数。clip做的事情是一个截段。

比如说这个地方的numb派点c X1。05。0呢,它什么样意思?你们可以自己去试一下,它就是在数轴上卡了一段1。0到5。0,这样数轴上的一段。如果这个点不落在这一段里头,在1。0的左边就全取1。0。

在1。0的右右5。0的右边就全取5。0,落在中间就取它自己它就是一个截段函数啊,一个截段函数。那这个地方tensor floor呢可以去做一个summary。

summary就是刚才大家看到了前面有一张图,对吧?这张图这张图是用tensil board去做可视化做出来的。然后tensil board做可视化的话。你如果需要用textboard去做可视化。

你得告诉他说我需要看什么,你看的东西是需要自己去做一个summary,自己去做一个summary。Yeah。然后再往下的话,就是我会调用上面的函数去获得一些训练数据,对吧?

这个DF chain和DF test就从所有的样本里头嘛,产出一个ba的数据用于训练,再产出一个bage数据用于测试。然后往下的话,大家看到吧?这个地方我调用了嘛。

我调用了shaer data iterator和这个顺序产出测试数据的这个iterator就产出训练集训练数据和测试数据。然后我EPEB数据送进去做训练。我EPP数据送进去做训练。

它比较麻烦的就是你一定要注意它需要去开一些空间。比如说用place hold去把容器去把我的。user的I呃user和item这个。batch放进去。对,然后我这个read batch放进去。

我分别放好啊用户这些物品还有打分,然后底下是你就用调用刚才的函数去构建出来这个graphph对吧?一个计算的流图,然后下面就是一个在session当中去做优化的过程。呃。

这个如果tensorflow不太熟的同学的话,可能猛的看会有点懵啊。但是你抓住几个核心的点就好了。反正tenflow你要用的话,就是你需要自己去把网络的结构构建出来。

自己去把这个优化的这部分optimizing optimizer这部分的lo求出来。然后其他东西就是一各种各样的初始化,初始化一些变量初始化一些。一些存放这些数据的容器啊等等啊。

所以下面这是一个训练的过程啊,训练的过程大家可以看到for循环对吧?for循环迭代多少轮。呃,我没有太明白。大这个同学问到的这个问题,12345,这有什么划分依据吗?12345从哪儿来?OK呃,先不管。

我们先我们先把这个定义好的这个网络数据读取和。对,数据的。数据读取和后面训练的这个函数来定义一下。我ctl加enter就是跑了一遍嘛,这个框里头东西看我做了一遍定义,然后我们把数据读进来。

大家看我把数据读进来,data frame chain和data frame test读进来,我get一下da。我感觉今天稍微有点慢呢。好,进来了,然后我就可以去完成训练了。

刚才我定义的这个函数再来看一下。啊,跑起来了,第一轮对吧嗯。要注意啊,这个是这个是地方的结果,大家看到总共有4列,对吧?第一列表示我呃有多跑了多少轮了?第二列表示我的这个。

channing error就是在我训练集上的一个lo一个损失好了。然后下面这个validation error就是在我的验证集,我我测试机上的一个效果,最后是我的一个总共花费的一个时长。

所以大家可以看到这个地方。大家可以看到这个地方是嗯。对,大家可以看到这个地方的结果是,大概我用tensor floor去跑这个训练的话,每2000个样本只需要0。8秒,0。

8秒左右就可以处理完2000个样本。然后我们可以看到总共的loss啊,就是损失函数,最开始有一点多是往下降的,看到了吗?现在已经降到了0。75了。对吧只不过在验证级上下降的会慢一些。大家看到验证级上啊。

当然你本身读进去的数据,它就是。本身你读进去的数据,它就是一个。一批一批的数据,所以本身这个los不是一直会降啊,就是它是震荡下降,你这个损失是震荡震荡下降。有同学问到那个截段的函数是吗?

这个地方呢打分就是一分到5分嘛。所以如果你比一分要小的话,是是一个异常数据,我需要把它截断到一分。如果比5分打的分数还要高的话,我认为这也是一个异常数据,把它放回来,就是最大最大最多最多你能给到5分。

你不能给到10分,对吧?就是打分嘛,1到5嘛。我我不知道我说清楚了吗?关于这个阶段函数。啊,关于阶段函数,我我就简单解释到这儿。然后对对对,做异常值处理的。没错,有同学提到。

然后这个地方的embedding user和embedding的embedding的 userer和embedding的item做内机。它。它是一个数,这个地方加两个呃。

我我可能这个同学这个同学有点没有理解啊,我是一批一批数据送进去的,我是一批一批数据送进去的。所以后面那个bias呢是和这个P是有关系的。我是一个向量化的一个计算,大家不要理解成一个样本。

一个样本的计算啊,它是一个向量化的一个计算的过程。对。所以我总共要求迭代200轮,现在他已经迭代完了。就大概到这样一个效果,大家可以把这个迭代的这个轮次可以提高一点,让它继续往下去做迭代。

所以这个方式呢用的方法用的推用来做推荐的话,它的这个方法依旧是一个S一个矩阵分解的方法。依旧是一个矩阵分解的一个方法。但是我用tensorflow去搭建这个东西的好处在于,我可以一批一批数据往里头送。

所以如果你这两个小时又采集到了一批数据的话,你又可以把它送进去做一遍更新。对吧对模型做一做一遍更新,然后你不需要一次性把所有的数据全都读到内存里,你可以是。呃,torflow有自己的工具啊。

就是叫TF record。你可以用TF record去去用它的这个队列,用它的c去一批一批数据的产出。呃,刚才这个同学的问题,我再说一下啊,就是你你说的这个阶段函数1到5是因为我的打分。

我的这部电影的打分数据只能在1到5之间。所以如果它小于一或者大于5,它是一个异常值。我需要对它去做一个处理,小于一的打分,我都把它规范化成一大于5的打分,我全都规范化成5。好,就这个意思。呃。

这个这个的话,反正代码会给大家,大家有兴趣的话可以自己去读一下。然后有问题的话可以找我交流一下。因为如果本身对TF这个库不是太熟的话,第一次看这个代码可能会有一点点的蒙,好吧。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

人工智能—深度学习公开课(七月在线出品) - P5:基于序列到序列的深度学习机器翻译系统 - 七月在线-julyedu - BV1EW411K7Mw

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后我们我们做的第一步事情呢,我就是想要把单词变成one hot vector。这步就是其实相当于是一部prepro的过程,对吧?然后当我拿到了一堆数字了之后呢。

我就可以把这堆数字我就可以进行training了,是吧?我就后面其实就是training。trainining是怎么样的?就是我们fe the training data into the。

Into the models。其实所以说我前面其实还有一步,我应该要先把我应该要先写这个model是吧?没的。Encoder, decoder。Moel。然后我training的时候呢。

我就是要把这堆数据传进我的models,然后传进这堆models之后。有人有人问在哪看,我们正在直播呢,就是有没有人告诉他在哪。

trainining feeds the training data into the models。然后呢,我们会。我我们把这堆训练数据输进去之后呢。你输进去了之后,模型会给你输出一个翻译的结果。

但是你要知道那个翻译的结果好不好,那所以我们需要定义一个los function是吧?所以我们需要写一个los function。然后有了这个lo之后呢。

我们应该要做braredient disscent,就这个是。最常用的。graredient descent gradient descent是最最常用的deep learning做法。

反正碰到什么问题,graredency decent,然后我们就可以把这个los降下来。然后降了这个lo之后呢呃我们。后面我们应该要evaluate什么?evaluate on development。

就我们这边有3个set,一个叫train,一个叫test,一个叫d。就是train是用来训练的,大夫是用来做评估的test呢是你看不到的,是应该是在现实生活中应用的情况。但是我我现在还是给大家看到。

因为我们我们反正就这么几个数据器嘛,所以所以这个是一个大致的思路是来,然后我们evaluate on development setand keep the model。With。不。

Best performance。OnDe set。所以我们一般会把develop在development set上面表现最好的那个模型存在来用作用作测试。然后最后比如说test。

然后除了test之外呢,我们还可以做一下translate。因为我们刚才的那些test呢,其实我待会儿会提到这个test跟translate其实还是不太一样。所以我们现在就我们就可以开始一步一步写了。

啊,那我们我们现在有了这样一个。我们就从头开始写,这个这个是我我写的这个代码的大致一个框架,就是反正是pyython的一个框架。我相信大家应该都挺熟的。

就是呃if name is equal to name,然 will get。conconfig我这边有一个configud file,它会take一堆 configurationfiguration。

我们一会儿再把它填上去。填填看有哪些configuration要填。然后这边呢嗯我的 main function是。main function就是处理我大部分的事情,我们一会儿还会建一些别的文件。

我们就从m开始起。那我现在。拿到了一个ma影文件之后,我第一步要做的事情什么呢?我先想把我所有的。第一步的事情就像我们说的prepro,我先得把数据给读进。我们先把数据给读进来看一看。

怎么样读这堆数据进来呢?嗯。那我们就可以。还还是一样的,就每次做一个工程项目的时候,我们先从大的地方开始考虑,再从小的地方开。就因为我们我刚才我刚才拿到了一个呃,我给大家看过这个文件长什么样子。

就这个defin meaning它是一句英文,一句中文。那我现在要干的事情呢,我就想把英文跟中文的句子都拿进来,那我要怎么拿呢?我可以这个functionction我还没有写,我可以一会儿想建一个。

我我我一会儿可以想象一下,我要写一个utils这个这个fi,然后它有一个functionction叫做load data。那load data呢,他会把我的training data全部都拿进来。

然后他应该t一个priit,我们 take个一个什么primeter。嗯,我就我就随便假设我们现在take parametermeter叫train file。

就是说我有一个primeter叫做train filetrain file这个文件呢就是这个functionction就能把你所有的data都读进来。我现在还没有写这个functionction。

等我们先先把它写上。呃,然后我们怎么样写这个,我既然要拿这个config呢,我就要把这个confit给他。我就要把这个configuration给它写进去。

那我可以加一个嗯关于我现在到这个confit file里面呢,我去写一些关于关于training data的东西。那我可以写pasard点ad argument。不知道大家熟不熟悉这个paser。

但反正他基本上我一写大家应该就明白了他干的事情呢就是take几个。呃,我我现在就第一个pri叫做train file,对吧?然后它的type呢是一个train,然后它的default value。

我就写它等于non,因为我每次都会pass一个进去,然后他还会diplay一个help help information。比如说我写一个。我就写个简单一点training fun。那我们现在呃。然后呢。

我这个load发 load data这个这个东西呢,它是从util里面进来。所以我现在要新建一个文件夹叫做untails。

我把它存下来叫做untails点P完这个这个文件呢就专门做一些写一些辅助性的方式,就是它不是不是整个框架,但是它是一些辅助性的内容,我这里要写我这里要先要写一个方式叫做load data是吗?

loadad data它干一个什么事情呢?它take一个str,这个in file呢是一个str,就表示这个文件名,我要从这个文件名里面把中英文全部都拿进来。我怎么样把中英文全部都拿进来呢?

我们就跟着大家一起写一下啊。我可以想象,我最后拿到的呢,我希望我能够拿到一段英文一段中文。比如english它是一段一对一段array,然后这个是chinese,它也是一段。然后这两个。

我就我这个这两个这两个ar我都要从都要从这个in file里面去拿。Read S。我就从这个F里面去拿这个文件,然后我写说。Line。一。😊,line等于line点。

我们想象一下一个line它长什么样子。我们回顾一下这个line它是长这个样子的,就是一句英文,一句中文中间是一个这里我可以告诉大家,它中间是一个t键,t键就是一个back slash t,对吧?

所以我先把它用strip,把头尾头尾如果有一些垃圾信息,我把它除掉。然后我给它split用这个tab键来splitsplit出来之后呢,我这个line就变成了两部分甩。line的第一个部分呢。

来第一个部分应该是一个一段英文,对吧?line的第二个部分。第二个部分是一段中文。那我这个英文呢,我就要把它append到英文里面去,对?Indian app。那我们先不管,我先这样,我先这样写着再说。

我先把英文跟中文都加进去,我们看一看这样是不是work。点看。然后我这里在return演眼,那我现在是不是应该拿到了一堆一堆英文跟中文的信息呢?其实这个方式如果在linux上跑,应该是OK的。但是。

非常遗憾的一点是我发现在在。在windows上面这样跑,它会爆错。因为我这里要拿进来的是中文,我一定要用这个把encoing。等于1TF8给他写进去。大家可以不用管这些细节,我们主要考虑大的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

就这样这样在windows上面应该是可以跑的。好,然后然后我现在在在我的这个windows上面了,我现在有这个ma是吧,那我现在可以跑一下pyython。然后它带一个参数是吧,tree file。

trainin file应该是什么呢?我这边应该是datatrain。迷你。Dot。我这个文件叫什么名字?我要看一眼叫train many dotTXT对吧?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以看一下,okK他说name uil is not,为什么呢?因为我这个地方忘了ininport这个unils。command能不能放大,让我看一下,应该是可以的。我来放大一下它。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Addbit。properties,然后 font。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这样够大了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

或者我还再调大一点。Addit。Properties。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这样应该可以了吧。相信应该可以了,可能拿着手机看他会觉得有点像。嗯,然后我现在就是在这个文件下面,然后我现在在跑一下python train mini,然后发生什么呢?啊,马上就结束了,因为我没有停。

我没有停下这个城市。那我应该要在这个城市的中间某个地方停一下,怎么样停呢?我一般都是用这个方法来停的,就是code。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

用用这个code点interact,然后把把它从这个地方停掉。就这样会拍松会停在这个地方。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

那我们现在看停下来之后变成什么,我可以我可以inpect一下中间到底发生了什么事情。我这里有一个trainE有一个train train CN。

那我们看一下这个train EN跟train CN到底是什么。我看一下train EN它就变成了一个list是吧?我们看一下trainE它是一个它反回一个list没有问题。那trainE它是这么多英文。

然后trainEN0它是一句话,然后一也是一句话,它就是一句句话是吧?那这个就应该跟我想象的没有什么区别。然后train CN变成了一堆一堆看不清楚的东西。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

但没有关系,因为我们现在是在windows上面,在windows上面有一些稀奇古怪。可能我这里没有弄好。对我们先不管。因为到时候我们会在linux上测试。

我刚刚测试是OK的那我们现在呃思考一下这样有没有问题呢?那还是有有那么一点点问题,因为我现在我现在不想要一堆str,我们还是回到这个train页。就现在他给你的是一堆str,对吧?一堆一堆字符串。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这一对字符串呢嗯。我们。我现在不想要这样一堆字符串,我想把它一个个单词拆开来,拆开来看。那我现在其实拆开拆开很容易,对吧?我就把。我这边会用1个NLTK这个 packageage来把把这些词都给分了。

嗯,import因为。因为英文的分词并不是那么straight forward。比如你一个句号直接连在一个单词后面,它这这些词应该是拆开的。然后这个NLTK呢,它就可以帮我。

wordor tokenize,他可以帮我把这些词全部都分成一个一个。然后除了这个一个一个的词之后呢,我还想要在前后给它加上1个BOS跟EOS就这两个是是一个我特殊加上去的字符。其实你可能不用加BOS。

但是我们这边把BOSEOS是一定要加的。因为你EOS不加的话。到了最后那个。呃,尤其是在你翻译的那个target sentence那个EOS是必须要加EOS表示。sentence吧?

就是我这个中文后面呢必须要加个EOS上去。就这样才可以。把这个啊我这里打错了,这边应该是BOS就是我给他都加个BOSEOS上去,就这样这样才可以把它都。把这些词都分开。那我们现在再再看一下。

现在现在如果跑出来什么样子,我先退出,然后我再跑一次。再跑一次之后呢。OK他跟我说啊,我这里还有一个问题。还有还有一个小bug。怎么呢?因为我没有把这个我没有把这个中文给分开。

中文的分词呢我觉得就比较简单粗暴的分一下就行了。我直接把它每一个charact都分出来。就直接。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

C for CE这个我就把中文词全都给给它分开算。那我把中文词全部分开之后呢。我现在再看一下trainEM,那trainEM就全部都分开了。这些我们随便挑一个出来。

它的第零个就变BOSanone can do that然后US那这个就是表示呃。我们就已经分词分好了。那分完了这堆词之后呢,我下一步要干的事情是我要把我现在拿到的还是一堆单词。

但是我的目标呢我的目标是我要拿到一堆。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我最终应该想要拿到的是一堆数字,对吧?我不想要这么一堆单词,那怎么样拿到一堆数字呢?首先我们需要有一个dictionary。最后翻译效果可能不行,应该有一些有一些更好的方法。但。这个只是演示而已。

就我们今天的模型是最简单的new machine translation。嗯。所以。对,我们今今天就讲讲这个大大体上,后面大家有各种方法可以去下。然后我们呃接着讲下一步呢。

我是想要我现在已经拿到了train,那我d也可以拿进来,对吧?dave也。跟这个。CN就等于tailstar load data。Ak stop。那既然有这个de file的话,我们是不是应该。

是不是应该在confit里面再加一条把de file。这个就比较容易了。我把上面的代码去copy,copy完了之后呢,我们就可以。那这样就可以把 that file用作 parameter。

Develop。It fine。然后我现在有train filede file,然后后面呢我我还要把这个有多少个train,多少个de也存在。

Number of train equal to length of。d是用来干嘛的?d size就是用来做。因为你你在训练模型的时候,你是拿不到test testest data。

拿不到test data就d夫是相当于给你t的一个。给你评估你模型效果的一个东西。就你最终因为training data容易over分析,这个其实是一个基本的machine learning的。

Once。不能不能算交叉验证的,这只是一个交叉验证,是不是cross validationation,就这个只是一个单纯的validation,就是个validation。它是验证你这个模型的好坏。

因为你这training size,你很容易over分析。你即使trainingtraining error变成0,你的那个准确率是百分之百,到时候到了真正的这个实际的实际的数据当中去一测试。

发现效果又很差,这个是非常正常的。嗯。好,那我们然后接着讲后面呢我现在我下一步要做的事情呢,我想要bu一个 dictionary。因为我要把每一个单词都给它incode成一个数字,啊,一一个数字,对吧?

比如说我的EOS变成0,比如说我这个我现我现在这边看到什么anyone can do that,我比如说变成18502,就是这要变成一个这样incode encodecode成的方式。

所以我下面要写一个function。这个functionction呢,它可以帮我incode这个东西。我怎么写呢?我可以把中令文分开。分开一扣。In total。

简单来说就是我想拿到一个dictionary,然后这个dictionary呢它应该大致是长这个样子的build dictionary。できて就新。然后。

我把这个training的english拿进去bu dictionary,因为因为我只有training,就是这个里面就是要考虑到,如果有如果有不认识的单词,我们是把它map到 unknown。

所以我现在在util里面要写一个 function叫做bud date。那bud date怎么写呢?啊,我我其实death build date build date,他干了一件事情。他干的事情呢就是。

他 take了一堆 sentences,对吧?然后呢,他还要take一个pri叫max。其实在这里无所谓,我就不写,不写这个m。然后。😊,这个dictionary要怎么怎么bud呢?

因为我们我们再回过去看一下,我现在拿到了一堆数据啊,它就是一堆一堆array,每一个array都是一堆单词。那我其实就是扫一遍这类单词就行了,我就写for sentence。In sentences。

对吧这个每一个sence是不是都是一个array啊,就我这个 sentenceence是有一堆句子,每一个sence呢是一个句子,每一个句子呢其实是一堆单词。

那我可以写for word in sentence。然后我想有一个类似于word count一样的东西。呃,work count是一个什么东西呢?

word count是一个类似于 dictionary的一个西。那我们这里要把它做成一个counter就行。counter是什么东西。那如果不知道这个东西呢,我我正好今天给大家介绍一下。

就这个counter是一个。他是呃from collections import counter。就这个collections里面带一个counter这样一个object。

这这个东西是用来用来技术非常好的一个东西。所以你现在这个word count呢,它就变成了一个呃表示每一个单词出现了几遍。因为很多时候呢。

我们希望把就是你你如果在在一个真实的数据上训练这个单词量可能太大了,所以你可能会想把最重要的一些单词保留下来。最重要的一些单词,也就是最频繁的一些单词保留下来。也就是比如说most。康门。

我就想把最重最频繁出现的这些单词。请架,然后最频繁出现那些单词怎么样?我这里就再加一个。max words equal就5万好了,就如果超过5万个呢,变了S是什么意思?好,sorry,我打错了。

这个应该是word。或者这里都打成S吧,其实就是打错了。对 word count us。好,我们接着讲,然后我就把最我就把头头5万个最频繁的单子给他存下来。存下来之后呢,但是我们一共有多少个单词呢?

我们要知道我一共的单词其实是其实是我的land of L还要加上一,为什么要加上一?因为你你训练的时候,这个dictionary build,但是你在测试的时候,有一些单词可能是不存在,就是on。

所以这个单词你一定要给它留下。所以我最后的这个word date呢。就是我我需要返回一个dictionary,这个dictionary它怎么写呢?它应该是我大概要这样写for index。word。

In enumerate。L就是我erate一下这个我刚刚拿到的这个L是一个相当于是一个collection。一样的东西吧,然后我需要把它的W0W0其实是那个单词,然后这个index加一呢。

这个in这个ennumererate是从零开始的是吧?所以我把这个index是从一开始的一个东。所以我把这些单词从从平凡到不平凡开始,从一从一向下盈扣的。然后呢,我还单独留一个word date。这个。

我给他留一个暗k。un就是表示un words是吧?就这个un word,我也给它我把它直接留到零这个数字上面去。然后我 return word date。你称word date。

还有total words,就这个是word count,对吧?所以我这边m里面呢我想接两个我想接两个。两个东西,一个是。接两个变量回来,这两个变量一个是。一个是这个dictionary。

另外一个呢是我english的 total。然后既然有英语呢,我们也想有中文,对吧?中文就是。中文的写法完全是一样,就我这个functionction可以可以英文也可以用,中文也可以用,是吧?

trainCN就行了。那就变成了中文,然后这个地方也变成了CNCN told的 words,然后CN dictionary。那这样之后呢。我就我就拿到了X点。抽了,我为什么要把它存下来?

所以in total words,然后我可以把这个存下来。CN total words等于CN total words。好,这样我就拿到了一堆dictionary。

我们看一下这个dictionary长什么样子,就到这个地方又可以跑一下这个城市的地方。O他又告诉我有错。Expected stream, by or O S path like。

not non type。OK因为因为我这个我少写我少传了一个参数给他,我还没有把这个de data给他拿进去。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

De fight。稍微小一点,就这样吧。de file应该是。应该是datade minii dotTXT。就是拿传两个参数进去,然后我们看一下现在效果怎么样。现在train enlish没有问题。

然后d enlish也没有问题,然后in dictionary也没有问题。你看这些就变成了一堆 dictionary是吧?english就每个单词都给它map到了一个数字。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

比如我们可以看一下,我们可以看一下indict。有没有apple?apple是601对吧?比如说本案。啊,没有这个单词。对,因为我们训练数据比较小,所以很多单词可能找不到。那看起来O看起来O的话呢。

那我们就继续写。对我平时写屏就是这样,一般啊写一段跑一段写一段一。那我们继续看,现在已经拿到了,我已经拿到了我要的字典,我也拿到了。我要的所有的单词,那现在剩下来就是一步。

剩下来的一步就是我要把我要把train的 enlish。我要打Elish和。所你的CM全部都incode一下。incode干的事情其实就是做一个m。我要把我要把这些单词都变成。单词都变成数字。

然后我有一个indict和一个CN dict。然后这样就是我可以拿到我的traine enlish跟。train验这个这一步呢我稍微写加一个comment。

encode the words into numbers。就我这样是要把正式把我的这些单词全部都变成数字了。那我们继续看,我现在就要写这个functionctionin code,对吧?

这个incode function写什么样子呢?我继续把它回到这个youtu里面去写。De。那这个要怎么写呢?我们可以思考一下。这个train定这样不太好,我就我就给他写一 sentences吧。

然后这个是CN sentences。我们回顾一下in sentences跟CN sentence长什么样。就in sentences,它是一堆。一句话是吧?会不会两个单词对应的数字相同不会相同啊。

因为我这个地方。你思考一下我这个地方,因为这个这个word count,它是一个给每个单词数了一下。然后我这边是便利word count出来的,所以它。每个单词都会给。如果同样的单词它会被m到一起去嘛。

就不会不会出现两个单词。所以这个不是问题。嗯,然后我们再回过来考虑。我现在呃。说到哪儿了?对我们回过来思考一下这个ins sentences长什么样子。in sentences它是它就是一堆句子是吧?

就这个东西它是一堆一堆句子。每一个句子呢是一堆单词,我现在相当于要给它in扣一下,怎么样in扣的呢?怎么样用code?我们可以先给。我们可以先给每一个呃句子。先先给句子。我们可以这样做。我大致。

大致上要做的是一件什么样的事情呢?我我我肯定是要写一个for路,相当于for i in range,比如说lan这样一个东西,就是我我这个in sentence是一个比较长的一对一堆字母串是吧?

然后我就要嗯先便历一下,便历一下english和chinese,两个都遍历一下。然后这个english sequence,它应该会变成相当于这样一个东西。他应该熟悉这个写法。

我们比如说forW in in。Sentences。对吧然后 in sentences呢。in sentences是一个一个句子而是一堆句子。然后in sentences I那是DI句子。

然后比如DI句子里面的每一个单词W,我们都想要把它incode成一个数字,那我就可以写ind Wif W。indext如果他不在indext里面呢,我是不是要把它map上那个。因为如果他不在。

他如果他是一个un word,就这个零表示它是un word是吧?所以这个就是我们incode一个一个句子的方法。就我把这个句子里面的每一个单词都给它incode出来。然后同样的。

同样的中文中文也是要一样的,就我为什么总是要把中文跟英文放在一起写?因为我要保证他们他们的那个index是对应的。就是这句话这句话的中文呢也对应着那句话的英文。所以我这个I是一定要一起做的。

所以我会把这两个东西放到一起写。那我现在这个in sequenceequ跟CN sequence呢就变成了两个sequence。然后这两个sequence呢,我又想把它放到一个。What。

Sentences点。我想把。我想把in sequenceequence跟。The out sequence。Elish sequence跟。跟chinese sequence一起放进起。

chinese sequence。那我现在是不是这样就这样是不是就可以了?基本上是可以,lesss等于landin sentences。因为这个英文跟中文肯定句子是一样多的,所以这这个land是一样。

然后我要初始化一下out in sentence等于空的。然后这个out cN sentence也等于空的。然后我把这一堆句子都写好之后呢,我后面就可以。Return。O in sentences。好。

C and。嗯,然后这样就可以了。然后我们看我们看一下现在这样是不是可以啊,我们又可以来测试一下。现在来测试一下。啊,然后测试完了之后呢,我看一下现在唇眼长没变成一堆数字是吧?变成一堆数字,非常非常。

好像看起来没有什么毛病,就它它都变成一堆数字。然后你看第一个第一个东西永远都是一,对吧?因为一是个BUS就开头永远都是一大。好,看起来没有什么毛病。但是呢嗯我现在还想做一件事情。

做一件事情就是我想把句子按照从从短到长的顺序排一个序。为什么我要排个序呢?其实这个跟跟到时候我们跑程序的效率有关系。就是你如果我们到最后训练的时候会一个bach一个bach的进行训练。

所以你句子的长短如果差距太大的话呢,这些数对每一个数字代表一个单词,有些有些同学可能稍微有一些疑惑。所以我们再我们稍微慢一点,回过去重新看一下。我我相当于把每一个句每一个单词。

每个单词后面跟的就是就是我我现在把每一个单词变成了一个数字,我构造了一个dictionary。然后这个dictionary呢,它可以把单词map到一个每一个单词map到一个数字上。

然后我们看一下这些单词究竟是什么单词。我可以我如果想知道这个每一个数字分别是哪个单词,数字不是单词数量,不是单词数列的次数,就我这里回过去给你们看一下。

我这个地方写的是index加一 for indexdex w enumerate。我这个唯一干的一件事情呢,其实是我把单词排了个序,就是一个编码是零到多少一个东西,并不是并不是一个数字。呃。

你们可以再思考一下,就这个地方是你看我是inumerate里面出来出现了一个index。这个index只是一个数字而已,并不是表示它出现了频率。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

人工智能—计算广告公开课(七月在线出品) - P1:CTR预估技术的演变 - 七月在线-julyedu - BV1SA411H7Se

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

行,大家没问题,那我们就开始讲好吧。啊,首先欢迎大家来听我们呃7约在线的这样一个公开课。然后本次我们讲课的一个主题呢是讲CTR预估技术的一个演变历史啊。

以及我们会穿插的讲一些机忆学习的一些相关的一些技巧,以及我们实践中的一些经验。然后都希望能够对大家呢有一定的帮助。好吧,嗯,OK如果没什么问题的话,那我们现在就开始。嗯,在开篇的时候呢。

我们先来聊一聊点击率是什样什么样一个东西,对吧?因为我们本片主要讲的就是CTR点击率这样,然后点击率是什么?就比如说大家在上网的时候,大家就经常能够看到广告啊,无论你是在上谷歌还是在上百度。

或者像视频网站,像腾讯视频啊等等之类的,都给你推荐很多的广告嗯,大家肯定都明白说广告是为了给互联网公司增加一定收入的啊,但是大家有没有想过说为什么你看到的是这个广告,他看到是另外一个广告。

每个人看到的广告都是不一样的。那背后一定是有一套算法来去参与决策,说每一个人是什么样一个广告啊,我们这里所了解的CTR预估就是来做这样一个事情。首先CTR预估呢是最开始是由谷歌来发起的。

因为谷歌它本身的最大的收入来源呢就是CTR预估啊,它也本身像谷歌facebook,他们的主要收入都是广告,或者说我们可以戏称为他们就是一个广告公司。那广告呢直接就涉及到了用户点击的付费。

就比如说我作为一个广告主,我在上面抛了一个广告。那这样的话呢,有用户点击,他就要向我这个平台去交钱。因为我平台为他提供了一个展示广告的机会,对吧?那么这样的话呢,换句话说,我模型预估的越准确。

那么我做为一个平台,我能拿到的收益也就越大。通通常我们的广告点击率其实都是很低的。比如说0。1%啊啊,1%啊,甚至于基本上没有到点位数10%以上的,因为大家可以想象到,大家可定点广告点的相对都比较少。

是不是?所以说呢。怎么着能够把这个模型预的更准确。其实就是公司的收益就会越来越大化。大家都可以知道,跟钱占边的东西肯定都是最重要的。

所以说这也是为什么CTR预估技术一直是互联网公司这些年来发展的最快的技术之一。我看有很多人说黑屏,现在有黑屏吗?因为我这里看到好像是正常的。如果有黑屏的话,大家刷新一下网页好吗?

因为我刚才刚刚刷新了一下也是正常的。好吧,我看有同学回复OK了那我继续啊。嗯,所以说呢我们看一下CTR预估技术呢,都有一些什么样的一些呃模型,曾经出现过呢。比如说我们看到最传统的继续算法。

比如说逻辑回归啊,就大家所最熟悉的log regression啊,这个是一直沿用到现在,包括现在都有很多公司一直在用的一个算法。😊,第二代就是新一代的机器学习的一些算法。比如说深度学习啊,深度学习。

其实现在自从前几年开始火热起来呢,已经在很多地方。都可以被广泛的使用了,而且它的效果确实是不错的。所以说深度学习也已经成为了CTR用估技术的一个新宠。第三个就是更加实质化的继学习算法。

实质化其实有很多个方面。比如说我们可以模型实质化,比如说在线学和强化学习,还有特征实质化,我们用到更新的更好的一些特征,这些都能提升我们CTR预估的这样的一个有效性。啊,用微信自带浏览器的同学呃。

可以打开呃手机内置的浏览器。比如说苹果的话用sfare,可以用sfari安卓的话可以用chrome,然后大家可以换个浏览器来看,好吗?啊,最后的话还有一些模型融合和特征融合。模型融合。

如果说大家曾经玩过开过这类东西的话,都应该知道有个叫做assembling的东西,就是模型之间的一些融合。比如说我们经常所用的一些数模型,像A定算法,它其实呢就是模数与数之间的去融合啊,特征融合。

就比如说像交叉特征呀,二呃二阶交叉、三阶交叉等等很多的交叉特征,它们呢都是特征的融合,好吧。这些呢我们在呃我们本次课讲解主要是会讲解逻辑学习、深度学习,在学强化学习以它为主线。

中间穿插着一些像模型融合特征融合以及其他的一些呃建模的技巧。好,我们从入数学化来表示一下点击率预估这样一个概念。假设有一个用户U,然后有一个物品I和一个上下文C啊,就U就是userI就是ite呃。

上下文就conext。然后我们要预估最终的结果,这个Y。然后我们的目标呢就是通过这个UIC这个3元组来预估最终的Y。特征呢我们一般是通过离线特征或者实时特征去获取。然后点击结果呢。

我们一般是通过呃前端的买点日志去获取。然后呢模型呢一般是我们做算法工程师的同学去把它给创建出来。好,在最终开始我们正式的课程之前呢,我们先在聊一聊人工智能这样一个话题。因为CTR预估呢。

它本身是属于人工智能的这样一个范畴的嗯,讲CTR预估呢,肯定是离不开人工智能的啊?因为人工智能这一波大浪潮,把CTR预估这样一个技术,更多的暴露在了人的面前。那我们什么是人工智能呢?

大家肯定在课下都有所了解,不然的话也不会来听我们的课程,对不对?人工智能其实就是 intelligence,就是用于研发和模拟一些理论一些方法,一些技术的一门新的技术科学啊,其实这句话说的很抽象。

这句话也是我直接从百度上给copy过来的。大家可以直接从百度上去查到那我们肯定要用一些更加形象的话去聊一聊什么是人工智能。我觉得这也很抽象。那么我们不如直接去聊人工智能。他为什么有前途?

他究竟如何改变了我们的生活?首先我相信很多人对于包括说很多家长啊,很多嗯成年人,他们对于人工智能的一个触感,应该就来源于阿尔法 go,以及发展到现在的阿尔法zero。当年下围棋的时候,对吧?

他也是第我记得那是应该13年14年左右的时候,第一次把人工智能暴露在着我们的面前,大家就会去想啊,人工智能原来还能教我们去下棋,并且比世界上下的最好的人都要厉害。其实关于下棋的这个东西。

人工智能很早就来尝试了。围棋只是目前尝试的比较好的一个阶段。嗯,包括像之前的呃很早很早之前。国际象棋已经在IBM的机器上去尝试了,为什么当时没有尝试围棋呢?是因为国际象棋呢,它只有8864个地盘。

然后美方有16个棋子,它的变化相对是比较少的,是可以通过模拟去模拟到的。但像阿尔法购下围棋的时候,围棋总共是有361个棋子就已经不太可以通过模拟的角度把这个结果给展示出来了。所以说本身。

人工智能发展到现在才能用阿尔法 go这样一个技术也是合理的。因为之前我们的算力,包括我们的技术都是不支持的。包括说后来阿尔法 go以后to的阿尔法zero。

他们用了一些更加高级的一些像reinforment learning,就是强化学习的算法和蒙特卡洛的模拟之间的相结合也都。使他的技术也发展的越来越好。包括像现在。

其实人工智能的科学家们已经远远不满足于阿巴构带给大家的震撼了。他们已经开始去在游戏上去发功。呃,玩游戏的朋友,我相信在座的各位可能都知道dota这个游戏。之前dota这个游戏呢在今年也曾经与人类战队。

我记得是OG。如果没有记错的话,然后也曾经打过了一仗,最终好像是寻虐OG。当时人工智能虽然说他只能选择几个英雄,但是他能够在团战的过程当中做到一个完美无缺啊,不属于dota同学可能就可以想一象王者荣耀。

其实本质上都是一样的。你可以想想你的对手,他团战当中技能放的永远是最好的,并且每个人的配合都很好,他们也不冲动,这个游戏肯定是打不了的,对不对?所以说这也是阿法go,包括现在的星际啊。

dota给我们带来的震撼,说明它确实是有前途的啊第二点,我们聊一聊它的目前一个很重要的落地技术,就是在图像识别方面,啊,人脸落地技术的落地,以及说无人驾驶的一个如火如荼,啊。

人脸落地技术其实大家应该体感很强烈了。就比如说我们嗯线下在做一些扫码支付的时候,有些城市可能已经铺开了扫脸支付,对吧?现在支付宝和微信应该也都在抢地盘,对人脸支付的这样一个过程,包括说无人驾驶。

无人驾驶虽然说大家听说到的可能都是一些负面的消息。比如说像ubber的一些无人驾驶又撞车了,特斯拉又怎么怎么样了,但其实这个领域一直是在向前发展的,不然的话也不会有那么多VC那么多风头去向这边去助钱。

因为它确实代表了一个未来的一个方向,虽然它比较难,但是它确实是有价值,有利可图的。好,这是在第二点。第三点就是翻译和自动语言生成的这样一个发展。啊,其实翻译呢大家也许会有一些感觉,就是说这几年来。

无论你是用google翻译,还是用百度翻译,或用其他任何的翻译软件。这几年来翻译的技术其实已经远远的比过去要好很多了。大家可能想几年前,你在上面用中文翻译成英文或者英文翻译成中文,其实讲出来的话。

可能都是狗屁不通的。但是这两年其实它越来越像一句人话了。因为像大家真正的能够去看到的去说出来的一些话。😊,自动语言生成呢,其实包括像一些ILP的一些其他的领域,有一些实体识别呢。

也都是在这几年的一些发展的过程当中变得越来的越好。所以说其实无论是在刚才的这样一个图像识别,还是在ILP,还是说我们今天马上要接着去讲的CTR预估的一个方向,其实都是很重要的。

然后这也是构建了我们未来的一个生态体系的一个蓝图,包括说一些什么机器人呀什么之类的。刚才那些讲的一些东西。我们可以感受到人工智能其实会渗透到我们生活的方方面面也会使我们的方生活变得越来越好。

所以说人工智能一定是有前途的。学习它也一定是有价值的。那么有些同学可能会问了,老师,我是一个传统IT行业的,或者说我甚至连IT行业的都不是。那么我想转行人工智能,我不知道怎么去转,确实不敢迈出这一步。

那么我们就从大方上来讲一下,人工智能的从业者到底需要具备一些什么样的能力。也为大家转行提供一个比较好的一个借鉴一个方向。啊,第一个那一定是一个优秀的编程能力。嗯。

首先我希望大家呢不要被网上那些整天发paper啊,发论文呃,去头顶会的那些所迷惑。因为我们肯定不是那些科学家,我们所要做的一定是把一件事情给落地,能够真真实实的去一个公司,他们能够要我,我们能拿到钱。

对不对?那需要的是什么?一定是工程能力。我们之所以叫它算法工程师,不叫它算什么呃算法paper师什么之之类的名字,就是因为工程一定是我们所最重要的一个东西。所以优秀的编程能力一定是最重要的。

目前市面上应该在人工智能领域呃,最重要的语言呢是python。而pyython呢这几年也一直是凭借人工智能这波浪潮,它的地位也越来越高。我记得最近的一次的呃。编成语言的排行榜。

pyython已经超过了java成为了第一名。也就是大家可以看出来,人工智能到底有多么大的一个能量。好,这是一个优秀的编程能力。第二个就是高等数学和线性代数。啊。

其实这个我相信很多同学在本科的时候都已经学习过了。呃,我们数学的呃三呃三大重要的基识,高等数学线性代数概率和数理统计。这里我忘了写概率数学统计了,其实也是很重要的。

就是其实有这三方面的基础就已经足够去学习比较基本的人工智能了。当然我们可以看到paper当中,它用到了一些很高大上的一些东西,比如什么像泛寒分析啊,测度论呀什么之类的东西都具备了。

但是其实如果我们不是要写paper,我们只是想去去学习去看一些像什么西瓜书啊、花书啊这些东西,其实这些最基本的就已经完全有呃可以让我们去完成这些东西了。好,这是第二点,基本的数学能力。第三点。

从实战当中总结出来的对于特征模型的问题的经验啊,其实这些呢大家应该可以想象到任何一个领域,我们想要把事情做好,经验都是必不可少的。所以说这也是为什么很多同学愿意去去玩一些像开过啊之类的这样一些竞赛。

这些竞赛带给我们的,其实不仅仅是一个对于大公司的一个敲门砖,一些如果说获奖还有一些金钱的收入。其实更重要的呢是增强了我们对于这些领域的一个本身的一个经验和一个认知,并且再去做这些事情的过程当中呢。

有人发现自己是否真正的适合这个领域。所以说其实这三方面呢?我觉得是转行到人工智能所需要去努力的三个方面。编程能力、数学能力以及经验。好啊,最后再真这是最后一次题外化了,我们来推广一下啊。

我们企车在线的一个就业小班啊,百分之百保证就业,保证每一位学员拿到一个推荐算法的一个offer啊。如果大家有想转行的想法呢,可以扫一下微信,关注就业小班,里面会有客服解决个位的问题啊。

招生名额只有30个,大家预报重塑那,并且我获知好像明天这个还要涨价。所以说大家如果想报名的话呢,就扫一下码,好吧,这里我停20秒。😊,然后大家有什么问题呢?

也可以在呃我们的公屏那边聊天那里呢去把大家的疑问给说出来。呃,如果说我能看到的话呢,且与现在所讲的相关,我都会及时的回答。如果说我觉得可能。就是跟现在讲的不相关,但是比较有价值的。

我会在课程的结束的时候一起去答疑解惑。好吧,最后我一定会留出一些时间给大家提问的。好,那么现在我们开始我们的正题。从下面开始呢,我尽量保证讲的每句话都是干货,能够希望能够对大家呃无论是在工作。

还是说在学习,还是说在目前就业的方面呢,都能有一些的帮助。好吧呃我们。分四个方面。从上到下来讲解我们本次。第一是逻辑回归,第二是深度模型。第三是在线学习和强化学习。第四是建模的技巧。

其实建模的技巧我之所以把它单独列出来,是因为我觉得有一些建模的技巧呢,可能是和这三个都关系不大,是相对比较独立的。当然。在这三个当中都会有一些各自的建模技巧,我都会在这三个当中。相关的都把他们说出来。

这三个也是形成了从浅到深的一条逻辑线啊,大家跟着来听,一定会能够明白为什么要这样去组织。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好,第一章逻辑回归。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

嗯,我们学习一个模型呢,或者说学习任何一个东西。其实我们首先讲究的呢是一个方法论。就是说我们培训所做的肯定是受之于鱼,不如受之以于。啊,我们肯定是想告诉大家说,我们学习一个东西如何去学?

就比如说现在学习一个模型,我们怎么去学它呢?一个逻辑回归的模型。其实大家我相信在座的很多人都已经很了解逻辑回归这模型了。但是我这里想说的是,我们要深入的去理解逻辑回归这模型。我们要从三个方面去了解。

不仅是逻辑回归,任何一个模型都需要这么去做。第一点就是你们的model。这里的西格玛就是那个sigoid的函数啊,等会会给大家介绍一个soid的函数啊,贝塔X其实这里是一个向量表示,然后呢。

就是这就是我们最基本的逻辑回归的一个函数,里面贝塔X是一个线性的,里面用sigma的变换,它就变成了最终的零1这样一个概率。这也就是logtic regression这样的一个模型的一个长的样子。😊。

那么有了模型我们下面要想的一个事情,就是我们怎么让这个模型变好,对不对?那要变好,我们一定是说要定义它怎么变好,什么叫变好,对不对?那什么叫做变好呢?

cose function就是我们所说的损失函数或者叫objective function。损失函数它所解答的一个问题就是我们怎么让一个模型去变得越来越好。我们要计算梯度,那么梯度是怎么来的呢?

梯度是通过损失函数去计算对X的偏导计算出来的,对不对?那么这里呢我们就列出来了逻辑回归的一个损失函数。这个大家肯定也都比较了解了,这就是一个交叉熵,对吧?然后呢,我们这里也不详细去讲,展开讲这个问题。

然后第三点就是我们有了这个损失函数,那么我们也有了它的偏导,我们怎么样能够让这个损失函数变得越来越让这个模型变得越来越好,让这个损失变得越来越小。

也就是我们的优化算法就optimation optimizationim method。常用的优化算法包括SGD就是呃astic gradientingcent以及FTRLFTRL主要是在在线的时候用的比较多。

SGD呢主要是离线当中一个一个样本建的时候用的比较多。呢是在SGD的基础上通过呃然后等等之类的一路发展过来的。

这是一个从SGD到呢是一个呃opimization method的发展的一个整个的一个逻辑线。这里呢我们不详细的展开讨论。但是我这里想主要想讲的,就是我们要有了一个模型,我们把它模型的样子定义出来了。

我们就需要定义这个模型什么是好,也就是它的cos方。然后呢我们怎么让它去变好,这是一个模型,它所做的三要素,是不是?下面呢我会把逻辑回归这三点分别的跟大家去解释一下。嗯。

如果说那个大家觉得没有声音或者画面声音都没有的话呢,可以去课后看一下我们的录屏回放啊。这个课这个视频课后都会放到我们的网站上面的,然后大家也不要着急,好吧。好。

模型嗯我们的基本模型呢就是刚才所说的FX等于sigma呃sigma的贝塔X。然后呢,我们这个sigma函就是我们这个sma的函数啊,这个X。然后呢呃刚才所说的。

这个模型呢这个贝taX呢它内部是一个线性模型,然后外面加了一层变换,这个变换呢还是一个单调变换。那么它就符合了我们对于GMM系列模型的一个定义。GRM呢是一个family。

就是generalize的 models广义线性模型广义线性模型呢就是包括说像最基本的线性模型。我们这里所讲的log regression以及如果大家学过计量经济学的话。

还有一个probitt呃function,这些呢其实都是一个广义线性模型。他们作为同样的一个family呢,它们有很多共同的性质啊,这个大家可以靠后自己学习一下。

那么我这里之所以要把G2M广义线性模型这个东西给提出来呢,主要原因是因为它们一些共性。对于我们在这次建模的时间上面呢。都已经有一些启示。比如说特征的离散化和风险均摊、人工特征组合和自动特征组合这些东西。

我们下面会一一来讲解一下什么是特征离散化和风险均摊。为什么会有这样一个情况。人工特征组合和自动特征组合都在做一些什么样的事情?首先是特征离散化。为什么这么说呢?是因为G2M它对于连续特征是很敏感的。

以及对于特征的大小不一致性,就是特征的量刚也是很敏感的。什么叫做特征的敏感性敏感性就是说特征的变化呢会引起结果的剧烈的这样一个变化。打个比方啊,假如说我们一个比较简单的现性模型,预测我们每一个人的收入。

我们就用年龄去预测,不用其他任何特征去预测了。那么我们就是一个最简单的Y等于KX,对吧?呃,呃,我们不说CTL预估的一个问题。我们就是一个很简单的一个Y等于KX的这样一个问题。那这样的话呢。

假如说现在我是20岁。😊,我是20我是20岁的时候呢,假如设说K12啊,最终我的这个这 incomecome就是我的收入呢就是40。那如果现在我是60岁,我的收入一定是2乘以6120嘛?

显然不一定是这样的,对不对?但是现但是这个模型就会预测出这样一个结果。为什么?就是因为它特征从20变到了60,导致的结果引起了剧烈的变化。😊,其实我们。

应呃就是收入呢可能在40岁什么样子就什么样子以后也不太可能会变化了。也就是说我们让他是一个。每一一个连续的特征,一个d词的特征其实是不太合理的。也就是说,目前这个模型对于这个特征是特别特别敏感的。

这就我们所讲的特征敏感性。这是第一点。第二点就是我们的大小呃比较不一致,大比较不一致是什么意思呢?就是说如果说我们刚才讲特征敏感性以后,很多同学会说了,老师,那我知道怎么去做了。😊。

我们嗯我们一定要把这个给它分桶,比如说10到20是一个桶,20到30是一个桶,30到40是一个桶。对,这是一个很好的做法。它同时也解决了一个什么样的问题呢?就是10到20的增量和从20到30的增量呢?

其实也是不一致的,为什么这么说呢?就比如说还是举我刚才那个例子,我20岁的时候呢?😊,我的呃因为我的K是2,所以说我的最终的收入是40。我从20到30呢,我就相当于涨了20。因为2乘以10嘛,对吧?

这可能是比较合理的。😊,从30到40呢,涨十0还一定涨2乘以10也涨20一定是合理的呢,不一定了吧。从40到50是否也涨20,这也是不一定合理的,对不对?也就是说我们的大小可能是不一致的。

此时通过分筒也解决这样一个问题。分筒就是我们这里所做的离散化,也就是buucket,对吧?英文是这么去讲,所以说特征离散化呢就能解决说我们特征敏感性或者特征大小量刚比较不一致的这样一个问题。

并且它还能带来一个好处,就是风险均摊。因为我们在预测的时候呢,根据我们刚才这里所聊到的这个los function。我们这里所最终带来的结果就是说我们的这个模型,我们这个模型呢。

它一定是要尽力去你和所有的点。那假如说我们的所有很多个模型都在一就很多的点都在一起呆着。有一个点离得特别特别远啊,属于统计学的,大家应该知道这个叫做outlay,也就是说是我们的呃离群点。那这个点呢。

它有时候会极大的干预模型的这样一个结果。如果说我们用这种连续的结果,连续的一个模型啊,不把它离散化,那么我们离散化的好处呢,就可以把这个outlay给它排除掉它的影响。打个比方就是我们。😊。

还是刚才那个例子,假如说有一个人他120岁啊,他的呃收入只有100。那么我们这个K这个2K等于2就一定是不合适的。对不对?那么K点21定不合适的时候,我们如果把它离散化掉了。

比如说我们每10个单位作为一个离散化,10到2020到3030到40,110到120是1个离散化。那么这个120岁的人,他110到120。😊,我们就可以给他一个单独的权重去学习,是不是?这样的话。

我们突然离离散化,也使得outlay这个东西呢。🎼能够降低它对于我们模型的这样一个影响啊,这是为什么要进行特征离散化。总而言之,任何1个GLM系列的模型。

也就是说任何一个我们呃广义线性模型模模型都会带来类似的问题。所以说我们要进行特征离散化。也就是这是大家经常会听说到的L2比较适合离离散特征,不连续的特征,它不太适合连续的特征,也是因为这样一个原因。好。

那么讲完了我们需要进行理性的话,我们就要提出的问题就是怎么去进行离散化呢?有两个方向。第一个就是手动分桶。第二个呢就是自动分桶。什么叫手动分桶,就比如说我们可以通过我们这个年龄的这个分段呢。

我们比如说10到20岁的有多少个人,20岁到30岁有多少人为,然后每一个组呢去计算一下他们所占的一个比例,尽量保证每组的比例都是比较相似的,或者说他们每一组的分类情况,框太的情况都是比较相似的。

这是一个比较合理的的方案。还有一个呢就是就像我刚才所说的,每10个分一个,这也是一个比较好的一个方案。因为我们大家经常会说自己什么80后啊,90后啊,其实我们也已经是人为的把它去给他分组了,对不对?

这就是我们所说的手动分桶。我们人为去做一些统计,根据我们的一些经验,或者说我们一些统计的结果进行分桶。但是这样去分桶呢。😊,不一定是最好的,原因也是很显而易见的。你这么分头。

你没有一个确定的依据说这样就是最好的。它或者说从统计上来看,它是比较好的。又怎么去证明它对于模型的结果是一定是比较好的呢,对不对?所以说我们就战生了第二种方案,自动分头。

比如我们马上要讲的GBDT加LR。好,在讲GPT加LR之前呢,我们再讲最后一个,因为GPT加LR也是跟这个特征组合相关的。因为特征组合呢呃什么叫特征组合?就是说我们所拿到的经常都是一些一阶特征。

比如说像年龄啊,你的家庭地址啊,你的习惯呀,然后你的学校啊,这些都是一些呃原始特征,那么这些特征都放到模型中。刚才我举了四个特征,把四个模型,四个特征放到模型当中呢,预测一个结果不一定是最好的。

为什么呢?因为很多特征可能是这两个组合起来,效果是比较好的。比如说我们把年龄和我们的学校进行组合,把年龄呢和家庭的习惯进行组合等等等等。比如说我们诞生的很多很多的二阶特征,三阶特征以及更多的一些特征。

这就是我们的特征组合,其实LR这个模型呢,它所最重要的一个点就是在于做特征工程,也就是我们这里的特征第散化,你这里的特征组合,这些呢都是对于LLR的模型呢是有很显著的提升的。因为。😊。

R这个模型它本身很简单,它模型简单的结果就意味着我们要去其他地方做复杂。那么在什么地方做复杂呢?那就是在特征的地方做复杂,对不对?所以说我们也需要做一些特征组合。那么呢传统的方案我们都是人工特征组合。

根据人对于模型对于业务的理解进行做特征组合。我们也确实能够提升一定的业务效果。但是人他所能做到的事情一定是有上限的。并且假如说我们有成百上千个特征,我们每一个都去做特征组合嘛?

然后这还是二阶、三阶、四节、五阶、六节,我们有必要去做吗?我们也不知道。因为如果有1000个特征,它的特征组合的可能性,就是二的1000次方了,这已经不现实了,是不是?所以说那么怎么着去做自动特征组合。

也是我们所需要研究去讨论的一个问题。好,我我先暂停半分钟。大家对我上面说的话呢嗯简单的回顾一下。然后呢,如果说呃我可能刚才讲话的语速比较快,我下面尽量压低我讲话的语速,然后让大家都能保证听清,好吧。

大家有什么问题也可以随时在我们的聊天里面去提出来。无论是对于讲课的一些呃语速啊,包括说一些风格呀,都可以提出来,或者说对于知识我都会回答的。呃,我看有同学说完全听不懂。呃。

我我觉得这个分享呢主要可能不是针对于一些零基础的同学。然后呢,最好是大家呢对于这个呃目前的一些最基本的像log regression或者DN呢有一定的了解,听起来呢可能比较有意义。

零基础的同学呢或者说基础相对而言学习的比较少的同学,可以去自己去去先去学习习,或者报一下我们7月在线的班,然后呢跟去学习的会更快一点,好吧。好,我们下面来讲GPT加LR嗯。

GPT加LR呢从这里这个加号我们就可以看到它是由GBTT加LR两个模型的。其实GBTT呢是一个数模型。LR呢就是我们这里刚才一直所说的log regression已经是我们的。😊,呃,那个逻辑回归对吧?

那么我们怎么样去做这样一个事情呢?首先就是我们现在训练集上训练1个GBDC的一个数模型。哎,这里就是我们的原始模型,我们先训练一个树模型,哎,这里就是我们的树模型,对不对?

我们的左右分叉这边都已经体现的出来。最终呢树模型会告诉我们在每一个树树的叶节点下面,它都预测的结果是什么?比如说我落到了这个叶子节点下面,它就是一,剩下就都是零。我落到了这棵树的这个叶子节点下面。

它就是一,这个就是零,对不对?😊,然后呢嗯最终我们就能够把一个特征,从它最原始的特征转移成了我们已经经过经过了数模型的一个编码的一个特征。比如说刚才按我所说的01010,对不对?

相当于它进行了一次模型的转化,我们可以把数模型此时当成一个转化器。然后呢,这里就变成了全是零,也没有任何其他东西的一个离散变量了。此时我们在用我们的呃linear classifier。

就是我们的线性模型。呃,刚才所说的LR就是一个线性模型,对吧?然后呢去做回归呃,去做一些呃我们的一些模型,这些W就是我们的权重,就刚才我们所说的这个beta,最终呢我们去把它们散到一起。

就我们把它们加合到一起,经我们的sigoid就变成了我们最终LR的一个结果。那么这也就是刚才我所介绍的。那么我们简单的介绍完了这个模型,我们就需要说为什么这个模型它本身是有效的。

它解决了一个什么样的问题,解决什么问题,其实我们已经很显而易见了。因为我们的这个原始的这个特征啊,比如像什么年龄啊啊,你的收入啊,你的。而不收入是我们的外,我们的年龄啊。

或者说我们的呃习惯呀等等之类的这些东西呢,都是我们的一些原始特征,每一个都会有很多千奇百怪的值,而且他们都可能是一个连续值,比如年龄是连续值,籍贯可能不是。但是呢我们就通过数模型。

最终把它转化成了全部位的移散值。而且它在训练的过程当中呢,直接它的训练的目标就是我们最终的训练目标。比如说它这个转化本身就是考虑了我们这个训练的结果的。所以说它这个转化的过程当中是有效的。

并且它做到了自中自动的一个特征组合这样一个概念。这个特征组合其实就相当于是每一次分裂的时候,比如说我是年龄大于20岁还是小于20岁。然后这里是比如说我籍贯是北京市的还是非北京市的,这里在进行组合的时候。

就已经拿年龄是北呃,年龄是20岁的,小于20岁的和籍贯是北京市的这两个特征进行组合了。换句话说,我们数模型,它有几层,它其实就做了集中组合。这里可以理解吧?除非说我们到一半的时候,我们就没了。

比如说到这里直接就指向叶子起点,这可能就做了异阶的特种组合。好,嗯,我看几位同学提出的问题,我把GPT加R讲完以后,我统一来解答,好吧。😊,然后呢,刚才我们讲了。

它怎么着去做到了我们的自动的特征组合以及自动的分头。那么为什么这么做是有效的呢?我们就要讲一讲GBDT和LR这两个模型之间的区别。首先GBDT它很适合连续特征,它不适合离散特征,原因也是很简单的。

因为这里在分裂的过程当中呢,它是通过计算一个数模型的或商值或基尼系数的一些其他的一些标准去计算出来,我到底是分到左边还是右边的连续值是在函数空间进行拟合和近似,这是符合数模型。

它本身的一个计算的一个方式的。但是如果说是离散模型的话呢,如果说它是一个离散特征的话,sor离散特征的话呢,它本身就会出现了这样一个问题。所以说我们GBDT这个模型它本身是适合连续特征。

不适合离散特征的,并且它是在函数空间对残差进行连续的逼。它的精度很高。但是它有一个很严重的问题,就是会进行过会容易出现过拟合GBT。就是叉G boost叉 boost,大家可能如果说经常做开go的话呢。

都会有一定的了解GPDT也是叉G boost的一个前身。它就是为什么出现了叉G boostt,它所出解决了主要有两个问题。第一个就是它容易过拟合的一个问题。第二1个就是它并行计算效率的这样一个问题。

变均团效率我们这里也不太讨不去讨论。因为这是嗯主要是讲的一个本身的一个效率。就是我们在每次分裂的时候怎么去分裂的这样一个问题。但是过拟盒这个问题。

charge boost是通过加一些像LELR以及一些其他的正则项去解决的。但是我们是否可以通过其他的方式去解决这个问题呢?当然是可以的,就是我们这里的LR。我们的LR呢就是相当于我们不用数模型。

它所分类这个结果,你不是容易去过拟合吗?那我不用你了,我直接用你这些已经分类好的叶子节点,因为你每一棵树,它都会有一棵自己独立的一个分类的这样一个方式,所以说我们用很多棵树的叶子节点组合到一起。

是不是就不容易过拟合了,对不对?并且它现在也是离散特征了,是不是就特别适合LR了。对,然后呢,当然我们解决过拟合呢也可以本身对树进行一些裁剪。但是这都是GPT本身的问题了。

我们这里主要来讨论GP加LR是为什么是有效的。😊,好在讲损失函数之前,我先回答一下呃,几位同学呃提出的一些问题,是吧?嗯,有同学问说人工特征组合的话,就是简单的加减乘除。嗯,这刚才解释过了呃。

加减乘除其实是呃可以算是一种吧。因为加减乘除其实我们解决是什么样的一个问题呢,就是把dance特征把它给标准化或者叫standard代,就是我们因为不同的特征,刚才说过了,它的量纲是不一样的。

比如我的年龄是从0到120岁,我其他的东西呃,再比如说我离公司的距离很可能是什么10到100公里,我们不讨论一ED的情况,那这样的话再加上一些其他特征,它们的量纲可能是不一样的。

最终对于模型在算他们的梯度的时候,不同的量纲会导致它在算梯度的时候,很难去逼近它最终的那个globalop,就是全局最优点或者局部最优点。所以说这是一个人工特征组合。😊,这样的一个。人工特征组合呃。

他所做的一些事情,包括像刚才说的二级特征,三级特征等等之类的东西。好吧,嗯,数模型一般用什么charge boost chargege boost是一种刚才所说过的,它是GBTT的一个高级版本。呃。

其实数模型它有bagging和 boosting像GBTT呢它们属于ting的一种范畴。 boostting呢其实就是对残差进行不断的逼近bagging呢,其实它是每次选择一部分样本。

或者说一部分行的样本或者一部分列的样本。然后呢最终去做一些数模型的一些东西。然后问一下灵异编码是弯号的编码吗?其实灵异编码是弯号编码,但是我们在这里GPTT所所出现的一些编码呢,是根据我们页子节点。

它落到哪里进行编码的。弯号编码很可能是说说如果我们不用GPT加LR,我们把一个特征,一个连续特征,把它给离碳化的时候,其实就是一个one号。比如说我们去讲我们的年龄,我们的age。然后他是10到20岁。

20到30岁,30到40岁。其实如果说我是1个20岁的人,我就落到了呃,10到20岁的这样一个桶。我这个桶就被万号的结果是一,其他桶就都是0,对吧?然后呢。

还有同学说数模型包括很多GBDT chargege boost来GBM都是数模型。对的,这些都是一些数模型。来GBM其实叉ge boost的一个轻量级版本,是微软的一个同学呃去呃的一篇论文。

就给大家有兴趣可以了解一下。然后嗯GBDT为什么不太适合离散特种?这个刚才我只是简单提了一句,因为这个要去说的话呢,其实是一个比较大的话题,我不太想在这里面去说。然后有兴趣的话呢。

我可以课后或者以后再开其他角度专门去聊,好吧。然后c boost怎么样效果呃。我不太清楚这个cad boost什么东西,然后charge boost和GBT和LR结合有什么不同,其实没什么不同。

chargeGBDT其实都是数模型,因为我们在这里呢都是利用它的叶子节点,你要非说不同的话呢,那可能就是精度啊或者说速度上可能会有些不同,好吧,然后和LR的结合呢,其实本质上都是一样的。😊,好。

那我们继续。呃,刚才我们讲完了模型,我们下面就要讲损失函数了。我们在逻辑回归里面呢,用到损失函数呢是这样的,就是交叉熵。那么其实。😊,我希望每位同学看到一个损失函数的时候呢,都能提出一些问题。

就比如说为什么要用交叉熵这个损失函数呢?它怎么来的呢?我们是否有好的损失函数呢?我们不同的损失函数都是基于什么去定义出来的呢?就是嗯学习一个问题,我们不论有知企,还有知其所以人。

那么我们先来解决回答第一个问题,为什么要使用交销商的问题?使用交商的原因呢,其实是因为我们。这个GRM它是通过maximum likely的,就是那个最大自然估计MLE去推导出来的。

这个大家去可以去有兴趣的话去看一下相应的推导。那么有没有更好的损失函数呢?啊,当然不一定是有的,对不对?我说当然大家可能以为我要说一定是有的,不一定。为什么说不一定呢?其实刚才我说过了。

经叉商是通过MLE去推导出来的,它是有一定的逻辑逻辑和理论基础的。那么我们要想定义最好,那一定是通过别的角度去定义。比如说我给大家举两个角度。第一,通过业务的角度。

很可能说比如说在我们如果说业务在我们在一些真实的建模问题当中,假如这个问题定义是说这部分人他对于我们这个损失是比较强的那一部分人对我们的损失是比较弱的。打个比方说我们在做反作弊识别的时候。

正样本和负样本的问题,如果说我们把一个负样本预测成正样本,那是很可怕的。把一个正样本我们把就是正样本是我们那个最终会呃作弊。呃,我刚说错了,把副样本预测正样本其实无所谓的。

就相当于是我们宁可呃错达1000,也不能使一个人漏网。所以其实这时候正样本和副样本,他们的权重已经不同了。那么我们就不能简简单单用这个交叉熵了,我们就需要对正样本,它的损失进行加权。

负样本的损失呢可能进行减权重。第二个方面就是我们的模型在训练的过程当中呢,很可能有的样本分类的好,有的样本分类的不好,怎么解决呢嗯。这个我们在后面其实有表呃有提过,我可能没有写过可能写在了其他的地方。

就是呢呃我们会通过一些其他的lo方式去解决。比如说像何海明提出的fcal focal loss就是解决这样一个问题的。然后不同的损失函数都是基于什么样定义出来的呢?其实这个和这个问题有点重复。

我们定义一个问题,首先要想它是什么样的业务结果,我们这样去定义这个函数,它最终是否可导的。它对于我们的函模型的演变或是什么样一个样子,对吧?这些其实是我们定义损失函数的一些比较重要的一些关键点。好。

最后呢我们再来讲一讲自优化算法。嗯,这些地方呢。😊,我们会讲的相对呃不是那么侧重。因为最优化理论呢,包括图优化理论呢,其实都是一套很复杂很成熟的理论。大家有兴趣呢,这个可能不是开易斯课能讲明白的了。

可能开一系列的去刻。然后呢,我这里想强调的就是说刚才我讲的模型讲过了我们的lo function其实呢最优化算法和他们都是解偶的。无论你的模型是什么样子,你的损失函数是什么样子。

你最优化算法都能保证说只要你可导都能寻找你的导数,就用让你慢慢的去优化。然后长的呢就刚才想所说的SGD啊 mini batch和FTRL等等。😊,有同学问说,为什么不用soft max?嗯。

soft max和普通的这些reversion的区别在于说,如果你是一个多分类问题。比如说呃图像识别,我识别呃0123456789,这10个数字,它就是一个soft max的问题。

如果我是一个零或一的问题呢?其实它就是一个普通的呃那二分类问题。softax是一个多分类,它可以认为是一个二分类的一个扩展,它不是模型,它本身的一些东西。比如说你是soft max的话呢。

那么你的损失函数会长什么样子呢?在这里呢其实我们只加了两项。用为oftm呢,假如说你是一个5分类问题,它就会加5项。😊,好,总结,我们其实在这次课,我们虽然叫CTR预估呢。

但是我们在逻辑回归这里呢已经花了很长的时间。但是我觉得花这些时间都是值得的。为什么?因为我们如果说要去学习逻辑回归的话呢,要学习CTR预估呢逻辑回归是最简单最基础,但是是最能有代表性的这样一个问题。

因为它作为一个最基础的模型,它把机续学习的几大要素全都去包含了。比如说像我们的model,我们的lo function,我们的最优化算法,其实它都已经去包含了。我们等会儿所讲的所有的深度学习的一些模型。

我们讲的主要都是侧重于model方面,它的lo function以他opim呃最优化算法我们都不会再去涉及。所以说其实我们当把这几个要素都分别来看的话,他们每一个所占的位置也就都很清晰了。😊。

并且它的一些特征,比如说对离散变量比较适合,并且只能学习到一些gene一些信息,都对于其表达能力有比较大的制约。所以说这也是我们为什么要引入下面的深度学习的一些模型。

因为它们正好是解决了一些或者解决了离散变量,或者说解决了它表达能力弱等等各各种方面的一个因素。但是为什么逻辑回归现在依然在广泛的被使用呢?因为它简单它有效,它计算速度快,并且它是很适合在线学习,因此。

逻辑回归是是目前依然很重要的一个问题。逻辑回归。甚至于如果说你好好的去做特征工程,对业务的理解比较深的话,它比深度模型的效果可能还要好。🎼呃。

我看到有一个同学说长尾严重s不太合适定义 function的时候呃,这个问题这个问题嗯这个同学应该是对呃记忆学习有一定的了解的一个问题。focal loss效果感觉也没那么好。对,其实是这样的。

我们在其实日常工作当中呢,focal loss确实效果不一定好。我这里说出focallo也只是抛砖一句,希望大家去多思考一下。因为像focallo它容易在你初期学习的时候,模型震荡的很厉害。

特别的不稳定。所我们一般使用fo loss呢可能是说先用正常的一些嗯就是普通的像ideam fTRL这种东西对它进行一些学习,等到到了一定的程度,比如说到了几千步以后呢,模型本身优化的空间也比较小了。

它震荡的不厉害了,我们再去用focal loss或者其他的一些东西。😊,来去做的。深度模型不是不适合在线学习,深度模型也适合在线学习,只是说在线学习我们所讲究的是什么?是一个时效性。

深度模型本身它的计算,以它反向求导求导说的时候呢,都比LR要消费掉很大的资源。在线学习,它本身等我们会详细的去讲在线学习,它其实只是把一些离线的模型搬到在线来。

那个时候我们的模型本身已经不是我们的制约点。我们的制约点其实是我们的优化算法,怎么样模型更快,并且我们的流出力引擎,好吧。😊。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

那么我们讲完了第一部分逻辑回归。我们现在开始来讲第二部分深度模型。嗯,在深度模型呢,我们主要是通过两条线来讲解的。然后第一部呃他们都是我们从FM这个模型出发。

就是factorization machine,然后呢去出发。然后一条线路呢就是这条红线,就是它的模型越来越复杂化。另外一条线路就是一条黑线,就是经过inbedMLRP自身的特点。

结合CTR预估本身的业务呢进行场景的推演。可以看到这个其实更向深度学习,就是我们的模型越来越复杂化。这条线路呢,其实相当于是我们加入一些业务的理解。

怎么着能够让深度模型更加好的去帮助我们的LR模型去完成它本身的一些事情。😊。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好呃,首先呢我们先来讲一下深度模型为什么是好的,它复杂在哪了?😊,为什么深度模型这几年才开始使用呢?原因肯定是因为它复杂。它之前如果大家了解过深度模型三巨头的话。

这三巨头他们在很早很早之前六七十年代的时候,他们就已经在开始搞深度模型了。那么为什么他们做学术做了那么几十年,到现在才开始发光发热呢?原因主要有两点,第一点我们先看第二点,第三点,第一点我们最后再聊。

😊,第一第二点,数据量的需求。深度模型呢它本身是一个特别需要数据的一个模模型。数据量少的时候,深度模型不但体现不出自己的优势,还容易因为欠你和各种各样的因素。

导致它的效果比普通的逻辑回归或者简单模型又更差。所以说它对于数据量的要求是很大的。第二点就是算力的提升。嗯,大家可能能够了解说这几年呢像英伟达,它的那个呃嗯股票市值前几年今年好像跌下来了。

是越来越一直在上涨的。为什么?就是因为它狠狠的抓住的GPU这根稻草,它在深度模型的市场上呢去深耕它的GPU获得了很大的市场,包括像谷歌,它所推出的TPU之类的一些东西,其实都是为了解决算力这样一个问题。

因为深度模型是很好计算资源的,我们在进行前项传播和后向传导的过程当中,我们来计算我们的模型结果和计算导致的过程当中,都是需要大量的计算的。尤其是矩阵运算,它比我们普通的那些scalar就是呃普通的运算。

其实要复杂的多得多。对于空间,对于算力的要求也要大得多。这也是为什么深度学习,前几年做不了原因,它算不起来呀,你再有数据,你算不动也是没有用的,对不对?所以说算力的提升也是深度学习。😊。

他所能够这几年不开使用的一个点。那么其实算力提升也是和数据量的需求是相关的。我数据量越来越大,我对于算力的需求也会越来越大。那么为什么我们对于数据量的需求大呢?简单来讲,就是深度模型的VC维是很高的。

它的参数也是很多的。打个比方,大家如果说只具像一个浅浅层的LR就是一层的LR来讲的话。😊,假如我们有200个特征,那我们参数多少个呢?我们比有201个参数,对不对?我们假如20个特征都是完耗以后的啊。

我们只有201个参数,就我们的200个特征,加上一个截距,201个特征。😊,它的参数其实是很少的。但是如果说我们要运用一个多层神经网络呢,比如说我们200个特征,第一层变成64,第二层再变成8。

第三层再变成1。那么第一层的参数就已经是200乘以8个参数了。第二层我们就是8乘以呃200乘以64个参数了,第二层就是64乘以8个参数了,每一层都是一个矩阵。😊,大家可以可想而知。

我们的参数规模是有多么的庞大,对不对?参数一旦大了的话,那么我们就一定是需要更多的数据量的。因为。从一个直观的角度来讲,大家学习线上代数的话,如果学习过克拉波法则的话。😊。

我们的数据量至少要保证说和我们的参,我们的呃方程的行数,至少保证保证说和我们的呃模型的参数一样多,你才能有一个解,对不对?我们的数据量更大的话,模型参数可能就会。我记得记不太清科莱莫法的结果了。

但是也正是因为说我们的参数越来越多。😊,我们才需要越来越大的一个数据量。所以说这是一脉相承过来的,这也是为什么深度学习的模型特别的复杂。😊,好,我们下面开始来正式的来讲我们深度模型这样一个线路。

首先我们肯定是要讲FM的FM的表达式呢其实很简单,就是我们这里呢是一阶的1个WX,就是我们的线性模型,这个X乘以W再乘以这个X,就是我们的二阶模型,粗一看呢,其实就相当于我们把一阶和二阶组合在在一起了。

但是为什么这这肯定不是一个FM对不对?原因是什么呢?是因为在我们做做推荐系统,这样的一个东西的时候呢,很多特征都是空的,就打个比方来说。😊,我大家如果说听过歌的话,呃,比如听网易云或者听腾讯的QQ音乐。

那么我们在用这些软件的时候呢,它都会给我们推荐一些歌曲。我我相信很多人不可能说所有类型的音乐都听过了。比如说我说我喜欢听粤语歌,那么我粤语歌这里呢我就经常会去听,我还喜欢去听流行歌曲。

流行歌曲这边我去听,但是他并不知道我是否喜欢听爵士乐,是否喜欢听英语英语歌曲,是否喜欢去听像轻音乐之类的东西,对不对?那我们对于这些东西,模型的就别说模型去不去学的,数据都是空的,那怎么办呢?

我们根本就这个W这里就没有办法去拟合,并且这里W可能是特别特别多的。比如说我们假如说有200个类目,这样的话,我们W是一个什么样庞大的一个规模呢,至少是1个200乘200的一个矩阵,对不对?

再加上参数本身是特别稀疏的,就导致了。😊,那么模型根本在这里去学的话,很难去学习。那么我们怎么去解决这样一个问题呢?我们就去使用矩线分解。把W分解成两个本嗯本身而言都比较低质的矩阵。什么叫低质?

如果说W它是一个大家比方说是1个200呃1万乘2万这样一个矩阵的话,那么在这里的话呢,我们就把它分解成一个。呃,1万乘1万的一个矩阵。然后我们在这里就把这个W分解成一个,比如说1万乘以20。

这里是20呃,20乘以1万,这也是1万乘以20的这样一个矩阵。这样的话呢,我们就保证说我们在一测一万是符合我们这个W本身的质的。另外1个20呢,它就变得低质了。因为低质它所带来的好处是什么呢?

我们学需要学习的参数就少了。我们就不需要那么多的数据量了。我们本身的稀疏的这样一个问题呢,也就被解决了,对不对?😊,所以说我们最终变成了X乘以我们的第两个低质矩阵,再乘以一个X。

或者说我们的内接就表成了这样一个情况。Yeah。这是我们从矩阵分解的角度去看FM。然后呢,下面呢我们就从神经网络的角度去看一下FM。我们也引入了我们一个特别目前叫的特别火热的一个名词。

就是inbeddinginbedding呢它其实中文呢叫做嵌入。FM它所做的一个什么样的一个事情,就是对离散特征做了一层嵌入。然后呢,之后通过嵌入的结果,就是那些丑明向量在进行之后的一些处理。

最终再和线性部分结合。那我们这里呢线性部分是这里我们不再赘述,然后呢嵌入。以及inbedding的做法呢,主要是在这里,就是我们把X从一个高维吸疏向量变成了一个低维连续向量。大家注意我说的一句话。

等会我还会再说一遍呢,这其实就是一个线入的过程。打个比方,X它本身如果是一个1万维的。而我们这里的这个第一层,它就只有256维了。那这里呢就是我们相当于用1个1万乘以256的矩阵,把它做了一层嵌入。

从高纬映射到了低纬,从离散映射到了连续。😊,好,那么现在我们正式的来讨论一下inbedding是什么东西。呃,我第一次听说inbe呢其实是通过work back那里去听说的。

但inbeddding这个概念呢,其实它并不是一个深度学习的概念,它是一个数学概念。那么我们就要先从数学的角度来讲什么。才是映射。呃,什么才是inbedding。数学的角度来讲的话。

inbedding它本身就是一层映射。打个比方来说的话,1万乘以21万乘以呃20的这样一个矩阵呢,把你从一个1万的角呃一万的。😊,向量映射到1个20的向量,这是不是一层映射,对不对?或者换句话说。

我们用更加数学抽象化的语言来说,就是把你从1个1万维的向量空间映射到了1个20维的向量空间,对不对?大家注意有一句话,就是从一个向量空间映射到了另外一个向量空间。

这才是inbedding的一个本质的理解。从数据上来看。那么从神经网络角度来看是什么呢?就是刚才所说的层与层之间的,它这样一个矩阵,就是1万乘以20的这样一个矩阵。

这个矩阵就是我们所说的inbedding。而那个20只是inbedding它所最终的那样一个结果,对吧?我们就20其实相当于就是你一个1万的矩阵,里面查不了查出来的。😊,从特征的角度来看呢。

是一套是从一套特征,另外一套的表示方式。其实这个就是在数据上的一个表现。相当你从1个1万维的特征空间向量空间映射到1个20位的一个向量空间。那是不是从一套特征映射到另外一套特征呢?😊,好。

我看到有一个同学呃提的一个问题,就是说400乘400变成了两个低质语言相乘,会不会导致信息丢失啊,是有可能的。所以说在选择低质的嗯质有多低的时候,你肯定不能选择像23这么低的低质,对不对?

我们要时刻要明白说我们在做这个矩阵分解。它为的是什么样一个嗯是解决什么样的问题,它是一个什么样的原因,就因为我们的数据本身太稀疏了。我们如果不分解呢,我们这个结果是特别不准确的。

我们分解呢能够利用有限的数据呢,去学习一些更加有效的一个信息,所以说我们才去做了矩阵分解这样一个过程。😊,它有可能导致信息丢失。所以说其实你分解成多少的一个低质。就比如说你十还是20还是100。

其实这都是实验当中值得去尝试的。如果你这个低质的质设置的比较好,那可能就比较合适。如果不好的话,过低或过高过低会导致你信息丢失过高,会导致你还是有很多东西是学不准确的。好。

那么现在我们来讲另外一条线路的起点就是inbe加MLP。inbe加MLP呢其实刚才因为我们已经深入的去聊一下什么叫inbedding。所以这里再看inbedding大家应该已经不陌生了。

inbe加LP呢就是反正我这里有inbedding了,不管是怎么来的,不管我是预训练来的,还是通过FM来的,反正我这里有了,然后呢我把它们给变化成了我们的一些呃低制,然后呢最终我们把它给慷开到一起。

然后再进行层次化堆叠这边的MLP呢因为是multiple layercept,就是我们的多层感知机。😊,这里呢就相当于是我们所平常所说的那些各种dance这样的一些个特征,就是一呃256到64呀。

64到16啊,16到1啊等等之类这些东西就是我们这里所聊的1个MLP。好,我们讲了我们两个起点FM呃是第一个起点。另外一个起点呢是inbedding加MLP。

那么我们在进行下面这两个点分配进行延伸之前呢,我们先比较一下他们FM可以学习到特征组合,但是不够深入高级特征。为什么这么说呢?是因为FM这里呢,我们只有一阶和二阶的特征组合。😊,而MLP呢。

它可以学习到高级特征,没有办法学习到低阶特征组合。为什么呢?我们每一层做dance特征往上去做MLP的时候呢,其实都是一些层数越高,它就越复杂,越学习到的是一些更jaral的更高级的一些特征的组合。

好吧。好,FN。呃,我下面会连续讲4个呃呃FM的这样的一个结果。呃,这里是FM的一条线呃,讲完它以后呢,会去讲inbedding加MLP的一条线FM的一条线。第一个要讲的就是FNN呃。

我们等会要讲的每一部分呢,其实inbedding这里都是相似的MLP这里也都是相似的,主要呢是在contnet这一点是有点不太区别的,有有一点区别的。

这里呢FNN呢其实这里conate就刚才大家所见到的比较常见的,就直接把三个给它并在一起,呃,呃对,并联到一起就可以了。然后呢,这里inbedding呢是用的模型预训练出来的结果。😊。

第二个NFM大家可以看到inbedding和MLP这里也都是很类似的。然后呢,但中间这里呢是有一定的区别的。这里呢是什么?我们把它叫做二阶交互池化层,它的做一个什么样的事情呢?

刚才我们是只是把它简单的并联到一起。比如说我第一个。😊,三个inbedding结果呢都是4维的。那么我三个四维变到一起是多少呢是12位,对不对?那这个intction是什么呢?我两两做主元素的乘法。

就elementplication就是呢比如说我 layer一和 layer2,我呃四维和4维相乘,就相当于我X1乘以Y12乘以Y2S3乘以Y3S乘以Y4结果依然是4维的。

那么我这里呢任何两个lay能够做这样一个事情,最终把它们加整到一起,这的初始维度也就变成了4维了,也就不是刚才我们的12维了,这就是我们的二阶交互池化层。所以说呢它相对于其实对于参上层而言,参数变少了。

😊,对于FM而言呢,相对把一次项结合推迟了。这个为什么呢?大家可以课后自己去想一下。😊,AFM是什么?就相当于在我们的NFM的一个结果上呢,给主元素的乘法呢加入了一些不同的权重。

就比如说刚才呢我们把这些结果都已经出来了以后呢,我们不进行直接的加总。我们呢把每一个的结果呢。😊,就假如说我们有4个 layer,那四个类它最终能能有几组主元素的乘法,就是C42,就是6种主元素的乘法。

C42是一个组合数。然后呢,这里面我们用attention net,那这个tention也是训练出来的,然后呢就会有6个权重。每个权重呢附给其中的一个呃二阶交互池化层的一个结果。

最终呢把它们给加到一起交为这里去复杂了一套。然后呢,嗯最终我们把它们再给计算出来,这是AFM。偏哪。相当于是更复杂了啊,但其实这里更复杂呢,也只是在这里更复杂了。😊。

就是我们刚才我们讲了普通的并联concacate,还讲了我们的主元素乘法。呃,这里呢我们就相当于直接两两相的之间做内机或者做外机,最后能把它们并联到一起啊,这里我就不太不再赘述了。

因为他们的本质核心上是一样的,就是我们的这边和这边我们学习问题呢呃分析问题定要抓住事情的核心和本质,知道什么是比较重要的。好哦,我看到又有同一个同学提出的问题,就是说矩阵分解呃是PCA的一种方式吗?嗯。

PCA呢确实是一种矩阵分解,但是这里的矩阵分解呢和我们这一矩阵分解呢有一点点的区别。具体的区别呢其实不在我们的讲课范围之内,我这里先不再介绍了。但有兴运同学呢可以看一下PC它其实是把两个矩阵呢。

它PC其实是一个主成分分解pri呃component analysis,我记得好像叫这个名字,它其实是一个无监督的学习算法,就是说能够去抽象出你这个矩阵,它哪些呃量是对于矩阵而言构成一个新的限量空间。

它本身是更有效的。而我们它本身是因为是一个非监督的学习算法,它只是把你从一个限量空间变成了另外一个限量空间,对不对?然后根据你这个矩阵,它所本身包含的一些信息。

这一般在图像的一些区道方面呢用的相对是比较多的。然后但我们这里的FM呢,它因为是有一个label的,它是一个有监督的学习算法,所以相对而言是有些区别的。吧我这里就不再讲展开细讲了。好。

下面呢我们在开启inbed加MLP的讲解之前呢,我们再回顾一下。刚才呢我们主要其实就讨论FM的不同的变种,他们就有一个共同点呢。也刚才也提到过了,就inbedding和dance其实呢都是很大家通用的。

😊,无外呼就是中间这些内基外机逐向慷害这些运算,他们是有点区别的,最终形成了一个浅层网络的输出的结果。那么另外一种模式呢,就是我们直接就从这些前层网络出发,我们就研究我们这个深层网络MLP在这部分呢。

我们怎么样去它去做出一些事情来?那么我们就绕不开我们的这个由google来提出的一个we and deep这个模型了。这个模型我相信很多人都应该已经听说过了,因为这个模型实在是太有名了。

并且这个模型几乎它是一个分水岭。从它出现来了以后,很多模型基本上都是在weide and deep的结果之上,或者它的模型本身的架构之上,就做出的一些改动,最终形成了我们最终的这样一个结果。😊。

它相当于是现在叫we and deep,它一定是有一个w层,有一个dep层。dep层的输入呢都是一些已经是deep的结果。wide层的输入呢就是我们这里的一些就dep层的一些结果。

或者说是一些我们本身就dance的一些特征。我们外层呢其实就是我们的这里的。😊,一个spae的一个特征,就是我们的离散特征。然后呢,第一部部分呢直接就是MLP,而且是dance特征的MLP呃。

而外的部分呢是直接的LR最终呢我们把这两部分结合到一起呢进行了联合训练。如果说我们的外的部分呢采用了FM就是。😊,在我们的这在我们的这里呢采用FM,那么它就变成了DFM。因为这里已经是d词了,然后呢。

这里用FM它就变成了一个DFM。😊,然后呢,我们再聊一聊dep cross deep cross呢其实也是在上面的一个变种。它变种呢就是在我们的MLP这里呢进行了一些变化。

前面我们呃就是这边呢我们是不看的,我们只看这边。这边呢在这里其实它相当于就是我们每次在学习的时候,如果说不看上面的箭头和刚才也是完全一样的啊,这里就相当于是那个外的部分啊,这只是一个比较省略的一个写法。

然后呢,在这里跳跃的过程当中呢,每次呢我们把之前学习的一个残差给它放到了这里。然后每次把残差和上层的结果一起联合起来去学习。这个残差神经网络呢其实是从图像里边去借鉴过来的。然后呢。

我们把这里用到了我们这样一个神经网络当中呢,我们就出现了我们的deep cross。😊,然后它和inbedding加MMP的区别呢,其实就在于说就是这部分。我们的MP呢通过一些残差。

使得我们之前学习的不好的一些东西呢。能够在这里重新去学习一下。刚才其实我们在讲lo function的时候呢,也讲过学习不好,我们怎么办呢?我们可以加大那些学习不好的这样的一些样本的一些权重。

这也是我们的fo loss做的一些做法。而这里呢我们可以直接把这些结果,就直接加在我们的这些层当中,也变成我们reze layer,去怎么着去协调我们的网络进行训练。😊,好。

最后我们在结束这一部分之前呢,我们再来回顾一下banan deep。我们要聊一下为什么wan deep是好的呢?为什么这个模型它本身是分水岭的呢?绝对不是因为它是谷歌提出的,它就是好的。原因很简单。

就是有两部分。第一,他公开学习了外感的dep部分,他们m deep部分,他们各自表征了模型的不同的一些方面。外的部分表现了我们的general的方面。dep部分呢表现我们。呃,然后这个有写反了。

是外的部分呢表现我们specific的方面。第一部分呢表现我们的gene的一些方面。为什么这么说呢?是因为像一些离散的特征呢,它比较适合于捕捉一些特别呃特别特殊的一些性质。

就比如说刚才我说那个outlay,就刚才假如说是个120岁的人啊,我们把它给离散化了。是不是这个特征就能捕捉到,并且不会太伤害模型本身的结果,这就是浅层,它所能带来的一个好处。😊,而dep部分呢。

然后呢就是一个janer的这样的一个过程。因为我们的网络在进行逐层堆叠的时候呢,我们所学习到的一定是一些比较相对于比较深刻的一些东西。如果大家对于CNN这样一个网络结构比较了解。

并且曾经看过的一些它的一些可视化的一些情况的话,大家能够发现说在CN的浅层,其实它学习的相对而言的话。😊,和在深层它的学校的部分其实都是不太一致的。为什么说我们。在它训预训练翻吞ning的过程当中。

那预训练和翻推ning的过程当中,我们冻结前面去学习后面,是因为我们后面他总能学习到的东西和前面所能学到的东西都是不一样的。深度模型呢就是因为它能够学到一些经过深层次高阶模型,高阶算子进行交叉的时呃。

高阶特征进行交叉的时候呢,它能够学到很多更general的一些信息。如果我这里再跟大家聊另外一个问题,就是其实深度模型呢它本质上也是不同的线性的一些矩阵进行相乘。比如说第一层我们用矩阵是FF1。

把它从1万维变成了256维,第二层用矩阵M2,从256维变成了64维。它其实本质呢就是M1乘以M2的乘以M3,也直乘以最开始我们的结果。那最开始那个X。但然这么说肯定是不对的。因为这就变成了一个哎。

因为很多矩阵相乘,就变成结果就是一个矩阵,对不对?它相当于还是一个线性的模型,但深度模型它不是线性的,它的原因是相当于我们在每一层的时候呢,都用的那个我们的X身方式,也我们的激活函数。

把它从一个线性变成了一个非线性的一个过程。但是我们这里所想要聊的,就是说它不断的去矩阵相乘,去确实是能够学习到再加上我们的激活函数,能够学它的一些深层次的信息。所以说这也是为什么我们ral这里。😊。

能够去和dep部分相关联,那我们的外的部分和我们的specific相关联。然后呢,最后呢就是我们的外 and deep呢,它模型本身足够简单,效果也足够好,也是易于扩展的。

在技术上呢有一个提刀ca谱法则,就是说如果说我们能用简单的模型去解决问题。我们一定是用简单模型的,而不是用复杂的模型。因为简单的模型,一般效果。😊,都会比复杂模型,它就要简单,且不容易过拟合。

且呃耗费的资源少。所以说呢它一定能够是我们的首选。好,那我来解决一下大家的问题。😊,啊,有一个问题说外的部分的特征没有太听明白。嗯,我再把我刚才说的话可能说的太快了,我再放慢语句说一下,好吧。

就是我们在讲啊嗯那个呃特征离散化的时候呢,我曾经讲我举过一个的例子,就假如说我这个人是1个120岁的人。假如说我的呃我的模型本身是Y等于KX就是2X对吧?如果说我们是一个连续的一个特征的话呢。

我120乘以2,我就收入必须是240,但我可能收入只有100,嗯,怎么办呢?我把它给离散化110到120岁这个人呢共同享用这个one out这样一个特征,并且他前面有一个自己的一个系数,这样话呢?

因为它的系数是读是自己的跟其他人的系数是没有关联的跟其他特征的系数。所以说呢它是一个很的信息。很特殊的信息。这样话外部分只需要保证这个特征,它前面的系数。😊,就可以了,对不对?

那是不是他就已经学习了自己一个specific的这样一个信息?啊,第部分是为了保证信息有效,防止梯度弥散,但外的部分怎么选?呃,这个同学我没有太看明白你这个问题的意思。

就是第部分确实他通过深层呢学习到比较深层的信息,也信息有效了。但是梯度弥散好像和第部分没有什么关系,因为。深度网络它有可能出现梯度弥散,也有可能出现梯度消失。我们会用一些方法,比如说像嗯嗯act方呢。

用一些嗯特殊的技巧,或者是用bech呃 normalmalization呢会解决这样一些问题。但是它好像和depot wide的比较没什么关系。所以说如果说我们有一个解你的问题的话呢。

希望你把问题再嗯详细的解释一下,好吧。好,那么我们最终在结束我们对于深度模型的讨论之前呢,我们再聊两个最近这两年来言的话,我国的呃公司就阿里这个公司呢,它所提出的两个比较好的网络结构点N和ESMM。

DN是采用了一个注意力机制,它比较适合序列化的学习,有效的提取和当前相关的信息。好,讲这块的时候,我再强调一下,就是这两个其实和我们的大纲都是相对而言的话,不是在同一条主线上的。

讲这个只是拓展一下大家的知识面,希望大家能够对于一些业界对前沿的一些东西有一进的了解。所以说因果这些大家呃不太感兴趣,或者说听不太懂的话,也没有关系。它不影响我们对于主线知识的一个了解。好吧。😊。

然后呢,这里呢相当于它解决的一个是一个什么样的问题呢?就是大家在淘宝上买东西的时候呢,其实呃点什么东西或者看什么东西呢,是一个很长的一个序列化的一个信息的这样一个特嗯信息的这样一个过程。😊。

就是说呃我点了商品A,我这商品A类中的第一个第一个商品,第二个商品,第三个特征商品。因为点了商品B类当中的第三个第第四个第五个商品,又点商品C类当中的什么商品啊,最终我要买商品B类的。

那么其实理论上只有商品B类的特征,对我是有效的。A类和C类的特征呢都是无效的。那么呢我们用刚才的一些模型,其实无没有办法解决这个问题。

因为我们都会经过一些lay layer之间的一些什么嗯内机外机什么之类的东西啊,或者说一些直接粗暴的慷开到一起啊,或者进行简单的attention。😊。

它就会导致说我们没有把真正有效的信息和没有效果的信息呢给分离出来。DN呢主要就是通过attention加上一个子网络来解决的这样的一个问题。好,我这里没有把它放大。嗯,D然大家啊这里比较小。

我给大家放大一下。😊。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

就是我们在这里这样一个子网络呢,其实相当于是我们这个左边是我们呃商品的特征。比如说我们所看到的A类商品中的一个特征或者B类商品中的特征,这边呢是我们最终想要预估的商品。

就比如说你要预估要给你推荐什么样的商品了,准备推荐的商品,这两个商品呢进行一个他们的一个子网络。这个子网络其实是它conact它在con慨t之间的一个减法。

最终呢在进行两层或者三层的for connection就是全连接层,最终求解出上一个权重。然后同组内权重进行相加,最终再进行con。什么叫同组。😊,假如说我都是A类商品啊,都是苹果手机类的配件商品。

都是一类产品,这些都是吃的产品啊,这些就都是一类产品组内进行加权相加,最终再把它们输出到一起,然后再进行conact。因为有了注意力这样一个东西呢,我们就可以保证说。😊,我们对于不太关注的商品呢。

给它权重比较小,关注的商品呢权重比较大,最终能够使得我们模型呢更加focus on我们最终比较重视的一个商品上,对吧?这就是DN这个模型,它都主要解决一样的一个问题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这有我们的注意力机制。ESM呢主要是解决另外一个问题。因为我相信大家除了听说过CTR这样一个名词呢,一定也听说过CVR这样一个名词。CTR呢是点击ickVR是就是说我点击完了以后呢,我再去真正的去看。

对吧?看这个停留的这样一个市场的这一些相关的一些东西。然后呢,其实呢CTR和CVR都是我们广告公司所比较关注的这样一个东西。对于阿里巴巴可能就是你点进这个商品呢肯定是不够的,你点去有什么用呢?

你得买才能有收益,对不对?这就是CVR。😊,但是CVR本身的数据是特别特别稀疏的,原因是什么?原因就在于说。😊,CTR的量其实已经很少了,给你推荐100个商品,你可能只能点进去5个,对不对?

广告可能就更少了。那你点进去5个CVR就只有5个样本可以去选择,而5个样本最终再去觉得他们的正流要负点。而CTR呢就会有100个样本,100个样本和5个样本,那一定是CTR预估要远比CVR去准确。

因为它样本实在是太少了,太难收集了。😊,所以这也是为什么之前CDRCVR他们各自CTR预估比较好,CVR预估的比较不好的一个痛点,毕竟巧付也难为无米之炊,对不对?然后呢。

CTR而阿里妈妈提的ESMM就是通过CTR和CPR进行联合训练,最终形成这样一个结果。他们。一起去共享他们的底层的一些全连接层啊,或者一些呃层之类的一些东西,或者隐白镜啊特征之类的东西。

在上层进的一些区别。这也是我们所了解的1个MTL,就是mtytask learning。这个其实也是一个这两年嗯越来越火跃的一个重点。因为MTL呢它本身有一些比较好的性质。

就比如说如果说我们分开训练的话呢,呃我们的样本不能共享,并且说我们最终因为分开训练呃,参数比较多,还特别容易造成过拟合。而MTL呢就解决了同时解决了这两个问题。

阿里巴巴也是利用MTL这样使得我们在但然这是CTRCCDCVR的这样一个条件概率的一个表达式。我们在CVR中能够去借助CTR的整体样本空间进行建模,而不只局限于CTR它CBR它本身的这样一个建模。

最终通过CTR和CBR共同去预测CTCVR对吧?这是我们ESMMM当中,它所解决的主要问题,不使用少的样本,而使用更多的样本使用MTL的思想一起去预测。好,最终呢我们在结束这一部分之前呢。

我们再来看一看我们准备推荐的一个论文。这个论文呢其实也是当时我在学习点击率预估的时候呢,一个很重要的一个运维的参考。嗯,youtube的点击率预估去列样的一个四部曲。这个不知道大家有没有听说过。

但这个在业界当中是很有名的。因为它不仅讲了一些youtube内部的一些实现,一些他的一些想法,把它一些思路,甚至一个整个的演变过程。在工程上是怎么做到的,都被我们揭开了一些它的一个。😊,呃。

冰山的一角从最开始的协同过滤到到图上的随机游走,一直到深度神经网络。其实这也是在业界当中推荐系统它所变化的一个主要的线路。这个线路,其实每一部分都是很精彩的,都是很值得我们去学习的。并且任何一个算法。

如果说它只存在于论文当中,它也只有学术价值,它的工业上是没有价值的。我们如何能够保证它的工业实现,也是我们很重要的一点,而在youtube的点击些文章当中,尤其是教片第四篇,甚至尤其是第四篇。

它讲了很多在深度网络当中,它的一些实现,包括一些召回的一些做法,一些金牌的一些做法都是很值得借鉴的。😊,这个的话呢也希望大家如果有时间的话呢,能够自己去读一读。如果没时间去读呢。

也可以去看一下网络的网络上。嗯,有一些呃知乎上或者说嗯CSDN上大家的一些讲解都很精彩。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好,呃,我在我看到又有几位同学提出问题来了,我再看一下。😊,嗯,有些同学说是不是看的都买的少,所以C表触罚行为太少。对的,这刚才我已经解释过了。😊,然后外的部分的特征有什么讲究吗?嗯。

这个其实呢d盘的外的特征呢本身就是有一定重合的。我们再回到刚才这个we and deep这个大图当中。😊。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其实我们真正的在用的过程当中呢,他们很多特征都是共享的。比如说w也是可以转成dep的dep也是可以转成w的外怎么转成dep呢?这个很简单,就是通过inbeddding去转就可以了,对不对?

而dep怎么转成外呢?通过数模型,刚才我们GPT加也已经解释过了。所以其实他们的模他们的特征也本身也是共享的。这只提供了一种说我们在外层和dep当中,他们怎么去并行,最终去共同训练的这样一个框架。

能够使得我们的模型的表现能力越来越好。然后并且又不失掉啊wide and deep这两部分各自的表达的一个能力。😊,现在工业界CTR最常用的是什么算法?这个其实就很难说了。

因为像我司的东西我也不太能给大家去透露。我只能是说说这个是跟业务是极其相关的。如果说我们能用简单模型,我们一定不会用复杂模型,前提简单模型的效果比较好。如果说复杂模型。

它所带来的业务价值是绝对足够说多找几个人去研发,以及它所消耗的那些机器资源的话,我们是会去解决使用这些复杂模型的。并且简单模型复杂模型并不是我们的唯一出发点,我们要考虑说一些对于线上业务。

它所带来的收益,以及说我们实时性,以及说下面我们所要讲解出来的在线学习和强化学习。😊。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

越复杂的模型,它越难去做在线学习和强化的学习。因为他所需要的资验资源就更大,实时性就更难去保证。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

所以说我们就要先聊一聊究竟是什么才能提升一个模型呢?😊,那么我们对于我的理解呢,我觉得这三方面。第一个就是对于业务的理解准确的抽象问题。毕竟大家如果说在工业阶待的比较少。看论能看比较多。

或者说做开做比较多的话,其实这部分大家可能不太能体会到。因为说其实工业当中这个才是最难的问题。因为很多时候你业务的目标和你模型的结果是没有任何关系的。😊,嗯,例子我也不太能给大家举。

但是呢大家嗯如果说以后能够有机会去大各大公司去实际工作的话,就会发现说其实业务上的问题是千奇百怪的。比如业务上说我要提升这个东西,但这个东西跟01点击于这个东西没有任何的关系。这个时候大家就会明白说。

😊,怎么准确的把一个业务问题抽象为一个模型问题。才是我们最重要的一个问题,对吧?第二个,特征工程怎么挖掘更加精准的特征以及高危特征的一个共建。特征工程刚刚也聊过了。

就是我们的人为人肉特征工程和自动特征工程,他们各有千秋。自动特征工程呢能够学习到一些人可能想不到的一些或者无法做到的一些特征组合。但人永远是最重要的。

因就在于我们人他不仅能够去人人为的去挖掘二阶三阶的特征组合。我们还做到一个事情,就是去挖掘一些新的特征。在数据当中之前没有被发掘过的一些特征,去寻找人的各种各样的记录,也及是寻找各种各样的买点信息。

这些机器肯定做不了,对不对?这些只能是人去分析。😊,第三点就是特征和模型的实时化。也就是我们这里所讲的在线学习和强化学习。😊,那么,实质化意味着什么呢?😊,意味着三点,第一点带来实时的信息。

比如说这个其实是最简单的,也是最容易做到的。打个比方,现在我们我们是9点晚上21点,21点就是一个实时特征,下个小时就变成22点了,在下个小时变成23点了,是不是这就是实时的信息可以大家都可以想象到。

12点的人和13和14点吃饭的人,他们的职业很可能是不一样的,12点可能都是一些白领,14点可能都是大家周末刚睡醒是吧?所以说这个就一定是有一定的区别的。😊,第二点,新的广告的特征快速从不准确编得准确。

因为在CTR预估场景当中呢,很多时候大家都会去面临这样一个问题,就是一个新的特征。我么新的广告去上线了。我们根本就没有它的特征。我们做冷启动的时候呢,很可能是说借鉴一些跟它同类的一些广告的特征。

把它给拿过来用。但是呢这些其实远远不够的。因为每个广告呢都有自己的一些特性。那么怎么能够快速去收集这个网络的。😊,这个广告的一些特征其实是很重要的,而这个只能通过实时去收取你T加一的时间去收取。

其实已经浪费了很多资源了。第三点,上下文就是统计信息更加准更加准确。这样一个方面就是其实也是说跟这个也是极其相关的。比如说我要构建一个广告的统计信息,比如说他一个小时被点击了多少次。

这些也必须要把模型实时化掉才能去解决,对不对?😊,然后我看有个同学嗯说推荐几个长的算法模型吧,嗯时间关系我推荐少一点。如果说大家做开做比较多的话呢,大家可以多尝试尝试charge boost。

这个模型一定是你的呃一个大杀器。第二1个呢就是我希望大家多去人肉的去做一些特征工程。因为机器的特征工程,其实很多时候都是不太靠谱的。😊,然后还有。大数据量量在线方式,什么算法适合精度怎么样?

目前应用当中的精度如何啊,这个好像不是一个问题,好像是一个有点多的问题。好吧,嗯,我就我也没有办法完全回答,只能是说在在线学习当中呢,其实在工程它本身的难点并不在于算法模型上,还在于工程上。

就是刚才所说的,这里的我也是我马上所说的流出的引擎,它是否能够去适配。并且说。😊,什么样的在线方式?在线方式其实我不太能够理解,你想说什么算法适合算法适合的话,其实LR是最好最适合去做在线学习的。

因为它足够简单,并且。😊,具有足够强的表现力,精度怎么样?我们做在线学习一定要明白说在线学习,它比离线学习强在哪里。它强的一定不是精度。因为如果说你拿一个同样的在线模型和一个离线模型。

大家在同等场次上去PK的话,在线模型一定PK不过离线模型。因为离线模型你可以做很多精条上的操作,去做很多离线拜尺上才能去做的一些操作。但在线这些都做不了。他所能做到的只是说我的特征实质化。

我的模型实质化,我的样本实质化,这些离线是享受不到的一些东西。😊,呃,我们先回到主线上,然后嗯再追其实他更多关键的是一个流出的引擎,就是这个引擎它能够把样本做到一个怎么样的。如果说万一引擎挂掉了。

它怎么样能够快速。😊,回到它比较正常的一个状态,在学习继续,这些其实是需要很强的一些积淀的。就比如说像前几年比较火的park,你为这两年比较火的blink,其实都是在这方面是有突破的。

才能使得说我们的实时流计算变得越来越好。第二点,时间窗口、样本拼接样本过滤和采样啊,这个东西其实就是一些很在线学习的这样一个过程了。比如时间窗口,因为我们离线可以等离线样本,等一天两天。

甚至等10天都有可能,但在线不可能。你虽然在内存当中,或者放在一些高效率的呃。😊,一些数据库当中肯定都沉不下,内存早就炸了,高性能的数据库也要考虑一些它所的一个空间的这样一个问题。

所以说我们要设置一些比较好的时间窗口以及样本,在线的样本拼接,在线的样本固队和材样,其实都是在线学习当中所需要解决的一些问题。嗯,它和离线有可能是不一样的,有可能是一样的。

这个要看公司的技术是否能做到的流批一体化。😊,第三点,更新逻辑和validation的逻辑。呃,更新逻辑其实就是我们模型怎么着去做一些呃拜式上的,或者说单样本的这样一个更新,使用什么样的一个算法。

validation逻辑呢就是我们怎么着去在在线的方式当中呢,评估模型效果好还是不好。因为我们在线基本上就是一边评估一边训练。这样其实和离线是有一定区别的。大家可以感受一下。😊。

第四个就是适配的最优化算法。这个呢其实目前比较好的最优化算法呢就是FTRL或者说group FTRL这些呢在网络上登录一些相应的论文,他们也是包括像google微软的一些工程师。

他们所进行数学推导演化出来的一个结果。它和离线确实是有一定区别的。这个大家有兴趣也可以去了解一下。然后我再看一下那几位同学的一些。问题。然后呃有位同学说什么特征用在外部分,什么特征用在dance部分。

D部分,这些是不是特征可以重时用在两部分啊?嗯,对,是这样的,外的也可以转化成dep, deep也可以转化成外的。呃,包括一些特征工程,这些就需要各位同学自己在实验当中去摸索了。

因为这个在我们实际的业务当中,也没有一个特别准确的答案。😊,然后像另外一位同学说,京东百度搜索相关的广告,结合CSDN就给你推荐相关的广告。这家共享相关用户的数据吗?啊,这个问题我也不知道。

我知道也没办法回答,好吧。啊,最最后呢我们去呃了解一下强化学习啊,强化学习这些其实只是一个启发。因为强化学习目前还是一套不太成熟的理论。然后呢,包括但是一些比较f的事情呢,其实都会通过强化学习做到的。

比如说阿尔法 go,比如说自动驾驶。因为它强化学习其实更加贴近于人他所学习的这样一种方式。因为它不是说给你一个单一的目标,你就去学去吧。

这其实我们才是目前见到比较多的像那种supervised的supervised的,或者说se supervise的一些算法。强化学习是什么呢?根据不断变化的环境。😊,根据你的反应,不断的去给你一些反馈。

让你去一直在那去学习。这个世界是动态的,病人是在不断调整的。这个其实才是更加贴近于我们人。他所做的一些事情,想到的一些呃方法,对吧?而我们这些神经网络其实相当于是一个虚假的一个真正的类似于人的网络。

因为人的网络绝对不是说算几个矩阵,算几个IT方式,把这些事情解决的,肯定是要通过环境不断的去进行决策,对不对?所以这也是强化学习。😊,目前比较火火热的,并且可以落地的情下学习,包括以下三种。第一种。

最简单的MIB老多比老虎机。这个大家应该已经听说过了,它也是最简单的,就是给您几个样本,我们怎么能快速的选择一个比较好的样本,这就涉及到几个意义。😊。

也就是我们的exspirationation和explanation这样一个相关,就是利用和去探索。第二个就是我们的contex free band contextual bands context free bands呢其实是比较相当于像我们这种UCB啊。

汤森采样,其实都是我们的conex free bandscontestual bands呢其实类似于像那种另UCB或者其他的一些方法。它们之间主要区别就在于这个主要只是一个样本的统计信息。

而这里呢在样本统计之上呢也加了一些用户的特征相关的一些信息。最后一个deep reinforcement learning,就是我们所说的那个深度强化学习。

深度强化学习呢其实也应该是日后最火跃的一个发展方向,但是它足够复杂,好吧。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好,嗯,我再看一下大家的这个问题啊,说错了是百度京东搜索某类物品。这个我也不知道呀,我只知道说百度他他肯定会用自己的数据,用不用其他人的数据,我不知道京东也肯定会用你之前买的什么东西去给你推荐,对不对?

😊,嗯,时间不多了,其建模的技巧呢,我们这里就简单的提一两句,然后有需要提问的同学呢,大家可以把自己的问题放在下面啊。然后建模技巧其实现在在CTR预估当中呢,有很多问题都是很需要去解决的。

有些已经解决的,以前没有解决,比如新的广告怎么办呢?在线学习效果不一定好的。其实大家不要把在线学习当做一些解决新的问题,一个灵丹妙药。因为它很多时候只能解决时效性的问题,但是模型效率的问题呢。

很可能是降低的。😊。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第二个,召回和金牌的平衡怎么做嗯?😊,这个其实是一个在业义当中目前也在讨论的问题。因为召回我们所主要关注的是性能金牌,我们所主要关注的是模型的结果。性能和结果之间。

其实在任何一个情况下都是很需要去取舍的。第三个metricsAUC一定是最好的吗?这个可以告诉答案,就是一定不一定是最好的。因为很多情况下,AUC它本身所带来的结果是具有误导性的。

就比如AUC它本质是什么?就是你对正样本和你模型的打分是正样是这个样本本身是正样本,它的打分一定比副样比副样本要高的这样一个概率,它才是AUC的本质。

但是这个其实我们很多时候关注的不一定是AUC而是precession或者recall这样一种概念。大家可以了一下preessionre你在反作弊上的一个应用。这是AUC一定不是最好的了。

包括其他一些场景。那么那个时候我们用一些什么样的评估体系呢?😊,第4个点句的平滑是什么?什么叫点句平滑呢?假如说。😊,我新来的个广告,我有10个人,我就有一个人点击了。我们就会认为这个样本。

哎这个广告它的点击率是10%吗?这很可能是这很这么高的点击是很可怕的。这个就需要我们去结合我们的历史数据做一些平滑。很多时候其实广告点击率可能只有0%。几或者分之几。而一个10%,很可能不合理的时候。

我们怎么样对一些新的广告做一些平滑上的一些操作。😊,最后一个就是在计算广告体系当中,如何干预做到真正平衡广告广告主之间的利益,平台和广告主之间的利益。这个其实涉及到一些平台化的一些运营策略。

大家如果感兴趣的话,可以去翻阅,学习一下计算广告那本书,好吧。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好嗯。匆忙的我们本次的分享呢,也就主要是这些,我再看一下大家的一些问题,然后看有个什么,好吧。😊,说推荐系统当中,实实际上是不用强化学习的,强化学习貌似这个领域不太适用。其实强化学习这个领域呢。

它适不适用是要看你的业务情况的,就可以告诉大家是说在阿里那边,他双十一前两年有用过强化学习。因为这是公开的资料。然后呢,确实有过10到20%的提升。大家可以想象到,在阿里这个嗯体量之下。

10到20%的提升到底是一个多么庞大的一个数字,对吧?所以强化学习有用是有用的。但是要看我们怎么去用。咱们把一个问题去抽象成一个合理的强化学习的问题。要知道一个问题,如果你把它抽象的好模型才有用武之地。

抽象的不好,这个模型可能并没有什么用。😊,再学习收点问题。再学习确实收敛是一个很重要的一个问题,说明这个同学确实是有过一定的一些业界的经验,否则应该是说不出来这句话的。好,嗯。

还有一个同学说LRFM深度模型都会把连续特征离散化吧,然后inbedding不会对一个特征,不会对一个连续特征去做inbedding吧。其实就看你怎么去看inbedding这个概念了。

inbedding我们在最开始接触的时候呢,就是通过一个离散特征,把它给以变成一个连续的一个空间。啊,这个呢确实是一个inbedding。

但如果你把inbedding这个概念不要局限在从连续从离散到连续这样一个情况呢。而且它的数学本质从一个空间变到另外一个空间,那其实深度模型它所做的每一层圈连一层都是在做为inbedding,对不对?😊。

好,时间关系呢嗯今天的分享呢就到这里啊,也谢谢大家能够抽出宝贵的一个半小时的时间呢来嗯听我们这个分享。然后如果大家以后有什么类似的问题呢,也希望大家关注我们的平台去学习。好,嗯,大家再见。😊。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

人工智能—计算广告公开课(七月在线出品) - P2:计算广告的市场与技术 - 七月在线-julyedu - BV1SA411H7Se

好,那么开始嗯,首先呢就是我们这门课就呃这个公开课呢叫计算广告,对吧?那我们嗯计算广告呢,它其实是一种在线的一种形式。那所以说我们就首先需要了解一下什么叫做在线广告,对吧?那在线广告呢。

其实很不名思义的,就是什么网络广告互联网广告等等之类,直接在媒体投放广告,对吧?嗯我相信大家可能嗯对于在线广告而言呢,还是有点陌生的,嗯,不过你就是说对这个名字比较陌生,但对它的出现呢。

其实应该不是很陌生了,就比如说嗯你在嗯比如说你在官上和一个网站的时候啊,你都有可能看到说底下有一些呃淘宝的一些呃推广的一些链接,对吧?以及说呃你也可能说就哪怕说你在淘宝或者在京端买东西的时候。

你能够看到他们站内自己的一些链接,对吧?这些广告呢其实就是计算广告,再比如说就是一个在线的广告,嗯,再比如说说你再去用百度或者谷歌这些搜索引擎的时候啊,你一定也会在最上面的时候,经常会看到出一些广告。

对吧?呃,百度大家可能看广告看的更多一点。所以说这些呢其实都是一个在线的一个广告。好吧,他们都是一种互联网的广告。那么我们就要讨论一下说在线广告,它和传统网传统的广告有哪些不同,对吧?那传统的广告呢。

其实类似于哪种,就是在机上发传单那种啊,以及说就是呃在电视上啊那种广告,对吧?那我们一般称这种东西呢为传统的一个广告啊,然后呢在线广告呢,它其实呢是有自己的一套新的一套体系的。

它是以互联网的这套技术呢为背景,然后呢,逐渐呃这一二十年来逐渐的一步步的衍生和发展出来的一套呃新的一套体系。啊,那我们计算广告呢就是在在线广告这个东西的基础之上呢,然后呃有了更多的一个发展。

然后呢通过把一些像记忆学习啊,一些计算的一些东西呢,应用到这个广告领域。然后呢,同时为平台方和广告主带来更多的收益。啊,大家可以看到说我们刚才呢我刚才说的两个名字。词呃,一个叫做平台方。啊。

另外一个呢叫做广告主。等会儿呢我们会频繁的提及这两个词汇,这样词汇分别是什么呢?广告主的话呢就是那些投放广告的人。啊,平台方呢就是那些提供广告投放渠道的地方。就比如说百度上面展示的广告。

那么假如说他展示了一家医院的一个广告,那么这家医院呢其实就是那个广告主。而这个平台方呢其实就是百度啊吧,平台方呢我们有时候呢也会称为媒体。啊,平台方媒体呢都是呃相同的词汇啊,在我们计算广告这个领域当中。

等会呢我会频繁的说像平台方广告主和媒体这些词汇。所以希望大家呢在这里呢先理解这三个词都是什么样的一个意思啊,那么我们先广告的本质是什么?广告的本质呢其实就是通过广告主啊。

广告主通过媒体啊达到低成本的用户接触。那么现在呢我们看到了我们这里所涉及到的第三个名词就是用户啊,那用户呢其实就是那些看广告的人,好吧,但是这个呢大家可能对这个主体呢更有体感一些。

因为我们自己本身呢就是用户,对吧?所以说呢我们这就形成了计算广告的三方体系。平台方广告主和用户好吧,等会呢我们会更多的在平台方和广告主之间去做文章啊,就是我们这样一个开篇。那么这堂公开课呢。

我主要会从四个方面来给大家分享计算广告的技术。第一方面呢就是计算广告的产品和发展简史。我们会在这一部分呢讲计算广告的三个部分啊,它们分别是合约广告。然后是竞价广告。以及说程序化交易广告。

我们会讨论说每一种广告它的特点是什么?它的背后涉及到的技术是什么?以及说嗯在现在的这样一种计算广告的呃发展史上,他们是怎么一步步的从合约广告发展到计价广告。

最终发展到了现在最流行的常市化广告的这是第一部分。第二部分呢是计算广告的一个系统的一个架构。那这部分呢我们会讨论两方面的内容。一方面呢是计算广告的一个整体的系统的情况啊,就是一般我们称为系统架构大图。

然后另外一方面就是它涉及到了哪些具体的一些,比如说一些技术,一些中间件。啊,中间键是一个呃IT的词汇,一般是指说呃嗯这不知道不知我现在想不起来怎么跟大家解释,大概意思就是说你提供一些嗯偏向于底层的服务。

但是不是像操作系统那么底层的啊,大概就是类似于这样的东西,像我们平常比较熟悉的像parksk不太能算中间键,它算一个计算引擎像Hpa呀这些呢都是我们所说的中间键啊。

然后第三部分呢就是计算广告的点击率预估啊,我们在这里呢会去讨论说一些像CTR预估的一些基本的一些技术。我们会从传统的记忆学习算法啊呃像深度学习算法当中啊。

各挑一两个例子来给大家去聊一下点击率预估这样的一个技术CTR预估呢其实也是目前而言对于竞价广告和程序化广告当中最重要的一个技术啊,然后这也是我们记忆学习呢发挥的作用最大的一个地方。

就是第三部分第四部分呢是基于广告合跃广告的在线分配。这一部分呢我们主要会讲一些啊在线。的一些应用啊,一些实时技术。啊,以及说一些最优化技术。好,那就是我这些呢就是我们这堂课所要讲的四部分内容啊。嗯。

我看大家也没有在评论区有说话的那我就继续往下去讲啊,那么首先来讲我们的第一部分就是计算广告的产品和发展简史。那么我们首先应为我们演来的呢是合约广告,那合约广告合约广告,它很顾名思义。

就是说呃广告主和平台签订了一个合约。这个合约它的一般的东西是什么呢?就是说我们要在你这个互联网商在你这个平台上面,我们去展示我们的这样一个广告创意,对吧?啊,这样的一些比较典型的一些例子是什么?

最典型的其实就是视频广告啊,比如说像优酷啊,在百度上要引发推广啊,那他就和百度呢就会签签署一个视频广告。那这样的话呢,他一般他会以说呃百度有多少次展示啊。

作为它的这样一个呃最终的一个计费的这样一个条件啊,然后呢。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

那么我们首先要考虑就是因为我们的一个广告呢,大家可以认为说广告呢它是分三个阶段的,就分别我们一般从树养称他们最开始的曝光。是。到中期的点击。啊,到最后的转化。啊,这是广告的一个三阶段。

那么他们三个分别都是指什么呢?曝光一般是指说我这个广告呢我投放在了平台,这个网站呃平台上啊,这就是一次曝光。那么呃大部分情况下大家可能都不会去点击嘛,对吧?那很少的时候呢。

我们假如说对这个广告确实比较感兴趣。我们点击进去了。那样这样的话呢,我们就称之为点击。然后点击进去以后,我在这个网站发生了,比如说或购买行为或者其他的一些呃行为转化成了这个网站的用户。

那么一般呢我们就称之为转化。那么合约广告呢一般是针对于曝光的。他的意思就是说,只要说我给你展示的广告,我就应该去计费。那么他我们把这种付费方式称为什么?称之为CPM啊。

CPM等会我还要看到其他的一些词汇,包括CPC啊等等一些词汇。CPM呢一般指的是说说呃我们根据曝光呢进行进行收费啊,那他的一个呃意义在于说说比你呃我们只要曝光就会说白了。

不是说点进去具体看到我这个网站的一收费,看到广告主这样一个商品的一收费。那本身的意义呢,其实更加在于说一个长期的一个价值啊,这个问题怎么去解释呢?

就比如说说嗯假如说我们不太关心的是说我这个产品是否卖出去,我更加关心的是说说我这样一个品牌效应是否能够在大家的心中呢形成一个呃良好的,比如说口碑啊传播呀等等之类的。我们再拿视频网站去举例。

比如说优酷在百度上去投广告。那么优酷它一般希望的是说呃百度。能够给到他流量。然后最终呢用户能够最终进入到百度呃从过通过百度啊,进入到优酷这个网站上去,然后呢再进入优酷这个网站视里面呢去进行浏览啊。

这样的话呢,其实优酷它看中的并不是说你在我这个网站里面去看了什么东西。而是说我希望说拉到更多的用户进入我这个网站去看我这个网站,购物网站产生一个流量的一个效应,对吧?

所以说我们一般什么时候会使用可有广告呢?它也是在最开始发生的时候,就是说当我们的点击的收益并不是很大的时候。然后呢,我们当会考虑长期价值和一个流量价值的时候。

我们一般呢都会通过一些合约广告这样的一些东西。那么既然这样的话呢,我们就会去想说嗯那合约广告它最终是以什么样的方式进行投放的呢?他一般我们刚才说过,他是以通过呃我们在这个广在这个网站上呢,看到了啊。

他就是一应计费。但是他也并不会说说所有人都去看到,因为这样成本会很高,对吧?所以说我们一般会圈一部分人,我们把这部分圈的人呢叫做什么叫做受众啊,这部分圈人这个技术我叫做什么叫做受众定向。

这个圈人呢一般都是由说呃合约广告的广告主去提供的啊,他们一般会告诉平台,说说我们想去圈哪方面的人,好吧,这是第一个需求,受众定向。第二个需求呢,就是我们刚才所说的广告投放啊。

我们需要说最终把它给投放到具体呃每一个人的这个视视角上面去。然后呢,我能够保证说一定有人能够看到的这个广告,就我们所说的第二个需求。投放。那么第三个需求,担保式投送是一个什么样的一个概念呢?

担保式投送的意思呢,其实和后面的这个难点这部分是一定的结合的。他的意思就是说说很多时候呢可能说你在投广告,我也在投广告,对吧?比如说优酷在投广告,然后呢,腾讯视频也在进行投广告。

那么他们呢很可能就会产生一个流量的一个竞争,就是很可能大家说我都想去投说啊在校的大学生这样一个广告啊,因此而言呢,当这两个人都会去投广告的时候呢。

他们就产生一个流量一个PK此时呢作为一个优酷的提供呃广告主,我可能就想说的是那我希望说说我的广告至少要达到,比如说1000万的投放量啊,就是我们所说的这样一个担保是一个投送啊。

我们会对广告的投放的数量或者其他的一些地方呢有一些序求量一个限制。就就引发了合约广告的一个技术上的一个难点是么?就是我们这里所说的一个在线分配啊,因为我们这个流量呢基本上都是很难去进行预估的。

就比如说说嗯我。可以离线的啊,什么叫?就是我意思说嗯假如说我预估明天会来1亿人来我摆个这个网站上去。那么我可能是说说优酷你要1000万,那我觉得O那我就把其中的1000万流量都给到你。

那么这1000万怎么给到你呢?我肯定不可能说上来先把前100万的流量全给到你。然后剩下的就给别人,对吧?那我可能也要考虑说我自己的一个分配的一个问题。

并且说平台可能也会有其广告主也可能会有一些其他的一些需求。那么我可能是说比如说前一个小时呢啊给你投100万,然后第第2到3个小时呢再给你投100万,诸如此类的这样一个基本的投放策略。

那么我们很可能就会发现说我这个流量预估的不是很准。那我预估说今天会来一亿的流量。那结果呢今天只来到500万的流量,就导致说说我对你的这样一个目标呢,就没办法进行完成。

所以说由于线上的流量是在实时的动态的去进行变化的。那么我们怎么能够对流量呢进行一个在线的一个分配。比如说我前一个小时发现说我投的流量过多了,那么我在下一个小时呢,理论上均验对你的流量要少一点啊。

保持一个整体的一个均衡状态,反之也是一样的。这是我们这样一个在线分配的一个技术,这也是它的难点之一。第二个难点呢,constrain optimization就是说一个受限制的一个最优化的一个问题。

刚才我们说过了,说优步他想去投广告,腾讯视频他也想去投广告。那么大家都要去投广告的时候,怎么能够保证说说呃具体的给到某一个人群,大家的量级都能达到满足。并且说使得效果更加的具优秀的?

这个呢其实就是我们一个有限制的一个最优化的一个问题。他呢经常是和我们这个online education。这个呢是放到一起去进行去做的啊,因为我们在进行在线的流量分配的过程当中呢。

有会去在我们的一个最优化的一个框架之下会进行流量的一个分配。因此而言,这也是我们合约广告的一个难点。这个呢我们在第四部分去讲我们的一个嗯。在线分配的时候呢,我还会再进行提及。好吧。

这个呢是一个很重要的一个点。一般在业绩当中呢,会用一些类似于像啊运筹学。啊,也是我们所做的OR。以及说像啊lin programming。哦,或者说扩专题的或观点。就是二次优化。啊。

等等相关的技术呢对它进行呃一些计算。好吧,这这里所说的一个难点。啊,那我们这里边插播一个小知是什么?就是受众定向。我们一般啊广告主都会通过什么样的方式呢进行受众定向呢?

一般呢广告主呢他都会有一些用户的信息啊,这些用户信息呢可能是广告主自己去总结的,也可能是平台方帮他去进行提供的啊,在何用啊这里呢,一般是平台方进行提供的。那么收入定向一些典型的办法都包括什么呢?

就包括像地域定向啊,就比如说我这次呢这个广告呢只投北京市的人。就比如说呃我这个品牌呢只在北京市有我的门店,其他地方都没有。那我可能说我投到上海市也没有什么用。

因此而呢我就会倾向于说有一个地域上的一个选择,我称之为地域定向。然后呢,其他的包括像人群属性定向。比如说只投放给青年人呀,不投放给中年人呀等等。你一说频道定向,上下文定向行为定向精准位置定向纯定向。

那这里呢我想说具体的两点。啊,第一点呢是什么?什么叫上下文定向。啊,说上下文定向呢,我们首先要理解说上下文这个词汇是什么意思啊,上文这个词汇它做标含的意思呢。

其实是说说很多信息呢只有在你在线的过程当中才能去拿到,它不是一个离线就能拿到的一个标签,什么叫离线标签,就比如说今年假如说我30岁,那么我30岁呢,这是一个固定的一个标签,不可能说我今年30岁。

年龄就变成50岁。对吧因此而言,这是一个相对于比较呃呃静态的一个标签。那上下文定向的这个标签呢一般是一个动态标签。就比如说现在呢我可能是在呃北京市呢哎人在这里啊,等会儿呢我可能又跑到了上海市去的对吧?

那我在不同的地方上呢广告平台通过采集我的地理位置信息实时的去决策说我是否应该把这个流量分配给这个广告主好吧,这有什么这些所说的一个上下文定向。简而言之,就是根据当前的一个系统请求。

他所的一个状态来决定说呃当前这个广告应该投放给谁一个过滤条件。这至些所说的上下文定向。那么重定向一般指什么呢?重定向一般指的是说说嗯广告主呢曾经发现过说假如说比如说我曾经在京东上买过东西啊。

那他就会发现说说我在京东上买东西,我在淘宝上买东西。那我可能对京东这个平台呢本身是更感兴趣的。因此而言,广告主呢就会对这种嗯这种人呢进行一个自己的一个加权的一个操作。就他会希望说说我能够下次呢还来京东。

因此而言,大家就会说啊,那对于这种人呢,我要进行重点的一个投放啊,这是重定向啊,等会儿呢我们还会再聊到重定向这样一个问题。那么初中定向我们说过了,说它会依赖于这些等等之类这些标签。那么这些标签体系呢。

其实一般是由在合运广告这里呢,是由广告主来维护的。因此而言,广告主呢它就会维护一个整体的一个对用户的这样一个人群画像啊,就是我们自己所谓的标签体系啊,这里呢一般而言,我们的这个标签呢会倾向于两种标签。

会有两种典型的标签的一种方式啊。第一种是属于像这种结构化的标签。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

就比如说说呃呃第一个标签在下级的标签,在下级的标签,一次法就类以推。还有一种呢是平行化的标签。平滑标签呢就是说各个标签之间呢没有没有严格的互斥关系。

但是呢他们没有严格的从属关系就比如说我既可以是一个男性啊,也可以是一个30岁的男性啊,也可以是一个中国的30岁的男性等等。像像中国30岁男性,这些标签呢是属于相对而言比较偏平行化的标签是吧?

而在这种情况下呢,一般我们会比较倾向于用这种具有上下级的这种互斥关系的这样一个程序化的一个标签啊,就比如说说年龄上面的话呢,我比如说只去投放说小于30岁的人,大于30岁的那,我就不进行投放了是吧?

就这里所说的一个受容定向的一个标签体系。那么我们讲完了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

合约广告以后呢,我们回过头家看一下合约广告呢,它其实一个核心点在于什么?核心点在于说我们对曝光进行计费啊,那么它的原因是什么?原因在于说我们要考其长考虑长期和流量的一个价值。那么它的难点是什么呢?

难点在于说在线的一个最优化,以及说具有呃呃可就是限制的这样一个最优化这么一个问题。好吧,那么在这种情况下呢,我们越来越发现说很多时候呢广告主圈人他圈的可能一不是那么精确,对吧?他可能只能。

很粗略的几个标签呢进行圈人。因为像广告平台呢,一是不知道广告主需要什么样的标签。2他也不可能把所有的标签呢都给广告主,这是第一点。第二点呢,就是他也曾经去发现过了。

说我们这个广告主的数量呢也越来越膨胀了啊,因为呃很可能开始的时候呢,我们只有那么两三个广告主啊,那大家呢我们去分配分配其实还比较合理,对吧?然后呢大家就竞争这些流量。但当我们的这个广告呢越来越庞大了。

广告主越来越多的时候。中小广告主越来越有限的时候呢,其实合约广告呢他们。更加关心的并不是说你给我展示了多少次,而是说说你真正的引流到了我这个网站的那有多少次,对吧?

也就是说他们现在更关心的呢并不是曝光了,而是更关心的这样一个点击这样一个过程。此时呢我们的这个广告技术呢,就从合约广告呢进化到了我们的这样一个竞价广告。监网的产生原因呢,就刚才所说过的。

当市场更加精细化的时候,我们需要更加精精准的定向标签的时候,你说到我们的广告主的数量越来越多不断膨胀的时候,好吧,那么这样的产品形式和刚才所说过的合约广告的一个最重要的一个区别呢,在于说此时。

我们这个供给方啊,我们只想保证什么啊,只想让广告主保证说我们。呃,单位流量的这样一个成本,对吧?我们只是说说呃那OK现在的问题在于说我们不会说一定要给你保证说多少多少的流量了。

我们更多的是希望给你去保护说保护说什么,保护说能够更多的引流到你这样一个网站上去啊,因为此时我们已经不按照。我们这里所说的曝光进行计费了,我们换照什么?我们换照点击进行计费。好吧,这里所说的个什么?

就是CPC我们按照点击进行计费。典型的一个例子是什么呢?就是我们这里所说的一个搜索广告啊,那么搜索广告大家应该是最不陌生的一个东西,就是在百度上面呢。我们搜索的时候,经常在上面弹生的广告,搜索广告。

他们其实呢很多时候都是一个竞价广告啊,就是百度觉得说把这个广告推送给你呢,你去点击的可能性是最大的,因此而言呢,嗯这种竞价广告呢,也是呃越来越比开始的所说的这里的合约广告呢变得更加精准了一点,对吧?

因为我们这里的精准说明了说我们更多的会把这个点击率预估,以及说真正的点击的这个流量呢引到你这个网站上去,那么搜索广告呢,其实是我们竞价广告的一个最典型的一个代表,是因为说搜索的时候。

用户一般都有一个很强的一个目的性,对吧?就比如说现在我假如说在搜索一个洗衣机的时候啊,那你给我推推送一个巧克力,很可能就是没有什么意义的对吧?嗯,如果说我们在用合约广告的时候呢。

很可能我们就会把一些巧克力的一些呃商户呢推荐给你,这明显是不太合理的。因此而言,在我们搜索广告的时候呢,我们由于有的很多用户的一些信息,再加上广告主他自己所。沉淀的一些具体的一些标签上的信息的时候呢。

我们就能够很实时的拿到说这个用户他对什么应该感兴趣。我们在进行投放的时候呢,就更加有目的性,能够更加保证说提升我们这样一个广告的投放的一个质量啊。那么此时我们的具体的需求一般都变成了什么呢?

变成了我们这样一个精准的人群定向,对吧?这个精准人群定向呢就类似于刚才我所说的,说我们能够通过各种各样的信息,各种各样的特征啊,就比如说上下文的特征啊,你去搜了什么东西。

以及说说你本身我们做一个广告主已经沉淀出来的用户的啊一个标签体系,一个用户画像呢对他进行精准的一个人群的一个投放啊,这是第一点。第二点呢就是一个竞价机制,竞价机制是什么意思呢?因为我们这个的时候呢。

我们的广告主的数量点越来越多了,我们也不向他们进行保量了,我们只向广告主承诺说我觉得谁好,那么我就推送给谁吧?那此时的时候呢,广告就会出现说一个问题。就比如说说嗯广告主A。啊,它的点击率呢。

我们把点击叫做CTRCTR的全称是clickthrough it。嗯,就是这里所说的一个点击率。好吧,那我们这个A广告的广告主呢,它的一个特点呢是说说嗯。嗯。

我AA广告主的广告主的特点呢是说说我们这个CTR呢它比较低啊,但是呢它最终能够给我们带来了一个收益呢。可能是比较高的啊,B广告主呢可能就反而他CDR比较高啊,但是它的收益呢相对来比较低,对吧?

因此而言呢,我们这个平台应该怎样对这个A和B这顶话广告进行排序呢?啊,我们一般用到的一个排序的公式呢啊ECPM。等于什么?就等于我们这里的这个CTR乘以我们这里的这个B的值。好吧。

CTR呢就是我们刚才说的一个点击率B的值呢,就是说我们呃我这个广告主呢愿意为它进行多么大的一个付费啊,这也是我们这里所说的一个竞价机制。每个广告主呢,他自己去出了多少的价格。

最终保证了说我们因为我们这个平台呢目标呢是ECPM最大啊,就是说对我这个平台的收益是最大的嘛啊,这个CTR乘以B的呢,相对而言是一个期望,对吧?这个大家不知道能不能理解,因此而呢,我们要的是期望最大。

而广告主呢希望说自己的广告呢能够投放的更加精准。那因此而呢很多广告主之间呢就会存在出一个竞价的机制。那么我们到底是说我出多高的一个价格呢,其实就是一个很大的一个学问,对吧?一般在竞价广告里面呢。

CTR是由平台方进行预估。而B的呢是由广告主呢进行预估。因此而言,广告主呢怎么能够说在竞价机上去做文章呢?也是一个很重要的一个问题啊啊,此时呢因为竞价机制直接关系到了广告主的一个付费。因此而言。

目前用到的最广放的一个东西叫做什么呢?叫做广义第二高价,广义第二高价,他的意思是什么呢?嗯就比如说说现在有广两个广告呢在进行竞价啊,那么假如说第一个广告主呢,他出了100元。第二广告主。

他出了200元啊,那他出了200元以后呢,那他肯定是他赢了,对吧?那我们真的应该管他是收200元嘛,实际上不是的,因为说哪怕他出100。01元,那他这个广告呢依然是最终能够投放出去,对吧?

因他依然去获胜。因此而言呢,我们一般会用第二出价的这样一个价格呢啊去对我们最终投放出去的那个广告主的价格呢进行计费好吧,就是这里所说的广义第二高价。啊,那么这个问题的难点在于什么呢?

难点其实在于说平台方的1个CTR的预估过程啊,因为CTR预估呢,它其实是目前呃继续学习运运用的最广泛的一个领域。那么怎么能够在这里呢把CTR预估的比较精准。怎么利用特征,利用各种各样的模型。

能把我们这个点击率预估的最精准,其实是平台方它所考虑的一个很重要的一个问题。因为这个CTR的预估呢直接和啊最终这个ECPM也就是说啊我们的这个平台的收益呢是息息相关的。

因为我并没办法控制我们的广告主的竞价,我就只能控制CTR好吧,因为此这里的难点在于什么?在于CTR的一个预估。嗯。嗯嗯,好,嗯,我看同学也在问说课件能否发给你们啊,是可以发的。然后在这个课结束时候呢。

我会给那个我们这边的老师,然后把课件给到他,然后他会发给你们。好吧。嗯,我不知道你们是否有什么微信群之类的东西,然后他应该会有其他的渠道抽达到你们给你们。好,那是这里那我们就继续往去讲。

我们讲的第三部分呢,就是说我们从竞价广告呢,我们也发现了一些问题,对吧?它的问题在于什么呢?它的问题在于说说啊,首先呢我肯定会圈一部分人,对吧?那我圈完这部分人以后呢,我会有一个价格。

比如说说我要给嗯北京人呢投价竞价的价位呢是100元,给上海人的竞价的价位呢是200元,对吧?但是我突然间过一段时间以后,我发现说并不是所有的北京人,我100元都比较合适,可能说有的北京人呢。

我啊30元比较合适。有的北京人呢,我可能说300元比较合适,对吧?那么我可能是说希望说不是一个开始的时候定死的一个。就我的一个出价,我更希望说是一为这个价格呢,我可以进行动态的一个调整,对吧?

那么我们管它叫做什么呢?管它叫做实时竞价。实时竞价一般指的是什么?就是说我们这个竞价呢不是一个开始的时候呢,我就是写死的啊,我作为一个广告主啊,我是能够说根据一个具体的一个情况呢,我实时的进行出价。

好吧?就是这个产生的原因,我们不想定价逻辑变得封闭了啊,因为我们无法实时出价,也没有办法自主选择流量,对吧?因为可能说我发现说给北京人投100元,有点太少了啊,我自己这个流量都不怕保证啊,因此而呢。

我可能希望说提高我的竞价啊,对于不同人呢也要有不同的竞价,对吧?也要这样的话呢,我们能够。更加自主的去保证我们这样一个独样的一个情况,那么它的产品的形式呢,一般就是说每次展示的时候实时出价。

相对于传统的呃竞价广告而言呢,进价广告一般是啊当一个有一个广告位出来了以后,一般是平台,他去查询自己的一个他会对各个的广告呢进行一笔CTR的一个预估。然后呢,他预估完CTR以后呢,他会查询每个广告主的。

他们的一个竞价的一个价格,对吧?他查询一个价格以后呢,他就会计算出ECPM。但在实时竞价这里呢,CTR依然平台方会进行预估。但是这个B的呢并不是他从他的数据库当中去查询的了。

一般呢它会委托一个中间的一个广告平台,向各个广告商呢发生发起实时竞价。各个广告主呢。就是相当于我们这里有一个平台方。我们通过一个广告平台。向我们所有的广告主呢发起一个实时竞价。啊,每个广告主呢。

他会都会实时的说呃去看说当前的这个广告位呢,我是否想进行投放,我愿意出价多少。每有广告主呢当前去自定自动的自去各自的拟定自己的一个实时的一个价格。然后呢再反回给广告平台。

最终再反回给平台方平台方在决定说最终把这个广告展示给谁,好吧,就这里所说的东西,那么它的产品举例一般是什么呢?像ADXSSP和DSP那么这三个概念呢,等会我们都会提及啊,这个大家先别要着急啊。

ADX呢就是我们这里所说的广告平台SSP呢就是我们的平台方DSP呢就是我们这里的广告主好吧,那们这个产品举例。那么一个具体的需求是什么呢?就是说也是跟刚才一样,是一个精准的一个人群的一个竞向定向。好吧。

但是这个是竞价机制呢,我变成一什么?变成了一个实时的一个竞价机制,好吧。啊,这个付汇方式呢和刚才呢也是本质上的也是一样的啊,也是通过CBC进行竞价的。通过点击进行竞价的。

它和刚才所说的这个竞价的最大的区别呢只在于说我们这个竞价呢是对于广告者言变得更加实时了。好吧,那么现在这里的这个难点就发生了一些变化。是一个需求方的一个精准的一个定价。好吧,为什么这么说呢?

因为此时平台方呢,它。虽然说他依然在进行1个CTR的一个预估,但此时呢更多的这样1个CTR的预估呢已经发生在了广告主这样一个范围之内了啊,广告主呢一般都会说有一个自己去预估说自己的这样一个转化率。

以及说自己把自己的出价也给出来,好吧,所说平台方呢直接去运用说广告主所给出来的信息呢,决定说是否对这个广告主的这个价格呢进行展示。因为此时广告主他有实时竞价的一个权利。

他能够更多的依赖于当前的一些数据呢,去发现说说我这个广告呢是否进行投放,他能够更精准的进行出价,那么如何精准的进行出价呢?其实就是我们这里所说的一个实时竞价,说程序化交易广告的时候的一个难点。好吧。

就是这里。那么刚才呢我们通过一条线路呢,从合有广告到竞价广告到程序化交易广告呢梳理的这么一个呃每一个广告的一个各自的特点,以及他的一个发展的一个前因后果啊。

那下面呢我们来看一下我们这样一个需求方的一个层级的一个组织。需方的层级组织呢,我目前而言呢会一般而言会分为三三个级别。第一个级别呢就叫广告计划,也称之为,一般而言呢就是说一次广告的合同。

比如说现在呢我去投放,比如说我们这个嗯步步高的一款手机就是一个具体一个产品,对吧?就是一个广告计划那么第二个层级呢就是广告组一个具体的投放策略,对吧?比如说现在呢我这个步步高手机啊。

我需要说我在百度这个平台去投放啊,或或者说我们需要对呃呃你年轻人进行投放,对吧?就是一个具体的一个投放策略,对吧?投放人群,百度那个不太合适是一个投放人群就是广告组。第三个呢广告创意呢。

就是说我们可能说呃哪怕说我们都对青年进行投放,那可能我对呃男性和女性呢进行投放呢,我们用了图片不太一样,啊,女性投放呢可能是说偏红,然后呢。男性的头发呢偏蓝,对吧打个比方啊,这些呢像你标题是什么文字呀。

你比如什么链接呀,以及说什么文案呀,什么图片呀等等之类的,这些都是我们的什么叫做广告的一个创意。好吧,这是第三个等级嗯。嗯,那么这里呢我们再更加详细的去聊一下搜索广告。这是聊搜索广告呢。

是因为说大家平常见他的次数呢是最多的啊,应该对他呢也是最熟悉的啊,搜索广告呢,我们一般说会通过我们这个搜索的一个关键词呢进行一个查询的一个扩展,对吧?因为像在比如说在搜索广告里面进行投放的时候呢。

呃平台方一般都会要求说广告主呢说呃你要对什么样的词汇你在进行投放,对吧?比如现在我要搜索的一个东西呢?假如说叫做呃。叫个洗衣机。那么我是那你是只投洗衣机这个词汇呢,还是说洗衣服这个词汇你也进行投放。

还是说洗这个词进进行投放啊,以及说只要呃等等之类的一些其他的就是洗衣机你一定不投放等等之类的各种的匹配的条件啊,像精准匹配啊,短语匹配啊,模糊匹配和否定匹配等等这些条件啊。

比如精准匹配就一定要投洗衣机我再进行广告的一个投放啊,短语匹配呢,就比如说说啊洗衣啊,我们也进行一个呃投放啊,模糊匹配呢,就比如像洗衣服呀之类的东西的,比较呃只语意义上有关联的,我们才进行投。

我们都进行投放,还是说否定匹配,就是说啊只要是跟洗衣机相关的,都不投放等等的。我会有很多个查询的一个扩展啊,所以我们的所有广告的一个扩展,这是第一个。第二个呢是所有广告呢,它一般分为三个区域。

后面是北区南区和东区。那什么叫北区南区和东区呢?就是上北下南左西右东啊,另外呢像这里头广告呢,我们一般称之为北区。这里这个广告呢我们一般称之为南区。这里也有广告呢,我们依然称之为东西啊。嗯。

一般大家看到广告呢都集中在这三个区域,像这个西区呢,一般是没有的。然后呢,一般而言呢是北区的价格呢,一般而言相对来说比较高啊啊比东区和南区呢都会相对而高一点啊,因为北区是大家最容易看到的。就是这里。

第三个呢就是ECPM怎么进行计算的?就是CTR呢乘以我这个B的,好吧。那么在这里呢,我们再次进行一下竞价广告和合约广告的一个对比。那么竞价广告合约广告的一个对比呢。

就是第一个就是说我们竞价广告呢有一个更加精细的一个人群的一个定向。吧?换句话说,就是说我们不是在通过说我开放给广告主的一些比较粗略的一个标签,对吧?粗略标签包括什么?比如说年龄啊相比呀等等。

这些就属于粗略的一个标签。但此时呢我有更加的一些精准的一些人群的一些信息,对?就比如说说啊我这个人呢最近对于百度类的广告对于那个视频类广告的,我一感兴趣程度呀等等这类这些信息,这些数据呢,一般说而言呢。

都是出都是出现在平台方那里的啊,他们一般都不会给到广告主啊,因此而言呢,我们怎么能够拿到更精细的一个信息和特征,对他进行广告的投放,我们称之为精细的人群定向,这是第一点。

第二点呢就我们这个公小中小广告主呢成为了一个主流啊,这也是刚才所说的竞价广告,它所产生的一个啊重要一个原因。第三个呢就是说数据为核心的一个产品体系。因为此时呢CTR预估这件事情呢完全掌握在平台方的手里。

平常平台方呢他就会通过说我们进行数据的分析,来去进行不断的去优化模型啊,不断的把更多的特征呢去加到我们这个模型当中去啊,并且说去看具体的每个广告的一个投放情况,完全以数据为主导进行产品上的一个优化。

好吧,这是这些所说的一个数据为核心的一个产品体系。Yeah。W。在这里呢我们再回过头来再去聊一聊说我们刚才所说的那些ADXSSP和DSP啊。

这里呢其实更加程度上的是在给大家去聊一聊我们这这些呃术语的一些概念都是什么东西啊啊,RTB是什么东西?是实时竞价,对吧?就我们这里所说的re time。啊,他所指的意思呢。

一般就是就是指的是那种实时竞价的这样一件啊这样一种产品啊,程序化交易的这样一种产品,就是实时竞价。那ADX呢就是广告交易平台。就刚才我们在这里曾经画过的啊,平台方呢啊就这个媒体啊。

然后呢会请求到广告平台这里广告平台就是我们这里所说的ADX然后呢,广告平台呢会基于说在他这里注册的广告主呢发生竞价请求到每有广告主纳的好吧?就是这里广告平台。啊,DSP和SSP是相对的。

DSP呢是指需求方的平台啊,一般就是广告主的平台。而SSP呢就是我们这个供给方平台,也就是我们这里所说的一个平台方。好吧,那需求方平台呢一般都是利用说自己的一些数据呢,去精准的预估一些这个广告呢。

我这个竞价所能带来的1个ECPM好吧啊,以及说我们高度定制化的一个重定项这个重定项呢,刚才我们也曾经已经说过了啊,在网站重定项或者个人化重定项,对吧?

比如说根据用户的一些在我这个网站的一些浏览下单的一个信息啊等等之类的进行一些重定项好吧。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当然还有一些搜索成定向啊,就比如说你搜的什么东西来对你进行一个定向,对吧?这是成定向。成定向技术呢是比较重要的一个技术,叫tveting技术。这个技术呢啊在目前的现在的这样计算广告体系当中呢。

是特别重要的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SSP呢就是这所说的一个供给方平台啊,它呢一般会做到什么呢?因为呃对于一个完整的一个竞价广告而言呢呃呃计算广告而言呢,他如果说我们只通过说这样一种TB的这样一种实时竞价的方式呢。

就没有办法保证说说我们这样一个收益,就很可能说我们这个ADX联合我们这里的DSP然后呢,他们实劲去压价,对吧?

因此而言呢呃这里所做的SSSSSP一般都会相向先在自己平台上已经进行静态竞价的这样一些广告主呢啊去查询说我给他们呃就是发布他们的广告所给我带来的收益。然后呢,一般以他们的B的呢作为一个下线。

向我们这里的这些所有的这些广告主呢进行一个请求,只有说这些实时竞价的时候,这些广告主他们的这些呃出价高于说我SSP请求的这些最低的像我这个平台上你们注册的竞竞价呢,我才会去投放说我们这个。

实时竞价的广告,好吧,因此而言,也就是说我们会利用我们这个竞价广告呢去保证我们这样一个下限。然后呢再去向ADS呢进行请求。最后一点呢就我们这个DMP也就是说一个数据管理的一个平台啊。

它一般管理说说像一些人群标签的一些数据啊,然后各个广告的一些各种各样的一些数据啊等等之类的。好吧,这里所谓的1个DDMP。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

那么在本部分结束之前呢,我们最后在一个演变图的方式呢来帮助大家呢啊再次进行一下我们这个广告的整体链度的一个梳理啊,最开始呢我们知道说我们有一个什么东西,一个线下广告对?

那线下广告呢我们就逐渐的发展到了什么发展到了一个我们这里的一个CBT的一个广告广告呢我们发展成了什么一个展示量的一个合约的一个广告,现在就是一个合约广告合约广告呢我们就会把它呢逐渐的进行精准啊。

变成了我们这样一个精准的一个定向的一个广告,到一个人群标签的维度上,对吧?那么我发现说它的这样一个精准呢,我们还是觉得不能接受。因此而呢我们就发展成了什么竞价广告。

把CTR预估这件事呢全部交给平台方去做。与此同时,另外一个半边搜索广告的蓬勃发展呢它触发了剩下文这广告,以及说最终呢也到了一般竞价广告这里。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当然呢在一般竞价广告这里呢,我们就会有一个什么它的一个实时的实时化的一个发展,变成了目前的一个城业化交易广告。如我们这里所说的实呃实时竞价广告。当然这边呢是一些呃广告的一些渠道,对吧?

比如我们搜索广告和一般竞价广告可以在哪里进行投放啊等等之类的这些东西吧。这我们这里的一个总体的一个演变图。好,那么我们第一部分呢就讲这么多,大家还有有什么问题吗?Okay。啊。

我希望大家多跟我互动一下啊,因为如果大家光听不去进行提问的话呢,因为我不太知道说大家对于啊哪里比较感兴趣,或者对哪里我讲的没有讲清楚啊,因此而言呢嗯大家我欢迎大家多提问,好吧。Yeah。好。

大家没有问题,我们接着往下去讲,我们开始讲我们的第二部分,就我们这里的计算广告的一个系统的一个架构。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

啊,这个系统架构呢,这里呢是我从网上找的一个图啊,特别的复杂啊,特别的花里胡哨。啊,但是呢这些花胡哨的东西呢啊我们也可以看到说我们主要是哪几个部分,对吧?

第一个部分呢就是这里我们这个分布式的一个基算平台比较重要,对吧?这些基算平台呢,它一般都是说我们要把我们这些呃具体的当前的一个点击率呢,怎么进行建模,对吧?怎么进行在线的一个流量的一个分配,对吧?

等等之类这些东西,这是我们这里的一个分布式的一个基算平台。第二部分呢就我们这里这个广告投放机啊,就是说具体的一个请求进行过来了以后啊,这体一个request过来了以后啊。

我当前呢怎么利用我们在这里拿到的一个模型呢,对它进行一个实时的一个排序啊,一个召回一个检索。你说最终呢把他们的这个基算他们的ECPM那么进行他们的一个收益的一个管理。好吧,就是第二个部分广告投放机。

第三部分呢就是我们这里所说的一个流计算平台,对吧?流计算平台的话呢,它一般呢都会有一些包括是一些实时特征。比如说像什么实时的点击反馈呀,你说实施的一些人群过滤,实时设成定向呀。

你说计算网络所特有的像什么计费和反作弊的一些机制呀等等之类的。在流计算平台里面。当然同时呢我们还有一个东西叫做数据高速公率啊,这个数据高速公路呢,一般都是说我们要把我们这些每个系统呢所产生的日志呢。

把它们给呃记录下来,最终呢给到说我们这个流计算平台呢进行实时数据流的一个消费啊,就这个整体的一个架构大图。那么下面呢我们在。对每一个部分呢再进行一些详细的一些介绍。

首先呢是我们这里所说的一个受众定向平台。受众定向平台呢它的一个四点呢分别包括说像我们这个绘画的日志的一个生成啊。这里呢一般就是说我们在整理数据,对吧?就如果说大家有在互联网公司工作过呢。

其实就是说我们这里就叫买点数据的一个清洗,对吧?She。嗯,第二部分呢就我们这里的一个行为定向,行为定向的话呢,一般就是说啊我们需要说根据我们这些数据呢啊一些人群的一些特点呢,收集过来的各种情况。

对人群呢进行打标。我们要进行打标签,对吧?这是第二部分。然后第三部分呢点击率建模,它一般就是我们这里所说的1个CTR的一个预估的这么一个建模的一个过程,我们会在离线呢啊会对我们这里所拿到这些买点数据。

以及说行为的一些数据啊,比如说label的这样一些数据,对吧?然后呢。去拼接出我们这样一个机极学习的一个样本,啊后拿这些样本呢进行一个点击率的一个建模。好吧,这是这个部分。

最后一个部分就是商业智能模块啊,这些商业智能模块呢一般是一些BI的模块。比如说就对一些数据呢进行一些业务视角的一些分析啊等等之类的。就是这里商业智能。好,就是受众定向平台。那这个高并发的投放系统呢。

就我们这里所说的一个线上的一个服务系统,好吧,是一个线上系统。它一要包括什么?就包括说我们这里广告所进行的召回和排序,对吧?召回和排序呢,也是只要一般是像那种推荐呀、广告啊、搜索呀。

都会有召回和排序两个阶段,所谓召回,一般是指说我们从比如说十的9次方1亿个广告创意啊,我把经典到10的4次方个啊,就是或者1000个1万个的这样一个广告的创意。这10亿好像可说错了。

就相当于我们要把那些无关广告的全都给干掉,对吧?这召回呢一般会有两种方式,一般是业务召回,包括说。啊,我们会比如说业务是呃一些广告主说说,我只要对这个标签人进行投放,对吧?那其他的我也不需要进行召回。

对吧?这是业务召回。那第二个召回呢,一般是指说啊我们的这个算法召回。算法召回呢,就比如说我们所熟悉的那种向量召回的机制啊,怎么能够利用说一些inbedding把这些东西给召回过来呢?

就我们这里所说的第二个部分,广告召回那这算法召回。然后排序是什么呢?校回径里呢只是进行一些粗序比较粗的,把认为说相对来比较感兴趣的呢它拿过来。但最终去出水呢。

一般就是这里所说的一个广告的一个排序的一个过程了啊,排序呢,我们一般都会用一些像一些深度学习的一些模型呀。比如说最近几年对它进行一些广告的一个排序。当然了,因为我们还会有一些像什么ECM的一个计算呀。

或者说on education呀这些之类的一些东西呢,并不是说说我们在这里CTR预估排到第一名的,就一定会被投放出去,对吧?因此而呢我们这里还会有一些收益管理和重排序的东西。

在线上呢对我们这里模型计算出来的结果呢,进行一次打分上的干预啊,就这里所说的重排序的过程。Yes。第三个部分呢是我们这里所说的一个数据的一个高速公路啊。

数据高速公路呢一般是指说我们要比较实时的把日志呢推送到一个其他的一个平台上面去,对吧?一般是比如说推到一个流计算平台。啊,给到这些流线平台呢,他们进行一些实时数据的这样一个清洗和计算。

以及说我们要联系起离线和在线出来。因为我们的离线数据呢,一般而言呢都也通过在线数据呢去落盘出来的对吧?因此而言呢,我们要把离线和在线的表的这种结构呀,存储方式呀,怎么能够把他们有机的给整合到一起。

以及说面向数据或者算法的同事去开发的时候,他们能么怎么能够说形为一套完整的一套在线的离离线相对而言比较一致的一套开发的这样一个体系。这也就是说的联系在线和离线。好吧,这是这一部分。那么最后一部分呢。

就是我们这里所说的一个流式计算平台了。流式计算平台呢,它所做的事情呢,一般就是第一部分实时的受众定向和实时点击反馈,这些呢都是利用一些实时信息,然后过构造出一些实时的一些特征。然后呢。

这些特征呢怎么给到我们这个广告系统呢再进行跟模型相关的地方,或者说跟投放相关的地方呢?啊,这样进行一个消费。而计费和反作弊呢,一般是一些偏业务上的一些东西。比如计费呢。

我怎么就是我对这个广告主进行投放的。那么对他这个今天该收多少钱要进行一个计算,以及说啊我们还会有一些反作弊的一些技术在计算广告里面怎么能够防止那些骗点击啊等等之类的一些事情啊。

这些呢都是我们流失计算平台,通过当前的一个请求的一个状态实时的进行判定的。😊,最后呢我们再去说一些相关的一些软件。因相关软件呢,我这里只是简单的列了几个啊,当然呢它也我列的也不是很全。

就比如像opdo呢就是我们这个大数据的这样一个呃计算啊存储的一套啊全家桶。对om呢就是我们这里一个日志管呃进行计算啊管理的这么一个啊间中间键a呢它也是个中间键,它是指一个对于我们这个日志的一个消费啊。

啊,这样呢把它怎么能够说有序的进行一个消费的一个过程,对吧?是这里。然后第四部分park呢,就是我们这里所说的一个前两年比较火的一个实时就是一个分布式的一个计算引擎。他也采用了说像啊。

hado里面这些m reduce的这些呃一些技术。但是呢它会把这些东西呢放到了内存里面进行计算。因此而,它的计算速度会比hado要快很多。好吧,storm呢也是我们这里所说的一个呃实时的一个计算引擎。

啊,除了storm以外呢,我们其他一些是计算引擎呢,还包括说像spark streaming啊啊flink啊等等之类的各种各样的一些计算引擎呢。就是我们这里的一个缓存对吧?等等这些东西。

还包括什么loing啊ES啊等等这类的很多很多的中间件啊,这里呢就不再一一的去给大家去介绍了啊,这些中间件呢啊以及说这些软件呢大家如果说啊在IT公司从事系统开发的时候呢,或多或少呢都会有一些了解,好吧。

这些呢也是说啊一般呢会在我们这四个部分,以及说会在说我们这个架构图里面呢,很多地方呢都会用到。所以呢这里呢进行一个简单的一个提及。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好,那这个呢就是我们这样的第二部分啊,我们这样一个计算广告的一个整体的一个系统的一个架构。啊,好,大家看看还有没有什么呀问题,没有问题的话,我们就开始进入第三部分,我们的点击率预估部分。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

那我们继续点击的预估呢,也是我们这里所说的1个CTR预估。CTR预估呢是目前呢呃互联网公司呢进行流量分配的一个核心的一个依据啊。然后以google像百度为首,这些互联网公司呢。

其实这些呢他们不能叫做互联网公司。各大程度呢其实叫做一个广告的公司,包括像facebook其实也是因为他们的主要的赚钱的业务呢,都来自于我们这样一个。CTR预估的这样一个部分。嗯。

因此而言呢呃这个怎么能够把CTR预估给它做好做精确呢?其实说对于说平台啊啊用户啊,以及广告主三方的利益呢都是很重要的啊,所以而言呢。CTR预估这个技术呢一直是各项技术当中最重要的一个技术之一。嗯。

大家也肯能也在企业当中工作呢,也都会知道说说一般而言呢离钱最近的一个业务呢都是而言是最重要的对吧?无论说你是赚钱呢还是花钱。因此而言呢,我们这个CTR预估,这里呢基本上就是说我们最赚钱的一个业务。

因此而言呢也是说啊各个互联网公司呢最看重的一个部分啊,之所以有人是有人曾经开玩笑说,之所以啊机器学习这样一个技术呢啊在。前一段时间呢发展并不是很快啊,在6几60年代呢。

也是因为我们这个CR预估这个产品呢没有出现。后来呢呃因为CR预估这个技术太赚钱了啊,导致说说基本上所有的啊那些比较牛牛的这样一些人才呢,全都去搞CTR预估了。

就会导致说其他的领域呢发展也会变得特别慢起来。像现在什么自动驾驶啊等种之类发展就远远不如CTR预估这么成熟。那么我们这里呢会讲啊讲这样一些方法。比如说第一个就是说传统的一些机忆学的一些算法。

比如说逻辑回归啊,第二个部分呢就是新一代机忆生学算法。比如说深度学习,以及说更加实质化机忆学习算法。比如说再学习和强化学习,最后呢我们还会去聊一聊说模型融合和特征融合的部分。

首先呢我们先去看一下说我们CTR预估啊,怎么把它表换表示成一个数据化的一个问题啊。假设说我们有一个用户U啊,以及说一个物品I物品I呢就是说我们这里所说的这样一个广告啊。

上下文C还记得上下文刚才是怎么说的吗?就说我们在实时请求的一些拿到所些实时的一些信息啊,比如说说你搜索的关键词是什么?以及说你这个人啊他你是在哪个地方去搜索的呀?你这个搜索的手机是什么呀?

今天是星期几等等一些实时信息然后呢我们有最终的一个点击的结果Y对吧?因为我们CTR预估的目标呢是尽量最大化用户的点击,比如用户这个点击这个label啊。

是一还是零对我们而言呢是很重要的好吧因此而呢这个就是我们这个点结果是我们这样一个标签啊,我们这样的目标呢就通过说UIC这三个部分呢组成我们的特征拿他们呢去预估我们最终这个点击结果。这个Y对吧?

而这里呢一般特征呢,我们一般是通过说离线特征化和实时特征进行获取,对吧?离线特征呢,就我们刚才所说的一些人群画像啊,这种各种各样的东西啊,实时特征呢。

就比如说说最近一个小时这个广告的一个点击曝光情况呀等等之类的。这是我们这里所说的一个实时特征。点击结果呢,我们一般有人通过说原始的买点日志进行获取。就比如说说呃一般系统层面呢都会记录说啊这个呃东西呢。

它是否最后最终被点击了啊。如果说被点击来的话呢,它就会label为一,我的label就为0,这些呢通过说系统探索陈淀出来的日志一步一步呢变成我们呃样本的一个标签。Yeah。

那么我们首先要想跟大家去聊的呢是逻辑回归啊,逻辑回归是什么?这个大家如果说学习或继学习的话呢,可能也都会有一些印象,对吧?我们一般的线性回归是什么呢?就比如说我们这个Y呢,就等于说贝塔0啊。

加上贝塔1X1加贝塔X2。等等等加下去对吧?或者说我们在这里呢比较喜欢用相应的方式进行写法,就是贝塔的转质乘以X。我认为贝塔和X呢都是列向量。好吧,贝塔零呢呃截距下呢,我们把X呢也变成1X,对吧?

前面加个一,那这样的话,贝塔零和这个一相乘的,就是这里的这个贝塔0,你此我们就简单的表示成贝塔T乘以X,好吧。这是我们这里所说的一个线性回归啊,线性回归呢大家应该都比较熟悉的。

逻辑回归呢相当于就是把它呢从这个区间呢从这个结果呢映射到啊零到一这样一个区间之内。所以说呢我们用的是sigma的这样一个函数啊,就是这么一个函数啊,这个函数呢大家可以看到说它的定义域呢是负无穷到正无穷。

它的值域呢是0到1。好吧。正所说的第一点,我们的基本模型就是长成这个样子啊。第二点呢就是说嗯逻辑回归它是属于广义的一个线性模型。广义的线性模型呢包括像什么伯动分布呀,然后呀等等之类的。

他们都属于一个广义的一个线性模型那么广义线模型呢,他们背后呢其实都是由线性模型呢去给它衍生出来的。在线模型基础上呢做一些变换广义的信模型呢,他们有一些自己一些特点。

他们能够通过说自己一些信息呢去推断出他们应该适用于什么样的一些函数,也说他们这些像什么lo方呀等等之类一些东西,再通过MLE的一些推导。有一套自己的完整的一套统计学的一套记忆学习体系在这里啊。

这是第二点。第三点呢就是说而逻辑回归呢,它相对而言比较适用一些离散的一些特征。因为逻辑回归呢,它对连续的特征只能是比较敏感的。为什么这么去说呢?是因为说逻辑连续特征的话,比如说啊X一啊。

因为对于线性回归而言呢,X一如果说从一上升到2的话,那么。这个Y呢相当于就是它增加了一个贝塔一的值,对吧?因为这里开始是一贝塔一,这里变成了二贝塔一,其他变都不变的情况下呢,Y就相当于上升了一个贝塔一。

那么我们认为说啊这种它增每增加一Y都增加一个固定的一个值,因为它从二增加到三呢,它也是增加一个贝塔一。我们认为这不一定是合理的。并且说当有一个Y的值呢,特别特别的夸张。假如说大部分值呢都是123。

突然有一个X一的值呢是100,所以导致你这个Y的值呢也变得很夸张。对于你对于你这个最终的预估的结果呢,就会很可能会学习起来很困难。因此而言,我们会认为说像嗯。呃,逻辑回归呢,它会对连续特征比较敏感。

因此原呢,我们一般比较喜欢用离散特征啊,进行一个特征的离散化。这样的话也有利于模型的这样一个风险的一个均摊。最后一个呢就是说逻辑回归,因为模型本身而言是比较简单的。然后我们会看到很多复杂的模型啊。

那么简单的模型呢就需要复杂的特征。因为我们在继学里面嘛,要么就是简单模型。加上复杂特征。要么就是我们这里所说的复杂模型。加上简单特征。啊,我们逻辑回归呢其实是一个简单的模型,加了一个复杂的特征啊。

复杂特征呢就需要说你对这个特征呢做很多的操作。比如说怎么进行离散化呀,怎么进行一些二阶的特征组合呀等等这类这些东西啊,这些都是逻辑回归所需要去考虑的问题,这些呢比较偏向于人工特征组合。

当然我们还会有一些自动特征自动特征组合的一些方法。如果进行自动分筒啊,以及说传说中的GBDT加LR这些技术啊。也都是很常用的一些跟逻辑回归所相关的技术。好吧,就说这里逻辑回归。逻辑回归呢它虽然说很简单。

但它几乎占据了说啊计动网络这个领域呢啊最重要的一个流量。因此而言呢,他而且他麻雀虽小,五脏俱全。他基本上说所有的一些呃流量的一些情况呢,呃呃所有的一些计算广告的一些东西呢。

都是从他这里不断进行衍生出来的。好吧,所以说学会逻辑回归,是我们学习计算广告的一个最要的基础之一。但我这里讲逻辑回归呢,相对而言主要是通过比较高的地方给大家去讲的一些细节的东西呢。

比如说公式是怎么推导出来的,这个大家呢可能还要课下,或者说参与我们的课程呢,自己再去看。啊,有同学问说后面会有重播吗?啊我不知道会不会有重播。但是根据我的经验来看,一般是会有重播的。啊。

大家可以去在那个群里面呢,跟其他的那些助教呢去聊一下啊,他们应该会到时候告诉大家那个重播的一个链接啊。好,那么今往去讲啊,说完了传统的记忆学习逻辑回归呢,我们先来聊一聊深度学习w and deep啊。

Y and deep呢其实是通过它是由谷歌进行去提出的啊,采用了一个神经网络联合训练的一个思路,对神经网络进行并联。那么我们就这里来聊一下说什么叫做联合训练,什么叫做并联啊,联合训练和并联呢。

它其实就是说我们有一个外的一个部分。我们有一个dep的一个部分。😊,外的的一个部分呢,其实就用的类似于像LR那种的一个离散的一个特征。啊,稀疏化的一个特征呢就要进行预估。

而这里呢相当于是用的我们这个深度神经网络MLRP啊,MLRP就是多层感知机miple。呢。我识错。啊,多层感知机啊,一层一层的往上进行堆叠,对吧?当然还会有一些中间一些技术,像有be之类的一些技术。

对吧?这些呢都是我们自己所说的1个MLP啊啊后这些呢一般而言呢是用一个dense的特征。好吧,这是我们这里所说的一个deep的一个部分啊,然后呢它会有一个LR的一个部分呢。

以及一个deep的呃一个部分啊,因呃就是dance的这样一个部分。它们两个部分呢共同构成了我们这个Y and deep这样一个mod。那么 and deep它为什么会有效呢?啊。

这里呢就是想跟大家去聊一下说Y and deep它能够有机的融合到我们这个。Generalization。Well, specification。就是java这事,其实想说的是什么?是一个共性。

这项是什么?是一个特性。那么什么叫做共性呢?共性意思就是说说呃我们呢能够学习到一些很普遍的一些特征。比如说可能你会发现说呃男孩子都不太喜欢化妆品,而女孩子比较喜欢化妆品,对吧?

那当然你可能会说说肯定有女孩子不喜欢化妆品。但是我们这里所说的是一个偏共性的一个特征,对不对?就是大部分女孩子都比较喜欢大部分男孩子都不太喜欢。就是这里所说的一个共性。那么共性呢一般而言呢。

是通过我们这里这样一个deep的网络进行学出来的。通我们这里的这些比较高的这些层呢,他就会拿到一些相对很ja的一些信息。那么specation这些特性呢一般是指说就还拿着刚才我们这个化妆品去举例啊。

就很可能是说说这个男孩子他也很喜欢化妆品,对吧?比李佳琦可能就很喜欢化妆品。因此而呢,每一个人呢都会有一些特性,这些特性呢,一般我们都会通过说像外的这个部分的,把他们给捕捉起来。

这是我们这个 and deep这个模型呢,它既能捕捉共性,又能捕捉特性的这样一个特点。那么这个模型的结构呢就是dep这个部分呢一层一层向上进行堆叠,通过LP,然后呢对接到最上面的那一层啊。

然后呢以及说和LR的这些s的特征呢,在它直接和这些最上面这层呢直接进行并联。好吧,就是这里所说的这个神经网络呢进行并联。OK那么呃不知道大家是否有了解过FMFM呢就是那个f的啊。

其也是一个很经典的一个技型一个算法啊。嗯,它那个相对于那个LR的一个借我们这PPT上好像有写我没写FM所在这里跟大家简单的说两句FM呢,它相当于是在这个呃LR的基础之上呢。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

做为一个小小的一个扩展,对吧?就比如说像我们这个Y呢,本来我们这个LR呢是贝塔0加贝塔1S1加贝2X2,对吧?那现在的FM呢,它其实是Y等于贝塔0。加上贝塔1S1,加上贝塔X2啊。

再加上贝塔12X1乘以X2,对吧?相当于呢他把这些二次项呢都给你扔了进来啊,作为你这个模型的一个输入啊,当你这个呃二次项将你这个特征比较多的时候啊,比如说你这个特征呢有10万个的时候。

当你这个特征有10万个的时候呢,你这个二次项呢就会很爆炸啊,你就相当于其实是有10万乘以嗯。10万。再除以2这么多次项对吧?那这些呢你怎么能够把它们给它学习出来呢?你直接进行粗暴的学习肯定是不现实的啊。

一是因为说可能你也没这么多的样本。二是说你学习到的很多地方也是比较无效的啊,而且因此而我就会通过用一个新的一个技术叫做FM呢去进行学习当我们这个外部分呢采用FM的话呢。

我们这个呢就变成了一种的M我们称它为吧这个呢也是一个也是在深度学习里面呢一个相对比较经典的一个模型啊,但是没有经典,所以在这里呢就不把这些细节呢也给大家去讨论了。😊,好,这里就是Y and地吧。

那么在本节的最后呢,我们再去聊一下在线学习的这样一个部分。嗯,刚才说过说我们这样一个实质化的技术呢,其实在我们这里呢也是比较重要的啊。呃我们可以发现说说我们这个模型呢。

它一般而言呢嗯很多时候都是说我们离线把这个模型训练好。在线的时候呢,直接把这个模型架到内存里面呢进行打分啊,因为我们在线呢其实是可以实时的训练模型。这句话的意思是什么?

就是说我们在线呢是随时都会有数据的,对吧?你来一个请求,然后呢,对你打一次分,那这个样本呢其实就已经出来了。你最终点击还是不点击,对吧?那我们这个模型呢理论上说是可以进行实时的更新的。

而不是说离线放在那里。比如或一天更新一次,或一周更新一次等等之类的这些问题,对不对?因此而言,在线呢是可以实时的进行训练模型的啊,并且呢我们这是一个角度,在模型这样一个实时化的一个角度。另外一个角度呢。

就是特征的一些实时化。那么特征的实时化,我们主要想了解一些什么样了一些什么样的一个问题呢。在特征实质化呢主要想去讨论说说比如说我们要去统计说一些啊最近一个小时。啊,这个广告。它的一个点击数量。

最近3小时最近12小时,最近24小时啊,我们把这些统计上来呢,就这种统计特征,我们叫做划窗统计。Yeah。我们把这些统计类特征呢,它嗯也是在我们这个模型的呃这样一个预估当中呢。

是很占有很重要的一个地位啊。那么现在我们的问题就变成了说我们怎么能够把这些特征呢统计的更加精准啊嗯因为这个是一个小时的一些实时特征呢,它其实是有严格的一个时间长度的,就比如说这一分钟的一个小时。

它其实就是从8。07到9。07,那再过两分钟,那其是从8。09到9。09,对吧?所以我们叫做划窗统计。那么这些特征怎么能够把他们这些质量变得更加的实质化啊,呃也是一个很重要的一个课题。

这也都依赖于我们一个跟在研学习相关的,或者说跟实际计算相关的一个技术呢去进行做。啊,然后呢我们现在就来说一下我们这个实时计算呢都包含了哪些技术。第一个技术呢就是我们这里所说的一个流计算引擎。

刚才曾经介绍过,像spark dreaming啊。storm啊。福定佢啊。等等之类的,都是我们这里所说的这个流计算引擎,好吧,那这些计算引擎呢。给我们提供了说啊实时计算的这样一个能力啊。

但在线学习里面呢,还有一些自己特定的一些操作,对吧?就比如说啊我们在线的时候呢,大家可以考虑一个问题,就是说嗯我给你曝光了一个广告,你可能一秒钟以后就决定是我点击的,不点击把它给关了,对吧?

但也有可能说你一分钟才点击,可能你半分钟才点击。那么我们要想拿到一个相对来比较准确的一个点击的一个label的话呢,我们就需要设定一个时间窗口,对吧?比如我们设定一分钟,比如说一分钟之内没来的。

那他就认为是一个负样本,一分钟之内来了点击的,他就认为是一个正要,对吧?怎么合理去进行时间窗口。你说在线怎么进行一个合理的样本拼接?因为离线的思后里面的照文算子呢,在在线的实现呢。

也会有一些特殊上的一些定义和操作,对吧?怎么能够提升我们这样一个账样的一个运行效率。以及说像我们在线呢,因为和离线的样本呢也会有一些区别。怎么在样本上进行一些过滤和采样的一些样本定制化的一些操作,对吧?

这些呢都是在线学习所研究的一个课题。最后呢还有一些适配的一些最优化的一些算法,对吧?比如说呃因为在线学习呢,它会实时的接受各种各样的一些呃特征呀、样本啊等等这类东西。大家就会看到说很多的新特征和新样本。

就会导致说你这个模型呢在不断的进行膨胀,就会越来越大。当你这个模型膨胀一定程度的时候呢,你就会极大的拖垮你在线的一个效率,并且说呢也会出现说技术当中一个很经典的一个问题,叫做overfiing。

NBA所说的一个过河。这些都是由我们这个模型过大引起的,那么在线呢我们所在最优化算法中,其实所重要考虑的什么?是我们这样一个稀疏性的一个问题。怎么把在线的一个吸疏性这个问题呢给它做好。

并且说能够说在吸在那个最优化算法的角度呢去对参数呢进行优化。不合适些参数呢,直接给它答案呢就是给它变成零。这些都是最优化所研究的问题。google之前曾经发表一篇文章。

叫是一个优化器叫做FTRL是目前意节当中最常用的一个在学的一个优化器。好吧,它具有很好的一个吸收性的这样一个工作。就这里所说的适配的一个最优化的一个算法。好,这里大家有没有什么问题?

这就是我们这里想讲的第三部分就是呃嗯CTR预估。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好,那下面呢我们进入我们的最后一个部分,就是基于合约广告的一个在线分配。啊。呃,刚才我们说过合约广告的时候呢,我们面临了两个问题,就是说我们有一个onloc。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

还有一个东西呢就是我们这里的constraint optimization。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对吧那么我们的这个在我们这个流量预测这个问题上呢,呃是和这个资产分配呢是息息相关的。因为说我们要进行分配呢,首先说你要能够预测说你次试的广告是什么?或者说短一点。

我们下一个时间段的这样一个流量是什么东西,对吧?这些都是我们这里所说的一个啊流量预测的这样一个问题啊,它的问题定义是什么呢?就是说给定我们这样的一个标签的一个组合啊和1个ECPM的这样一个阈池啊。

我们呢怎么能够把这个流量呢给它正确的给它估算出来。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后呢呃一般而言呢,我们在业绩当中最常的是什么?就是说是一个基于时间序列的啊这样一个短期的一个预估,对吧?

我们都会说比如说根据最近15分钟的这样一个流量一个情况去预估说下1个15分钟的这个流量的一个情况,来决定说下个时间段呢,把这个流量呢分配给谁?对吧就比如说这个时间15分钟呢,我分配给你的比较多。

分配给我的比较少。那下个15分钟呢,就应该分配给你的比较少,分配给我的比较多。那我这样的一个东西就是这个短期预估的这样一个业务上的一个价值。然后呢,我们所需要解一个问题呢,就是留量第一个反向检索啊。

和一个频次的样一个控制。一般而言呢,我们都会通过说像通过一些准入条件呢,做一些查回的一查询的一些依据。然后呢,网络会会召回说当前所有符合条件的一个供给节点,对吧?就刚才所说的一个业务召回。嗯。

同时呢我们就会根据说历史的一些数据。比如前两天一个情况呀,或者最近15分钟的一个情况呀,对流量呢进行一个预测,来判定说下一个阶段我对流量的一个分配的一个情况。呃,这里所有一需要介绍的一个东西呢。

叫做反向检索。反向检索技术呢一般是说说啊我们会根据说一些标签呢去进行检索。就打比方说说我会根据人就是假如说你广告A也投放出了人群标签阿尔法。广告B呢同放出给了人际标现阿尔法和人际贝标签贝塔。

那广告C呢同放给了人际标签贝塔和人际标签伽马。那么反向召回反向检索的问题呢,就是说现在啊一个人他来了。它是属于阿尔法类别的,那么我们就需要去找出说说。具体有哪些广告?能够在他这里进行投放,对吧?

我们就去对阿尔法进行反向的一个检索。我发现说阿尔法呢能够投放出A和B这两个广告,好吧,就是这里所说的一个流量的一个反向检索。最后一个呢就是频次控制。频次控制的话呢,我们一般都会有两种解决方案。

也就是服务端联和一个客户端啊。服务端客户端的定义呢,分别是说比如说你现在用手机上网,对那服务端的定义呢,其实就是说说你在上网以后呢,它背后其实请求到了一个引擎,对不对?比如说现在呢你在淘宝上去买东西。

那你就请教了阿里巴巴背后的那些后端的一些服务器,其实就是我们这里所说的一个服务端。客户端呢,就是说你淘宝上,你点击的这个淘宝这个app,我们一般称之为客户端。一般而言,这种预测这样问题呢。

我们需要去统计流量啊,统计用户各个这样一个,比如说广告的一个点击的一个情况,对吧?这些情况呢既可以在客户端上进行统计。因为客户端呢是第一时间拿到说你是否点击的这样一个呃结果的。

当然服务端呢也会回接受到客户端所回传的一个数据。在服务端呢其实进行统计的。一般而言呢,这两种统计方式呢都是各有千秋的。像客户端呢。他一般就是统计的相对于比较快标准。那他的问题呢就是说客户端的一个开发呢。

可会有一些有一些不太好开发的一些问题。而服务端呢就是说它开发效对比较好开发。但是呢它这样一种数据的这样存储啊不精确啊,延迟呀等等问题呢可能会比较严重,这是这里所说的一个频次控制。嗯。

那我们用数学化的方式呢来表就是一个表示一下,说我们这里所说的一个在线分配的这样一个问题的一个定义,在线分配呢我们一般是说去最优化说啊我们的这样一个这样一个式子啊,这样一个式子里面呢。

我们这个每一个这样一个XXIA呢表示说说啊。对于具体的那些啊所有的一些广告,对吧?啊,我们是否说去投放哪个广告,还是不投放哪个广告啊,这个R呢就是对于最终我们这个re对吧?啊。

然后这个SI呢这个要根据下面的一些不的情况呢,大家再去看一下这个SI是什么,我们就抽象的去讲这个式子的,我们形象的去讲我们这个式子吧,那这个式子意思就是说我们现在呢嗯有两种情况啊。

一种是GD哦担保问题保证流量的一种是呢有预算出价的小我们要小于预算的分别来解释什么叫担保问题保证流量的意思就是说假如说我像这个广告主呢保证说了。说嗯我必须给你的广告呢啊有DA这么多的流量,对吧?

因此而言呢啊我对你这个广告的这样一种广告的这样一种约束呢啊,就需要说我必须给你的这种广告的流量呢,是大于我们这个给你承诺的这个广告流量DA的对吧?就是担保问题,另外一个问题呢,就是说啊这里拼错的。

是atwords。就是说是一个有预算出价的,小于预算的,它是什么问题呢?就是说呃很可能说在竞价广告里面,我去投放的时候呢,我不可能是说说随便乱投对吧?我肯定说是有一个我自己的一个预算的。

那么这个问题呢就表示说对于每一个广告主而言,我所进行的这个广告的一个投放的这样一个问题呢,对于小于或等于啊我的总体的这样一个投放的一个预算啊,就是这里大家可以看到这两个式子呢啊它其实呢也不太一样的啊。

这个里面的这个QIA呢在这里面呢,其实相当于。在这个式子里面的一个一,而这里呢相于这个QIA呢。就等于-1对吧?DA呢此时也表示不同的数字,这个表示说你的总预算,就比示说你的保证总流量,对吧?

就是在线分配里面,它这个对于不同的约束,它也诞生出了一个状态啊,这个SIA呢意思就是说啊它是一个分配这样一个情况,它比须大于零的。然后呢,我要么分配,要么不分配。但是我分配的时候呢只能分配一次。

因此而言呢,对于所有的SIA进行加和呢,一定小于等于一的好吧,就是这里。是。那么我们呢一般而言呢会有一些实用的一些优化的一个算法啊,实用优化算法呢我们有呃刚才所有说过,我们有一些线性规划和一些二次规划。

对吧线性规划和二次规划呢,一般而言呢是我们比较常用的。呃,就比如说像那种呃基于说拉格朗日。以及KAT条件啊,我们还能够通过这些条件呢去把它求出什么,求出我们这样一个队友问题啊。

通过我们这里这个队友问题呢去还原说说我们开始的一些线性规划或者二化的问题。以及说当你的线性规划的这样一个问题不太好求的时候,我们去求它的一个队友问题可能会比较好求,对吧?我们在这里的会用到的时候呢。

通过需求约束啊,恢复供给约束。因为需求约束呢相对而比较少而供给约束呢相对而比较大啊,因此而言呢,这个就是怎么去进一步的简化我们这个问题。我们的一个解决方案呢。

就是基于队偶的一个相对来比较紧凑的啊一个分配的一个方案啊,第三个呢就是我们这里的一个实时的一个在线的一个调整,对吧?就刚才所说的前15分钟的一个流量分配分配给你的比较多,分配给我的比较少。

那么在下一个时间段呢,应该反过来啊分配给你的比较少分配给我的比较多,对吧?就是一个在线的一个实时的调整和一个补偿,我们用到的就是重排序的这样一个技术。背后呢也是通过么这里的一个线性规划呀。

OR啊等等这样一个一些技象。好吧。这里呢就是我们这里所说的实时优化的一个算法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好,嗯,那这里呢我们第四部分呢也相当于讲完了啊,第四部分呢我们讲的是基于合有网告的一个在线分配。我们定义了说我们在线分配一个流量预测它的一个问题本质上是什么东西的。然后呢。

我们通过数学化的方式呢去对问题呢进行了一个定义并且说我们去研究了一下,在不同的问题上啊,我们这样一个在线分配的一个呃公式都是长上一个什么样的一个样子的。当然在最后呢我们又介绍了一些使用的一些优化算法。

像线性规划呀,二次规划呀、KAD条件呀,对偶啊等等之类的东西啊,我们也同时介绍了说一些实时的一些调整的一些方案啊,好,那这些呢主要就是我们这次的公开课的一些呃主要的一些想给大家分享的一些技术啊,好。

那大家看看有没有对于这些公开课有一些什么样的问题啊以及说说计算广告这个领域,我们有讲到呢,你比较感兴趣的呢,也可以在这里去问啊。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Yeah。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Yeah。啊,同学们说老师啊,广告主也会用呃记学习算法来做CTR预估吗?啊,会的啊,因为在这个我们再回头来看这里啊,我们竞价广告这里呢一般是平台方对CTR进行预估,对吧?

而在这里呢一般人呢都是广告主来进行预估的,为什么这么去说呢?大家可以想想,就是我们在这里广告主是怎么进行一些操作啊,它这些操作呢一般是只说说我们这个SSSP呢。我在这里呢再给大家新起一个页。

再给大家画一下,好吧。我们呢都有1个SSP啊,我们这个SSP呢,它会首先呢它第一步会去做什么事情呢?它会进行自己的内部的一个竞价啊,就很很多广告理论上也已经在他这里进行注册了,对不对?

它有一个内部的一个竞价机制呢,我就需要说看到说呃我内部的比如说有阿尔法贝塔伽三个广告。我还说伽ma的广告对我的ECPM是最多的啊,因此而呢,我就把伽ma一个广告的这个B的呢叫做B的伽。😊,把它给拿出来。

它会带这个bet伽ma呢。😡,去往这里面去进行请求,给到ADX设计。就是我们这里这样一个广告投放平台,对吧?这个广告投放平台呢会带着我们这个伽m巴的这样一个B的呢,它会告诉说这里这个DSP。嗯啊。

这就不应该画这个给到DSP对吧?DSP呢他会根据这个呢去请求说他具体的那些,比如说广告主啊ABCD他会告诉这些广告主说说我这个你要想出价,最少你要出价到B的伽ma这么一个程度。

否则的话SSP一定不会去投放你这样一个广告,对吧?因此而言,在ABCD这里呢,他们就需要自己决定说自己的出价是多少,因为你出价小于B的伽ma是没有意义的,对不对?

那你需要去相当于是说你要在这里去预估说自己的一个ECPM自己的一个收益,对吧?我把这个广告投放出去以后,我出了这么多的价格啊,我出了一个。大于B的伽的这样一个价格。

那么我是否能够确实的得到说我想要的那个收益。这个收益呢大家也可以看到说ECPM等于什么?等于CTR乘以B的伽ma对吧?所以说CTR这里呢平台已经不太去管它了。

相当于说全是DSP这里在进行CTR的一个预估。因此而言,我们可以认为在程序化竞价广告,也就说实时竞价里面CTR是由广告主进行计算的。他要自己进算CTR。因为此时呢他因为嗯像ADX和会向他分享一些数据。

他自己也会有一些自己的第一手的数据,他完全去实时的决定说自己是否要出价高于B的伽玛,因此而言,这个CTR和B的伽马,全是由他来控制的,而在我们这里所说的这样一种呃竞价广告里面呢。

完全是由平台方来控制他们的这个CTR的一个预估的一个情况。由他来完全负责,说最终我去展示哪个广告。所以说这就是竞价广告和实时竞价的一个区别。嗯,有的学讲的好呢,谢谢这位同学的鼓励,好吧,然后嗯。😊。

机动广告的门槛是不是比其他领域高一些?啊,我个人认为啊就是目前机忆学习领域呢可以分为几个大块,啊,一个大块呢是。Y。这里画一下一个大块呢是像搜索推荐加广告。啊,这一这一块呢。

他们的技术呢相对而言都是比较相似的。但是他们也会有各自一些特点。比如今天讲的计算广告的各种各样的技术啊,就什么DSP这种东西呢,在搜索推荐里边肯定是没有的。而推荐里面呢它要针对一些像什么能启动啊。

当然广告里面也会有包像一些什么什么一些协同过滤啊等等之类的这些实时召回这些东西。而搜索呢它的问题跟定义用的它俩也不太一样的。搜索呢是有一个严格的一个搜索的一个词啊。

比如说那个query怎么对这些query呢进行一些操作,对吧?但是它背后所涉及的机学习算法的技术呢又是比较相似的。这是第一个大类的问题。第二个大类的问题呢是我们这里所说的啊那个叫呃呃图像识别。

图像识别呢它一般像什么,现在比如说什么摄像头拍照啊啊,你说大家的那个iphone的那个什么什么啊face IDD啊。啊,你以及等等之类,这些东西都属于偏图像类的啊。

它的核心技术呢是像以CN为基础的一些各种各样的一些变种。啊。第三部分呢是NLP。就是实那ural language processing就是那个呃叫那个那个叫什么来着中文嗯,叫自然语言处理啊。

这个东西呢它又跟他俩又不太一样。他自己有一套自己的技术体系,比如说现在比较火的像什么呀transformer啊等等之类这样的东西好吧,我认为说大家可以去看一看说呃自己对哪一个领域呢比较感兴趣啊。

没有说说谁比谁好的一个问题,难度呢,我个人觉得ILP是最难的啊,然后呢这两部分呢各有千秋侧重点不太一样。啊,而且LP这个技术呢呃怎么说呢?它涉及的领域呢特别多,特别细碎。呃。

反而是如果说你要去想比较快的系统化的去学习呢,我建议大家去从搜索推荐广告这个领域去学习这个广这个领域的技术呢内部之间是相对而言比较互通。并且说他们这些所涉及到的技学技术呢相对言最基础的一些技术啊。

广告这个领域呢,它目前而言是发展的最成熟的,也是目前岗位需向最大的。我相信大家看这个公开课,也是想说自己去有有对这方面有点兴趣,比如想去做就业对吧?那就业的话呢,我就更加推荐说大家去搞搜索。

推荐加广告了。因为说我自己处于这个领域,我个人的感觉就是说这个广告的这样一个就业的一个不能说前景,我们就说就业人数啊,它至少说比图像和LRP相对而言好就业一点。我个人感觉啊。She。好。

大家还有其他的问题吗?😊,So。那如果没有其他的问题呢啊,我们这节公交课呢就到这里。然后呢,谢谢大家的一个收听。然后如果大家那个有什么问题的话呢,呃想来咨询我的啊。

可以直接呢去那个把我们管我们那个呃助教那个杨老师呢这边去聊一下。然后呢呃如果说确实有些问题需要去问我的话呢,他我们再去跟杨老师沟通,说我们之间怎么去联系啊,到时候我会把我的杨老师应该也知道我的微信。

当时我们再去聊啊,计算广告这门课呢也是我们7月这边呢新开的一门课啊,之前呢只有过一次的计算广告的一个小课。啊,这次呢会有计算广告的一个就业课。我这简单打两句广告啊。

计算广告就业课呢也是我们由我们三位老师,我是其中之一。还有另外的两位那个呃老师呢也都是BAT出身的老师去给大家去分享说计算广告的一个技术。好吧,我我们三位呢都会在其中呢各自承担大概3分之1的一个课程啊。

也希望大家呢如果感兴趣的话呢,多去了解这门课好,那就到这里啊,谢谢大家。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

人工智能—计算广告公开课(七月在线出品) - P3:在线广告的CTR预估 - 七月在线-julyedu - BV1SA411H7Se

然后今天晚上跟跟大家一起聊一个很很贵的一个一个方向。嗯。有有有些同学应该知道啊,其实我被咨询最多的各个地方的同学啊,问我咨询最多的实际工业在咨询最多的也是这一块,叫做CTR预估。

这是我自己认为它是其实是一整块的内容。严格意义上来说,这一套的想法,其实在呃分类和排序问题上都有在用。然后这个方向非常非常的贵。呃,关于它的背景,一会儿我们会提到啊。

然后我我在今天上课之前先给大家提一下,今天晚上的课会有有一点点难,我指的难是因为它需要有一些背景知识。所以我今天在讲的时候,我会尽量的去覆盖一些东西。如果大家听的时候有一些东西有一些弥糊。

可能代表你在这块的。背景知识或者说原理性的东西。接触的不多,或者是暂时还没有理解透。所以。嗯,大家下去以后可以自己自己去,你可以问我要一些资料,或者自己把这个背景的这个这个东西补上。

然后你再回过大家回过头来再看这个视频的话,应该会有一些呃会有一些认识,或者有一些收获。呃,今天这个课呢会。有一个有一个。阶梯性的一个。布局吧会会跟大家先介绍一下背景。然后我们会提到大部分公司。

绝大多数公司在用到的做这条预估的这个b model其实是L2。然后有很多公司会用这个parkML去做。就是大家会知道单独一个模型其实是很难做到准确度非常高呃,这个地方不是用准确度啊。

一般评估标准是AOC很很难会做到效果那么那么好。所以我们其实需要一些啊ble就是。就是我们做一些模型融合的事情需要所以一般情况下和GBTD会用呃RF的话用的可能还没有那么多。一般情况下。

GBTT用的会多一些,所以大部分的公司是在用它和它然后14年的时候,gle提出来了一篇是又把G产出的放到了LR里头去做相应的预测。那这个有有比较好的效果,所以现在大部分的公司在用。

但是这个方法有一定的有一些弱点。或者说它有他实际应用的时候会有自己的弊端。然后一会我们简单提一下呃,在这个时后这两年的深度学习这么热,会一定会呃sorry还没有到啊,就是这个之后呢,大部分的地方。呃。

114年和15年的时候,在cannel上有三个比赛。有三个比赛是关于CTR预估的。然后在这个比赛当中,有人改进了我们业主会提到的FM模型到FFM,然后对CTR去建模,发现准确度提提升了很多。

这个东西也是现在很多公司在用的。它一般来说我们认为FM和FFM会比L2和GPTT效果稍微要啊好一些。这个PPT先不要着急。因为PP因为这个PPT后面会有很多是空白页。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

PPT的后面会有很多是空白页,是我我需要自己给大家讲和手写的。所以我希望大家下去以后看视频这个东西我很难在短时间内把它全都整理到这个1个PPT上。你你很难覆盖到这些东西。好吧,因为有同学问到这个问题哦。

我我接着说啊。这个地方L2L2基本上是baseline system,然后很多公司会用GBDT和FMFFM呢相对FM效果要好一些,但是这个模型会非常吃内存。在训练的时候。然后这两年深度学习这么火。

所以深入学习一定会用上的。所以在呃15年的时候,teestflow出来的时候,google提出来一个model叫w and deep model是一个融合了L2和dep learninging两个model的这样一个模型。

然后16年最新有一篇paper,大概是在在上个月的时候,前两个月的时候呃。发这篇配偶的同学还回国内做了一个演讲。然后是把FM和。深度学习deploing放在一块了和生成了一个模型。

这个模型我们最近在试好,应该呃在A对AUC确实有提升,比传统的这些模型都要好一些。但是它的弱点在于说它是两个模型叠加训练起来会麻烦一些。然后也是预测的时候会相对而言会会稍微耗时一点点。啊。

这是今天主要会提到的一些东西。我会把重要的精力放在前面的这一会放在几个部分啊,后面的这个部分呢会带大家看一下相应的代码,然后简单带大家过一下前面的bline系统呢。

我会给大家重点提一下这个东这因为绝大多数公司在用baseline系统。然后会你这个算法大家都知道。但你会遇到一些困难。然后这些困难的话,你如果没有做过相关的这些应用,或者是没有在这个场景下。

实际去在数据上做过一些事情的话,你有时候不太清楚会怎么样去处理这个东西会比较合适。呃,FM的全称是factororization machine。大家如果知道机器呃推荐系统里头用到的。引语域模型。

那块的东西的话,应该对这个东西会会比较熟悉,或者你看它相应理论的话会比较熟悉。然后FFM是在它前面加了一个field,它和域有关系。Okay。那就我先介绍一些背景啊,在L2的部分的话。

L2部分会我会花一些精力给大家讲这个东西。因为LR这个模型虽然非常非常简单,但是实际工业界大部分情况下在用它做一个被三个系统,而且。如果你能有产出一些有效的特征。

比如说一会我们提到的GPTT产出的特征未给LR的话,或者是你其他的方式结合业务去产出一些很有用的特征的话,这个模型的效果其实还是很不错的。但它会有一些问题,就是你会遇到一些实际的问题。

你需要怎么知道怎么样去处理。L这个部分呢会给大家提一些东西,大部分这个时候我们会集中在啊假定大家都有这样一个工构式的平台啊,用于机续学习的平台叫park里头会有个ML6可以用来做相应的这个。大规模的。

数据上的机器学习的这样一个应用。我们会给大家介绍这一这对应cago里头的一个案例,去把这个过程过一遍,先过完这个过程,然后我再给大家说一下注意点。这些注意点呢是实际在应用的时候确实会遇到的一些困难。

这个部分的话,PPT我因为我有一个我之前有一个。其他同学分享的比较比较详细的一个英文的PP,所以这块没有把它完整的做汉化。但是我我讲的时候会这个把这些内容都过一遍。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

首先先介绍一下背景吧,为什么CTR这个click through rate。点击率预估这样一个问题啊,其实不只是点击率预估啊。在电商的话有2块,一个叫CTR,一个叫CVR。

这个东西是click through rate,就是点击点击率,它叫做用户到到这个展示页面以后,有多大的概率会点到你的相应的这个商品页去CVR是一个转化率。Yeah。CV2是一个转化率。

这两个东西非常非常的重要。对于电商也好,对于搜索引擎也好,非常非常的重要。原因是。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

大家知道像google这样的公司,像。百度这样的公司,其实大部分的营收来自于他的广告。其实不只是google这样的搜索引擎啊,你会发现像这个地方提到的花儿。华尔街的。Oh。就是一些媒体杂志上。

现在也有大量的广告,包括像今日头条这样的新闻客户端,搜索引擎和广告是非常非常明显的啊。你会看到像像google的话,它会直接用黄色的字。标出来,这是一个广一条广告。你去看百度的话。

它会有相应的广告的标识。你去看其他的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一些呃互联网的一些app也会看到相应的这样一些标识。然后我们知道国外最著名的呃几家公司,对吧?这个啊FLAG。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这些公司的主要的营收大部分都来源于广告,包括这个地方的google,包括。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Facebook。啊,twitter。和link in那国内的状况也差不多。呃,百度有蜂巢,然后呃腾讯的话有广电通,淘宝的话有淘宝直通城做的事情是一样的。而这几个方。

而所有的这这几家的主要的这个核心部门需要解决最大的一个问题,就是一会我们会提到CTR预估的问题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

呃,会有一些差别,搜索引擎的方式这几家会有一些差别。比如说百度和。百度和淘宝,还有我们叫阿里吧和这个。腾讯可能好一点,百度和阿里大部分情况下,他们的广告叫做固定广告广告位的广告。

也就是说其实你是知道它在哪几个位置是。需会会需要放广告的,你只是需要知道什么样的广告放在这个位置是最合适的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其他有一些有一些这个我们叫广告的形态呢,不是固定广告位的。比如说facebook的,它它的这个对应广告的这个叫做newfeed。啊,新闻流它里面会插一些广告,然后包括像呃广电通,你看你会看到像微信。

可能它下一步会会朝着这个方向去做更多的事情。这个广告的话,它并不是固定广告位的营销广告的高和宽长和宽,长观靠都都是不一样的。然后放所放的位置也是不一样的,这个是需要你自己去去做一些。

它会影响我们之后的一些预测的事情。啊。不管这么多,总之所有的这些加。巨头互联网巨头,他们需要依靠广告这样一个东西。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

去获得相应的营收去支撑他们其他的一些业务。而广告当中,所以说广告营收是一大头嘛,这个地方是一个数字,大家简单看一下就好了。大概是第二个季度的一些营收。从106年到15年广告的一个。中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后在线广告的话会有几种不同的形式。会有几种不同的形式。它嗯你有一些形式是针对用户行为去做的behavior targeting。就是你会你会根据用户的相应的行为去。做一个类似于推荐一样的事情。

但是它和推荐它比推荐会更难一些。一一会会说他为什么会难一些。然后另外一种是解我们在讲上点讲推荐系统的时候给大家提到了和上下文会有关系,对吧?所以广告也一样,就是你要知道什么时候。找到最合适的广告去去秀。

那这个的话,如果大家用啊美团、大众点评或者是百度糯米的话,这个他们的这种广告的形态是和地理位置相关的。所以你你你给人家推荐的这个商家,其实也是本身你需要团购,或者是你可能去下单的这样一家商家。

但是这个商家如果离你太远的话,你一定不会去去不会去点它。所以他去和物地理位置会有非常大非常大的关系。呃,广告之所以比广告严格意义上来说,它不是完全的推荐,但它和推荐有点像,我们需要找到合适的。

这样一部分内容可能是商品,可能是一些软文或者其他的东西推荐给这个用户。但是呢这些用用户呢,但是他需要去平衡三方的一个。利益。包括这个平台,包括广告主和包括我们这些user这些用户。

因为广告主每天的预算是有限的,你需要在有限的这个预算预算的范围内尽可能的把这个广告消耗掉。但是同时呢又不影响用户其他的一些体验。这个会相对要难一些。大家知道有这样三个角色啊。

然后之所以我们我们会去做一个广点击率预估这样一个事情的话,原因是因为广告的收费形态大概有3种。你你直接去理解啊,现在可能存在的有3种,分别是CPMCPC和CPAPM呢是cos per呃。

有有地方叫media或者是对它指的是它这个东西呢,说的是如果今天你去呃如果是这种形态的话啊,大家如果在去上微信或者淘宝,如果是这种形态的广告去收费的话,它它指的是它展示了一每展示1000次。

每展示1000次或者是固定的次数,我会去问广告主收一定的费用。但是这种形态广告主不太喜欢,因为我不一定每次的我的展出,我的这个秀都会有收益,对吧?我可能展示给用户,他根本就对这个东西完全不感不感兴趣。

那这个东这这样的话,广告主会觉得所有的主动权都集中在你平台上面,你想去花我的钱,你就可以愿意的花,对吧?我不确定我会有多多少收益。

所以现在大部分的很多的平台用的是第二种形态叫CPCcosplay意思是说,我今天展出了一条广告。这个广告的形态可能是原生态的形态。比如说大家去看你你打开你的淘宝,打开你的淘宝的app。

你你随便搜一个东西,你会看到上面右上左呃左上角有一些位置的左上角会标一个东西叫hot。你不要以为这个东西是商品很热,他告诉你的,实际上是这个东西,它是一个广告,一条广告。所有这样展出的广告。

每一次有点击行为的时候,平台会问广告主收一部分的钱。所以在CPC的这种形态下,cos per click的情况下,你能把。这个广告和用户之间的这样一种关联,做的越精确,或者说找到最合适的。

这样一个商品推给用户,他不用买,他只要点了,我就会有一定的费用。产生。啊,另外一个叫呃cost per action,这个这个我们不提啊,就是其实是说用户的话其实需要啊有一定的。行为。

就是比如说在淘宝上的话,可能是你需要买一个东西,这样的话才会啊给一部分的钱。大部分的情况下,现在用的广告形态叫CPCco per。那在这种形态下,用户用你他你对推荐的越准,他点的越多,点的次点击率越高。

点击率越高,我们的我们可以获得的营收就会越多。而且相对而言,对用户的体验。对用户的体验的伤害会越少。所以这个概念click straightICTR指的是你总共曝光了11000次。

里面有多少次是用户真的会去点这个东西。这个是1个CTR,这个CTR很难做。比如说在大部分的情况下,你你要知道像像淘宝,像百度,他们这个值就只能做到百分之几,这个值已经已经很高了。

比如说百度的广告形态有两种,一种是搜索广告。另外一种是大家如果点开CSDN或者其他的一些网页,你会发现经常会有些弹窗,对吧?这种形态是百度网盟的广告,那网盟的广告的话。不要说1%,实际上。呃,对。

实际上的话,他们连基本上现在的状况应该是在万分之1左右。很难做这个事情。所以。呃,因为因为这个游戏游戏游戏的话我不太清楚啊,可能游戏和达尔说的一样,是基本上是CPR啊,CPC的话。

电商的话大部分是CPC。所以这这种情况下,CPR是一个非常重要的一个一个参考值。然后在我们的这个。cattle上因为这个问题非常非常的重要,所以你去翻历史的比赛,你会发现在ca上总共有3个这样的比赛。

都是和广告率点击预估相关的比赛。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一个是这个地方,14年9月份举办的一个比赛。是一个展示广告的一个。比赛,然后在15年的2月份,february。2月份的话,有一个点击点击预估的一个预测。然后在15年的7月份的话,又有一个比赛。

所以他这么频繁的呃曝光,实际上是或者说这么频繁的会有人愿意花钱在cago这样的平台去寻求一些解决方案。是因为这个问题它非常难做,但它又同时很有价值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

所以我们我们找了一个其中呃一个比赛,就是这个这个比赛啊这个比赛。展示广告楼。竞赛的这么一个广呃,这么比赛,我们来把这个LR这个部分或者叫逻辑回归这个部分给大家过一下。简单来说呢,这个比赛要做的事情是他。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以切到一个页面,看一下它的数据啊。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

他的data。O可能要找一下,现在这个数据暂时被。啊,下线了,他们应该有1个TB的数据给大家去做这个事情。所以这个地方的话,这个也没有啊,回头回头我把这个东西把这个链接发给大家。

然后我们会有一部分的数据,这部分数据呢大部分情况下会涵盖啊几个内容的数据,包括用户端的一些一些行为数据,包括这个商家端的一些信信息,然后包括其他的啊可能他们之间的一些一些交互的一些状况。哦。

🤧所以总的来看啊,因为因为那个data比较大,数据比较大,所以我不把它载内存里需给大家看啊。我们说一下这总共的数据的这个fe的所有的字段呢大概分分为这么一些。有一个label字段label字段的话。

其实相当于我们监督学习里和one,也就是他告诉大家的是这个广告有被点击或者没有被点击,所以它是一个click或者是没有被click一或者零的一个一个二值的一个数据。

那LE到L13呢是呃一些整形的一些特征,也就是大家要知道这个东西就是告诉大家说现在的这部分特征是数值型的。对吧哎他这个地方提给给大家提了一下,说那个大部分情况下是一些我们一些技术的一些特征。

可能包括这个用户呃点了多少次这个类别的东类类别的这个呃信息啊或者广告啊等等等这样一些信息。啊,C1到C113呢会是一些。类别型的category featureature。所以你总共有这么多列。啊。

但是这些类别型的这些feature呢,你去参加这种比赛啊,不管是天池还是天go的比赛,你会发现这个数据它做过一些脱敏的处理,就是你手上拿到的这个数据呢,实际上是做过一些哈西处理或者其他处理。

而在实际的这个工业界的时候,我们可能会根据它的具体每个字呢,含义会去造一些更有针对性的一些feature。呃,总共我们就是有这么一些X。你认为最初的X是这个。

你可以自己再去做相应做相应的这个特征一feature engineering的工作。然后这个是我们的Y。所以你需要去完成的一个事情,就是在我们已经知道的这些X的基础上去呃预测最后这个Y是点或者不点。

最好的你是能给我一个点或者不点的概率。因为大部分情况下,大家想一下,在百度的情形下,在google的情形下,我们这种搜索的这种广告,甚至是像呃你facebook的这种展示形式的这样的一个广告的话。

实际上我们是希望知道哪一不仅我想知道用户会不会点它。而且我想知道用户点点哪一条1234这这四条广告,我不仅要知道哪一条。会点或者不会被点。我想知道他们之间被点的可能性大小关系。如果去做一个排序是怎么样。

所以你的这个模型是一个分类模型,但我会希望它能够帮我产出一些概率。所以大家会很少看到会像SVM这样的model。用在C条R预估click through prediction这样一个任务当中。

你很少会看到这个事情。因为它是一个纯大部分情况下,我们认为它是一个纯分类的模型。当然有一些同学可能会说,那你也可以用这个点到top平面的这个具体,实际上可以去做一个规划,拿到一个概率,对吧?哎。

我们很少这样做。所以现在我们有这样的X,我们有这样的Y,我们希望去做一个分类模型。同时这个分类模型呢,我们希望它能够给我们一些概率的一些结果。也就是告诉我说这个地方。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

取一的概率有多多高,而不是直接告诉丢给我一个结果,零或者一。sk的话我不我不跟大家具体说了,实际上就是一个分布式的一个平台,对吧?

但它可以去完成机器学习machine learning的一些它里头有一个库叫ML有个MLlibML可以完成相应的这些从回 regression然后聚类到啊协同过滤,然后维度约减降维和分类这样一些问题。

然后我们主要是拿它来做刚才的这个分类的问题。我们知道像L2这样的modellog regression是可以输出对应的概率的。所以我们现在有这样一份数据集。然后我们有这样一个工具。

我们需要做的事情是我们去完成一个model,完成一个模型,完成最后的这个预测。我们希望在。给定的X的情况下去预测产出的Y是一的这个概率到底有多高,也就是会被点这一条东西会被点的概率大概有多高。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后整个工作流程我也不说了,大概这很简单,你简单理解成就是我们要加载数据。然后我们要对数据做处理。所谓的数据处理可能会包括抽特征的这一部分做一做一个啊比如一个transformer,对吧?

然后我们接着就可以用它去训练一个模型了。所以大概是一个peline。做的事情是原始数据大概在这儿,所以我们的X可能是X和Y在这,对吧?然后我们需要去做一个。Yeah。

我们需要去对类别的类别型的数据要转成数值型的数型数据,对吧?所以我们上节课给大家提了一个经常经常要做到的东西,要做的这个操作叫oneho encoing读热相读热特征的这样一个编码。

然后从你的X给定的这个catery类别型的这个这样一份数据到我的读热型的这个编码的这样一个数据的话,你需要去对它做一个映射,或者给进所有的类别一个下标。所以你需要去先。建一个下标索引。

然后你去对它做相应的encode encoing enr。做一个编码,接着你会拿到很稀疏的一些向量。你把这个向量丢到一个LR模型里头。LR呃逻辑逻辑回归,我相信大家都知道啊。

所以训练完了之后你就会得到一个模型。但这里头可能会有一些你可能会遇到一些问题啊所以我们把它拆解成几个步骤来看。第一个步骤是我们需要去解析一下原始的数据,对吧?

放放到park的这个SKL转换成park的SQL data frame这样一个格式。所以读进去的时候,我们需要做的事情是做一个map,对吧?所以这那个数据的话之后我们找找地址发给大家啊。

所以数据的话你需你需要对数据去做一些相应的处理。首先你把里面的每一每一个列去做一个。拆分对吧?我们得知道哪一个部分是Y,哪一个部分是X,对吗?所以你把X拿出来去生成你对应你需要的这个feature。

这个整个解析的数据的呃过程做的事情就是一个简单的一个映射。然后第二个步骤是我我刚才把数据读进来了,对吧?我读进数据进来了之后,我需要去对数据做一些处理,或者说从数据到特征的这样一个过程。

你需要对这些字符串新的这些con。也就是我们说类别现在这些con。index一下对吧?比如说这个下这个ID现在是零的话,表明是DA类,一的话表明是DB类,对吧?然后你会对它去。Yeah。

做一个对所有数据里头的这个东西去做映射成对应的下标,对吗?就是你原来AC对应的是这个。你会对他们去做一个做一个index,对吧?做一个相应的一个索引。所以你会发现CC现在都会映射成一个值。

然后你就做一个外号的encoding,就是我们说的读热编码,把它映射成一个一一个非常长的一个ve。一个向量。其着你要把所有刚才你你得到的这样一些向量去做一个做一个整合。对吧放到一起。

比如说这个地方会有这个user featureature,然后你总共合在一起以后,就是这样一个features。对吧。这是你刚才的有一些有一些值是连续值,比如说十8对吧?那有一些值它是你刚才已经做过。

已经做过完号encoding的。接着你要把整个这个东西整成一个1一整条的feature featuresatures特征。然后你会有一个Y叫克是否解析。

前面四个步骤是你从原始数据到你需要的这个特征的一个过程。紧接着你就可以训练一个模型叫LR模型,对吧?逻逻辑回归,这个模型是可以输出概率的。因为它是一个广义的线性模型,对吧?我们会先做一个X。

然后会用ig的函数在里面,所以是E加上E的负这个次方分之一作为最后的一个概率输出一个P输出出来,所以你会拿到一个对应的概率。啊,这是整个流程。然后实际呃如果你整个流程已经做完了。

你现在要去做predction做预测的话,你需要做的事情是跟刚才一样的方式去把读进来的数据整理成一条特征的形式。因为你之前已经做过映射了,对吧?你做映射的时候,你会把对应的这个。

index对应的索引数据全都会存下来,所以对应的这个映射关系实际上会存下来了。所以你对新来的这个原始数据,你可以去做相应的同样的这样的映射处理,你可以拿到一个向量。嗯。呃,然后这个地方的话。

大家都知道我实际上在建构建一个logtic regressionL模型的时候,实际上是会。涉及到很多参数的选择的。所以不管是用LR这样的简单模型,还是用更复杂的模型。

我们都会涉及到一个过程说我们需要去选择最合适的参数。所以我们需要一个一一个步骤叫CV叫对吧?你要你要把数据分成预留出来一个交叉验证集去做最后们这个ature的不是ature做我们的这些参数的simer超参数的这样一些选择。

对吧?所以这个地方的话,我不细带大家过了啊,就是我们会有一个evaluator是做评估的。然后我们有个呃perper grid,实际上是去做这个gre search。

所以会在交叉验证集上去去实你会直你直接用这样一个函数cross呃 validator,然后你给他一个数值,说我要做K four的这个。K折的交叉验证的这个K的值告诉他以后,可以我们可以去做相应的。

Cros validation。啊,前面的这个过程呢就是用L2再加MLlib去完成一整个刚才我们看到的这样一个,你你这个地方的三个比赛都可以用这个方式去做。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值