七月在线公开课笔记-二十一-
七月在线公开课笔记(二十一)
人工智能—推荐系统公开课(七月在线出品) - P16:快速入门推荐系统串讲 - 七月在线-julyedu - BV1Ry4y127CV
今天跟大家分享的是深入浅出推荐系统啊,然后我们会围绕着推荐系统,它的核心内容呃,想召回排序重排,这些核心模块进行展开介绍,那首先做下自我介绍。
我是7月在线推荐系统老师啊,ok。
推荐系统呢现在其实呃随着互联网发展,数据也越来越多,那我们如何去找到,或者说如何去推荐合适的一些,不管是商品音乐视频啊,我们平时刷的一些短视频呀,对我们看的一些文章对啊,那是海量的数据里面。
那如何快速去找到诶用户所感兴趣的,那这是一个非常具有挑战性的一个工作,那而且很多公司对吧,他们也是以这种推荐系统对吧,个性化推荐啊,来作为一个,也是一个比较高收入的一部分啊,因为这里面会涉及到一些呃。
如果说你给用户推,荐商品对吧,他的一个并不符合用户的预期,或他的一个兴趣,那你在相同的流量下对吧,你的整体的转化就变得非常低,那这样的话,我们的收入肯定会有所降低的嘛,那如果像一些广告对吧。
那广告也是一样的,广告主在平台里面去投放广告啊,这种广告的话它可以实现商品广告啊,也可以是一些app的一些广告,那这种话它是以用户的点击,或者说用户去点击或下载来去进行计费的,对啊。
同样的也是去找到用户的兴趣,推荐合适的广告,来去促使发生这样的一些交互啊。
那我们来去看一下推荐系统,它的一个结构啊,这里的话我们是以电商推荐,我们是以电商推荐系统啊,来作为我们的一个介绍的一个内容啊,因为我们经常会去像逛淘宝呀,逛京东,逛拼多多,那首先呢是用户行为日志。
就是说在我们平台里面啊,它所浏览的一些商品,点击商品购买的一些商品啊,那这就是我们的日志数据,那核心呢我们从日志数据里面来,去提取到用户的兴趣啊,比较简单,或者说直观的说就是说他最近对吧。
可能突然间将某个衣服啊,加入到他的购物车里面了,这种架构行为是非常强的,我们可以去思考一下,我们一般对吧去购买商品,那我们,可能不会直接去购买,而是先加入购物车,加购物车的话。
他最后的一个下单的概率可能是比较高的,那那也说明他对这个商品对吧,比较感兴趣,他也可能就是说先加入购物车,然后再去对比多家的啊,多个店铺的商品啊,那这时候的话,我们就可以根据这样的一个行为来去推荐。
和购物车里面比较相似的一些商品,让用户有更多的一个选择,或者说诶用户它加入购加入购物车之后,它还没有发生转化,那这时候的话也许用户它有一些犹豫,那这时候我们可以给用户推荐一些优惠券,不。
管是推荐商品也好,推荐优惠券也好,都是为了能够快速的来去,而使用户对或者促进用户去发生转化,当然呃可能很多用户他还没有加入购物车,他可能只是浏览了些商品,购买了一些商品啊,这种的话都可以从里面。
能够挖掘出用户的兴趣啊,他最近看到的商品比较多,或者说最近他去购买了一些商品,这些我们都可以考虑过滤掉,那有这样的一些数据,或者说有这样的思路之后呢,我们就开始利用推荐系统技术,帮助我们去解决问题啊。
那我们的商品池里面,可能有上千万或者上亿,个商品,那这个时候呢,那我们可能要去进行像呃,从这里面去筛选出几百个或几千个,这个所要求的一个基础点,就是说你的一个整体的效率,当然准确度也是一个对啊。
就是在比较准的情况下,尽量将用户感兴趣的商品全部筛选出来,那这就是一个召回的工作了,对我们尽量将用户可能感兴趣的全部找到,这是第一步啊,就是一个快速从大的物料池里面,商品池里面去做快速的一个筛选啊。
这第一步啊,这一步,其实我们可以借助一些专家的一些策略,那也可以去借助一些啊模型来去,解决,接下来的话,我们为了想更加准确的给用户做出推荐,那我们到了排序和重排阶段,那排序阶段的话。
就是我们的召回商品已经变得比较少了,可能就几百个,为了更加准确啊,那我们可以让我的模型变得更加复杂,或者说去增加很多的一些特征,这样的话会使得我们最终的一个准确率,得到提升。
或者说我们将用户出感兴趣商品,然后展现给用户,那rank的话是其实最前面,工作做了一个,我觉得做一个完善,做一个补充啊,因为很多的一些商品,它可能诶可能他比较感兴趣,但他之前也购已经购买过了对啊。
当然有的商品它可能是那种快销品啊,这种不影响对啊,可能短短时间内它可能会重复购买,但是有些商品的话它并不属于快消品啊,比如说像京东里面的一些3c家电对吧,你买完之后,你可能在等上很久啊,几年啊。
你才会再再去购买,那这时候他如果发生购买,发生转化之后呢,那我们要对这些商品给过滤掉,避免重复的推荐啊,这样的话啊,就会有所变差,同样呢我们要用户兴趣可能是单一的对啊,但是我们的推荐系统呢不能是单一的。
我们尽量要去挖掘用户它更多的潜在兴趣,用户可能近期有个短期兴趣,也可能有个长期兴趣啊,那我们今天的话,让我们推荐商品具有多样化,这也是我们再去体验一首,比如说我们平时去刷抖音对吧。
那可能你比你对那种美食商品,美食的一些短视频比较感兴趣,但是如果说系统一直给你推,一直给你推啊,也不替换一些其他的一些短视频内容,那你其实已经会变得非常的暴躁,其实哈,啊这也是很多的一些平台。
它是比较欠缺的,就是去挖掘用户潜在的兴趣啊,而不能完全依赖于用户的兴趣,而去推荐他兴趣类的一些拍视频呀,或者说一些商品啊,不管是哪种啊,哪种平台,我们都需要考虑这个问题,最后呢我们去筛选出合适的商品。
展给到用户啊,就是展示给用户,那我们有很多的一些广告位,或者说推荐位对吧,那就把这些商品展示到上面就可以了,这就是召回排序推荐,那整体的一个流程,从我们的行为日志到利用技术,最后推荐合适商品。
刚才我们已经讲过了,对,就是说推荐系统两个阶段,一个是召回,一个是排序,让大家再去想一下,对刚才我也提到了,召回是干什么的,排序又是干什么的,召回呢,我们处理大的数据,大的数据啊,我们可能百万千万对吧。
当然有的平台他可能后续机比较少,比如说a p p推荐,比如说像一些小说推荐啊,音乐推荐啊,那这时候的话,我们其实哎可以把召回可以做的,就像一个出牌一样啊,那同样呢用户他要去浏览我们的商品对吧。
那我们要快速给用户展示出来这样的结果,所以说你不管是召回还排序速度一定要快,一般都是在呃多少毫秒之内吧,我们就要去反馈到具体的一个商品,结果的召回阶段,你想快,那就模型不能太复杂,使用比较少少的特征。
排序阶段呢我们处理的数据量变少了,那这时候我们想要我们的准确性的提高,那我们就要模型变得复杂,而我们如果大家了解过排序模型对吧啊,那从最开始的l r到后面慢慢的复杂dn。
那更复杂的加入transformer,加入bot来去解决啊,那就是模型上面不断的进行优化,慢慢慢的变得非常的复杂,ok这是召回和排序两个部分。
接下来我们再去深入的去了解召回,对啊,缩小搜索范围,这样的一个啊,从几百万到几百个对啊,另外一个比较重要的是通过局部拟合整体,虽然我们缩小了范围啊,可能只是几十个几百个商品。
涵盖更多用户或者用户可能感兴趣的内容,这里面,其实召回能做的事情是非常非常多的,你其实有时候很难去考虑到,或很难去预测到用户他所购买的一些商品,这个怎么理解,呢用户他的行为比较少,力和行为比较少。
那数据一少的时候,我们就很难去挖掘到他的兴趣,还有一些用户呢他可能漫无目的啊,只是去逛一些对啊,那这时候的话,我们可能去考虑一些,最近比较热门的一些东西对吧,那有的用户他可能是爱跟兴趣结合,比较密切。
那这就要考虑从这方面进行进行,解决问题了,所以说我们需要从不同角度去进行召回啊,这也是很多的公司里面对吧,召回阶段可能有十几路召回,最后进行整合的,那每一路召回的话可能就是召回几十个啊,然后最后整合。
完之后到几百个,然后再去推到啊,排序阶段就像是盲人摸象一样对吧,那可能我摸到的是象鼻子,那另外一个人他可能摸到的是上推,那我们要尽量的去将这些每一个部位对吧,全部能够去你和它像的完整的一个部分。
评估阶段也是我们需要去考虑的对啊,除了cctr c ctr是什么呢,就是对应的一个嗯它的一个点击率啊,点击率预估啊,有c t r c vr对吧,cvr是转化率预估,那除了这种点击率和转化率。
我们去考虑一个问题的时候,大家再去思考一下,如果说我们再去看还是短视频啊,啊那或者说我们经常可能在群里面对吧,唉长辈给我们发来了一个视频,那我们点进去之后诶,可能因为他这个标题吸引了我们。
我们点进之后诶,它本身那个点击率是不变比较高了,但,是呢里面内容是完全没有关系的,可能我们点进去之后立马就退出来了,因为我看和标题完全没有关系啊,所以这个要考虑就是什么呢,点击率以及对应的一个停留时长。
对啊,这是在像类似于像文章呀这种啊,像视频啊这些对吧,这种这种这种类似于这种,非得流量的一个场景里面,我们需要去考虑的问题啊,不仅要考虑它的点击率,当然还有更多的,如果说我们的平台对吧。
像微信的视频号对吧,它里面会带有很多的一些社交属性,那我们除了考虑它的点击率啊,停留时长,那我们还会,考虑它是否会转转发,是否会进行关注啊,这也是像短视频它变得比较复杂的,可能考虑像多任务的建模啊。
然后结合这几个它点击关注转发哎,收藏啊,这些对应的都是一些二分类问题对吧,将这些对应的分数我们整合起来进行优化,这就变得比较复杂了,除此之外呢,还有像覆盖度啊,你能覆盖尽量覆盖到整体对交互体验。
运行运行策略,那我们离线评估呢,还是用lost或者人工评估它的准确度,开度线上a b test的话,那我们就要看他的ctrl c v r,或者人均的一个阅读,或者说是jj mv啊。
我,们的一个整体的一个收益情况,ok下面是一个比较经典的协同过滤,协同过滤的话是使用user和item的一个相似性,来进行推荐啊,比如如果用户a与用户b比较相似,然后并且呢用户也喜欢视频,一则系统呢。
我们可以向用户a推荐视频一样,那我们就可以去,这其实也可以理解成什么呢,像物以类聚,人以群分这一个意思啊,那你们两个走的比较近,那你们很肯定有很多的一些共同的喜好,对啊,比如说都喜欢去看电影啊。
都喜欢去旅行啊,那我知道了a它的一个喜好之后,那我们也可以去推测b的一个喜好,那这就是协同过滤啊,这里的话我们可以对我们这个矩阵对吧,哎小美这三个三个小朋友啊,小美小丽小红啊。
他们对应不同的一些化妆品的一些打分,当然有些是缺失的,这样的话我们可以构建出一个对应的向量,对吧,像小米的话是4005100啊,那有了销量之后呢,我们就可以计算两两用户之间的一个这块。
用的是余弦相似度的一个计算对啊,那小美小丽呢是0。38,小美小红的是0。32,这里的话我们想要看它对于某个化妆品的,一个喜好对吧,那我们发现其实这里面我们用零,有一些缺失的,比如说小米对吧。
它对这个这个是粉底啊,假睫毛对吧,这块是缺失的,用零来进行填充,这其实用零填充有点有点武断了对啊,我没有接触过,或者说我没有看过这个商品,没有看过这个视频啊,就不代表我不喜欢他,所以说你用零填充。
直接反映出用户不喜欢它,这样是不合适的啊,所以说我们可以考虑用一个均值,或者说用一些其他的一些手段,拿去进行填充啊,也是可以。
ok呃关于协同过滤的划分成两种啊,一种是基于用户的协同过滤啊,就是usc f它是有更强的社交属性的,那我们得到了就是说用户的一个相似之后,对啊,比如相似用户喜欢什么,那我们就推荐什么啊。
这种话他想发现热点,追踪热点趋势,虽然推荐是比较合适的,那第二个话是基于商品的协同过滤,就是item cf,用户兴趣变化的话是比较稳定的啊,就比如电商场景里面对吧,商品的性质它是很。
它可能变化并没有用户的性质变化更快,怎么理解呢,用户它是你购买完一个商品之后,你可能之后不会再去购买这个商品的,你的兴趣不断的发生变化,但是商品它的本质也好,或者说一些表现形式也好,就很难发生变化啊。
除非或者说他可能会当然也会变化对吧,只是相对来说更稳定一些啊,嗯会变化是因为什么呢,因为这种时间的一个衰减,对时间的一些因素的影响啊,比如说最近啊哪个手机对吧,新款的手机对吧,然后刚刚一上市对啊。
他就比较热门对啊,就他就是一个非常热门的商品的,但是过了12年之后或者半年,之后几个月之后他就没有那么热门了,可能被另外一个热门商品给替换掉了,但不管怎么样,他本身商品的性质是规范生变化的对啊。
这也是比用户的一个稳定之处啊,这个item cf嗯,一般两者的话,我们再去做召回的时候都会去用到的,对啊,不管你是电商推荐还是用推荐,因为这两者之前我们其实做过实验,这两者他们得到的结果对吧。
他们之间的一个重合度并没有那么高啊。
所以说我们可以都去使用的,下面的话是关联召回,他也是属于协同过滤的一种啊,那我们来去看看他怎么去,做的啊,嗯如果说我们要去找到用户,未来可能交互商品,那我们就可以挖掘商品的关联关系啊。
根据用户历史交互商品,找到这些商品的一个关联品啊,这个其实就呃比如说我们去超市里面对吧,那超市里面的话,他们再去做一些呃一些像一些物品的,或者说货品的一些摆放手对吧,他们会考虑这两者可能有一个强关系。
对你买买了商品a你就可能去买商品b啊,这类似于比较经典的一个问题啊,经典的一个呃数据分析问题就是啤酒尿布,对吧啊,那很多男人对吧,他们去买尿布说对,吧或者买啤酒的时候,他们实在会把尿布买。
那这两个就是有比较强的关系了,又或者说像手机和手机壳对吧,我们买了手机之后就大概率会买手机壳,那这就是这就是一个a到b的一个关系了,但是b到a的话就会变得比较弱,我们很少先买手机壳啊。
因为一个手机壳我们再去买一个手机,这种是不是概率是非常非常小的,对当然也是有的啊,这个话我们可以根据我们的一个历史行为,在日志里面来去做统计啊,是a到b的更多一些,还是b到a的更多一些。
这样的话其实就已经给,就是关联分数,这种分数的话,我们如果说用户他买完a之后对吧,那我们就可以将b推荐给他。
我们看下面,当然我们可以考虑一些更细的,比如说小冯对吧,他买了一些商品啊,呃一些牛奶啊,饼干啊这些饮料对吧,这里面的话它有一个正向和逆向,就是我们刚才说的从a到b,从b到a,正向的话。
就是其实我们按时间从远到近对吧,那远到近,那其实就是一个正向的关系,从近到远就是一个逆向的关系,这个画的话我们可以加上一个乘法项,正向的话它的,分数乘以一个一,那逆向的话我们乘以一个0。7啊。
这是只是一拍脑袋这样的一个设定,那是不是就是说明,正向他的一个分数更高一些啊,这是第一个第二个距离或者说时间啊,我买完商品为a之后对吧,我过了五六天才买商品b,那我买了商品a之后,过了一两天买商品c。
那这两个距离就是一个是二,一个是可能是五对吧,那是不是越近的,它的相关性更高一些,大家可以想一想,对啊,你近期去看的东西,他们之间相关因素比较高,再对比你去年啊,或者说几个月前看东西啊,是不是。
差异性就没有那么的就变得比较大了,这时候的话我们可以我们下面有公式对吧,距离哎也是一个作为我们的一个系数对啊,来去调节,最后去得到对应的两个商品的一个分数啊,得到分数之后呢,他最近买这些商品。
那每个商品它都有一些关联商品的,关于商品它的对应关联分数,就刚才我们这个公式打分得到的结果,那我们可以将这些分数进行一个排序,或者排在第一个位置啊,这就是关联召回它的一个流程,大家可以再去诶思考思考对。
看看能不能这块能不能这块能不能看懂,对啊。
ok那我们继续,下面刚才我们讲的是,像类似于协同过滤的那种方式对吧,那接下来的话我们再去看一下,基于向量的召回,下令召回的话也是一个比较经典的队,我们就是说将用户或商品转换成向量,有了向量之后。
那比如说我们看这个框架对吧,这框架划分成两个部分呃,第一个部分的话是离线部分,离线啊,离线的话,我们对应的是一个可以理解成,简单的一个dna的一个模型,那我们输入是有两个部分,一个是用户特征啊。
一个是物品特征,然后输到模型里面,我们可以去得到用户的in bedding,这in bean就是它隐藏层的输出结果了,以及物品的100点,我们可以将其存储起来啊,但这里有个问题。
用户的in bing对吧,它的兴趣会不断地发生变化的啊,所以这里面我们一般都是先去存储物品的,embedding,然后线上的时候呢,我们再去生成用户的embedding,然,后到我们的数据库里面对吧。
快速的来去进行查找与他相似度高的物品,这里面的话是用了一个方法啊,就是一个fast,就是一个呃facebook的一个呃,一个a n n的一个方式,就是呃近似最近零,就是进行一个快速查找的对吧。
快速搜索的一个算法啊,不然的话我们商品,而千万两具商品,你每个都去计算它的余弦相似性啊,那可是会非常费时间的,可能原本你需要三小时,但是你用这个fast之后对吧,它就缩短到了十几20分钟了。
还有的话像比较经典的有土地,嗯2018年的时候啊,是发表了一篇论文,分为排序,分为召回和排序两个部分啊,它的模式就跟刚才是一样的对啊,当然这里面并没有去,并没有去分成两个部分啊,两个什么部分。
一个用户特征,一个是那种商品特征那种双塔形式啊,他在提取用户隐bedding和商品引白灵,是分成两个部分啊,用户in bedding呢,是在最后一层的隐藏层去提取的,那商品的in bin的话。
是在soft max部分来去进行提取的啊,同样的也是经过那种a n n的方式来去,进行快速查找,啊我们先去保存商品的in bin,然后线上的时候来得到用户隐白点,然后快速去搜索,然后推荐给用户啊。
ok下面的话是一个典型的一个状态啊,d s m m d s s m啊,分成两个部分啊,最开始他是在那种信息检索的时候啊,会去用到的啊,一边是我们,比如说我们去做百度的搜索对吧,我们输入query啊。
然后他会去计算和很多的doo啊,抬头呀,去计算它们之间的相似性啊,将高相似的推荐给用户啊,但现在的话他也会用到这种电商啊,音乐中推荐里面也会去使用的啊,我们分成了两路啊,一个是我们的。
比如query的话是作为用户特征啊,darkle,wavector的话是作为我们商品的一个特征了,然后经过对应的表示层之后,来去得到对应的q和d,然后计算你可以计算它们的点击。
也可以计算两者的一个相似性,然后再去,输入到最后的soft max,得到最终的结果就是d s s m,它整体的一个结构啊。
那刚才我们讲的是比较简单的啊,或者考虑到用户的一个单一的一个兴趣,但是我们有没有想过,用户的兴趣其实非常多的,他可能在一个阶段对吧,有多个兴趣啊,可能啊我想看一些电电子产品啊,但是我的老婆对吧。
他又让我去哎买一些其他的,比如说家庭用品对吧,哎两个我都顺带一块看了对啊,那是不是用户的兴趣,它的向量当前是两个,而不是一个,所以呢慢慢的就会有类似的一些模型出现,就是m i n d啊。
这种多引bt向量推荐,这个,他再去得到多白领的一个核心的是,经过一个胶囊网络,它分成两个部分的一个胶囊,一个是你的行为胶囊,就是你的行为的一个embedding啊,一个是你的兴趣的胶囊。
就是你的兴趣的一个向量与白领啊,这是其实就是一个聚合过程,从多聚合到少的一个过程啊,然后最后对每一个兴趣我们都去召回,然后排序到最终的结果啊,这就是多in白点三辆,召回他大概的一个思路啊。
ok我们再去往下看,还有一些的话我们会考虑到像一些graph啊,结合图当然更复杂一些的话,会考虑到像g n这样的一些,或者说gcn图卷积网络,这里面的话就是为了去增加一些,图的属性或者说社交属性。
那上比较经典的像deep work对吧,depk的话它是分成两个部分的,或者说细分点分成三个部分,我们先去构建我们的图,构建图过程的话,就是根据用户它的一个行为日志,比如说我们先看对应的a这个图对吧。
我们有三个用户u1 u2 u3 ,他们分别都会去点击一些物品啊,比如说ue点击d a b对吧,那这时候的话,第1b它其实就是有这边的关系了啊,怎么理解呢,就是由d到a啊,是不是这种关系啊,看完d之后。
d完d之后点a那点完a之后点b是不是,这样的话,我们是不是构建出来了这样的一个边点,就是商品编就是他们之间的关系,他们之间的一个点击的关系啊,那u2 呢同样的话带到里面对啊,比如说b e啊。
然后像d e r e f u3 也是一样的,这里面中间它还有一个就是分段的部分啊,这是考虑到就是说你b e和d e f,这两个点击的一个群体的,它可能时间离得比较远一些,时间越远。
他们之间的相关性就比较高了,这时候他们之间可能就没有类似关系,你就没有必要把它去构建成我们的边和点,构建完之后呢,我们再去借助random work进行随机游走,从里面去生成对应的这种关系。
比如说a b e f,这是我们最后是右走完结果,这可以看作一个文本啊,然后将其输入到word tactor里面,就是这skyram这样的一些模型,最后去得到对应,每一个商品的一个向量表征。
当然更复杂一点,我们可以使用not not not to actor,对啊,这里面的话它是考虑两点啊,一个是b f s和d f s啊,一个是呃对应的广度唉,一个是广度呃,优先搜索一个深度,优先搜索对。
ok那再往下的话是已经e了啊,e d e s的话好像也是阿里的一个论文,对他所考虑的是,我们如果只是考虑商品本身的id信息的话,那会存在一些问题啊,有些商品它的行为比较稀疏,或者说是一个新品啊。
那这个点的话,它的意义就没有那么强了对吧,他是个人品,那这时候的话我们可以去添加一些什么呢,side information就是其他的一些信息,除了商品id以外,我们可以添加它对应的品类id对吧。
还有品牌id啊,一级品类,二级品类,三级品类这些都可以看的,这样的话这是这个eges里面的一个核心,也是很多的一些模型里面对吧,我们需要考虑的就说我们将这向量对吧,进行累加完之后,累压是最基本的。
当然这个模型里面,它会动态来去调整里面的权重啊,哪个装性高一些啊,对应就是a0 a1 a a2 打a n对啊,来进行这种自动化调整啊。
那再复杂一些的话,相对应的像知识普知识图谱的召回对啊,那基于商品知识图谱,它有效的建模新品啊,比如最近我们有新品了,小米手机啊,小米10但啊,小小米11 22这些的吧,这新品的话刚一出来。
他可能没有对应的一些行为,但是如果说我们构建了这种商品的图谱,之后啊,但我们可以有效地从里面提取出来,而小米刚一上市的手机对吧,它的热度可是非常高的,那这是不是就有效的去建模新品了。
或者是或者说一些活动这种一些新品呀,时尚热点呀,时效活动呀,精准搭配,这些都可以去借助知识图谱来去进行召回。
或者从里面来去生成对应的商品销量,这里的话是去,比如说我们如何去搭建知识图谱对啊,那一个是商品多层次与一息息抽取啊,商品啊,比如小米手机,小米手机对吧,那他要对应那些属性尺寸,内存空间颜色了。
那复购周期是多少,还有用户商品关系建模,基于用户图谱交互关系建模,用户兴趣概念完成新品推荐,然后基于用户图谱交互关系,实现精准复购周期预测,基于用户图谱交关系,实现用户兴趣演变呃这种graph对吧。
呃像,比较新的论文里面也有去讲到一些对啊,这种实体的关系,通过这种实体的关系,我们去生成向量啊,当然这个实体关系他可能描述比较多,然后再去结合attention,就是注意力机制啊。
将这些描述去聚合起来,然后的话我们还是要考虑一些细节,比如说像孤立行为建模,就是我们每个行为之间前后是没有关系的,还有连续的session啊,就是间隔半小时对吧,我们去切分一下,还有用户意图建模啊。
比如说原本的话,可能是具体到它对应的商品对吧,我们可以考虑这种c1 c2 c3 啊,对应到兴趣或者说品类啊,这样的话,我们能够了解到它大概的一个意图,而不是具体到某个商品,这样的话我们推推荐。
或者说可能更加具有一定的泛化性。
ok我们继续往下,下面呢就到了我们的排序模块了啊,这点也是非常重要的,那我们再去回忆一下,排序模块是干什么的啊,我们召回先是去筛选了商品对吧,从几千万个筛选到几百个排序呢,我们基于复杂的模型。
复杂的特征去进行对应的cpr,cvr的一个预测,然后做出对应的一个排序,这时候才真正的将那些商品从高到低,进行排序,这种概率分数啊,他可能对他的一个兴趣的概率来排序对啊,当然也有可能将多个分数整合起来。
进行排序对,所以说它主要是两个部分,特征工程和模型两,个部分啊。
ok那我们这里着重去讲模型模型的发展,模型的演变,让大家快速去了解推荐系统,它的一个大致的发展方向,以及之前是怎么做的,现在又是怎么做的,以后又该怎么去做,最初期呢是人工特征,再去结合线性模型。
国内做推荐对吧,比较早的是百度对吧,都是从百度过去的对啊,因为确实做的非常厉害,最开始对吧,可能在还是在一几年的时候,因为那时候其实还是会用l r模型,然后去结合百万亩百万特征啊,百万人工特征对。
因为你的人你的,特征已经做的非常非常的全了,因为特征它会影响到我们,如果说能够加上一些信息对吧,通过特征构建出来,那这时候模型也就没有什么事儿了,因为我们特征已经够多了,够大家复杂了对啊。
模型它只是从数据里面更好去训练,这些数据,提取出关键信息,但如果说我们特征,已经将这些信息呈现出来了,那模型是不是都可以变得非常简单了,那当然现在慢慢的有很多的,但这种只是一个假设对啊。
但这样需要这样做好的话,是变得非常非常困难的,你怎么样才能将所有特征,所有的一些点全部涵盖到呢,这个是消耗,成本消耗人力对啊是非常大的,而且特征我们需要做很多事情啊,所以说这是最开始的时候对吧。
当然那个时候对吧,我们的模型,我们的机器我的配置还跟不上对,所以说只能用这种线性模型。
再往后的话就是在20110年,到2015年,这个时候的话,我们可以去自动特征交叉加线,线性模型阶段精准推荐啊,就是我们要去能够精准,能够个性化的对啊,力度非常细的去得到,或者说去挖掘到用户的兴趣。
可能我们在扣过在构建特征的时候,我们就需要去构建很多的一些交叉特征,对啊,我们人工需要去做一个事情啊,但是如果说我们模型也能做这个事情的时,候,我们是不是可以减少一定的工作量呢,比如经典的fm fm。
它就可以实现这种特征的交叉啊,g b t t x t boost也可以实现特征交叉,它怎么实现呢,数在分裂的时候,第一棵树它选的是性别,ok分分成了左子树,右子树,下一棵树呢我们选择的是年龄,这是不是。
就实现了性别和年龄的一个交叉了,这就是在2010年到2015年,自动特征交叉加线性模型阶段。
ok这里的话是fm和f fm,这两个话现在其实也呃,fm其实用的比较多啊,为什么呢,因为fm的话,它里面引入了一个f一的厂的,这样一个概念,考虑到特征交叉时对吧,不同特征的交叉对吧。
他们之间的一个重要性应该是不一样的啊,比如说我们a和b交叉对吧,哎我们的我们的这个向量嗯,是等于a和c交叉的,但实际当中a碰见b和碰见c,这两个向量应该是有差异的,重要性应该是不一样的呀。
所以呢引入了一个厂对啊,这就看下面这个公式里面对吧,原本只是v i v g对吧啊,就说mv ok是对应的一个向量啊,g也是对应商量,就是商品i和g啊,或者特征i和g啊,但是呢。
但是呢考虑到我们刚才那个问题对吧,变得更加复杂了,对我们i里面它又分成了f1 f2 f3 ,他碰见摘的时候,他就用f2 啊,你碰见什么时候,你就用不同的,f设备的参数量又有所增加了。
原本的话可能是常数项哎,你就变成了二次项,时间变得更复杂了,成本唉,这时候我们可能就等不及了对啊,而且效果对比上说其实两者差不了多少的,所以后面才会有像deep fm这样的一些演变。
也有一些很多的一些结构对吧。
它叫fm作为其中的一个子结构来去使用,下面的话是gbt和rr的一个结合过程,怎么结合呢,这可能是facebook 2019年的手机版,他们使用的啊,当然我们也去用过,发现没什么效果对啊。
这个也是有很难去嗯,很难解释对啊,大家可能经常能看到一些论文对啊,像阿里系论文或其他一些论文对啊,那呃换长之后就没有效果了,那这个是为这个是为什么呢,我觉得这也是值得我们去深思的部分啊。
那我们来看一下gb t的话,他怎么和r r结合呢,d p它最后会有对应的页的节点对吧,有叶子节点就是落到每颗叶子上面的样本,你落到这个地点上,它就一没有落到,他就是零,那这些节点这些页页节点对吧。
它其实就是一个0101这样的一个结构,那我们0101这结构,它卖就可以下一步和l r进行一个结合,就将其输到rr里面,这就是g b t和rr的一个结合的过程,得到g p t它的e的节点。
然后将e的节点输入到r r里面就可以了。
再复杂一些也是很多一些变形,其实很多都没有用的,大家了解还是可以的,只要了解一些比较经典的就可以了,这里面我调了很多对吧,但比较经典的像什么呢,wide deep red,deep是谷歌的。
deep fm的话好像是华为的,这两个是比较经典的,而且用的比较多啊,我之前公司里面也都用这些模型的对啊,像fn呀,pn呀,n fm呀这种哎呀,那个时候这种论文特别多的,对各种结构的一些组合。
各种结构的一些变化啊,捣鼓捣鼓就发个论文了对啊,但很多其实都没有什么价值的,你看后面还用吗,没有用的对啊啊,当然很多人可能会写一些文章对吧,ok去对比一下这些效果啊。
我们只要去理解他的一个演变的一个过程,演变一个思路啊,怎么去演变呢,啊比如说像wide deep或者说deep fm,它就分成两个部分,一个是y的部分,一个是deep部分啊,一个是f,一个是fm部分。
一个是deep fi,一个是deep部分,对啊,两个部分,每个部分他们考虑的点是不一样的,y的话考虑什么呢,考虑一个记忆性,第一部分考虑是泛化性,那fm考虑什么呢,交叉不仅交叉,而且还有记性啊。
在原本的y的部分,是不是又添加了一个二阶交叉,二阶这样的项目啊,是不是可以理解deep fm它的发展啊,应该是在外deep之后的,因为考虑到更多点了,在基础上做优化了,那还有x d不fm。
刚才我们讲到的是二级交叉,那xd bim它里面的核心结构是c i n,可以实现高阶的一个交叉,深度卷积网络也是哎深度交叉网络哈,他也就是实现了一个高级交叉,我们可以自动来去设定三阶四阶这样的。
这里的话是fn和p n啊,ok这两个其实感觉也没什么作用对啊,fn的话是使用fm得到影向量,作为引bei的初始值,pn的话是在影ban层和m p层,加入一个啊product。
就是一个也是一个交叉的部分对,ok我们继续往下。
videep啊,我们刚刚提到了,以及deep fm都分成两个部分啊对吧,这也分两个部分啊,fm层啊,这是deep层,这是y的部分,这是deep部分,这两个的话,如果我们要去以后要去从事推荐段。
或者说我们想往这方向转的时候对吧,我觉得这两个模型是比较经典的对啊。
以及我们再往后看,想点网络点,点这个的话有没有效果,其实有时候还不好说对,有时候真的是不好说的嗯,因为我们这块也有去尝试过dn d i n,有时候换个场景确实是没有太高太多效果。
但它确实是确实是开创了一个,比较新的一个方向啊,就是在原本的排序模型里面加入了什么呢,对于序列的一个信息的一个提取啊,我们序列的话最后要帮要将其聚合,成一个序列,它是多个100对吧啊。
比如a b c d每个都有个in beding,那我们最后简单点的话,可能将这个in bedding全部求和求和平均,那这里面的话就考虑复杂了对啊,每个embedding,相关性是不一样的。
有的相关性高,有的相关性低,这里面的话它就是结合了attention,大家记住了的天使啊,这也是源自于rp,对啊,现在很多天使里面都会用rp的,也可以支持像attention transformer。
像bt这些都会去用到的,可能都结合这一点了,所以想去发论文的时候,你不妨就,是说去和其他领域或其他方向结合一下,考虑考虑,那dn的话考虑的时间的因素啊,前后的引前后的关系,那你要考虑时间的这种关系。
那你怎么加结构呢,大家想想这种时间对吧,这种时序啊,那是不是就是可以结合r n n或l s t m,g r u对吧啊,这就是无前后关系啊,所以说d i e n对吧,它就是添加了对应的这样的一个结构。
所以也是很好理解的对啊,刚开始我们现在考虑了不同的商品对吧,哎,商品的一个相关性,我们用tention,但这里面没有加入时间的因素考虑啊,所以说我们又融合了,融入了对应的rnn这样的一些结构,是不是。
所以说这些都是有前后因果关系的,我们都可以去不断的去深入去考虑的,所以说现在目前而言,都是那种序列化序列方向去发展,但是这个发展其实也差不多了,对啊,慢慢的结合图国服,还有看结合图。
这些都是不断的去和一些比较流行的,比较新的一些点去进行融合,因为到达瓶颈了,你接下来要考虑什么呢,那一个是你的模型的表征能力非常关键,对表达能力的话,就需要你能够对应不一样的数据。
提取到对应的一个信息啊,ok我们再往下这块。
我们也讲完了,接下来讲重排部分。
ok比如下面我们再去搜商品对吧,淘宝搜索啊和淘宝推荐对吧,我们再去搜索,比如说搜索连衣裙的时候啊,它其实就是会考虑什么多样性的,一个推荐的对啊。
这里的话是一些策略,大家可以可以记一下对啊,这个你如果现在是做推荐的对吧,我觉得这些都可以直接去使用的啊,或者说要去完善一些重牌策略,其实我们在从0~1手对吧,那时候最重要的并不是金牌啊。
最重要的是做召回和重排的一个策略,要保证我们推荐出来结果是正确的,并不是什么,整个屏幕下去全都是一个平a哈,这样的话肯定是影响非常不好的对啊,所以说我们要考虑到很多细节,比如黑名单过滤啊。
按照回类型重盘啊,多特征打散对吧,重拍最后一波,根据内幕品牌打散进行杀er对啊,去重啊,图片相似和sp u相似,打分前进行特征比例控制,不同的栏目它的内容占比对吧,按用户特征体现,根据用户收藏。
他最近有收藏架构,这些偏好,我们可以将其进行提现的,所以说排序完之后对吧,你只是完成一部分工作,后面还有很多事情需要靠,我们整体的一个框架对来去解决的,还有近期已够的,我们需要沉底对吧。
一一重盘来去改善用户的体验。
ok这次呢我们其实只是讲的,我觉得只是一个是让大家去了解,推荐它大体的一个框架,每个部分的一些内容啊,但还是不够深入,对啊啊,比如说模型之间的去对比,模型的优化如何去进行实践啊,不同的项目下面对吧。
针对企业项目对吧啊,电商场景项目啊,或者说一些嗯视频场景项目啊,我们该如何来去进行优化,以及更多的一些知识点,更细的一些知识点啊,比如说序列化推荐他这个演演演变啊,g n它的一个演变啊。
这些内容的话我们都会在呃,我们其实在线推荐高级小班,第13期里面去介绍到,会比今天讲的内容更加的深入,让大家对推荐有更加深入的理解,但是如果我想从事这个方向对啊,呃大家可以去了解一下我们的课程啊。
看看是不是和你所所想的对啊,是不是一样的,比如说很多很多这些诗真实的一些项目啊,代码的一些实现,对吧啊,我们的分布式一些大数据的一些工具啊,一些操作对吧。
工业级的项目,还有更加核心的队是全程答疑,大家遇到什么问题,项目的问题啊,或者说求职的一些问题啊,以及就业辅导对吧,我们都会a1 b对一的来去进行介绍的,对,ok这就是我们今天的所有内容了。
感兴趣的同时呢,我们可以进一步来去沟通交流啊,好的今天分享就到此结束啊。
人工智能—推荐系统公开课(七月在线出品) - P2:大数据到推荐算法工程师的成长之路 - 七月在线-julyedu - BV1Ry4y127CV
哦,那我现在开始了啊,实实在是不好意思,跟大家去。😊。
今天然后那电脑前天测还是好的,今天你没有声音了,我声卡有问题啊。嗯,我啊那我开始了,我先自我介绍一下吧。然后我是那个15年毕业的,15年毕业之后,然后我先我先从事的工作是加外b。
因为就是我大学学的是那个学是加外,然后然后第第一份工作,就搞加外 web这一块,然后干了大概有半年的时间,然后然后我就不想干了,我觉得没意思。然后然后加we,然后我就没死掉了。
然后我自己在然后我自己然后又自学大数据,然后大数据那块,然后就是我也我也我也学完了,然后然后又找到一个大大数据的一个岗位,就是大数据大数据嗯大数据岗位,然后我自己又我又干了一段时间。
觉得还是就是有很多就是就也也也学了很多ETL的一些东西,就数据仓库一些东西,但是我始终不知道要这些数到底是干嘛。😊。
然后就是我慢慢的然后接触到一些sg,爱些算法这些东西。然后我发现就是我可以从大数据,然后转到算法搞。然后。然后然后我自己就是我学习的时候,然后就是先嗯就是以前前面是没有没有想报班,然后自己啃书。
然后啃书我话现在根本就是效率比较低,而且你学东西。呃,呃,大家可以听到吧,就是听怎么可以听清楚吗?啊扣一好吧。好,然后。然后然后我就是然后我又打学学学学推荐算法,然后嗯推荐算法,然后在家里面又是啃树。
然后啃树啃树,我发现我自己根本就啃不动。然后而且知识所有的不成体系。然后最后我还是选择就是报咱们77月7月级运营,然后就通过7月通过7就7月级运营,然后就可以把我的整个知识零散知识。
然后会就是整个系统缺以点,然后成成为一就你有自己,然后形成一套完整的一个知知识架构。嗯,然后就下来我这就是我自己一个一个转岗的一个过程。然,接下来我给大家分享,就是我大概就是自己从7月。
然后学习学到这个东西。
然后然后在7月里面,其实主要就是因为呃从从从因为我我之前是学数学专业的,所以我数学数学那些践行代数和高等代数,其实我都是掌握了的。然后所以说就是看数学这一块,然后比较快一点。
然后嗯然后接下来就是通过还有韩像韩晓王老师讲的一些他们7月在线,就是7月在线上面一些老师又讲的真的是非常到位,而且细节讲的特别好,就是大家我觉得看看7月在线的视频,就是你看一遍肯定是看不懂的。
我几乎每个视频我都看了好几遍,好几遍,然后然后我自己用了一个本子,把上面所有知识点,然后全记下来,然后自己包括把老师识点,然后自己手推了一遍。然后才把一些基术。
然后你你自己就头脑里面有了一些机器机器学习的一些一一些模型之后。一疫情模型之后,然后你你觉得这套算法是有是有一点感觉的。然后嗯。有点感觉的。然后就是我自己在学习这这些算法的时候。
就是我通过不仅仅是把老师上课些PPT还有他视频,我搞会。下面我自己刷了几个例子,刷了几个例子,我就刷几个例子也是不够的。我觉得大家有有精力,你可以把最起码自己去就是你自己就就去拿拍出去写写一个。
比如说写一个写一个那个。写1个决色数,然后去写1个LLR这些现脏大家用python拿后处理结构,就自己把它实现一遍。呃,就是就是无非就是决色数,它就是个递归嘛。
对然后递归递归递归它肯定是有一个有一个有一个有一个终止条件,然后到终止终到那个终止条件时候的,然后数据停停就是嗯停止停止生生长。嗯,听是了所所所以就是我我自己还是自己比较关注。
就是自己自己一个就是真正的比较。我比较关注自己的编码能力,而且我我并不在乎就是我自己到底掌握了多少多少模型。然后是然后然后这里在7月在现场我自己做的项目就是那个park电影推荐系统。
因为我之前是搞大数据的,所以说我对这个大数据这些东西我是不陌生的。嗯,包括包括就是他整个一个就是比如说还有park卡夫卡问这些东西,我自己都比较熟悉。所以说在在嗯在这个就推荐系统,它的环境部分。
其实我是少走很多大路,而且是比较快。然后我自己是在那个阿里云租了租了三台服务器,然后把这个架构然后全部搭起来了。
嗯,打起来之后。
其实代码其实也也也也并不是很难,它就是用了那个spark喵 live的AOS17最小二乘法,就是用那个直径分解。举阵分解,然后最后得到了一个iphoneic之间的一个举证。
这取证就是保存的是I之间的相似度。
呃,然后这里面我觉得就是我比较就是它离线算法其实没有什么,其实就是你调AOS里面传进去呃,有那个比如说你你你数据嘛,还有那个呃,还有I还有实际上就根据得到一个相似举。
然后AOS这块跟你计算出来相似举阵之后,但实际上这个举证是我我是把它缓存起来了,缓存起来到最后就是用于实施就线上实施的一个状法实施算法就是你点击一条数据之后,然后我就从这相似举阵。
然后直接去获取它的一个相似度。就是实施推荐我就可以用一句话行。其实大家如果要是有堆的概念,其实实施推荐它就是在维一个堆就是你你用户点击下触发一下。然后我就会通过你的你你你你点点击这条数据。
然后和你之前历史行为或然后之做一个计算。作为一计算之后,然后我我会有一个推荐列表,然后我就一直在维护这个这点击一次,然后更信次列表,点击一次更信次列表。
所以这样的话这样的话就是你你用户的一些推荐一个推荐列表都是在实时更新的。所以说你每次推荐东西都是不一样。实施的话,我就我我认为就是这里实时训,大家把它理解成个对接好。
然后这里还有一个tg这一块,然后有一些基于,比如它统计特征,统计特征的话。嗯,统计统计合成的话,比如说他跟近期近期热门就是根据他的那个年年月年月年月还进行一个年月进行一个就是谷物派。谷派之后。
然后根据他的一个评分进行一个量值,然后去套分,这就是一个基于统计统计数据的一个嗯基于统计数据的一个就统就近期热门的一个统计。对然后一些。我看一讲,然后这些历史论门还这这这些都是一个一个道理。
就是这些就是我不想给大家,就是把这个东西讲了一个讲的就是很。很很那个其实他们到就是所有的召晖模型,他其实都一样的。就是你只要理解理解理解一些一些倒牌的一个思想。他实际上就是基于一些倒牌的思想。
然后去靠博。所以我感觉他们的其实招回招晖模型,他一些一些算法其实都是基于这个思想来说。
嗯。然后这里有一个机于,就以盈语盈语推荐的。然后这个就是用了1个TFIDFTFIDF。然后我就是根据它的一个呃电影一个名称,然后计算它的词频。视频次频计计算出来之后。
让我计算电影电影电影和电影之间的一相似路,然后再去校本。实际上就是所以所以所以就是我感就是嗯像像这些就是你写了几个模型之后,然后你就有感觉。
就是他他他的些这些无非就是嗯基于就NLP或者就是把这些转化成向量就好了。向量转化成向量之后后计算他们做相似度。只到最后,不管是就是你基于的是一个历史数据评分。
还是基于你的一个基于你的一个那个就是你的一个呃你的那个就是你的一个电影名称,它实际上都是在最后再计算个项似度。所以所以说我认为推荐他实际上就是在做相似度。对。然后这里就是我到最后LOS。
然后最后算算出来是是是200200维,然后最优最优就用了一个网格自器交叉验证,最后得到的是最最优参数是200维。然后还有一个他的一个拉姆达什么的。
对。然后就是一个呃实时推荐支付刚给大家说一个实时推荐,实时推荐实际上就是你把那些推荐列表删都保存在mongo里面,然后然后从这里面一直一直去更新从在这上更新UI更新推荐列表,然后最取套通。
嗯,这是就是我刚这是我刚刚说的通过TFIDS然后计算它的一个就是电影名称的电影名称。之后,你把它引单进之后,计算它的销量和销量程是相似度。然后就最后来后进行一个根据它的相似,然后进行图检。
嗯,然后这里这里实际上就是。哦,语速有点快,兄弟,不好意思,你们大家有什么问题大家提出来。我今天一定会把大家不懂的问题,我都会就我自己怎么样去面试。还有一些问题我都会告诉大家,希望大家还是有余提问一遍。
因为我不知道你提问我还知道你哪些地方有些困惑,我才能给你解答,就是大家还是我平常说话是有点快,需要好都是。是不是有点有点这样,有有点体张,不好意思。大家还有对我的潜励,还有有点不明白的话,我也可以。
我也可以给大家解释一下,然后前面就是我大概说了就是一个一召回算法,它实际上就是是一个召回算法。但是就是你拿到召回算法,拿到候选级时,然后剩下就是排序。排序的话,然后现在比较用。
就用就就是就running to rank嘛。文明突,然后就是然后呃这里面有招就召回算法的话,就是我不仅仅是之前的AOS。当然我觉得你去面试的时候,你只说你用过AOS1个招回算法,我觉得肯定是不够的。
你最好多掌握几个召回算法,然后懂得这几个召回算法,他们之间的一个差别。然后然后这这样才比较好,比如说就是iphone4F还有U4F。而且这里面就我去面试的时候,他就是问这个就是那个。嗯。
去USF他也是也也会去问我,就是嗯比如说就是怎么样去消呃消除消除仓位,然后就类似于类似于这样这样的一个问题。他们也会问问问这些,还有怎么样去当如果要是你的那个一下一下耳机之后,你这用户其实举势非常大。
然后你怎么样去维护这个相似的举动,这也是很多公司现在这个头疼一个地方。因为就每天iphone都不再增加嘛。所以这里然后他问到这个问题,当是就是我自己最好的个解答,就是。
就是因为他们itomite之间计算相似度的时候,计算相似度的时候,就是他他有些itphoneite之间其实是不具有相似度的。所以说这些数据最好就是把它成。其实这样你可以换一个消数算法。
然后嗯比如说就是呃比如说就是那个。通过啊有个类似用照拍索引吧,就是你通过一个类,然后找到这个类,通过这个类别下找到这个类类别下,最受最受欢迎套边,这样就很好的。然后把它的一个你具有相似度的F秒化过滤啊。
就这样从而就达到了一个优化相似度举对的一个目的。然后然后当时我是这样回答的,然后比如说还有al,还有cont base的CD还有LLFM,大家都必须网上有很多这样的解释。大家建议是把这相关算法都记下来。
然后把它还有当时我去面那个去面那家公司。然后他当时就就LFM当然也会问让我当时首推一下LFM的一个公式,当然也不很难。所以以后面试官问到大家也很基础些问题的时候是,你一定要把它打上来。
对你一定要把它打开。嗯。
然后比如说这里我还用前面比如说前面是想讲通过那些,比如说就前面就是一些通过一些机器学习做那个做那个就是做召回。但这里比如说你通过深动学习做召回我toctor toctor实际上也是就是把他的at。
然后全部你单定了,你单定,然后计算他们相似度,然后到最后计算他们相似度。所以说他们你不管要用什么模型,他到最后其实计算相似度方式其实都是一样的。
对人要上账任务。然后比如说这里这是我当时做,就是我怎么样通过,就是做做那个排序的时候。嗯,做排序的时候,然后我用的这这几个模型,就刚开始我做排序的时候我用的LR。我用我用LRLRR模型嗯。
LRR模型当时我是没有用那个有特征,特征用的是嗯特征。就是我特征嗯我的特征是没有加入组合的组组合,没有加入那个没有加入组合特征,没有加入组合特征的时候,然后他A1没有嗯看一下看一下。
AAC然后就是这么高。但是你然后接下来我又把LR里面加入总个人AOC是是有明显提高的。然后最后我从LR过滤到GBT然后从B在过滤到GBTT加加LR然后他的AOC都是都是都都是上升的。
就是那这几个模型就是你一定要自己去通过一份数据把这几个去做一些模型融合这几个模型你都要去试一下,然后看一下他们参数之间的变化。嗯,你去给面试官讲的时候也是这些东西。
最能说明实东西你确实做过我觉得也是最最有说服力的一个地方。嗯,比这然后最后然后切换到嘛后当时我的数据数据它是我的我我的一个数据它是有限的。所以这里的参这里的1个AOC其提升并不是明限。
但是你如果数据量越来越越大的话,它AOC可定会提非常明非常的明限。冇。诶声。然后然后我最后最后算就是深度学学习模型,大于它这个LR和CPT组合模型,然后大于CPPT小大于LR。嗯。然后就是8月。
嗯,大家有问题吗?
然后是不提个问题,哪点不明白,大家说出来,不然我不知道大家哪哪你哪里不太明白。对。
嗯,完考虑过时间那下,我知道你说这个就是。嗯,考虑我吧,你说但是我我知道你意思是当时我是没有考虑的,就是你说iphone4F时间影响。就比如说嗯他的一个比如说我做了,这里面我是做了给他就是给相次的举证。
给他通过时间影响去给他做一个降款嘛,是吧?就是如果如果如果他他用户行为,他两个itom的时间月。Yeah。越就是他越越长的话,他肯定就越越越不具有相似度嘛。然后你给他相似度做一个项材。
这个东西就是你做相似度。这这个实际上就是你不管你考虑时间还是其他因素,就是你在你计算相相似度的时候,你都是给他可以做一个比如说就是给他做一个增益,增就是给他的一个影响,做一个增益,做为一个检。
一个一个增议或者减少,就看你你这个影响就相应诉讼条件到底是什么。对不对?所以说所以我本身你遇到这一点的话,就是给他无非就是你在写显示公式的时候,给他处理他在过一台仓思路,然后加一些加一些公式。
加一些计算方式就可以了。或者是嗯通过他的时,通过他的一个时间间隔长长短,然后做以个。做一个给他上去做一个加强回账。你这就可以了。然后然后就是我还是给大家,就是然后我其我项目就是做就一个召回一个一个排序。
然后还有就是我给大家然后分享一下,就是嗯还有就是我现在在公司做的项目吧。然后我现在在公司,然后就是就用了一个层次聚类,然后弄了一个叉K,然后用了一个叉Gmo,然后还有一些他召回一些策略算法,嗯,就是。
就是然后比如说做,比如还有一些就是你你这个线上,你这你这个线上,然后你的一些你的一些。你好。然后然后就是发现比如就是。嗯嗯就是就是比如说你说比如说,还有一些他的一个命中率啊,命中率,还有一个他他命中率。
还有一个他的一个它的一个转化率T那个R然后通过一些这样的一个指标,然后去衡量去通过一些这指标,然后去衡量你的算法,后带来的真实的一个收益。还还有就是你去面试的时候,然后你把这些那怎么样去衡量你的算法。
你们也要说进去但但实际上但是我知道但是我是这么做的,就是在真实的一个推荐场景中,他肯定不止不止一套召回算法,它肯定是很多道的很多的召回算法。
然后通过一个不同不同不同召回算法的一个算法的上限去按比例进行召回。然后到最后然后再进行排序,他肯定不止一个召回算法。当我写的时候只有一个召回算法写的是比较单笔。大家可以多说几个召回算法。
然后把这些东西都说是你的一个召回算法。这样的话就显你这个项目项目简单肯定是比。哦更老板一点,我觉得这样的。而且因为现在其他就是推荐系统,大数据都说都说只是说1个ALS,但是也也不是怎么好。
所以说我们大概尽量多说几个,你觉得比较好。然后还有。还有就是我认为我就我能找到推荐,我们找推荐就是一个最重要的一个因素,其实不仅你是我背的算法。就是我我对大数据这一块是我我是非常熟悉的。
因为就是在在在大家在大家在推荐算法和其他ARP那不一样。就是我缺荐算法这东西它是要跟跟你的一个大数据流实时流或者离线一些东西合起来。就是大数据那些间你起码都有会比如说最起码写写扣啊,写些一些一些东西。
就是打打加包那些东西你还是要会的。比如说就是人家就最简单的话,就是大家从比如说就,如你一些的一个。海lo夫的一个它的一个呃嗯架构当是有点夸张的。但我觉得就让你就hell夫。
然后问他海lo夫就是它的一个原理。我觉得你起码要说出来,比如买像像 reduce这是比较老师常的。但是但是我觉得你要是在谈说mic,你能把它原理做出来就就很好了。
比如他怎么样进行一些想上他里面实际上就是一个就是就是就是通过哈希哈希分组,然后再再进行再进行一个分复排序,然后最后进行一个归应排序,他说海道夫就这样一个原理。嗯,所以我觉得你能把海报然后说清楚。
他比如我去面试的,人家还问了我一些问题,就是嗯你是怎么样处理,对你你是怎么样处理数据新写调。对,然后这里然后你就大家都回答一下我们,就是大概怎么样处理数据信息。嗯,包括那个像像hello场景。
下面cap场景,或者那个hello或者那个sg场景,大概怎么样去处理数据信息。嗯,对。回边请回家看。你,大家有什么问题就尽快,因为直播的这时间就这么短,大家有什么问题尽量多提一点。
我都会我不知道我想的好不好,但是我会把大家问题都都你想了解到什么,我都会告诉你。嗯。嗯我等大家一下,大家有什么问题提一下,好吧。嗯,实施在线算法问的是什么样的?这个我看一下。
这个我用的是这个我没发你展开说,这个我确实忘记了。但是他就这样算的,就是我用户点击一次,然后我就点击一次点击了一个iteom,然后我就readis里面把我过去历史行为过的一个那些ite,然后我拿出来。
然后拿这一我目前行起,这目前目前点击这个iteom,然后和这里面我历史行为的,比如说你选了10个atom,就和我历史行为过去1个atm,然后做一个。有一个公式,这个这个我确实忘记了。
然后然后进行一个通过他的一个,我当时计算叫ER值,通过ER值,然后进行就相当于。就是通过他。因为我这个我这个。呃,就是我有通过1ER值来衡量这个商品是缓是坏。啊,到最后我和我历史数据然进行一个比对,来。
然后来确定。这个这个呃然后然后来确定它和历史历史我我历史的一个历历史at的一个顺序,然后最后去更新我一个平间内容。对。嗯,并行处理,我是我是这样处理的,就是我觉得你要是了解你要是了解。
就是那个嗯你去了解他的一个,比如说就是去了解那个嗯他的一个那个。就是我我刚说那个一个数据新型,我觉得你了解你要是并行处理的,他大数据都是并行处理。你要是想去了解它的数据新求。
你你首先了解nper就是它这个原理,就是他为什么会数据新新型。因为他他首先这这份数据,我根据哈克取得之后进行分组之后,然后你可能分一个哈奇一个哈奇一个一个K下面的,他数据很少,另外一个K的。
他的数据非常的多。所以说他把一个他把一个并行的任务,然后最后直接跑跑跑成一个串型的任务。所以说你就需要在。在你你你再需要再就是那个reduce端,你需要把这个数据很多的这一块东西。
然后进行一个再进行一个买保定,就把它打散。打散之后,然后它它就变得很。把它把例度打细一点,然后这样考成地型 logo。所以它数据信息本质实际上就是在就是进行一个就是那个comper。
你可以去迈le就查一下comer,就compbiner进行compbiner,然后进行一个。他如果你要是在还还不存面的话,他实际上就是。就是避免大表和小表段位。然后去处理数据清息。
但如果你要在park里那sk就非常方方便了。它通过那个语音算子就通过let map吧,我记得是let map,然后把它打散,然后聚合打散,然后进行这样这样这样你可起解决数据信息。
所以这有数据清息也会经常问。所以大家也很简单,你搜下,网后做下答案,他很多答案。你只要把它对会问到的话,你就很容易搜出来。好,大家然后就是我还有还有一点就是大家说,就是大家去面试的时候。
你的整个的一个技术架构你把你整个的一个技术架构构建起来。你有一你有你自己技术架构之后,然后别人再去问你的知识点,你读这么面,就不只不会是问你这你只会专注的一点,然后别人又不知道。
所以说我觉得你的一个技先不说技术深度吧。但是我觉得你以前有个没有广度之后,然后再去专注一下你的技术深度。我觉这样的话会比较好一点。对,所以说大家是像这几个系统认为就是不一定你要去玩的很多。
但是你最想了解他是干干嘛的,然后大概写一些简单的API,然后继己去。稍微写稍微写一下。对对。然后然后就这样,然后还后还有大就是像像spark,我觉得也大家很值得去。就是因为它有一些有一些算法的话。
它实际上也是需要spark来实现的。就是你不一定有些东西是没法调包的。都是通过数据结构上自己去实现的这些方法。所以这样的话,嗯其实语言不是问题,关键是我觉得这里面最重要的是一种编程思想是在里面。
大家一定要具有。就是你的编视思想才是最重要的,调调包永远都会被取代的。所以说大家不要去调包,有什么东西就就去实现什么功能自己去实现,去把它通过数据结构去把它实现了。我觉得是你编视能定性一定会提高。
而且你去面试的时候,你你问别不会没有问题。但是只要你数数据结构够溜,他问以,你干码写的够放,他就。你会觉得有。能力是可以的。所以我这是我自己一的切身实际的感受,就是大家不要去觉得学会一些就是积极学习。
面学会一些像贝贝啊,学会一些简单的一些一些一些一些一磨线长序去。那我觉得其实本质还是你把数据结构学会。大家把这种编型的思想。对我觉得能能能能像像像目就数据结构,你还是要刷嘛。
比如说那个他今天今天要问你最简单的问问一下你太太还单练单练生和双脸微站和八打排序,那些你起码都能都得能能写的出来吧,像。然后问到像像像我就像。像像一些问到你一些问到你一些像数据结构这些问题。
数据结构肯定会问的。你面试的时候你定。你一定会要求你写数据结构。所以说数据结构我觉得你还是就是你不一定把它完全实现,但是你起码要写出来一版出来,然后再根据面试官一起讨论去优化它,我觉得就可以了。
怎么样去优化他的什么复杂多,空间复杂多,这些大家还是要会的,让你写写一些这些东西。而且那你是算法工程师,我不是叫办公程师。所以说你数据结构就就是我我之前有一个事跟我说不管你想老算法,你数据结构。
一定要得有辑。我觉不是就一样的,这是我给大家一下,就数学后大家经常刷,一定要经常刷。嗯。嗯。然后这里然后自己呃,然后就是。嗯,我对就是我自己对集群还是有点感觉吧,就是对一些集群就是大家。你。
如果有条件的话,先就是你把先把那种搭集群方式,你把集群搭建一点。那你对里面的时间基本就经常明白了。不确得。Yeah。嗯。唔十点啊。主要大家有什么问题可以加我的微信在这里,大家有什么问题的?
我给你说的是计这月是实机。没有说的涉及就业实施行为的这个现象一项。嗯不你说是我不太理解。今为是事性我都不清楚。实施性为离线缺陷,他实际上就是就是我他实际上就是把那个他实际上就是在做AOS之后。
他实际上还是把那个AOSS因为拟离线。算好算好你离线算好他的相似度了嘛。然后他是他把我当时我记得说,我是把这个离线这个相似度,然后缓缓缓存到缓存缓存到内存了。他实施过来。
然后直接从内存里面去拿到这相似度,不是它这个相似度并不是说离线基于基于就离线的一个水准,它实际上只是通过一个因为实施它对时效性要求很高的。你不可能从从从从直接从那个你必须要从内存里面拿取。
所以说你把这个这个东西实际上都缓存内存了。然后从内存里面先取,又它相似度。因为你要计算一个东西,它好不好,你还是要通过它的,你还是要拿它的相似度来计算。所以这个东西只是你中间一个产物。
计算通过你计计算你实施实施推荐的一个产物。对。一直我就是这样。它是把AOS里面的1个D卡机,然后缓存到内存了,然后通过这个内存,然后去取它的一个像素,然后进行计算,然后进行试。然后如果大家还想听一下。
就是那个我现在在做一个那个就是做了一个。一次做了一个剧类剧类的一个算法。现在在公司,我来的这个公司大概是4个月吧,然后做了一个很积的。公司之类的话,就是它是一个做了一个大概类似于防圈划分的一个东西。
如果大家大家如果有想去到美团或者饿了么这样的公司,嗯,你可以过来找我,我可以告诉你一些现在卖外卖的一些物流,或者他现在一个美团饿了么的一个他的一个推荐,还有他这个离线离线,还有他离线推荐算法。
还有他骑手的一个就是路径路径优化路径优化这个算法,这些代码我都已经全部内挂到脑子里面。如果大家想去套槽到美团饿了么,你可以加我微信。然后我去把这些东西。可以去给你去讲一下他们业务。
让后你去面试可能会好一点。对对。嗯。嗯,那大家还有什么问题吗?大家可以活跃提问一下,可以活跃提问到我小什,大家可以活跃提问,还有哪些不清楚,我都会给大家讲明白,就实事推荐这一块我确实忘记了。
但是意思大人给大家说明白了,他实际上就是在临时一个推,你把也是个追究好了。然后不断更新一个列表,就不断点击一次触发一次,然后进新他推定列表。😊,然后具体时呃。
要具体话你我大概如果大家想具体知道是怎么时现的话,嗯,因为我确实忘记了,好多时间没有,然后现是没有看见这块,我我们也是然后没有去看。然后就是我去面试的时候,然后还是就是去大概。
就是因为我之前看过就hello sports时间嘛,然后去讲的时候,然后给面试给面试官然后去。然后这些东西我去讲的很清楚。所以说我觉得一方面我能找实件事,没有公司能力确实O。
所以说我觉得你训在试推建的话,公司能力的话能变得比较OK。然后训练试成功其实比较大。因为现在就是搞机就算,因为单纯的指挥机器学习,嗯也很难面。因为就我们公司去公司这两天招人的话,如果投了很多简历。
就是帮帮从同事长帮他去投很多简历,他们就是一般就这块只要三人荐的。还有一方面就是你这样工能力。验时主推EM这个不会的SEM相对库存。好,我面试是没问过SVM,我们大概说一下原理就可以了。我。😊,没有。
你就用么这些你大概理解他们,但然有些公司我觉得你但你说你把那些。😊,就是你不要再关注些一些量的,我就是你把你你关注点就是推荐。对推荐这一块,你就把推荐你常用的招呼台去,没有算法,总把它搞得清清楚楚。
明明白白,对吧?你有个自己一个知识知识架构,有个知识,你能形成一套一个自己的知识体系。然后去问你的时候,你经常也不是很重要。要有自己的知识体系,就是我当时是把这些所有所有的交微算法,包括他公式。
我自己在本地上全部都注。仲表已经等上了。然后他然后我做一些,他说他的一些排序上岗,我也总结了。全部统一下,到最后基本都就是面试的基法就是完全一是不二的,就基本上来讲大了。所以说。他也你讲的很明白。
PM40。其说做推荐肯定会要的。因为因为你想他他他前面你说一些APP一些你可能他从前端,然后到大数据到ETL一条一条。就他他数据是怎么样的,所以你从数据数据过来,他因为你你你做训练。
你平常训练的数据你都要读取日志的,要读取loglog来处理或者log。所以说他log就是在大数据集群上,对吧?所以说你你经常以后做推荐,你的你的脚本运行也是在这个。对,所以说你应用团件,然后还有。
还有一个大数据,大数据这块,你肯定要知道,不然你怎么跑代码。嗯。环境这关首先很难过去的。所以说你通过大数据的话,把你环境这关过去了,然后你再。当然嗯就是。好正我知道,当然可能大公司分的比较细的话。
可能有效活不会很多。但是你要去一些像我们公司的话,这销活你还是要。你同还个还装干。sk拍到sk我们sk拍sk肯定要给我。Pa你你你不明该sg,但是他要。然后起码HDSS啊。
像haveHHDSS这样的ha然后做些PL那些特征特征处理还是需要的。就这块夜会。大家大家可以提问。
有关flow呢会问吗flow这个我问的是我们公司业我去的公司反正是真没问到flow,他也没问这个当然你会 flow我你真正实现其也并不是很。我觉得就是。
你把那个公东当然他会问问一些就是你外部选的是什么特征,选的是什么征,对不?你什你这是怎么做的做一个demo你去费我们我我公司在目前。😊,是有还没还没用到这块,因为他们之前这套代码是。
是已经就是他就是不敢改的,你知道吧?这一方面吧?就是因为他不敢有太大的改变。就目前还没有修售发品,但是你要去大厂的话,可你发给你交回。包括做去了一家数据服务,目前在这家公司还没有弄用到那个。
但是且有是还没弄到这个真命学期的这些东西。嗯,实时推荐就是实时推荐,因为我刚刚前面写了,我就是你把实施你也什么时堆堆就好了。追的话就是么堆,然后里面有一个推荐内表。
然后里面有一个根据根据你说推荐推荐推荐的一个就是PR值,更PR值然后进行排序。然后每次点击之后,它会更新这个推荐列表,然后进行更新推荐表,然后再根据你的目前的会进行排序更你那的这个这个这个I列表。对。
啊,这个当然这个我确实是忘记了,这个这个你让我给你们说这个这个我嗯或者我再我再总结一下,总结一下,好吧,我把实时推荐这一块,我把它总结成文字,然后我是怎么实现的,我再总结一下,然后我把时间发到给你。😊。
因为这块就是他中间肯定还是有一个有一个数学公式的对,但是我是知道他是把那个实时推荐通过A计算之后,把那相素缓存内存,然后再通过前端然后前端过来点击出发之后。
他有1个P然后根据那个你就推荐那个你历史行的一些,然后进行进行一个数学计算。然后最后得出来一个一个新的个PR值来衡量你这个产品到底是不是对。用不用去更新有什。这还是同选。是跟我信情好的呃。
我在排序可是做模型融合。对,这我先在说了,就是我先用LRLR从从从新模型单一模型到组合模型,从LR过渡到GDT就数模型,然后再从数模型GDT加GP量加啊,然后做做这个,然后GP加,然后再过个老板。
然后我就用这些模型,然后做排序,然后去看到。然后特征的话,这块你肯定是有。你肯定是有atom特征,然后和user特征,到最后把这个两部分特征结合起来,然后去计算去那个去去去去就是学习你的模型嗯。呃。
反正我觉得大家就是就是你能把这些就这些模型你说明白,能把这些知识前你全全部都说明白,对吧?然后然后我现在说赵回还就那些那些算法,你把它搞明白,然后你自己有个完整的项目,能说明白,然后你数据结构在UB。
我觉得你找个,然后在在总点大数据,然后你找一个推荐的工作应该不是很难。因为像我现在觉其推荐的需求现在还是挺大的。因为这两天是我面试完之后,然后去一家公司上班,就每天还是能收到就十来个。
就是就七八个6十来七八个面试邀请还有。所以大家跟着老师视频,7月期不有此训练系统嘛?你就把那个考会嘛,然后去。好吧把然后那那些东西你都把它就全部都列化资源脑子里了,是吧?然后我觉得应该就问题大。
然后数据结构嗯数据结构还还是要发。嗯。我们再再聊5分钟,好吧,到4545。然后大家如果有什么问题尽快提交好吧。挺晚了就像就李想到家睡觉,那有什么问题可以加我微信,就是怎么样都可以。嗯。
其实我自己现在其实也感觉是对。模前这一块就是感觉就面试感觉是没个问题。但时感觉还是。不算不算不算还不算玩还不算玩的很多。😊,就是我看过我,看过这个块频来发的财点信息。就是如果大家有想刷看中的。
就定期举动。嗯,但是我数据结构这一块,我确实下了功夫了。我把我大概就8。把那个。用什么办法?现在公司用的是那个就是王以强说用的是一一个是。召回召回那块召回那块用的是我通。嗯,导粉那块是用的。哎呀。
我们公司召回那话其实比较问,其实我都不想说了。😊,交会的话,然后排序的话是就用于他。然后大概然后有一个,然后还有一个现在现在让我们又好,现在我在因为他他那个就是他推荐和物流是一个体系嘛。
然后推荐这一块现在目前是人比较满,然后再让我去找那个离线。就是他这个物流物流一切算法,所你还问什么骑手调度那一块,骑手调度那一块,然后我现在就比较接触了一个商仓的一个划分,商仓划分算法。
3是划分他上们用的一个图书据类,图书据类,然后它里面用到的一些,但是这里面还有东西的。他从然后里面用到的是一个就是通过一些订单清理度。订单清订单订单之后的清纬度,然后通过这些清纬度,然后去。
得到这些订单经纬度,然后你得到一个那个得到一个那个得到你的一个商铺的一个坐标。对,是的,我我现做的是类似于美团骑手,你可以理解是骑手骑手那一块,然后订单经纬度,然后通过这个东西。
然后通过但是这里面其实他用的全部都的数据结构一些知识,根本就不是,而且。数据结构显示,他这里面用是,比如说他用的是一个上面划分,到最后用了一个,大家可以看一下那个状法。就是要出包粗包扫描算法。
大家可以记一下,或者图包扫描状盘,然后这里面我用了一个,他这里面其实写了很多东西,用了很多堆栈,他这里面写了大量的堆栈。他就是就是这样写了一个,比如说他他大概对栈的话,就是写了一个写了写写了一个栈。
然后里面设设置一个变量。呃凸包凸包凸起的凸包是包裹的包,它这里面实际上是。跟据理跟那个计算计算那个向量向量的差距,计算向量的差机。对。对图包图包扫描算法,它这里面通过计算一些向量差机。
然后去最后形成一个图包。然后这个图包,然后最后形最终形成了一个商传,对个?然后它上去解决了一个问题,解决了一个问题就是解决什么问题,就是。就是嗯以前很多店铺,其实他骑手都是骑手都是。假如我这一个店铺。
我只有我自己骑手。但到以后的话,它商圈肯定要申请一个商形成一个商圈。然后这个商圈里面所有骑手其实都都需要共享。所以我现在就在在做这样一个事情。然后到到后面肯能要优化这样,然后接下来你把这些算法优化之后。
然后可定要优化这个包法,然后用一些但目前我们算法不是怎么尴改。
这个东西还不敢改。他不能改,是内化的。但是他这里面确实因为很多都是一些你看到这些他们写的些算法,其实都是一些数据结构的,跟他的一些基础实际上都是很很搭实的。这里面反正我感觉就是通过这个他写的东西。
然上我对。就就是对一个你一个循环,就他你怎么样处理它的边界,对不对?然后还有这里面他这里面有个他是他这里面有一个处理异常的个方法,用一个正态公布,然后去处理异常就是去去。去去那个处理到处理处理那边就。
那么你就大家可以把的方法也可以直也可以记下。通过现在分布,然后分都。然后比如说一些时间平滑,平难平滑。有时间平滑呀,还有有那个做个现象的。这像这样的一些东西。对,如果大家如果想去美团恶魔。
这块业务还是比较好。你想去美团恶么,就是我可以给你讲,他是你的业务。然后你去面试,有面试美团饿什么就是有有这样的面试机会的话,你可以过来找我,然后我去给你讲一下证名。大概的业务,然后你能跟他们准确合话。
应该是。高一点嗯。然后他们里面用了很多,就是写一个大概就是写一个写两个电量,按压,然后写一个电表,电表里面今天是个外务循环,然后这电表从外务循环里面一直向前走。啊,是这样的一个。用很多类似于这样的操作。
就怎么样去然后去从反我其印象最深的这个范围大概用就计算还有后在市场上翻这。他通过这个指定进取来后进行对循环理面这个数据啊后直接累下。啊,这个是不太一样,但是。所以我说这里面上有很多数据结构的东西在里面。
就是他但是你看那个重新他他用了一个一个那个什么。用了一个那个就商商化分析,反身他最后计算的还是相似度,还是一个矩阵,到最后得了还是一个矩证。所以说大家不用太关心一些什么说的特别多,特别繁琐的一些算法。
但我只愿你把那个。就是你把嗯我就是嗯你们了解其中级,其实我觉得其他原理其实都有很多相似的一些地方。对,跟推荐的一些,你说他这一套他又物流上来,跟推荐也也是有很多相处之的。
因为这块有缺陷和物流化是是一个这些体系嘛,有缺陷。好好,大家如果没有什么问题,我今天就到这里了。如果大家想加我微信,可以加我微信,然后我可。嗯,有什么问题回答再。
人工智能—推荐系统公开课(七月在线出品) - P3:带你实战电商平台的推荐系统 - 七月在线-julyedu - BV1Ry4y127CV
Yeah。好。😊,好,我们现在开始啊。呃,我们今天要做一个事儿,就是啊。应该说做两个事儿吧,就主要是拿那个。呃,我们用这个模型。啊,用模型来对我们的这个数据进行一个训练啊,就是进行一个实际的这个训练。
等于是一个啊实操的这样的一个一个工作。那么。呃。我们的这个model是有的,这个模型就是我们这个最开始的这个。呃,有两个模型啊,一个是这个。呃,立F嘛,这个模型我已经公开给大家了,就之前的这样的一个。
九精子接的这个模型。啊,然后还有一个就是我们在这个广告点击率预估上啊,就是做这个广告点击率预估的这个模型啊,就FTRL这个模型。那这个模型呢今天这个课件呢我没有这个丢到群里啊,这个没有关系啊,这个是。
好,后面后面我讲回来呢,会把这个这个代码公开给大家的啊。嗯。我会把它这个这个代码框下来给大家。嗯,然后我们来。现来做这个事儿。呃,我现在有有一个数据啊,就是什么数据呢?就是就是我们之前那个。
我们第二次提供的后面提供的这个叫做commercial logo的这个。这大家是有的啊,就是时间戳,然后这个us IDD,然后艾 IDD。然后还有就是他的这个啊category。啊。
就是他这个 category数,然后还有一个就是。三个数据对吧?那么这三个数据呢其实是可以去jo的。OK那么呃我们现在要做一件事儿,就是什么呢?我现在拿到这个数据,对吧?那我现在从零开始啥啥都不知道。
等于是那OK那我现在要对它训训练一个模型,对吧?那么呢呃。呃,我现在训练呃,比如说我们现在要针对它的这个,你看我们的针对它的这个呃。他应该是有两个型。到了卡到了三。可以。Yeah。
那我们看一下他的这个啊行为的这个数量。哦。哎,我去这么慢吗?这个un尼克。啊,OK好,已经完事了。那么它是有两个行为,对吧?一个叫transaction,一个叫vi,对吧?呃。
然后我们之前定义就will就是曝光,那么曝光呢是一个是一个反样本,对吧?transaction是正样的,对?它有交易了,对吧transaction的这个英文是交易了。那O那我们就相当于是正反样本是有了。
我们现在假设啊我们现在什么都不知道啊,我们来做这件事情,我们从零开始做,就拿一个model,对吧?我巴拉巴拉找了一个模型。那这个模型叫例拜FM这个大家都有。那么我们就从新开始做。点事。呃。
我们可以看到就是。呃。之前的这个呃稍等一下啊,之前应该是也有这个呃。喂。应该是有这个readme的。就read me就是它这个介绍嘛,对吧?那么我们就先看这这玩意儿,先看这个这个整个的这个log。
那么这个log呢啊其实我们能用哪个呢?就label是可以用的对吧?然后还有就是这个userus ID和艾 ID好ok。呃,那么我们知道有这个有首先有最主要的这个最主要的就是loggo嘛,对吧?
其他的是它的那个feature。那么我们看到就是。啊,这个就是这第二列,第二列是一个user是吧?然后这个是艾OK那么啊好,那么我的问题就是okK那么现在我用这个user和自己用这个艾。
然后来这个直接的这个呃。直接的训练,直接拿进来训练啊,可以吗?这是我的问题,就是直接拿拿过来。比如说我就抽取一下。抽取一下他这一列和这一列,然后直接就丢个模型去训练啊。我应该是的。好。
那么我就直接丢给模型训练是可以的吗?拿过来之后,这个data我就把它的这一列这一列抽取抽取出来。形成这样的一个。这样的一个格式的这样的一个数据拿过来训练。啊,就什么也不看。这样做可以合理吗?嗯。合理吗?
就没人回答嘛去。看一下。和不不呃,就是有谁有哪个同学能够啊回答一下吗?就我我现在假设。呃呃,就这这这一列是user,对吧?这一列是艾,然后这一列是label,那我就拿这三列拿过来训练。这个合理吗?
就是这个事儿。诶诶。为啥为什么不行?有人说合理,有人说不行,那为什么不行?为什么为什么不行不行?那是原因是啥?为啥不行?啊。应该不行,是啥原因?为什么不行?这点原因啊。还有别的同学有有有看法吗?
oneho呃,至少先往ho还还有别的吗?啊。那我现在问你我现在的问题是。时间短续。哦。呃,首先是这样哈,就是我有条件的限制,条件的那个条件的约束,什么约束呢?
就是我的所有的特征就是usCID和这个ite IDD没有别的特征,我们不用别的特征,就用这个ID类的特征。这个立白M那节课大家应该都听过吧。对这个对这个模型应该有所了解吧。我我就不做别的啊。
我们就做这一件事,就把U IDD和艾 IDD丢进去,丢给模型去进行训练。100分M的原理大家清楚吧。
啊。这个。这个模型的原理清楚吧,就这个模型的输入。哦,我我不知道有多少人线下用了这个模型,有谁用过吗?就这个模型我我在前几课前几节课已经。已经已经已经已经给大家演示过了这样的一个就是这么一个小模型。
有多少人用过,有没有人用过,我现在就就是有一个问题。有人用过吗?兄弟们。来给个反馈。为什么没用过这么久了,还有别的人有人有有人用过吗?没用过是吧?好吧,那就是你们没用过吧,我也没办法。
你不去用我有啥办法呢,对不对?
有有人用过吗?就没有一个人去用。那你们都在干啥嘞?是。没有人用。都在用啥。都在干啥?我就不想播了。什么时候用了,我再继续播。有人玩过吗?这这个 model道。有哪位兄弟玩过这个mod的。
我已经我我那节课讲了那么多,我靠这是就跟放屁差不多是吧?没有人没有没有人没有一个人用过。对。
啊,那么这个模型懂是吧?清楚,那这个这个那我现在就问啊,就是咱没用过了,咱就退而求其次啊,你没用过我也没办法,对吧?我也没辙,对吧?然后这个spring四阶说你这个呃你你清楚是吧?
OK那那你知道这个X是啥吗?我现在就问这个X是啥吗?不不是我知道你这个WX是一阶项,那这个X是啥,你不清楚吗?X是啥?X是啥?这个X我不是问WX这一阶项我知道叫一阶项,但X具体是啥?康业平在吗?嗯。
对啊,就是ID啊。对OK。那好,那我的问题就是OK那我现在用这个模型,那我接来就用这两个特征,这个能理解是吧?这个usI和这个艾 ID我就这么闭着眼睛丢进去,你们觉得哪个地方不合理,有没有不合理的地方?
我现在把us IDD和it IDD这两个ID对吧?这两个列都是ID嘛,我丢进去,闭着眼睛丢进去,你们觉得哪个地方不合理,有没有不合理的地方,还是说可以直接就这么训了。有谁有谁看出来问题了没?
现在领导对吧?现在这个团队leader说okK这个有日志已经来了,然后拿这个模型去训练一个拿libFM对吧?现在有一个log点SV对吧?丢给丢给。对吧你你给我训练一个模型出来。然后呢。
你就拿着吭哧吭着拿着UID和艾 IDD这两页对吧?丢进去,然后丢个这个模型,你们觉得哪有会会不会有问题?啊,就就这么就直接这么炫。会有问题吗?摩擦距太大,什么叫摩差距太大是啥意思?摩擦距是什么意思?
标准化,否则迭代次数特别大。什么叫做标准化?标准化什么?我们我们要聊清楚这个事情。摩差距太大,什么叫摩差距?我没听听明白UNA你给我解释一下什么叫摩差距太大。数据标准化。数据怎么标准化。
给我解释一下数据怎么标准化。啊,那个优娜呃,我觉得你说对了一点。我觉得你说对了一点就是。呃,哎呀,我跟你讲凡事就怕讨论,你知道吧?这一讨论啊就能讨论出来每个人的这个这个点在哪啊,我我我就凡事就怕讨论啊。
就怕说啊,一说我就知道你什么什么情况了。这个优量其实说到了一点点啊,说到了一点点。嗯,你说到了一点点。然后这康威平是51334是吧?嗯,你觉得我这么训练可以吗?就丢进去。
然后还有这个UNUNA说了一句话,叫什么X减U除以方差。这个这个是是这个模型要做的事情吗?我现在是这个力部FM这样的一个模型,需要做这件事情吗?需要做这个特征的这个standardize吗?
是。
康瑞平,你觉得有问题吗?就我我现在我现在什么都不干啊,okK我有这一类ID,然后有这类ID丢给列FM,你觉得会有问题吗?你觉得哪会有问题还是没有问题?那个优娜,我提示一下优娜说的是呃,你说到一点啊。
就是从零开始编啊,这这是一个嗯。对,这是一个要做的事情。但说到一点,但是还没说到点上有点靠有点靠。就这么丢进去就就O了。对,然后训练出来一个模型,然后这个模型的AOC到了0。8,很开心。
我这周上了集训营,上了集训营的课啊,我我非常不满意吉训营的这个集训营的这种风气啊,我特别的极其的不满意啊。我今天上了一下集训营的课。嗯,我我这周上了一个集训营的课,我非常不满意吉训营的风气啊。
但我觉得在就业班里面会好很多。就业班里面好很多。都需要往ho,这个不是oneho吗?这个司间,你这个不是oneho,这是tto hot,还是noty hot?这个不是换合同吗?啊,想不出来什么问题啊。
那我来提示,我来告诉你们。啊,这个东西直接丢进去,你也能训练啊。你也能训练,但是有一个问题,你有没有看到这个啊这些ID的这个。啊啊,我不知道你这个one后的是不是啊,我讲了啊。
就是这些ID会不会有重复啊,兄弟们能看出来吗?你能看出来我的点吗?就是你这个usID跟这个艾特 IDD会不会重啊,都是6位数,大哥。
那针对这个立白FM的这样的一个X这样的一个收入,他是不管你是你是UCF,他是不认的,这个不是FFM是有fe的对吧?你用fe你可以区分它这个东西没有feel的。
都是ID。假设这个userID跟这个SID是同一个数。怎么办?兄弟们。对吧明白明白了没?对啊,康玉平,你知道我的意思吗?就你知道我说的点吗?就是这些都是feature,这是都是一位数。
你要你你要把它给拆了。对,就你首先你要check一下,你你这个user IDD跟这个it ID是他妈是不是有重复的。对吧你肯定要想清楚啊,你想想看我举个例子。
假设这个user IDD是这个248676OK那他妈有个艾 IDD也是这个数字,那你丢给这个模型不就有问题吗?
这不是很显然的问题吗?对吧你肯定要你肯定要进行一个重编码吧。
肯定是有无数的人会去。肯定是有无数的人吭哧吭哧闭着眼睛做。假设使用这个模型一定是有的,不用看这种人90%都这么干啊,肯定有啊。他们就没考虑到这个问题。那这个模型学的是什么?这个模型例FM的突出点是什么?
是第一项吗?不是吧,是第二项是吧,他要干什么?
他要学的是这个影像量,对不对?他学的是这个影销量。那对于这个模型来讲,如果你两个IDus IDD一样的,us ID跟ID一样的话,那他不是就当成一个向量去学习了吗?那你觉得对吗?肯定是不对的。
对吧就就这一点,我跟你讲,你从一开始有很多人拿到手据就会犯错啊。肯定的,不用看。如果是放在集训营,10%所有人全部会出错啊。如果是放在就业单,90%人会出错。嗯,就这个意思。
那OK那我们现在来che一下这个事情。我们来check一下,也就是我们的这个呃第二列,对吧?我们的这个第二列第二列是什么ID呢?Yeah。第二类是us IDD是吧?最后一点是I IDD。哦。
那我们去看一下这个呃这个usID有多少个。呃,对于其他的模型呃,要不要处理,不要来问我自己去做。OK不要问我,我也不想回答。呃,我我我是一个这个这个这个篮球爱好者啊,我觉得篮球里面有一句很经典的话。
叫just斯 do it啊。不管这个模型什么。然后那个sppriring斯杰曾经跟我讲过,说那个国庆的时候每天看一篇paper,然后写笔记,我告诉你这个东西等于拉ing。你你做的这些事情是是zero。
啊,那么我看到UCIDUCID有140万个,对吧?有一呃有140万个用户,个是百千万、10万百万。那我觉得我觉得就是你在国庆做的事情等于纳ing。等于什么都没干啊,因为没有什么意义。
因为你们是你其实没有什么做什么笔记没有任何意义。啊,然后我也知道呃。啊,我也知道啊,上网的课很痛苦啊,就很痛苦啊,因为老老李被我骂。啊,就是上我的课会会很痛苦啊。而且有些问题我我我也是拒绝回答的。
但是没办法啊,这就是我的风格啊。我会坚持我会坚持我的这个一贯的风格啊。就包括啊就包括在四期里面有一个同学呃,叫什么来着?我就点名啊,叫做出尘,对吧?
初晨曾经讲过说有没有人在推荐算法里面n director呃。我就说没有啊我就是说没有啊,你你就是第一个啊,就这个意思啊,那你觉得会没有吗?怎么可能吗?对吧这玩意儿出来了都好几年了。哎哦,这是第三个。
那我们看一下第四个。是。啊。啊,根据这个note vector的这样的呃一个结构,后面衍生的这些把s info举呃弄进来的这个这个案例。那篇paper。后来那个康业平当时给我提了一篇paper,对吧?
就是那个淘宝的那篇那篇论文,那个就是B链的那个呃B链的商品的那个推荐,那就是把note vectorctor把他的那个s information把它融合进去了。用note的模式去训练了。
人家都已经发了论文了,你觉得在note vector上没有人用来推荐算法。当然我也能明白说你可能是要要要代码而已。对吧。啊,就我我我其实我觉得其实。是呃,包括我带的团队也好,上我的班,上我的课也好啊。
其实会很痛苦啊,我不会给我不会给大家留任何面子。个十百千万10万2024万对吧?那么这两个这两个呃这两个这样的一个呃。那么我们来试一下啊,ID1。ID2。OK我们看一下。
就是呃两个独立的这个ID加起来是多少。是。呃,16100呃千万10万百万163万对吧?163万的这样的1个ID那么。呃,我们来看这个ID3。嗯,像note这种东西都已经烂大街了啊。
就被无数的人用在了推荐系统里面了啊。你想想看这个那个呃就是淘宝连这个B链的这样的一个及n融合s information的这样的一个paper都已经在去年都已经发出来了。那你觉得他们的推荐团队。
他们的同学没把这个用用到系统里。不是在搞笑吗?对吧?呃,如果这个这个呃如果unic克出来之后,也是16309451,这说明user IDD和艾 IDD之间没有重复。
你就可以你就可以闭着眼睛去用。好,果然有重复吧。哎,你们能看得见吗?
啊,这个是呃这个是140万。说明有23万的重复,对吧?啊,然后呃你们可以给我一些就啊。康一平哎。我说的没问题吧。这样的一个逻辑,有23万的这样的1个ID重复了,那你觉得能训练吗?那肯定不能训练。
是不是对吧?显然是有显然是有问题的对吧?OK好。OK那我们今天做做一件这个事儿,我们就按照错误的方式来做啊。我前面有一个很多的呃,有写了一些代码。あ。我们就按照错误的方式来做。
我们看我们能得到什么样的结果啊,得到什么样的一一个这个呃这个牛逼的结果啊。Oh。那么我我在判断它的label,对吧?是。啊,这个是读取这个logo view的log点CV的这样一件事。
OK那么呃这个已经按照按照我的这个立白FM的这样的一个格式,已经在输出了,也就是。
呃,这你们应该能看得见啊,我把它放到中间来,就这样的一个格式嘛,对吧?就是label嘛。这个之前我在之前也说过了嘛,这件事情。对吧我就先把它给生成,那这是它的value嘛,我就标一嘛。
是一的话就是啊就是呃。他应该没有别的吧。没有别的讲了。OK那就就这样。
那么就这件事情嘛OK。好。那么这个地方我我有一个shuffle嘛是吧?我有一个suffle嘛,我现在就不管那个什么时间戳什么,我先随机先shauffle一下嘛。Yeah。比如说我们现在呃从呃。嗯。
从一开始吧。那么我们先先生成一个loggo,也就是生成一个整个的这个从训练机跟测试机都放在一起,我们先先放在一起,先把它给生成嘛。Oh。268万对吧?个1百千万、10万百万、268万,然后再。确定啊。
那这是没问题的嘛,对吧?那呃数数量几是对的。OK那么。我们可以去看一下,就是。OK就是0。8和0。2嘛,然后我们把这个呃我们用80%的数据去,我们抽一批数据拿拿来训练嘛,对吧?嗯。我们这个训练机。
我们就就是串后面有个编号啊,标标成一就行了。啊,那么呃我们可以去看一下,就是。看一下什么呢?看一下它的这个呃就是正负样本的这个分布的这个分布的比例是不是?是是不是合合理的嘛?是不是这个合理的那这正样本。
这是负样本。这设备是均匀的是吧?对吧它是都是千分之8嘛,对吧?就是千分之8的点击率嘛,千分之8的这个交易率嘛。那么哎我去。OK那么这个是这个是啊这个分布式没有没有失衡嘛,对吧?至少在这个量级上面失衡。
那么O那我可以可以去进行一个。呃,一个训练嘛。那我在这个地方我有这个。这样一个呃呃八维嘛,对吧?就是我前面是八维嘛,然后这个呃。learnrate,然后regization,然后我们迭代30个。
我们试试看试试看是一个什么样的一个。一个结果我看一下啊,也就我们把测试结输出来以后,它有output呃,这个这个叫TMP,我这个TMP就是out的结果,应该就是它的那个。
out的结果就是它的那个结果啊,最终的这样的一个结果,我们来看一下。
,O。那么他现在在训练嘛,那么我之前也讲到说这个训练集跟测试集是没有这个。训练集跟测试集是这个这个准确率是没有这个可参考可可参考性嘛。啊后就看AUC嘛,对吧?Yeah。对。Yeah。OK这个训练完了吗?
啊,这个应该是在这个写这个模型。活动。啊,然后我的问题是这个训练集是这样的一个数据。然后这个测试集是这样的一个数字。那他我我的问题就是啊这个这个训练级这个是0。相当于是准确率是呃99。16%嘛。
你知道是为什么吗?康玉平。你知道为啥吗?然后为什么测试集这个准确率是0。999915?谁知道原因?啊,对啊,好,就这个意思啊。因为我们刚刚已经统计了那个。呃,已经统计了那个那个那个什么嘛。
呃呃就是那个那个准确率嘛。对。所以呃所以。所以呃不是叫比例失衡,这跟比例失衡没有一点关系。比例失衡是一个比例不均匀,是所有点击率预估。所以我们这个模型排序模型里面预估是一个常态的这样的一个呃。啊。
常态的这个这个常态的这个状态,所以比例永远是不平衡的。对吧那他卡一个阈值,怎么卡,你都是对吧?你肯定怎么卡都没这个了,没没有这个合适,都是标标成零就行了,对吧?所以结论就是什么?
结论就是这玩意儿不具备任何参考性,对吧?准确率accurance要用AOC来算。对吧OK那么呃。我不是跟你说了要用AOC吗?所以我的意思就是这个要用AOC啊。对吧所以这个在这个在这个model里面。
它的这个accur是啊不具备参考性的。也就是就是我们当我们把这个FFFM的model把它把它给dump到这个硬盘里面。为啥不用UC?我不是说要用UC吗?
然后我们把这个model要dump到这个硬盘的时候,ok我们来呃我们要去做一件事,就来计算这个AOC嘛,对吧?那么OC的话就是呃我们可以看一下,就是tamp的这样的一个结构。
temp的结构就是相当于是把测试级的这个就我觉得你问的问题都他妈挺尴尬,靠。嗯。然后呃ok那是他预估的值嘛,然后我们把这个拿到这样的一个值,我们来看它的这样的一个。LC是多少嘛?はい。0。5对吧?
有没有问题?肯定有问题。有没有问题?兄弟们,这个0。5有问题吗?肯定有问题,对吧?0。5相当于什么?来,谁告诉我。不是太低了,0。5意味着什么?对,没错啊,优娜说的很对,这玩意儿就是随机啊。
对你瞎猜都是0。5,你怎么猜都是0。5。啊,那么OK那我们现在在找,我们看一下就是呃问题在哪,对吧?嗯。啊。OK那么我们的问题是什么?为什么是0。5啊?肯定有问题。那么第一个问题一旦出现了是0。
5的时候,你会怎么做?兄弟们。我相信诸位从呃一开始入门积极学习的时候,应该大部分都遇到说模型训练,我靠AOC是0。5的情况。那么你一旦你碰到0。5,你怎么做?你的第一步应该做什么?一定有人碰到过0。
5啊,一定有障碍头脑呃,就尤其是入门者啊,障碍头或者是和尚摸不着头脑一定有。如果你碰到0。5,你咋办?啊,那OK那么瑞斯杰说这个呃这个呃。啊,换特征找特征是吧,检查数据,增加特征,还有别的吗?
还有别的吗?没有别人说话了吗?UNA来,你遇到过你没有遇到过0。5吗?你遇到0。5后,你之后你你怎么做?还有这个呃这个优娜,你有没有绿到0。5,你没有是吧?都没有遇到过564127。
你们都没遇到过换模型,还有别的吗?来来来来来,这个都大家都来说一说,你遇到0。5你,你应该怎么办?来给我点反馈啊,我们就来来做这件事情。啊,你在实际当中一定有人遇到过0。5,一定有啊。你们没有遇到过。
都是一开始就0。0。8了。水台。Oh。啊,修改学习率,查数据,训练数据分布不一致。跳餐。没遇到过。好,可以挺好的啊。好,那那我来告诉你们正确答案。就是一般来讲啊。
如果你的这个呃你的这个操作是没什么问题的啊,那么一般来讲你要修改你的配置。对,先看有没有bug。对。先看有没有bug。对,然后再看数据有没有问题。我觉得UNA说的是很对的,就是这个是呃我们的常规思路。
其他包括那个谁说的也还行,就是先查数据。对,一定要先查数据。就是呃谁说的,刚刚有有一个人说了啊,5134说了啊,先查数据。对,基本来讲如果是0。5,你先查代码有没有bug啊,不要想一看0。5,我操。
这他妈太低了,我我他们就开始怀疑人生了,不不要这样做,一定是你的流程上有bug,那我们来看这个0。5是不是流程上的bug,先检查流程就肯定先检查训练数据,对不对?那么信练数据它的输入是什么?
你一定是啊因为立百FM是不会出问题的对吧?那么这个这样你公开一个利润是肯定我们是相信他的那我们不相信,唯一不能信的就是我们自己对吧?那我们我们自己哪些地方改了,得改改了配置,对吧?那这个输入是吧。
data乘移,然后这个输入呢是data testest一O那我们输出的结果是这样的一个结果。OK下面呢是我们的这个learn rate,对吧?learn rate看起来也没有问题,大部分呢用0。
001开始,对吧?我们用0。001,只是说收敛慢一点也没有什么太大问题。那么regization也没有问题。然后这个init呃呃那个standard这个标准差异也没问题。那么迭代30元,这个也没有问题。
O那我们再看我们的这个。再看我们的这样的一个呃,再看我们的这个算AOC的这样的一个结果,是不是算错了?然后啊这个是AOC这个开路的AOC这个我们在之前已经啊用了很多次。okK没问题。
那我们这个输入这个tble是我们这个模型预估的结果。然后我们的问题在哪?在这个地方是吧?我用的是另外一份数测试数据,对不对?ok。是。Yeah。能理解了吗?好吧嗯。O那我们来看我们的这个效果哦。对吧。
0。8。啊,然后不要小看这样的一个东西啊,就这个东西在这这个这个这个大家。这样的一个过程当中会经常出现okK那这个得到的一那这面8对吗?看一平,你觉得对吗?很开心是吧,有0。8了,我操你觉得对吗?
哪不对?来,你觉得0。8是合合理的吗?😡,你觉得0。8合你吗?来看一片。小别,你知道你觉得合理吗?😡,啊,你就完事儿了,对吧?哪不合理,有没有不合理的?这个0。8是不是还有问题?谁能指出这个0。
8问题出在哪?你敢信吗?这又是什么意思呢?假设我是lea导,我带着你们做事儿。😡,对吧你们现在有十几个人来了,今天有1413个人来了是吧,加我一共一共14个人。有13个人来,我带着你们坐事。
你们给我报了个数,你们说你们的AOC到了0。8,你觉得我敢信你吗?😡,你觉得我信吗?我他妈要是信你的,我靠,我我就堪忧了,我就完蛋了。😡,来,谁能告诉我0。8有啥问题?啊,对,没错啊,好好啊。
这UNA说的非常对啊,这就是回到刚开始的是,这是有问题的这个问题就在于呃有数据是重复了,就是你的这个us ID和艾 ID又重复了。okK那么我们都那我们要做唉那么我们要做一件什么事呢?Yeah。
那么我们我们要把它这个进行重编码,对吧?就是要一个呃。这个这个reing code相当于是那我们怎么编?啊,我们相当于这一列是us ID这列是艾 ID对吧?我们拿到这样。
我们相当于有一个这样的一个dict。那么这个dict呢是要去读取这个loggo view的这样的一个loggo view,然后呢把它进行一个呃读一呃唯一的编码。对吧那么怎么去怎么怎么来做件事啊。
假设我们有一个这样的一个dict,那么这个dict呢是做哎。啊,我没有用过label in code,我也不知道你在说啥。Oh。那么怎么去做呢?就是呃。这个叫做我们可以认为它叫做这个叫ID对吧?等于0。
Yeah。啊,我我这里暂定就是我们认为us色的呃是这样的一个是U。us色的这样的一个开头呢是U,因为它这个。嗯。第一列呃第二列是user,我们就U,然后这个叫I,对吧?二三二三。那我们先先先来插U。
对吧?先把U给它插进去。那我们再来插这个iteen,对吧?再把这个ite给它插进去。这地方我们打一个打一个print出来。OK那么这样的话。
我应该是有一个呃我们应该是有一个呃这个这个独一的这样的一个编码了。也就是我们用这样的1个ID啊,就唯一的这样的1个ID这个全局的变量,就是这个ID是全局变量,然后来做这件事情。这个没毛病吧。
这样的一个逻辑,我们来乍一看这个呃。乍一看应该是没毛病的对吧?那么我们要生成数据在这个地方去进行一个生成,对吧?我们所有的这个temp一去用这个呃一旦是涉及到这个t一用这个东西。呃,这个地方是什么呢?
这个是time一,应该是U,对吧?就是有OK。这是I。う。啊,那么这样的话呢呃看起来应该是对的。Yeah。Yeah。看有没有这个代码报错。那么这样的一个数据处理呢,至少来讲我们在开始应该是对的对吧?啊。
140这也就是UCID总要报错了,对吧?呃,这个是康慨的是脑 stringO,那我们就把它改成sring就行了。报的是30号的错误,对吧?哎,我觉得很奇怪啊,就是嗯。哦哦哦哦,我知道他的意思。
看见报错是啥意思。Can only contact string, not in to string, okay。好。然后呃我要说的就是label code,我从来都没有用过啊,我学了继续学习。
学了这么多年,我都不看这个概念。我再强再次强调一遍啊。哎,好,这个地方也报错了。KL这个地方报KL就是说这个呃这个数呃数字呢没有在这个里面,那这是有问题的,对不对?上。う。这样的一个逻辑是有问题的。
说明没有插进去。对吧。呃,可能问题在哪呢?我觉得问题呃,我觉得这样的一个代码的问题在这个地方。Striep。就是它很可能有字符串的这样的一个嗯一个字符串的一个问题。
就是我必须要把它的那个呃把它后面的个空格和那个。涉及到三的都会死追不掉,就是把它那个换行符给它去掉。你再来试一试。因为我所有的编码都编进去了,所以这样的话呢,说明这个代码是有bug的。对吧。啊。
OK那这样的话已经插进去了。现在在在进行这个。那么再进行运行。我们先看一下,就整个运行完一遍啊,看看会不会报错。O那没有报错,你看到有83看着没?这样的编码应该是对的啊,按照这个逻辑来讲,应该是对的。
OK那我们这个时候呢,我们再2。啊,这个比较长啊,较坑。Yeah。那么我们把这样的一个啊,我们经过了这个读一编码,这个叫oneho,明白了吗?这个是我的过程叫oneho。
那么这样的一个过程的这样的一个呃一个一个呃一个code呢,我们来生成这样的一个数据。那么这样做呢才是对的。对吧。okK那我们看一下我们有没有进行那个随机,对吧?
有随机的suffleshauffle是有的。那么好,那么我们来。啊,这是把之前hat打出来的。Yeah。OK那么呃有了这样的一个训练数据跟测试数据之后。啊,我们一样来确认一下,就是呃我们的这个。
是没问题的是吧?对吧这个量子应该也是没问题的。这个数据集应该是没问题的。OK那这个数据就是没问题。那么这样个比例也是没问题的。那我们现在来训练一个毛线,穿一个没哒。Yeah。哎,为什么会有错?Okay。
好,这个print。好,那我知道了。啊。我想想看法,那不需要那样去做,就直接那个什么就行了。把这两行去掉。就O。OK我们拿一个正确的这样的一个结果。啊,我不知道啊。我也不知道。我我不确定啊,兄弟们。
我我不确定,因为我也没串啊,我是现串的。我看看我们看看结果是多少。So。我也不知道挨打哪。我是现串的啊,这个idea是是我我是我呃前前几天想出来的啊,这样去去讲这个事儿。我之前也没这么讲过。
我们现在来现场实验。好,那么已经写写好了,对吧?我们争取一遍过。那么在这个地方要改一下,对吧?我们要是改这个输入。0。8是吧?OK那么结论是0。8,那么这个0。8是质信的吗?是不是直线的?兄弟们。嗯。
是不是执行了这个0。8。来给我一个反馈知情还是不知情?致信O好啊,不错OK那么我的问题就是ok我们。特征太少,你你你你有经验吗?死不人死皆,我觉得你你的经验是零经00,你的经验为0,你知道吗?
你有经验吗?你你你你说了这句话,你不觉得你这句话有问题吗?特征太少。😡,你知道我们用了多少特针吗?我们用了163万个特征,也就是有这个model是有163万个这个呃ID的,163万个vector的。
我们还少。我们来看一下这个模型有多大。这个模型有158兆。这特产少吗?s思杰,你觉得你这个话不不前后逻辑不有问题吗?比较少吗?一共有320万行。这个逻辑少吗?你有经验吗?你的经验在哪?啊。啊。
这样做是合理的啊。首先我呃我要跟这个康玉平说,这样做是合理的。嗯,那么O那我的问题就是。是。那么我的问题就是。啊,那么我们怎么去做?OK那么我们刚刚这个549呃,931说ok那我们执行ok那好。
那我们想啊我需要在我的这个baseline,那我们有一个baseline这样一个model了。这一个model就是呃0。88046,对吧?我们要往上搞,对吧?那怎么搞30轮30轮重要吗?
30轮就已经work了嘛,对吧?不一定work是吧?我们依据今年来讲我们的这个一po应该是呃我们可以设一个配一个比如说我们比如说是30轮对吧?我们不用开我们设一个60轮。
我们看看就是我们的这样的一个呃这样的一个调参啊,调参的这样的一个逻辑是不是能有。我们首先要记录一下啊。这的是30轮对吧?退起来UC是多少来着?Oh。是这样的一个一个逻辑。那我们现在就改改一个变量啊。
一般我们来调三来讲是一个变量。啊,因为这个呃数据是比较快的啊,所以这个训练是比较快的。我们看看我们在训练60的时候,AOC会不会再测试几上OC会不会涨。我们啊我们就加大这样一个轮数。啊。
你说的这样一个啊,你说的这个问题我们后面来解决。啊,我们需要在这个像要在这个model的这样的一个呃。呃,这样的一个呃环境下,我们来看我们这个效果有没有涨,好吧。Yeah。好。0。2838。
我们来看看我们刚刚的re扣的啊。0。8038038跌了,发现了没?Yeah。OK那么这样的一个参数下呃。呃,我想想看哦,对,那没错,没问题。我们没有改修改数据,那是没问题的。在我们在你看在呃十分位。
百分千分位,我们在千分位上跌了一个点,不应该是在万分位上跌了跌了8个点,对吧?这个是跌的。那么okK那么我们为了防止说我们这样的一个呃单一的这样的一个逻辑出了问题,单点出了问题。那么我们呃。
做这样一个训练,我们把它调成100试一试。因为也有可能就是在这个模型训练当中,他有可能会会去去把我们的这个AOC去反复的。那么我们我就觉得我们需要去double check一下。在我们在二分查找的时候。
要要要做这样的一个事情。Okay。嗯,这个要要一个几分钟啊。这过程其实挺枯燥的啊,其实你你就在不断的去根据你的这样的一个啊你的这样的一个 experienceper。
然后不断的来调这个调节你的这样的一个模型啊,就我们每天做的事就这就这种。然后那个康远平说的这个啊ID特征呃个性化呃很严重啊,我觉得你的评价呢你的评价是没问题的啊。
那么呃我你们应该都看过集训云里面的那个有一堂课,叫做这个特征工程这堂课。那么呃我想问一下,就是我们这个ID特特征是呃里面有个概念叫做呃h level特征还是low level。是高维特征还是低位特征?
来com here。来,谁回答一下,我们这个是高伟还lowlay我的ok。呃,它的泛化能力是高的还是低的?来告诉我。对,那么呃他在工业界的学名有一个学名,我不知道你们还记不记得啊,那个是我的PPT。
那个叫自解释特征。叫自己解释自己。什么叫自己解释自己?也就是康卫平说的这个叫做个性化严重的。什么叫个性化严重,这个就是个性化,明白我意思吗?ID类特征就是个性化。因为我代表了我自己我这个ID。那么好。
这个100多马上训练完了。那么我这样训练了100轮,我们来看呃,我们在其实训训练100轮跟训练30轮唯一的差别是什么?也就是啊时间上的差别,对吧?那么我们在这个。呃,掰手指没掰手指,拿掰手指。
我没有掰手指。呃,我们唯一的差距是什么?我们的差距是什么?也就是说我们的训练时间长了,那么这个训练时间长了对我们有好处吗?没有好处是吧?我们训练尝试为了什么?为了担心它模型不够。
就是它出央的这样的一个状态,对不对?对吧。那们来砍价一0了ok。100万是这样的一个逻辑。啊。那我们要记一下。0。8033对吧?那么又又降了,对吧?在万万分位又降了,那么说明什么?30人就够了是吧?
那这对于我们来讲是不是一个好消息?也就是我我花很短的时间我就能够得到一个结果,对吧?OK那么我们对于这个模型这这样就已经完事了吗?没有完事儿,对吧?那我们对一个对这样的一个模型,其实还是没有这个。
还是没有学到啊,学到很好。是因为什么?我们并没有有一个尝试,也就是我们会把这个迭代次数先回回滚回滚成这个30,对吧?那么呃有哪些问题呢?啊,我们看到就很多的paper里面,它讲的ra它的初始化是0。
001,对吧?我们先测一下这个我们测一下这个0。01和0。001的区别。呃,也就是呃这个呃le rate的这个大小说大小决定了什么?来看一遍,你你知道吗?
learn rate的lear rate调大和le rate调小,这个区别是什么?不管什么模型,比如说很多的深度学习模型。那么它有没有它调大和调小有没有风险来。
谁知道hen rate调大和调小有没有什么风险。我 can tell me。风写在哪UNA局部作右no不是。不对。9不9这个答案是错误的,风险在哪?对,没错,UA说的是对的。也就是你在调大的时候。
你这个梯度就会走的很快。那么走的很快呢,它也就是它这个模型的这个参数啊,它就收敛不到那个局局局部最优,它到不了局部最优对,没错,没说的太对,就是啊如果太大的话,它就会跳过它。对,没错,你说的特别好。
然后太小的话,有一个问题是什么呢?就是它走的很慢。所以这个其实大家可以看到就是ADAM的那样一个优化器啊,也在 flow里面,他们有ADMM也就是说在前期的时候,它会让它的步子走的快一些。
然后在这个后期的时候啊,它会让它的步子走的慢一些啊,也有很多的配方里面讲的,就是某些特征这个前面它的梯度grade的很大的时候,它会在训练的后面的时候,它会去进行一个调节。
把这个grade的这个步长给它减小。这个要根据数据来。嗯,那么我们这个啊这基于我们这个任务,这这个这个n rate是。
它这个le rate应该是没有这个操作的,因为我们选不了优化器嘛,我们的优化器就是SGD这样的一个。就在这个地方。就这样的一个参数,它的这个n瑞是不变的嘛,对吧?这个e塔值是不变的。
那我们就不用管了,暂时先不用管这样这样的一工具了,对吧?我们来看看调小 learn rate刚刚是调大还是调小okK也变小了是吧?记录一下。那么啊。看你们应该能够看到到好,那么这个是0。802,这个0。
8046,也就是什么呃,这个den rate小的时候是OK的,说明0。001没有它在这个十分位百分千位,它的千方位小了两个点,看着没?比0。8046小了两个点啊,0。8046两呃2。6个点,对吧?
在千分位小了2。6个点O那么结论是什么?结论也就是这个n rate我呃但是有很多的这个论文呢的 rate呢是0。001,就这个东西,就这个值。很多是这个值。然后呢呃。然后我把它调小了以后。
发现效果好了是吧?OK这就是实际的实际现现象就是这个ok那我完事了嘛,没完事儿是吧?还有一个东西,什么没变?那么它变小了,那我们要回滚什么?回滚就个这样一个参数,对吧?那么啊我们再试一个。
也就是那是不是调小。那么啊我们发现就是调小这个n rate,它的这个AOC是涨的对吧?它在万分呃,在千分位会涨两个点。那么我们再接着调小,那么朝这个方向接着调会不会有啊,是不是看看它是不是呃。
是不是会更好,对吧?我们不用调那么大,就是调到0。005就行。啊,没错,你说的对,也就是呃其实不用网格搜索,其实网络搜索还是有一定的啊。一定的怎么说呢?网络搜索其实。嗯,他会做的很。呃,怎么说呢?
就是他会有一些我觉得网络搜索,你你如果设的不准的话,其实也是会有问题的啊,因为这个不耽误事儿嘛,对吧?我们来看一下UC是多少。0。804啊其实还是在降是吧?那说明那个是最好的对吧?
那我们看看我们第一个的操作是对是最work的那O那我们把这个第一个操餐先给它贴过去。然后我们要做一件什么事,还有还有哪个参数?我们把这个呃就inbedding的参数给它变长嘛,对吧?
然后呃呃我为什么要这么做啊?就是我们来说一件说一件事啊,就是网格搜索其实在工业界不常用。其实没有多少人没有多少这个同学会去做网格搜索。因为为什么?因为你要那个网格搜索怎么说呢?它这个基本上都是经验值。
也就是这就是为什么我一开始这个参数是最好的,就是经验experience。因为没有时间给你去做网格了,就是你在做这件事情,你所有的负载的话都会很大。也就是怎么说呢?嗯,怎么说呢?就是这个事情如果我来做。
我就不需要了啊,我就就拍就行了,拍拍那么一两个值就OK了。是。嗯,其实在呃工业界其实很少啊,基本上基怎么说呢?就是它的参数排定了之后,一般来讲啊就就做的很少了,就大家不不不再去找那些参数了。
基本固定住就就行了。啊,对,就是最开始你你稍微去测一下。是。啊,那么这个这版我刚刚调的啥,对吧?把那个inbedding那个呃参数把它给给调大了是吧?那么inbedding调大了之后啊。
那个数数据量会大,对吧?那那sve model会稍微慢一点啊。啊啊我觉得康玉平说的可以吧啊,可以,你也可以也可以这么做。嗯。我们看Ebedding增大会不会有效果,哎,还有点有一定效果是吧?Okay。
O那么啊我们在做的时候。呃,0。805这个是最高的是吧?好,我们先先就停到这个地方。好,那么那么这个时候呃我在想ok我我是不是调仓的空间不是很大,是不是很大了,对吧?那我们还有什么东西可以做?
突然发现还有这玩意儿,对吧?对不对?是吧突然发现我靠,对吧?我忘了对吧?还有这个东西。是吧那么这个东西有哪些能用的呢?あ。那么这玩意儿这两个东西有哪些能用,那就只能用C了,对吧?那我们现在只有C。
那我们就用C,对吧?那么怎么做我的C是不是要也要encode一下?兄弟们,这玩意儿不会重嘛,对吧?肯定重了,对吧?我肯定要用C,我是一定要用C的那我我用C的时候,我我也要去做一个编码是吧?ns。诶。好。
这叫我们叫Clan得了。那我们这个地方叫Cance呃。那我们得考虑一下有一个问题啊,那么们在做数据处理的时候,其实是有一个有一有一个问题啊。哎呀,我去。就是这个category啊ID和这个啊。
和我看一下啊。这个这俩对吧?是要去放在一起的对吧?它这是一棵一棵树嘛,那么要坐在一起,那我们怎么做?3。哎,哦,4,那就是4了。对吧。我们我们这个四叫C1。然后还有个42的。行啊。
这个叫嗯把它搞成一得了。加成一个2是吧,C以3。然后C1。四二四三。搞了个1就下来。我们看一下我们有多少个C。啊,但是这个C有点问题啊,就是这个cut嗯cate ID这个里面有的。我们看有多少啊。
有1000个C,对吧?其实是有1700个C。为什么1700啊不是1000,有有这个b case在里面。Sure。啊,前面还有空格OK。那么这是有1700个C。OK就是1699个C,那么我们把C打进去。
C烂是吧。这个点C所为这个点是C向下划线哦。triep,那么我们要去重新去编一下。是。四。0对吧。零对吧。C1对吧?O那我把C1搞进去了。那么C管进去之后呃,我们要做一件什么事呢?
也就是我们在UI查了之后,我们对ite,我们要去查一个C,对吧?OK那我们呃。我们可以看到,就是我们对iteen的时候,有这样的一个逻辑,就是啊这个是啊。Yeah。啊。
我们的这个ite ID对应的是啊category ID对吧?valueue对吧?我们要的是一个value和这样一个东西。
就是iteom IDD和这个 categorygory呃ID的这样的一个value。那么ok。这个时候问题来了。我们这个呃我们相当于是有一个itom IDD和这个啊。
这个啊category IDD这样的一个一个映射的这样的一个一个feature,对吧?我们映射这样一个feature。那么。然后我们把它加载到这个d里面,对吧?Yeah。啊,这是我之前写的这个。
我们来做一个这个事情。Yeah。但是我之前写那个也也其实也有点问题。那段代码其实那段code其实有bug。那我们需要得到一个ion cat,对吧?啊,这个爱通 ID,然后再是 category ID。
然后我们来做一下。i then看我们要插进去,对吧?把这个给他插进去。OK那么假设这个没有的话,我们就把它插进去啊。假设有的话,我们也等于它啊,就是这样的一个呃key跟value的这样的一个逻辑。好。
我们做到这个地方的时候啊,我们来running一下啊,看下我们的代码会不会有bug啊。会不会运行出问题?会不会有有有有有哪儿出了问题?报错啊,果然报错。啊,CO没有那个CO点C。没有这个文件是吧?那好。
他已经在运行了。那么在我们在这个地方的时候。加上什么呢?我们是不是要去查一个表啊?对吧。查一个什么表呢?四。I dont cat。啊。我现在不太记得说刚刚之前的那个。
我不太记得之前的那样一个呃那个那个AUC的这个具体值是是多少,但是那个值是有问题的。这个这个这个值多少,它就是一,你也没你也你也是不work的。是这样的一个逻辑,好吧。呃,就是什么意思呢?
就是在对于ID没有重叠码之前,那个AOC是多少都没有意义。我看看它是不是0。84,我们可以试一试。嗯,因为最开始的时候是一嘛,对吧?用衬衣来训练了,我们很快的可以去训练这样的一个。我们很快可以去训练。
就是它是多少,其实没有任没有任何意义。嗯,就他0。9A没意义。嗯,他是0。7,也没意义。Yeah。呃,不仅仅是说编码这个思想,不是说编码思想是说我们做事情逻辑要对,就是你的输入是什么,你的输出是什么?
你的训练集和测试集有没有数据穿业,然后你的这个特征之间有没有overla。呃,是说按照正确的方式去做事儿,明白我的意思吗?就是说你比如说刚刚我们可能大概有一个小时的时间试了那么多组参数,其实不work。
对不对?那那这不过搁这一个一个小时是不是浪费了,不是浪费了。嗯,这是你你的经验,就将来你就知道这些参数你选都不用选。明白吧。这是你的doomain knowledge,你要去学的。
所以我我我还是强调那句话叫just do it。就这个意思,你得去做啊,如果你不做的话。我都在做我这个事儿这种活我已经干了不下无数次了,我都在做,你们有什么理由不去做?嗯,是这样的一个意思。
因为是test一嘛,我们来看一下刚刚是多少啊。0。808对吧?啊,0。8082,那这个是没有意义的。对吧这是错误的测试机。OK那我刚刚已经已经OK了。这地方感觉吹泥穿啊。那么啊。千方位6个点对吧?
其实高了千方位6个点。哦,念了6个点,其实没有什么意义。那么呃我刚刚的意思就是在这个地方,那么我们要去查,也就是说我们的C是有的。哦,那么C已经有了,对吧?那么我们在这个ite里面呢。
就这根据这个ite ID呢,呃这个东西呢是ite ID。那么根据iteom ID去查这个呃ca ID。对,然后再ca ID再去写这个东西。OK没问题。那么我们再来看这样一个逻辑,也就是啊。嗯。
在这个地方有一个加加一个这个啊。我们来把那个太太ID把它给加进去是吧?我们看看呃,首首先我们想知道加这个特征有没有意义。对吧。啊,报错啊,他没有这个key是吧?这K没有,那么这K没有应该是不对的。
那为啥会没有呢?啊,社会有缺失,我知道了,没错,是这样子的。为什么会没有?是因为那个我们的这个iteen那个property里面不会覆盖所有的。我们会有一个衣服衣服。这玩意儿硬。这个我们来做这件事情。
也一样啊,那么if这玩意儿哦ok我们来做这个事儿,我们来把它插进去,就是它这个it IDD。啊,有相应的这个category IDD这样的一个feer。哎,不对。1234。ししも。Okay。
那么这个也就是说我们这个it IDD没有的情况下,我们嗯就。就不用插了,就不用加这个特征了。来,我们来看看我们的这个呃这样一个修改之后的这样修改之后的这样的一个啊特征抽取的这个逻辑是不是有问题。
我们看到我们这个code能不能装起来。OK那人能让起来了。好。那我们就开始训练是吧?那呃训练啊好,那我们开始训练,然后我们就这么做了啊,然后我们就训练出来,然后就得到一个结果。
那我现在的问题是我们这个过程有没有问题,来,谁来告诉我?康月平,你觉得有问题吗?对吧我我把这个特征,现在我们加了一维特征是吧,加了一列。那么这一列是category ID是吧?
有的假设这个ite ID呢没有查到,没有查到这个类目,说明在那个类目表里面没有记录的,它就没有对吧?就只有user跟ID item那么呢没有category ID那么这个呢是有category ID的。
那么我的问题是。My question is这个process有没有问题?康一平,你看出问题来了吗?问题在哪?没看出问题来,还是看出问题来了。就这么个逻辑,把这个ite的这样的一个抛泡贴把它给插进来。
问题在哪?数会不会少,还有别的吗?你为啥会走神,我都不走神,你怎么走神?😡,来sring时间,你看出来了吗?不挺活跃的吗?没问题是吧?好,还有人还有人都没问题了。那我告诉你是有问题的啊。
我我估计你们也看不出来了,一本里们也没怎么看啊,嗯拿我的话不当不当回事儿啊,为什么呢?我们来看看我们的这个这个我们来看看我们真真实的数据是什么情况。这样的一个东西。
这是它的这个ite IDD这是它的category啊ID的这个value6对吧?他有多少行啊?他有78万行是吧,78万行okK。那我们要我们首先要去确认拿到数据后。
第一件事一定是确认你这个数据是不是一一对应的。你有没有做驱重?到了12第二列。第二列是我们的一层ID。我们有41万个iteen,有有类目ID。那么呢这个类目ID的这样的一个映射表呢,有78万行。
这说明了什么?这说明什么?兄弟们来说明什么看不出来吗?那在对应的我们这样的一个对应的我们这样的一个这个逻辑,就是dt直接就是itune IDD插上这个,这会有啥问题。
这不是不是有bug没有看出来bug吗?兄弟们都没看出来,没bug啊,很对。bug在哪里?来。串行。什么叫创行?说了个。这他妈是串行吗?不是。是什么?是一个item可能属于多个类目。
也就是它有多少多个category。对永娜说的是对的。对,就这意思。那什么那怎么改?就在这个地方,我明明有一个ifos,为什么这个ifos会换成一样的了?如果他存在的时候,应该怎么去做呢?对不对?嗯。
对吧我应该去做这件事情。直接在这个方加,也就是。对吧。这样的话应该是对的。来,我们看看我们的这个输出的这个飞线。啊,这段也报错。啊。哦,我来看一下啊。我报错是啥呢?然后他有个映射。哦。
那这个逻辑还不能这么改。那么我们应该把这个什么把这个in扣的把它给提前是吧?你就直接在这个地方去做就行了。对吧。那么这个地方呢就不需要,其实是不需要去硬扣的了。把inco的和这些东西把它干掉。
就有C的地方都不需要有查这个类别特征的地方都不需要。啊,OK那么这个地方是有问题的。也就是呃。incode的这样的一个processor,我知道它的code。这地方要40。
OK那么这样的一个逻辑是对的吗?也就是有一些它是有多的对吧?有多的这个呃。啊,那么我们看到我们的数据。然后我们看到我们的数据就是。是不是有问题产产生的数据,我这个代码应该还是有bug是吧?
为什么会重复呢?对吧。那么我们要做一件什么事儿?说明是什么呢?是。那我们代码应该有bug,那么这个bug在哪啊?就在这个地方啊,它有这个time step。对,没错啊。到了R,这应该是呃。
02112342跟4。啊,逗好。找了4。逗好。高了。三。哦,他这个是默认是空格的那我们就必须要到了。P。OK那么。拿到之后呢,直接去s。好,那么我的问题又来了。前面有一个时间戳,我为什么要把时间戳带上?
我为什么不把时间戳根据这个时序来来做一个啊做一个顺序的这样的一个。做一个顺序的这样的一个一个操作。来,为什么?为啥我为啥不这么做?我为什么不印这不不这么做。来,兄弟们,我为什么不把这个时间戳号带上。
然后把这个iteune IDD对应的这个 category ID按照持序的这样的一个逻辑来加上。为啥谁能告诉我。我为什么不这么做?没有人知道是吧?😡,啊。没有人知道。都在干啥呢?想想清楚了没?
我为什么不这么做?为什么这个有时间说我为什么不让按照他的排个序呢?就是根据这个艾 IDD把它后备排个序呢。跟那个续来不多好嘛,对吧?还有续的这个特征。为啥呢?啊。Oh。没人知道。
来spring时间。Oh。不是都不是。都不是结论是什么?结论是回到我们的这个model。
这个model没有序啊,这个model是没序的,所以你有序也没有意义。就是你把特征整成序其实是没什么意义的。因为这个model学的不是序。不是一个类似于attention aware的。
或者说是1个RN这样的一个东西。所以它没有意义。你做这件事情,明白我意思吗?懂了吧。Yeah。还有别的问题吗?明白我的意思吗?就你是根据model来的,你这个model没有序。
这种东西filil deepFMFFM它跟序没有任何关系。它这个model是学不出去的关系的。啊,好吧,理解了吧。啊。😮,哦,好,那我知道。啊,它是一个空格。那这个地方就不能这么转。
让我们来看一下我们抄的东西。什么意思啊?我为什么要说这句话?我为什么要说这个序的事儿是什么意思?也就是说我们在做呃,我们在做排序任务的时候,你必须要对你这个模型的特性非常非常的了解。
这样你才能够去设计出呃,你才能够去使用更好的特征去做这件事情,也就是不要去走弯路,这也就是为什么很多人试了很多次,搞不上去,就这个原因。因为你对的模你的模型不是足没有足够的理解。
你并没有足够的理解它这个model的这样的一个功能,以及它的这样的一个作用。你正因为你没有足够的理解。所以有一堆人一天到晚不知所谓瞎鸡巴试,明白我意思吗?因为你对你的模型不了解,不是很了解,不是很了解。
Yeah。你得理理理解你的模型的意义用处在哪。Okay。啊,那么好OK那么我们这这个地方啊,你在41行的时候。其时样的时候是有问题的。啊,te姆三这个地方是有问题的。的时候带上0。这个都是。
所以所以结论是什么?结论就是大家没理解,没有理解,真的没有理解,没有理解自己在做些什么。没有理解,没有任何概念。都是在逼着家瞎做。就这么一个简单的东西,其实都有这么多的坑,你们发现了没有?
所以今天我为什么要拉出来说这个事儿?因为所有人都不懂,明白我意思吗?😡,所有人都没明白。就这个意思,你觉得你明白了吗?
为什么我拿1个12年的这样的14年的这个这是13年还是14年这样的一个模型来做这件事情?咱就别说别的了。那就不要再再说别的了啊,上我的课很难受啊,因为老被老被我骂。那么我们现在要去做一件事,就是。嗯。
哦。我们看我们家的这个特征有没有意义啊。呃,我看我的这个券是有券啊。全啊对吧?那我们就券3。是。你知道这就是真正真正可怕的东西,就是在这个地方。就是你觉得你可能懂了。
到你发现你真正做起来发现其实是一堆错误的啊。如果我今天不这么做的话,大家还得都觉得自己很牛逼了。我这个sring斯先在开课之前就说自己要出去试试,你试啥呀,你试。对吧还没上的时候,就说自己要试试。
已经很懂了。有啥好试的吗?81兆的还行。他应该为门应该能打开。要出去试试,我也不知道你试啥。你就试成功了,我觉得那一大概率也就是那面试官瞎了他的狗眼。Oh。嗯,OK那么train三是有了啊。
那么我们今天就补捉train3。最做心啊。OK那么我们穿个t有了,那我们检查一下我们的串,检查下我们的数据啊。哦。好,就是。我们来测一下。看一下比例有没有问题,应该是没问题的对那这个问题是没有的。ok。
OK那我们呃我们来做一件这个事儿,就是我们看看我们这个加了这样的一个Icate ID的这样的一个东西能不能有效啊。我们来看一下,就是呃我们券的这样的。就我们花了这么长的时间。
加了一个category ID的这样的一个特征啊。我们通过了各种精细的这样的一个呃debug的这样一个逻辑。我认为我的代码现在来讲是应该是没有bug了。那么我我们来看我们这个这这么一个东西能不能有效啊。
对吧就骂了你们这么多句,然后呢问了这么多问题,然后我们对吧?又花了一个小时来抽这个 category IDD我们来看看这个特征是有没有效的啊,兄弟们。啊,可能要调可能要调UNA说的是对的。
就是你其实你改了改了feature嘛,你改了feature,你的超餐可能要相应的去调整。但我们要看看这个feature的作用。看看这个feature是不是正向收益,不一定有用。不一定的。
不要以为就是加多了飞险是有用的。不会的,因为特征之间是互相有影响的。如果这个特征不好的话,会有会呃会有问题的。嗯,那这个三的话,这个地方是。嗯,就定那的改嘛,对吧?就之前说的这样的。啊。
大家我们看到我们拿到了一个很惊讶的一个很惊奇的这样的一个数据啊。我们发现了一个事情。叫什么呢?0。7了,看着没?兄弟们什么意思?很惊讶是吧?呃,首先我们发现了哎我们的数据啊。
在AOC的这样的一个呃这样的一个指标上降了百分位,降了一呃,降了110分位降了一个点,这个是降了很大的啊,刚刚的提升调仓的提升都是在千分位上有有有进展啊,0。804这样的直接掉到了0。7。
那么到了这种情况下,我们应该怎么做?是不是已经,你们是不是慌了?是不是觉得不符合认知?那这种情况下,我们要怎么做?去掉好,还别的选择吗?去掉,那就回滚呗,反正我们最好的模型已经有了。就目前来看。
我们这这个最好的model是0。805,对吧?应该没有比0。805大的吧,0。806有吗?没有吧,0。806没有没有,最好的是在这个位置是吧?我们最好的AOC是在这个位置。
OK那我们首先要思考一下是什么导致了降,对吧?我们首先要思考一下我们做的事儿。来,我们来看一下我们的训练数据,我们的训练数据有什么不一样?所有的训练数据都多了一列是吧?一列到两列。是吧。
原来就是他妈的两列是吧,三列。对吧就就一直是这样的。对吧然后呢,现在呢。对吧多了呃,就两列和三列,啥意思?非or变多了,对吧?非or变多到什么呢?什么变多了。embedding变多了,说明什么。
每一列都多出来了,说明每一条样本最后面的这个八尾这个向量影响到了前面的向量是吧?影响了吧,应该是有影响的对吧?变差了,对不对?OK那我们要做一件什么事儿?那我认为什么?在我的这个呃人工经验上来。
我觉得很可能。那么我们在这个相当于是我们的特征数已经翻了,其实是翻倍了是吧?我们的这个模型是变得很大了。虽然没翻倍,但是呢每一个样本呢它这个后边的这个呃就是category的这个ineddding呢。
它都有影响。那我我再做一件什么事,我需要去确认说是不是收敛了。Com them。对,又开始了一轮挑战。对,也就是。呃,你在你需要去呃,我觉得调三不是目的,调高AOC也不是目的。目的是什么?
目的是你要明白你在做什么,你要懂你在做什么,你要懂你这个特征加了是什么原因。变得不好了。那怎么样去把它调好?就是。那么我们做的这样的一个action啊,我我是呃那么我们明白了几个道理,什么呢?第一。
不是所有的特征都是有效的这是第一。那么第二,当你有不好的特征的时候,并不是你原来的参数就一定是最好的那我们可以调一段参数试试看。看看能不能调上去。那么第三什么意思?黑板中的效果好。
但是你发现你自己的效果不好,什么原因是因为人家调好了,然而你没有调好。在实际的推荐系统了,算法的工程师的工作当中,就是这样的。我们经常是五六个人啊,同时用一个算法去训练模型。
但是就是有那么一个人能够把效果做的很好,其他人就是做不上去。为什么算法全部一样,算法的这个梯度下降的逻辑全部都是一样的,都是方式也一样,为什么不为什么做不好。为什么就有那么一个人总能调好。
为什么其他人都调不好?😡,要理解。这个在我们我经常的这个团队里面经常出现这种情况,就是大家用算法。好,你去用吧,模型都一样,都摆在那你随便用。但是就是有人能够把效果做上去,有的些人就是效果做不上去。
为啥?要思考这个问题。明白吧。1。7OK那么我们来看一下。哎,有增长,看着没?Oh。那么60的时候是有增长,大家可以看到是吧?ok。那我们要做一轮呃。稍微pushro实一些的这样的一个操作。100。
或者我们用1个200的,我们先用一维的来去拿去做。是。Yeah。哦,这个UNA说的是对的啊,就是呃如果是我的话,我也会啊啊做这样的一些做这样的操作啊。为什么就是自己花了这个加的特征。
发现特征不太work,那么其实是不甘心的对吧?那么你要想办法让它work。好吧。我也曾经在之前讲过,我曾经有半年啊,就是6个月,6个月对一个算法就没有做出来效果啊,最终还是坚持下来。
那6个月之后我给它弄出来。也就是什么意思呢?也就是你会发现你在做推荐系统是有这样的,就是你每一次尝试都是有一个美好的愿望啊,你你感觉我操这他妈一定能涨啊,你加的这个fiel他妈一定能牛逼。
但是最终的时候你会发现我操就他妈不牛逼,我靠,很气馁啊,这样的一个过程,在我们无数的推荐算法工程师的身上,在他们这个在进阶的这样的一个练习的过程当中,已经无数次的被体验了嗯。不管是呃大厂的也好。
还是小厂的也好,还是学生也好啊,都给我反馈了无数次。哦,我基本上聊下来,我觉得呃我觉得呃我大概也知道你们几个人的水平了啊,就是大概在什么样的层次啊,就是我们聊了这个2个小时。
我对大概对你们有一个初步的了解。我其实我可以拉一个核心技术讨论群了啊,我大概知道你们的水平是什么了。啊,因为多说话,你说的越多,我就能知道你这个。嗯,我基本能够挑出来核心群。是谁?核心的讨论组是谁?
因为我们在推三的时候也有一个核心技术推荐技术讨论层,就是专门去做专门讨论一些核心技术。嗯,我基本上我心里是有谱的。基本聊完,我就大概知道谁谁在前面。啊,我们可以进行这一轮调仓啊。
调完之后我们再看看我们看看我们这个。这个特征是不是work的啊,看看能不能调上去。呃,然后呃我的问题还我的问题呃,还有就是你们觉得0。80805是这个模型的极限吗?谁后看条阳面,你们觉得它的极限是0。
805吗?就已经OK了,极限是0。805,不是。那么你们觉得空间在哪?来,谁能告诉我还有哪些空间能够大幅的提升这样的1个AOC的值,还有哪些空间来。谁能告诉我?啊,就用这样一个模型,我们就用它来做。
就用它来玩,看看能不能把这个值给玩上来。还有别的吗?我们就用它来就用这样一个model来玩。不不用别的model啊,还有别的选择吗?还有别的吗?你们说的都没有说到点上。
还sring斯杰这说了一个完全错误的答案。NBs绝对是一个错误选择。说明你不懂嗯。就是这么结论,就是你不懂。哎,明白吧。来。
who can tell me还有没有别的这个有能够有大幅提升的这样的一个可能性啊。就我们在这个我们的这个以我们的经验来判断。哪些地方还有大幅提升的可能性啊,这种小的这种调参的这种我们就不说了。
有没有大幅的空间,就是在呃经验值来判断。没有是吧,没有了,都想不出来。衍生特征?什么叫衍生特征?我没没听过我没听过衍生特征是什么意思啊?什么叫衍生特征?特征交叉。是。还有别的吗?我觉得你们真的都很渣呀。
我靠。真的懂怕呀。就没就就没有实际动手吧。来电瓶。啊,0。74OK。那么这个是有提升的啊。有要气死。那么我觉得我们来看一下30轮。我们要去做一件事,我们在30轮上我们做一件事儿。月平还在吗?
这已经开药菜走了是吧?5133哦,还在啊啊,不知道在哪去了啊。不我们还有一个特征要去做,就是统计特征。我们统计特征应该抽完了之后去进行离散化,这个应该是有效的啊。以我的经验来看是有效的这就是比赛啊。
我们能做的就是比赛啊,像这种培训机构,像7月在线这种是提供不了说真实的这样一个呃环境的这样的一个呃日志,你数据也拿不到。那我们做的事情就是去为了比赛去准备。那么呃我后面也会带着助教去打一些比赛啊。
打一些比赛。那么我们就是为呃比赛去准备。然后这个玩这些东西就是为了这个啊这个积累经验。那么不是是你把统计特征进行这个抽取。抽取之后呢,然后再进行离散化,丢到这个里边来。
掉到这个model来。然后那个 beside size呢是一个垃圾选择。因为为什么呢?就是这玩意儿对indding的这个东西它是不work的啊,它不它是没没意义的。这个是一个线性模型,它线性组合。
它没有没有没有意义。然后还有就是你说的那个特征交叉,就549931说特征交叉,这也是一个错误回答,这个已经已经在交叉了,还要你还要怎么交叉,这个模型就是在做特征交叉,你还要往哪交叉?
他都已经抽象成了8维特征的呃,八维的inbedding的这个向量了,你还往哪插去?这都不是一个好的,还有一个是就是就是我说的这个统计哈。如果我们把统计特征,这个离散化加完之后。
我觉得基本上来讲后面就是微调啊,你能够up值就不空间就不大了。
家里个没基本就已满了,你明我意思吗?呃,也就是说我们什么意思呢?就是其实你应该练到这样的一个阶段,就练到像我这样的阶段,就是你大概做哪些事儿,对吧?我一看哎,我基本上做哪些事儿,我大概就能判断出哦。
你差不多能够做到什么份上,差不多能够做到什么水平上,对吧?什么东西不要去碰,然后什么东西一定要碰。对吧针对这个模型,哪些feature没有必要做,然后哪些feature有必要做。
这些是这些是是你你你学不到的,没有人会教你的。是在课本上是学不到的,没有什么教科书,会有会有这这玩意儿。那我们在这个特征抽像,哎呀,我操。我们再进行了这样的一个操作哈哦好。0。963。
也就是在增加inbedding的时候,也有一定的效。之前一直想的是FM,我要用这个inbedding的话,使用统一特征的话,这个inbedding但是ID的embedding就可以做相似检索。那么啊。
O我今天就呃我们今天就把这个事情说到这儿。然后这个我我其实只是做了一个抛砖引玉啊,后面我觉得大幅的空间提升在于针对这个就是呃针对这个commerce的这样的一个数据上,大幅的提升在于。
大幅的提升在于commerce的这个呃统计特征的离散化这个地方,其他的东西我觉得做出来可能这个对于AOC来讲可能意义不是很大啊,这是我的判断。那么你们可以去尝试啊,我仅仅仅只做抛砖引玉啊这样的一个逻辑。
那么这个逻辑呢也就是我们真正实战的时候要去考虑的啊。这里面其实呃如果一个不小心可能就就有坑啊,就是我们在做的时候啊,其实我刚刚做了一些很错误的这样的一些呃。
先做了一些错误的这样的一些一些一些action,然后把它变正确了。那么啊很容易去开坑那,就是尤尤其是对吧?动手不多的,经常就出现问题。那么它的数据是不置信的。好,然后呃我们就我们今天就讲到这儿好吧。
然后这个明天还有明天还接接着继续。嗯。这个怎么理解,你自己去理解,好吧,这个这个在集训营里面,集训营里面都有的,你自己去看去。你自己怎么理解,你你自己去理解。😡,这个。对呀,就是离散化。
你你把它离散化之后,然后再把它编码。这个康平你你不知道吗?我靠再去盈扣的嘛。对呀,你再去盈扣的嘛,就按照这个东西来做嘛,对吧?啊啊我觉得。就对于这个模型的话啊,如果是这么做的话。我靠。兄弟。
你你你还在问我这个问题啊,我他妈好尴尬呀,我靠。难道不是在做排序吗?我靠。あ。哎呦,我勒个去,我的妈心好累哦,这玩意儿不是续吗?这不都是core吗,对吧?😡,FM应该是做rere吗?我希望大家多动手。
好吧,just使do it。我我送给大家一句话,就叫贾斯 do do it。
啊,你可以用它的inbe做reco没问题。但是这个排这个这玩意儿也是一个排序模型。我知道你的意思,你用影像量可以,没问题。你认为late vector是可以的。好吧,然后我们今天就到这儿。啊,明天见啊。
Yeah。
人工智能—推荐系统公开课(七月在线出品) - P4:电商推荐系统架构与模型 - 七月在线-julyedu - BV1Ry4y127CV
🎼。
喂,大家可以听到声音吗?可以听到声音,可以在直播间里面打个一。
行。啊,那我们就开始吧。
好,今天今天就是给大家做一个公开课,这个公开课主要是介绍电商推荐系统的架构与模型。然后在讲的过程中呢,就大家有什么问题可以在直播间里面啊留言,然后我会经常去看一看。
好,今天的主要内容呢主要是分成5个部分吧。第一块是推荐系统的一般架构啊,和它的一般推荐系统的pline是什么样的?呃,第二个呢就是第二个和第三个其实可以融在一起,就是在推荐系统内怎么去做召回和排序。
然后这里呢先介绍一下排序模块,然后再介绍一下召回模块。一般呃在电商推荐系统里面的一个实践是怎么去做的。第4块内容呢就是AB实验平台。怎么就是说怎线上怎么去做AB实验。呃。
然后第5块呢就跟大家介绍一下啊推进系统高级集集训营啊这个课程。好,就是这个到最后啊到最后呃直播的,今天我们大概一个小时的一个公开课的时间直播吧。那到后面呃今天的课程啊,后面的话。
比如说在四五十分钟的时候,会给大家一个小的一个福利啊,到后面再跟大家再讲。好。大概一个介绍,让我看一下直播间里面。好的。那我们就正式开始了。嗯,刚才讲了我们的主要内容主要是这么几块。
那我们就啊一块1块来看。首先就是拖建系统的一般的架构和它的pline是个什么样子的。啊,然后大家啊我觉得大家来听这个公开课,应该自己都有一些相关的推荐系统,多多少少都了解过。那一般提到推荐系统。
那必然就是最经典的就是协同过滤啊,协同过滤的就是这上面这张图啊,这里可分成两种,一种是基于用户的,就是us best的协同过滤,还有一种是基于item的ite based的协同过滤。呃。
具体协同过滤怎么做呢?其实也很简单,就是说呃构造一个临接矩阵。然后这里的每一行啊是一个用户,然后每一列是不同的商品。然后这时候如果是这个用户购买了,或者点击了这个商品就给大家打个一。
如果没有购买或者没有点击给他打个零啊,这样的话就可以构造这么一个啊连接矩阵。然后这样的话就是可以计算。啊,如果是user best的话,就可以计算两个用户之间的距离。
然后把啊比如说用户B如果和用户A比较相似,那就可以把用户A买的东西推荐给B了啊,就这么一个啊思路,然后具体就行同过滤本身就不跟大家再详细展开再介绍了。那其实现在呃突荐系统呢一般呃不会直接去做行动过滤了。
因为协动过滤啊相对比较呃。比较经典了。就是说我们现在呃电商里面做推荐系统,一般都是做啊都是使用lening to rank learningning to rank这种方法去做。啊基本的一个思路呢。
主要就是从一个无序的一个item列表,然后经过一轮排序,然后得到这么一个啊有序的一个文档列表,然后经过啊推荐系统,大家应该都比较了解,就经过我们这个lening to rank推荐完之后。
就是大家啊手机如果大家手机里面有装啊今日头条啊,或者说张淘宝,然后京东啊,这种app里面首页里面的信息流,就是我们推荐的落地场景啊,落地场景。然后对于。然后对于呃电商推荐这个领域来说。
其实额外想跟大家分享一下,就是说对于电商这里的话,它和新闻推荐。因为大家呃接触到了可能了解到了更多是一些资讯类的一些推荐的一些系统。呃,然后具体到这种电商领域的话,它和新闻还是有一些不同的啊。
比如说对于新闻推荐来说,优化新闻推荐系统,它的优化主要是优化啊,用户的点击,提升用户的点击率,提升用户的一个停留时长,提升用户的留存等等。然后推荐的内容呢主要是一些我文章啊或者视频啊或者公众号这些东西。
而对于电商呢,电商它的优化方向却是啊主要是销售额,就是说我能带来多少成交啊,当然也有一些偏用户测的东西,比如说点击留存这些东西。但是我们的呃可以说是核心指标吧,还是要优化用户的成交。
就希望用户能在我的呃平台,电商平台里面买东西,就大家去逛京东的时候,你刷京东的时候,可能呃在这个过程中,你可以呃。促使你就是或者说推荐给你更多你想买的东西啊,这是我们的优化目标。然后这里的推荐内容呢。
一般就是商品了。然后一些当然也有一些偏啊偏。呃,内容性的东西,比如说一些商品的一些介绍的一些文章啊,或者说视频啊啊活动啊等等,也有一些。不过我们的核心还是推荐商品。
那这样一个对于用户的一个交互的一个行为呢,其实就是很简单啊,就是用户打开手机,打开这个。啊,应用比如说打开淘宝或者京东。然后就是从实时在线部分就直接获取到推荐结果了。就这个这个流程。
这个过程其实是在呃很快的时间内,几百毫秒内其实就已经完成了。然后这在引擎在我们推荐引擎里面做的事情。然后在呃渲染部分就是大家可能在加载的时候,可能会因为网络什么东西有一些延迟。但是整个的这个实时部分啊。
是非常迅速的这么一个过程。然后这里的主要核心的模块其实就是呃两个模块吧,一个是排序,一个召回。呃,然后用户获取到这个推荐结果之后,就是当你打开京东,然后看到商品之后,你就会有一些行为。
比如说点了点击了某些商品,甚至于把每些商品放到购物车,或者说做了一些收藏加购这些浏览。根据用户的这个行为呢,每个用户的用户的这些操作行为都会记录到我们的日志服务器里面去,把它记录下来。
然后根据用户的这些行为特点,然后在离线的时候,我们会对他去做一些用户画像或者说商品画像的一些呃一些东西吧。包括我们的样本模型训练的一些样本的构建,其实都是在离线部分呃完成的。对于那种天级模型来说。好。
这是跟大家简单过了一下背景。那对于推荐系统啊,整个流程来说啊,就是大家现在看到的这张图这么几块主要的内容主要包括召回啊,过滤排序,然后再做过滤,然后再做调整。调整也可以呃成为重白剧,或者说其他一些叫法。
呃,然后主要核心就是第一个就召回。召回的话,这里主要是呃行同过滤啊,user baseiteem base的行同过滤。然后热门热门商品的召回策略,然后实时促销,然后KN召回等等。
然后过滤的话就是对于用户已经购买掉的商品。比如说我知道这个用户呃想买一台手机,但是说他已经买过了iphone,那这时候的话我就不会再去给他再做呃再过多的做手机这个类目下面的一个推荐了。嗯,这是在。
过滤这块,然后当然也包括一些呃敏感的商品,比如说一些呃色情擦边球,或者说一些呃涉及到政治政治因素的一些。一些商品都可能会给他做做完过滤,主要是考虑一些法律法规的一些合规啊。
当然还有一些其他的一些审核条件啊。然后在排序这一块的话,我们就是主要是做一些DN或者说GBT或者逻辑回归一些排序模型啊,主要是对呃用户的一些根据用户的优化,根据我们平台的这个优化目标。
然后对采用我们合适的模型去给这些商品做排序。排序完事之后,我们去做一些过滤。比如说一些相似商品,那其实提升提升那个商品的一个丰富度嘛,然后我们可能会做一些过滤啊,后续还有一些调整的一些操作。
然后其中主要核心部分啊就是涉及到我们算法核心部分啊,主要还是召回和排序这么2块。然后这个图呢是一个更更全的一个图啊,就是说对于推荐系统里面这个publine啊是怎么去工作的啊,我们从这边看起的话。
就是从用户的这个操作它会访问访问请求到推荐引擎,推荐引擎返回到结果啊这么一个过程。然后用户呢。呃,用户的这些对于返回结果推荐系统返回结果的这些操作都会记录到我们的日志收集服务器里面去。
然后根据日志收集上来的用户操作行为,呃,一个是我们可以做一些报表,就是你们看凭整体的这个大盘的营收怎么样,然后整体的购买率水平怎么样等等等等,这些信息啊这个报表系统其实也是很丰富的。啊。
收及到这个日志之后,我们也可以去构建我们的数据仓库。数据仓库里面去做人群和用户的这种画像。然后是用户呢,其实也这个日志也分成离线日志和实时日志。那实时日志这块的话,我们其实就可以做一些啊实时的一些计算。
然后实时的计算可以做一些实时的模型训练和实时的啊样本实时的特征的一些构建。然后放到用于更新我们的推荐模型啊,然后这是用户侧。然对于商品册呢,商品册商家会在他的店铺里面去更新。
更新商品更新商品我们这里称它为物料池,就是我们要推荐的商品,它是物料池。然后根据物根据要推荐的商品的信息,其实可以做一些。啊,商品的一些特征的一些提取。然后根据提取到的这些特征,其实。啊,包括用户特征。
包括商品的特征啊,我包括商用户的一些交互行为,我们就可以运用一些啊特征抽取特征工程的一些方法,然后去做一个训练样本的构建。然后得到一个模型的一个训练。然后训练完模型之后。
我们把它推送到啊预测服务器里面去。然后主要用于比如说用于召回或者用于金牌。但是不同的不同的模块的不同的模型啊,模型上会有不同的链路。但然这个东西它但是它底层的这个链路,其实啊大多数是可以公用的。啊。
主要是召回和排序啊,这么2块内容之后呢,啊然后再做1个AB线上的1个AB实验的一个分筒。就是说啊你处于不同的统的时候,我可以去请求不同的召回策略,或者说不同的呃排序模型啊把这个。实验结果。
然后把这个牌最终的这个结果给返回给用户,就这么一个pline。popline这个图。哈。这样很快啊,其实我们就主要是啊前面这这几块其实主要是给大家介绍了啊。推荐系统大概是一个什么样的啊。
然后它的一些呃和电商推荐和新闻推荐啊优化的方向和推荐内容其实是上面是有一些区别的。然后一般的推荐系统的流程,它的架构大概是个什么样的,其实啊。就主要做了这么一个介绍。应该是可以看到的。
就是同学如果呃直播间如果看不清楚的话,可以调整一下你的网络。好。前面呢其实就主要是跟大家啊对这个推荐系统的这个流程啊做了一个介绍。那我们这里就具体到每一个模块啊,主要其实刚才跟大家讲了,主要有三个模块。
一个是排序排序模块,也就是rank啊,第二个就是召回模块啊,召回模块呃,第三个呢就是AB实验的平台。那我们先看那个rank,就是排序这个这个模块。培序模块的话,对于电商平台啊。现在通用的还是。呃。
DNN的这种网络结构,这种呃NN的网络结构N网络结构呢就是主要是这张图里面画出来的这个样子,就下面呢主要是一些。embeding的一些操作啊embeddding的操作啊,然后把把每位特征的。
底层就是我们样本的输入嘛,样本的输入里面会有每每会有不同的特征。那不同的特征这里我们。啊,对每一位特征都会做一个inbedding,做inbedding。然后你这个inbedding的特征。
如果是列表型的那其实我会对这个特征里面的特征值。比如说这所谓的列表型的特征可以是。诶。比如说你这个用户的标签。用户的标签其实可能不止一个嘛。那这时候多个标签的时候,这这一位呃标签这维特征怎么做处理呢?
一般就是把每一每一个标签的inbedding做一个average或者说s的一个。一个对对那个特征的一个操作。然后这时候的话就可以把这一位特征也固定到一个。
比如说啊12位或者说是32位的这样一个呃向量里面去啊,这是每一位特征都这么做处理。处理完之后呢,其实我们对于每一位特征,比如说我们都能得到一个呃32维的这么一个向量。
然后我们再把这些向量给刚开ed到一起,就拼接到一起,作为模型的最底层的一个输入,直接把它拼到一起。然后大家可能会问,就是说嗯所有的特征都会做inbedding吗?其实啊也不是的,就是说。
我们做inbeddding的特征,其实大家呃有过背景的,都应该会了解到,就是主要还是对一些space的特征,就是说一些吸疏的特征做inbedding。
所谓的吸疏特征就是比如说用户的啊这个用户的ID用户的ID商品的ID它可能是几千万几甚至上亿维度的这么一个特征。就是说因为比如说我们对用户的ID做one heart的编码的话啊,做读日编码的话。
那可能用户用户量,对电商平台来说,用户量可能上亿级别的那这时候你得到的这个oneha的编码,它就是上亿级别的。啊,对于这种特征呢啊它就比较适合去做inbedding做一个降维。而对于一些实数值的特征。
比如说我去统计这个用户他历史的一个购买率,历史的统历史的一个点击率的水平。这种实数类的特征啊,一般情况下就当然也有一些其他工作会做一白领。就一般情况下来说的话,都是直接啊把它拼到我们的模型的输入里面去。
就是一般情况下不会做一个啊隐瞒这的一个操作了。这是呃输入这一块。输入这一块的话主要是inbedding呃,inbedding拼接完之后呢,我们比如说就过了三层全连接啊。
全连接层呢就是呃三层的1个NN网络。然后里面呢主要是用一些呃比如说re路或者说sigode的不同的机构函数。啊,然后这个模型呃训练完之后,就是直接就去可以去一方面我们在训练的时候。
主要是用嗯二分类去做训练。比如说当我们的训练目标是用户的点击率的时候,当我们的优化目标是点击率的时候,那我们模型的输出就是01的二分类,用户是否啊点击了。这个商品。主要是这是ranking model。
就主要是培序这块。培训这块的话呃,这是跟大家介绍一个很简单的一个。但是呢也是最常见,就现在现在这种业界,工业界啊最最常见的这种结构啊,之前呢就是说如果回到更早之前,比如说16年之前。
可能各个公司都是在用逻辑回归,逻辑回归在做一些啊人工的交叉特征来去做一个呃。推荐模型。那其实近现在呢基本基本上大家都基本上在做呃DNN的这种网络了。然后DNN网络跟最经典的。
或者说是呃也是应用广应用方面最广的这种应用最广泛的这种模型呢,就是现在跟大家介绍的这个模型,就是底层做inbedding。然后上面做全连接这么1个NA模型。嗯。
这个A模型它的啊大家可以看一下这个A模型呢,它的参数量啊,其实就是主要是集中在in白镜这一块。呃,就in白镜的lookup table这里的参数量是非常大的。因为我刚才跟大家讲了。
就是说比如说我们这里有一亿个维度的用户的话,用户量有1亿个。那我这里对于用户ID这一维特征就会有1亿乘以比如说32维,就有这么多这个参数。所以说引白钉的参数量是非常大的。啊。
相反呢像后面的全连接这些参数量啊,相对于隐白镜来说就非常非常小了。啊,一般情况下,比如说啊一个模型,比如说100G的一个模型啊,99%99。9%都是在啊隐白镜这一块。
这个这种AA模型它的呃主要的就是说工程上的一个难点啊,就是说一个是in白定的规模很大啊,非常大。另一个就是啊这种A模型的训练和上线其实都比较耗时。Yeah。所以针对这些啊模型。
就是这种A模型怎么去给它做落地的?怎么去落地到,比如说我电商推荐里面怎么去用啊,其实啊其实这个模型的推送这一个流程也是呃非常重要的。所以一般一般情况下就是说呃推荐推荐系统,他去做在线打分的时候。
一般的一个流程都会把啊都会把这个run就是打分这个服务,或者是要排序服务吧。都会把这个服务单独单独拎出来,单独拎出来。比如说推荐业务上,我可以有不同的策略啊,只不过我这个打分。
根据打分排序这一个策略只是其中一种。这时候的话其实。主要是用啊。拖进系统的主引擎主引擎去请求这个排序服务啊,请求这个排序服务可能会特带一些啊上下文信息。比如说当前是哪个用户在访问。啊。
当年是哪个用户在访问这个呃我们的平台?然后他的一些年龄性别啊,什么各种啊时间,就他访问的时间。然后他的他所在的。呃,地点,然后它的一些网络环境啊等等这些。这于上下文信息都会由主引擎传到呃推荐服务里面去。
然后推荐服务呢会根据啊模型训练平台,就这个这个模型训练平台可以是离线训练的,也可以是实时训练的。然后。推送上来的这个模型去做一个在线的打分啊,这是这这么一个流程。这在线的啥?然后在离线这一块呢。
其实就是主要是靠呃离线的呃用户的一个日志啊,这里的日志主要是点击和曝光日志啊,当然大家如果是做呃转化率预估,或者说是啊成交成交金额这种偏后链路的预估的话,这里可能就不是点击和曝光了,可能是用户的购买啊。
或者说用户的加加购物车这些行为日志。然后这里我们就以点击率预估为为。呃,为例的话,其实这里的话我们就会。把用户的点击和曝光这日志记录下来。然后结合呃用户的各种特征,然后商品的各种特征。
然后去构造一个训练样本,然后交由训练平台去做训练。然后这里呢这就是整个的这个呃。在线更新的这么一个流程。那其实其中呃主要主要的点,比如说呃我在线服务的时候,刚才讲了,就是说要为了达到更更快的一个效果。
就会把这个排序服务去做一个单独的部署。然后目前其实比较呃流行的这种排序的服务啊,其实也是terflow的那个TFserv就tflow的一个在线在线打分的那个平台。其实一般情况下会用那个平台去做。
然后当然也会做一些定制定制化的一些更新啊。啊,比如说如何更充分的去做啊并行训练,并行打分。啊。然后这里的话额外需要跟大家介绍的一个点,就是说这个过程,就是从啊模型训练平台啊把模型推送到排序服务这一块啊。
这里我们直接画了一个箭头,就是说直接把模型推送到培序服务。那其实这里的话在工程落地的过程中,并不是这么一个直接的过程。就是说不是所有的训练出来的模型都可以直接推到线上服务的。
不然的话呃这里的话就缺少一个质量保证的一个体系。就是说呃如果你把一个很烂的一个模型推到线上的话,那其实带来的一个直接结果,就是你线上的一个故障嘛。就是说你线上打分的效果不好。
那对于用户来说就是推荐的商品就这奇奇怪怪。用户根本就不想点,这时候直接带来的就是线上的一个成交量的一个下滑。那其实这就是一个线上的故障。所以说一般会在啊模型。呃,推荐模型推送的中间会加一个质量的把控。
这个质量的把控一般是由呃模型训练平台里面产出的啊一些验证级的一些数一些打分分布,就是会单独从离线样本中单独搞出来一批样本,作为验证级,然后啊当这个训练平台想要推模型的时候。
会先做一个呃验证级上的一个打分的一个验证。然后看验证级上的一些呃。打分指标。比如说我们这里去做点击率预估的话,那打分指标可能是AOC啊,它的log loss啊,它的打分分布等等这些信息。
然后做一个质量的一个把控。当质量验证O的时候,才会把它给啊推到在线服务里面去。啊,这是实践这块。嗯,然后刚才跟大家讲了,就是特征和模型这块的话,呃,一般呃呃都会做一个实时的一个链路。
就是说比如说我们一个模型的话,最基础的可能是。嗯,偏级别去更新一个模型,这个很好理解,就是说我每天训一个模型,然后推到线上去服务。但是说对于一些呃新的热点或者说新的商品,新上架的商品,或者说新来的用户。
那这时候的话,如果没有啊特征或者说模型的实时更新的话,其实是很难去实时的去捕捉用户的这种兴趣点啊,包括新的商品的一个冷启动问题的。所以说一般会去做特征和模型的啊实时更新。啊。
然这里的实时数据就包括一些啊用户的。用户的一些呃实时的一些兴趣,然后实时的一些反馈。比如用户呃今天就特别想呃买买一双篮球鞋。那他这时候的话可能会做一些篮球鞋的一些搜索啊,或者说是会倾向于地去点击篮球鞋。
那这时候的话我们就可以实时的去更新我们的特征啊,就发现用户在篮球鞋这个类目下面啊,会他的一个呃数据的一个统计量发生了变化。然后对于模型这块的话,一般我们比如说做一个模型的一个增量训练。
然后每隔一段时间去更新一个模型。然后更新前呢需要做一些校验啊,就是特征和模型的实时更新。然后具体的呃工程实践上的话,就是说我们一般是从实时的日流,然后做实时的用用画像,实时的召回实时的特征的一个统计。
然后更新到实时数据里面去来去做一个啊在线服务。啊,然后对于模型这块的话,就是呃根据用户的。呃,日志然后用户的。啊。实时的一些特征,包括李先的一些特征,也会做一个实时样本的一个生成。
然后实际样本的上成之后,也是呃在训练平台上做一个,比如说增量更新。然后更新到更新模型到线上服务。然后这个的话其实对于实时这样这里的话,其实我刚才讲了主要是实时的一个特征和实时的模型。
那这里实实这一块的话,一般比如说我们就用呃blink啊去做一个实时的一个样本或者实时的一个统计。嗯。然后这里呃大家就是刚才我们介绍了排序这个模块啊,那其实这里的话,大家听下来其实有没有一些思考。
就是说啊。我们做好,比如说我们单纯的就按照点击率去给这些商品排序啊,能解决什么能解决所有的问题吗?啊,其实呃不是答案是肯定是否定的嘛,就单纯的按照点进律排序肯定是不行的。它这里的话有可能会有几个问题。
比如说第一个呃排序出来的结果可能是非常相似的。哎,比比如说用我们推荐出来的结果,呃,用户这个用户呢确实很喜欢篮球鞋。那这时候的话我们推出来10个宝10个商品,然后全都是篮球鞋的话。
那其实对于用户来说是一个体验非常差的一个事情。啊,所以说我们第一个就是说。如何做一个呃多样性,如何做一个模型的推荐结果的一个多样性。第二个呢就是说啊当我们有多个优化目标的时候,怎么去做平衡啊。
一个就是比如说我们去优化点击率,优化订单金额,也要用户也同时要优化用户的交互市场。这时候我们怎么去做?然后第三个的话就是啊。因为我们在线的服务器的计算能力是有限的。如果是有呃无限的算力的话。
那其实可以直接对所有的候选级直接做一个排序。那其实呃但是呢实际情况是我们计算计算能力是有限的那这时候呢我们如何在有限的机器,有限的计算的物理条件下,怎么做一个更好的一个排序?这三个问题。
我们先休息个3分钟吧,休息个3分钟,然后再和大家一起去看一下这三个问题怎么去解。好,休息3分钟。好,我们现在继续。嗯,有同学我看有同学问PPT可以发给你们吗?这个我待会儿会把PPT发给助教。
然后看一下助教,就是我不知道助教有没有拉小群啊,那助教的话怎么同步出去,我这边是没有问题的,我待会会会把这个PPT发给助教的。好。啊,我们现在继续,就刚才就是我们前面讲了那个呃推荐系统的排序这个模块。
那刚才跟大家聊到一个问题,就是说做好排序,就只仅仅的或者说是只做排序啊,是足够的嘛啊,当然是不够的。然后这里的第一个问题就是说多样性的问题怎么去解决。呃,这里一般就是对于这个多样性。
就是说模型它的输出啊,一般比如说用户的兴趣点比较集中的时候,模型的输出一般啊很相似。所以说对于怎么去解决这种输出的结果很相似的这个问题啊,一个比较通用的解法就是在排序的这个模块这个分数啊,这个分数。啊。
就是用一个多样性的一个rank方法去去给它做。然后这里的分数就等于阿尔法乘以相关性分数,然后再加上一减阿尔法乘以它的noity。这个 novelty score呢。
就是候选商品的一个产品分布词和它还它还在这个商品之前的,就因为我们我们对这个分数本身CTR会有一个排序嘛。那在之前的N个商品啊,分母分母词之间的一个KL散度或者说KL距离吧。
这样的话其实呃就可以得到一个多样性的一个分数。啊,多样性的分数。这样的话,比如说我们就可以做一个贪心的算法,就是从第一个商品,就我们本来开始的一个排序排序的列表,从第一个商品开始选。
啊当选第二个商品的时候,会重新计算一下候选级的里面的这些。每个商品的sco。啊,然后再选择其中一个分数最高的作为我们的推荐结果。然后这里的话其实看到我们是给这个候选的商品的产品词分布。
然后做了1个KL距离。这么做的其实这么做的一个原因,还是想要去选出来和已经推荐的这个商品啊最不像的一个商品,其实也就是让它尽可能的多样嘛。嗯。然后这样的话。
纯如果说是我们直接就是纯的基于算法的这种多样性去做啊去做这个推荐的话,其实也是不够的。就是说因为因为就是大家大家平时如果是没有做过相关工作的,可能不太了解,就是说。我们单纯的研究模型或者是算法。
其实距离我们工业的应用还是有一些距离的。也就是说我们不能完全依靠这个模型。啊,比如说。诶。比如说一些呃这种推荐结果有可能会也会这种ra的这种模块,也可能出现出现一些呃ba case。
然后这时候的话就就需要我们基于这种规则去对那个推荐的结果做一个兜底。嗯,就是。这样的一个多样性的一个问题的解决。其实主要核心呢就是我们在工业的一个实践。电商领域的一个实践的话,还是用啊。
排序贪心的一个排序,然后做一个呃相关性分数的一个计算。他的一个。然后根据分数去选择尽量不像的商品。然后第二个问题,刚才和大家讨论的就是说第二个问题是如何解决多目标优化。比如说我们又要优化啊,用户的点击。
又要优优化用户的成交,然后又要优化用户的一个停留时长。这时候的话啊其实我们就可以一个最最直接的一个思路,就是直接去。做多个模型,比如说点击率做一个模型,转化率做一个模型,然后用户体验。
比如说用户的停留时长等等,也做一个模型。然后最后啊就是每个模型单独优化自己的目自己的目标。比如说CTR,我只预估点是否点击CVR,我只预估啊,是不是会购买。然后用户的停留市场也单独搞一个模型去预估。啊。
然后最后把每个模型的啊输出做一个。组合。做一个组合,这样的话其实就可以在一定程度上去解决多目标的一个优化问题的。然后当然我们也有一些其他的思路啊,比如说呃比如说大家可能呃做过一些读过一些paper的话。
他可能会有一些其他的一些。啊,怎么做这种多目标的协同优化的这样一些工作。那其实有些想法还是很有意思的。但是说在落地的在落如何落地到电商系统里面去啊,其实还是要有一些取舍的。啊。
现在我们就是工工程时间上啊的一个常见做法,还是说每个单独搞一个模型,每个模型需要不同目标,然后再把啊再把不同目标的分数做一个啊平均做一个那个加权。这样去解决多目标的问题。
然后第三个问题就是说刚才跟大家讲的,就是说我们计算资源有限,就在线的时候,因为我们的候选的商品级啊,可能是啊成千万上亿级别的商品。那这时候每来一个用户,我都要从这上千万的商品里面去给他啊全部过一遍模型。
然后做排序嘛,那是肯定是啊吃不了的嘛。就是这么多商品每来一次我都要重新算一遍。那肯定这对于对于系统来说,肯定是呃承受不了的。所以说呃但是呢你要是不对所有的所有的这个候选都去做打分计算的话。
那你的数据训练数据可能本身也是有偏的。就是说你只有当用户看到的这些商品,其实才是有label的。无论他是点了还是没点,才有这个观测信息。那如果是你连这个东西都没推荐给他。
你也不知道他最终的真实的情况是什么样的。所这里还有一个样本有偏的问题。那怎么去做,就是说怎么去做这种啊大规大规模的这种商品会选集的排呃排序呢?啊,一般我们的做法就是把它搞成多轮多轮排序。多轮排序。
比如说呃先做召回。召回的话,比如说我先从上亿的啊商品里面。啊,召回出来几亿几万个几万个候选商品啊,这个召回策略刚才和大家简单也聊了一下,比如说我用呃一些热门商品,或者说是用协同过滤。
或者说用in白定召回等等,我召回策略。召回召回到几万个候选集之后啊,再对。系。几万个里面做一轮排序,然后产出几千个,这里可以可以称之为一个粗排,就减粗粗略排排下序,然后产出top几千。
然后从top的1000里面再经过一段排序产出top100,然后从top100中再做一个最终的排序。比如说去top10。呃,这样呢为什么要做这种多轮排序呢?就是我们越往后其实做完这个漏斗。
其实大家可以看到,越往后的话需要排序的商品个数是越来越少的。这也就意味着越往后。啊,我们的模型可以做的越来越复杂了啊,这是然后是模型模型的准确度也需要也需要优化到更好。
因为越靠后越能直接影响到用户会看到什么东西。然后对于前面的模型呢,比如说召回召回,它其实召回和第一轮排序,其实都是一个取top key的问题。也就是说,我只要保证用户感兴趣的商品。
只要能排在我推荐的这几千个里面就就OK了。也就是说这个这个对于这个模型,第一轮的模型和第三类的模型,它的一个评估指标啊,它的评价标准其实还是不一样的。当然模型复杂度的话呃,也是也是越往靠后。
其实模型也是越复杂的。啊,这前面跟大家介绍的是呃突荐系统里面的第一大块内容就是排序。其实排序这块也是很重要的这块内容。它也还有很多东西要讲,就是说时间有限,不可能都跟大家做一个介绍。啊。
包括里面的一些细节也不太好展开去讲了啊,不过就是大面上就是大家知道培序模块是在做什么事情。那第2块主要内容呢就是召回啊,召回。
召回的话就是对应于我们刚才讲的呃怎么从这种上亿的商品集合里面去给它召回出来top key就是召回要做的事情。那。那召回的话一般就是啊做索引。那索引的话呃就是各种召回。不管你是做什么样的召回的策略。
其实一般都可以放在盗盘索引里面啊。盗牌索引里面。盗盘索引的话,大家如果是做了解过信息检索的话啊,其实也呃比较了解。然后就也不。太展开跟大家讲是怎么去做的了。就是说呃。做完盗白索引之后的一个结果。
就是说我可以直接根据用户,根据用户的这次请求。去把啊他所需所感兴趣的,或者说是我们想要推荐给他的这些商品给召回回来。嗯。然后这里的具体的召回的方式,然后可以是。嗯。基于比如说基于item的呃协同过滤啊。
也可以是产品词。也可以是呃热门的一些类目。这里热门的,比如说呃近期啊,比如说。苹果手机又刷新了,那我。苹果手机这一个类这一个商品,或者说这一个苹果品牌下面的东西其实都是可以做一个热门的一个召回的。
然后促销的产品词,哪些呃产品在打折,在促销,或者说在送券。那这时候的话也是可以做一个召回。然后招呼完之后再统一再做一轮排序啊。然后虽然虽然说呢就是召回。诶。可以很大幅度的缩减我们候选局的啊数量。
但是说呃召回的这个索业量依然是比较大的。所以说一般会基于。呃,质量分做一个阶断,做一个质量分做一个阶断。也就是我们刚才讲到的。啊,第一轮排序怎么去做?然后一般情况下我们会用一个比较简单的一个模型啊。
比如说用LR或者说GVT。啊,当然这个GPT也是特征比较少的这个GBTT啊,就这一块我们需要也需要对上万级别的这个召回结果做一个打分。那这时候的话我们选的模型注定不能太复杂。
因为要考虑到线上的1个RT啊,剩下有线上的延迟有多少。🤧嗯。这样的话其实我们就可以做第一轮排序,就是说用一个简单模型做一个第轮排序,然后结算。做完结算之后,同样我们也可以做一个多样性的一个处理啊。
多样性的处理。这里不和大家再再展开去介绍了。然后除了刚才讲的这种索引召回之外啊,也有现在也有一常见的方式是使用inbadding,或者说使用KN的方法啊去做召回。
那使用KN的话啊这里的问题就可以分成这么几块了,这块是如何产生inbedding,如何产生inbedding。当然说这里的产生inbadding的这个过程,我们比如说可以用一些图神经网络。
或者说是用一些啊端到端的训练,其实都可以获取引到inbadding。然后第2块的话就是怎么去定义与白定之间的距离。比如说用户和商品之间怎么去去算距离?
比如说我这里的用户的embedding是一个NV的一个向量,然后候选的商品的embedding也是一个NV的向量。那这时候的话我就可以去算这两个向量之间的欧式距离啊,比如说这里是用一个呃正则嘛。
就一个欧式距离。啊,当然你也可以做L一也可以的。就是说这里的距离函数也可以选择不同的距离函数。然后这这是第2块就是怎么去定义距离。第3块就是线上服务的时候,那我怎么去来了一个用户的inbedding。
我怎么快速的去检索到和他最接近的top k。这么几个问题。然后我们其实这前2块内容呢,其实也是。呃,展开讲也有很多工作去讲。那我们先呃这次公开课呢就主要是先介绍一下。啊,第3块就是说线上服务的时候。
怎么去快速的找到啊前一个商品。靠不。嗯ん。然KN的话就是这个。呃,因为KN的话。他不可能就是说我们去来了一个隐白镜之后,就直接去给候选。比如说候选的上亿的商品,每一个都去一对一的去计算他们之间的距离。
这样其实是不现实的那其实呃对于这种呃在线如何快速的去检索,一般会采取一种啊。啊,近似的算法这个近似的算法思想也比较简单,就是说我们会对先对这些商品做一个剧列。每一个类呢都会有一个自己的心,自己的置心。
自己的致新,然后通过这个致新新来一个用户之后,我只算他与致新的距离,只算它与致新的距离。这样的话其实就可以构建啊构建那个索引了。其实就是我们这里这里这个图也不和大家详细介绍了。
其实这是facebook的呃一个工作。他这里的话会对呃商品信息做一个两级索引,然后先去呃求一级索引的一个分数,然后做一个残差,残杀完了之后再做二二级索引。然后这个就也不去做详细的展开了。
其实就是一种对KN的一种金似算法。大家感兴趣的可以自己再去看一看。这是刚才跟大家介绍的就是第2块内容就是召回。那其实对于我们线上的服务来说,还有一个很重要的事情。
就是大家之前可能啊如果是没做过相关工作的,可能不太了解的,就是呃怎么去做AB实验。啊,AB实验的话最直接的一个应用就是说比如说我这里有两个模型,那我怎么怎么去评估两个模型,哪个模型更好呢?
就是这里就涉及到AB实验。一笔实验的话。呃,一般的做法就是。啊,我们会做一个分层啊,之所以做分层的原因,就是啊我们线上可能同时在跑啊几十甚至上百个分筒实验。
那这时候如果是啊如果是比如说我这里直接切成个100100个桶,每个桶使用不同的模型。那这样的话,你落在每个桶的流量都非常少啊,你的获取的的实验结果是不是还足够自信呢?其实这个东西就啊不好保证了。
所以说这里就引入一个分层的一个概念。比如说第一层我就去做啊召回模块召回模块的模型实验。然后第二层呢,我就去做排序模块的模型实验。然后这两个层使用不同的哈函数,比如说当用户来一个请求之后。
在第一个层它可能使用的是模型一。然后在第二个层它使用的可能是呃排序模块的模型2,啊,这样的话就可以保证两个层之间的一个呃独立性啊互就是说。互相之间是呃正交的,就不会呃对我们的模型结果。
对我们的实验结果有一个影响,就更方更科学的去评估呃我们的线上的一个效果。也就是这张图介绍的内容啊,就是说呃我们主要这里的主要思想还是去做分层。那做分层的话,其实就可以去可以一个最大的优点。
就是说每一层的流量其实都是百分百的流量。那我做模型实验的时候。都每一层里面都可以切出来比较多的流量啊,方便我们后续模型的一个快速迭代。那这里的缺点呢就是说我们需要严格的去啊把控每一个layer。
每个layer之间的关系啊,就是说我们的实验要有啊独立性,就不能说你业务上的layer,然后影响到了我后排后处理中laylayer中的一些分层,就说层与层之间不要相互干扰。然后如果是相互干扰了。
那你其实就你的实验结论就啊不是很科学了。一般我们。分层的一个具体做法呢,都是比如说分成啊召回,然后分成排序,然后排序,然后在后处理单做一个lay页,然后业务单做一个lay页。
好,这就是我们今天主要分享的一个内容了。其实刚才跟大家主要是再回顾一下,就是刚才和大家主要聊的一个东西,就是一个是推荐系统的一般架构和pline。然后第二个就是啊排序模块。然后第三个召回模块。
第四个是啊实验平台。那因为时间的关系,我们也不可能说太细节的去和大家讲。然后所以说这里啊给大家推荐一个课程啊,就是刚才。
就是在我们课程开始的时候,就这次公开课开始的时候,也和。啊,大家也讲了,就是说我们这里今天的这个公开课也会给大家发一个小的一个福利。就是右下方这里有一个二维码,这个二维码啊,大家可以用手机。
比如说你现在如果又是用手机看的直播,你可以先截个屏,截个屏,然后扫个扫个码,然后大家去加一下这个呃老师的一个微信,这个这个不是我的,这是我们负责这个课程的一个销售老师,然后可以加一下这个微信。
然后跟这个微信的老师呢,啊,最先就是说现在大家都可以去加了。就如果大家啊最先加到的,那就可以领取1个1000元的课程免单券,就是说呃1000块钱。
就在这个企约在线平台里面1000块钱以内的课程都可以啊随便看啊,不是不是就不是随便看,就是说一张券可以看一张券。好,这个这个微信大家可以扫一下。如果是用电脑看的,可以方便扫一下。如果手机看的。
可以截个屏去扫一下。好,那刚才跟大家讲了,就是说呃回到我们课程,这个这个可以大家可以去加一下。然后回到我们的课程的话,就是说呃。刚才和大家介绍的排序,然后出排,然后包括呃。排序,然后召回,然后出白。
然后包括呃这里的推荐系统的线上服务这块的话,前面和大家讲的也都是比较泛泛而谈的。然后具体的呃每一块怎么去工作的,包括模型上会有一些呃独特性的一些工作,怎么去做,特别是在呃比如说电商领域。
或者比如说京东怎么去做。啊,这个东西很也不是说很很容易在短期内就了解透的啊,所以说这里的话契约在堰河、京东去联合做了一个高级推荐系统的高级实训营。然后这个课程啊。就是说如果是大家有兴趣的。
可以去呃跟这个加微信的这个老师去做一个了解。然后我们现在呢也可以和大家一起,然后看一下这个课程里面主要有哪些东西啊。
嗯,这个课程首先就是给对大家就是不是说大家所有的同学都能。都能呃来来去报名的,就是说也会对大家的就是同学的一个报名条件,也会简单做一个。呃,审核啊就是说呃具体的这个条件大家可以再和老师再聊一聊。
然后主要和大家介绍的就是这个课程,主要是我们会啊拿到啊拿到这个企业的真实的数据,这个真实的数据。然后我们就可以做更多的啊一个模型的一个实战,就更贴近更贴近大家后续在工作的过程中可能遇到的这种场景。啊。
首先第一个项目呢就是。啊,京东蜂巢的一个智能推荐。这个项目呢主要是呃。这是一其实也是一个比较经典的一个推荐场景啊,就是大家会呃。需要在这个智能空间里面去给用户去推荐推荐那个产品。然后这是在业务上呢。
主要是三个智能品,然后去展示商品的图文信息。然后用户可以通过屏幕来去点击,然后收藏购买啊,购买这些动作,就蜂巢的话,大家应该都用过吧。就是说取快递的时候,然后这时候或者说是。其他的一些那个。
展示屏上面啊,然后大家可以去。或者说其他的一些那个呃平台就是交互的一些屏幕上面,其实都有这样的呃功能,就可以通过这些屏幕去做一个收藏架构。那这个商品这个场景其实还是比较经典的。然后这里的话。
大家可以在这个实践的过程中可以用真实的数据集,然后去做一个啊。那WDL或者说FMDPFM这些模型的一个事件。那比如说这个模型的话,本身其实只是做一个啊这样一个不同的模型的一个时间的话。
其实我们就需要大家去花比较长的时间去理解了。所以说今天的课程,今天公开课不可能详细俱到的面面俱到都跟大家介绍到。啊,然后第二个课程呢,第二个项目就是这个课程的第二个项目就是说。
用户京东的京东的一个高浅用户的一个预测。这个项目其实也是呃算是一种精准的营销吧。就是如何从品类的浏览中选出对指定商品感兴趣的用户,并且能够按照概率啊从高到低排序,然后取一定的数量或者。
取一定数量的用户做短信和精准的一个触达啊,这个用户就是这个项目呢,其实就是如何去识别出啊高浅用户,然后去怎么去给这些高浅用户推荐合适的商品。啊,这个也是我们电商领域非常经典的这个问题。
然后呃也是会有真实的数据集给大家去做的。然后第三个项目呢,就是说电商平台的一个商品推荐啊,商电商平台商品推荐。这里的话我们也是用那个公开的一个数据集,这里是用一个公开的数据集。然后根据用户在。
商品这个平台移动端的行闻数据和百万级别的这种候选的商品集合,怎么去构建推荐模型,来去预估。啊,在接下来一天商品子己的一个购买啊,这里涉及到一些功能,可能包括一些GBT啊WDL的一些模型啊。
这里也不详细跟大家再展开了,这是三个主要的一个项目,这是我们称之为企业项目嘛,主要是用一些真实的就是呃工业的一个数据集,然后帮助大家去了解真实的业务场景下怎么去做。当然说我们还有一些其他的项目。这里呃。
就是大家如果是报名这个课的话,后面这些项目都可以自己选,就是可以想去参加主攻,哪个项目都可以自己选的。然后当然也有其他的一些实战的一些项目,比如说三级几万他面怎么去做推荐。然后王飞推荐的这个比赛。
大家也可以去参加。然后具体的课程呢,其实大家可以看大家呃后面这个链接大家可以可以看一下,大家可以自己去看一看。这里涉及到的知识面就非常广了,就包括啊。前沿的这些召回,然后特征工程怎么去做?
然后这里主要是有实训呀,有那个实训,然后有视频,然后还有直播。让厂江的这些排序算吧。深度学习的排序算法怎么去做啊,然后在线怎么去做?
然后CTR预估这个事情CTR预估这个事情其实就被就够我们讲很多很多内容了,这个事情就就已经很多内容了。然后另外就是还有在线学习和实时化的这些工作啊。
怎么去做ODL就online deep learning怎么去做。然后还有一些最新的一些技术,比如说动目标排序啊,动目标排序怎么去做?啊,当然还有一些实战啊,就是实战的话,就主要是呃刚才讲了。
就是一些呃京东的一些真实的数据集,包括电商平台的一些公开的数据集。主要是工业界真实的一些数据集,我们会呃会给那个。大家去做一个很真实的这样一个业务场景的一个培训。啊。
具体的话大家就可以加一下刚才的PPT里面。
嗯。PD里面这个老师的这个微信啊。大家可以详细的咨询一下。然后刚才和大家讲了,就是刚才优先加老师微微信的这个同学是有机会去领取1000元的课程免单券的。
好,那我们今天的这个公开课就到这里了。就是说今天呢我们主要是介绍了啊突进系统的一般架构,然后介绍了排序模块,怎么去做啊多样性,怎么去做多轮排序。然后online的话在线是大概是一个什么样的流程。
然后召回模块的话召回策略啊,然后索引召回KN召回都大概是怎么去做的。然后AB实验平台,这个也是很重要的内容。大家啊平时比如说有些同学可能喜欢打比赛。那其实打比赛的过程中,你是接触不到这种东西的。
就是AB实验。
但是在业务中,在呃公司里面学实这个事情是非常重要的一个事情。就是说怎么去科学的做AB实验。好,然后另外呢就是跟大家推荐了一下啊推荐系统高级集训营啊,这个可以在那个7月的官网啊去做一个了解啊。
另外就是可以加一下。
啊,销售老师的这个微信,然后微信的话,先加微信的top3的这个呃同学都可以去领取。一张啊1000元以内的课程的一个免单券。然后另外呢,课程本身的一些东西呢,也可以去找老师去做一个了解。
然后这个PPT我待会儿会发给助教老师,然后看助教老师怎么同步给你们,好吧。
好。谢谢大家。😊。
人工智能—推荐系统公开课(七月在线出品) - P5:工业界的推荐系统解密 - 七月在线-julyedu - BV1Ry4y127CV
行,然后这节课呢主要是想跟大家聊一下那个呃推荐系统。然后呢,我是呃因为在业界工作,所以说我就跟大家去聊一聊业界的一些推荐系统的一些实践。然后嗯所以说想跟大家去分享一下。嗯。
当然最后那个我们会通过说大概呃四个方面的内容,这个大大家在大纲上应该也有的也都已经看到了啊,然后就是呃推荐系统的网络结构。然后特征和特征工程召回以及金牌四个部分。好吧,然后呢。
我会嗯在每个部分都会花一些时间。然后我讲的过程当中呢,大家如果有问题都可以在评论区来提问。然后我看到了以后,然后都会那个呃尽量去回答。好吧。好,那没什么问题的话,我们就开始讲啊。
好,那我们开始啊。那个首先跟大家讲一下说什么是人工智能啊。我相信大家就是来听这门课,肯定对人工智能或多或少有一呃有一定的了解,对吧?然后呢,无论是从自己的一些实践,或者说从呃媒体的一些介绍啊。
都应该有过一些了解。那么人工智能是什么呢?这段话是我从百度云网给抄过来的让大家看一下就可以了。那么其实我想分享一下,就是我对人工智能的一些认知啊,然后其实大家也不要去看媒体上吹的那些花里胡哨的一些东西。
其实很多东西我自己感觉都有点夸大其词。但是它人工智能这项领域,它确实是有一定前途的。为什么,我希望从四个点去跟大家去讲。啊,第一个点呢就是说啊阿尔法go给人们就是很大的震撼。
那阿尔法 go其实呃我最开始接触人工智能也是从那个嗯算法的角度去接触的。然后阿尔法购呢算是给普通的呃大众们都逐渐的走入了大家的视野。
然后因为呃下围棋大家都知道说基本上是很难模拟的。所以说当时他们通过那个呃深度强化学习加蒙特卡罗搜索,把阿排给做出来了以后,然后其实给了很多人一种强烈的震撼。毕竟之前下象棋的呃下国际相机构。
大家已经觉得很厉害了是吧?当然现在都已经可以下星际打dota了,所以说嗯这方面其实未来呃从这个角度讲,它能更多的去模拟人脑它的思维这样一个过程。虽然现在还不行啊,这是第一点。
第二点呢就是说一些呃一些技术,它其实目标呢都是落地,对吧?那么人工智能目前嗯比较大的几个落地点,有一个就是人脸识别技术和无人驾驶啊,这两个呢其实都偏向于像那种啊识别类的这种方向,偏C维的一个方向啊。
然后这个应该大家都知道说有什么摄像头,就拍你的车牌照等等之类这种东西,其实呢都跟这种识别技术是相关的。再下一个呢就是说翻译和自动原生成的一个发展。嗯。
大家应该也能发现说最近这几年呢google他们其实对于这种。嗯翻译嗯的这种嗯有效性啊,以及说可读性啊已经提高了很多很多。所以说就是这些发展,其实背后也是离不开我们这种呃ILP就是自然语处理嗯。
这个领域的它的一个发展。好吧,这是第三点,当然还有很多其他的一些应用。比如说主要的就是我们这堂课想去讲的一个呃推荐这样一个东西。我认为就是根据我的理解,我认为在业界当中,人工智能最主要的三个领域。
就是这里的偏CV类的偏ILP类的和这次偏推荐类的推荐推荐它其实是一个比较大的一个话题。其实呢相当于搜索推荐广告,这三个都比较像。然后呢。
我们一般在业界当中很多的部门也是把他们三个揉到一起来去一起来看好吧,最后一点呢就是说未来的一个生态的一个体系。啊,我们都知道说嗯其实人工智能它带来的并不是它本身这一个岗位。然后呢。
其实很多上下游相关的一个岗位呢,都会有嗯很重要的一个应用。所以说。这个未来的生态呢,是前提也是要你掌握能够掌握说这门的基础知识,然后呢,你才能够说在生态这里呢嗯有一定的了解和发展。好吧,好。
那就是最开始的一个前沿。
那我们就不多说,我们就开始进入我们的正题部分啊嗯嗯。
首先呢先给大家讲一下一个推荐系统的一个整体的一个架构。这个架构呢嗯这图是我从网上抄的。然后但是这个图基本上反映出来了说呃公司内部的一些网络的一个就是这个推荐系统的一个整体的这样一个情况。
那么它其实有好几层,我们就依次来看,好吧。第一最底下的这层呢,其实是跟离线数据相关的一些数据啊,就大家目前在那个呃公司呃在那个自己去实践的时候呢,如果说没有在业界当中实践过。
其实面向的呃那种离线的数据呢,可能更多的偏向一下什么CSV啊这种类似的TST啊这种数据,对吧?在那在在工业阶当中呢,算ry我关个东西。但是在业绩当中呢,其实啊主肯定不可能这样就数数据方式去存储的嘛。
对吧?所以说业绩当中呢,其实都有一个很成熟的一种呃呃数据的这样一个体系啊,从最源头的基本上都是我们的工程系统在底下都落日志。啊,然后呢它一般呢再会是上游的,通过一些中间层啊。
以及一些业务层啊对它进行消费。啊,然后呢这些其中涉及到了很多技术站啊,比如说说工作系统,他们在落日志的时候,然后呢,是如果说是在实时的一种处理框架。这里比如说这里的话。
它是怎么一步一步的往前去推进过去的。其实相当于一些那种消息率的一种计算。比如说卡不卡。啊,这种消息堆的一种机制啊,这是一个点。第二点呢就是说嗯对于说实时的这种计算而言的话。
我们经常会用一些实时的计算框架,对吧?比如像这里的sstorm啊,这storm以及说sk streaming。然后像flink。这些东西呢其实都是一些实时计算的一些很pular的一些框架,对吧?
他们等他们会怎么去使用呢?等会我们讲特征工程的时候呢,会再提到这里,这里只是先给大家啊抛砖引喻一下,然后下面的话呢,就是说像我们一些离线的一些数据,它基本上存在哪里,对吧?
我们可能就存在说像这种那个fi system里面对吧?等等,以及说have表这种大数据这样一个family以及说像我们在做一些嗯模型的预测的时候呢,我们经常会有一个什么就一个模型的训练,对吧?啊。
以及最终的一个打分。啊,像训练呢它又接触到了很多上下游的一些依赖。比如说它的特征从哪里来?它的label从哪里来?它的打分呢就会接触到说我打分呢也分两个环节,对吧?
比如像我们等会要讲的一个出牌和一个金牌等等之类这些环节,这些呢其实都是在推荐系统中的一些整体的一些架构啊,然后呢,具体的一些重点的,我们等会儿都会慢慢的去进行一些拆解,对吧?然后最上层呢可能有些业务层。
那么业务层,我们在推荐系统当中,嗯经常会有哪些地方会用到我们的推荐系统呢,举体的比较简单的例子,就比如说说大家那个在呃京东东买东西的话,然后你买完东西以后呢,嗯在你的那个结果页上。
也就说其他很多展位上其实都能看到说跟你相似的这些呃东西都是什么啊,比如说你买了一个手机,它可能给你推荐手机壳等等之类一些东西,对吧?这就是一个当然具体的这样例子呢,其实有很多很多,我们就不一个个细讲。
但是呢它基本上也都分为一种最底下的引擎层中间。这种计算层。然后呢,第三层是那种模型的服务层,最上层是最终的业务层,这么几层架构。这个基本上在所有的公司呢都是差不多的,好吧。然后我们再看这一纵。
这一纵的话呢,其实是一个监控层。因为像嗯尤其是像这种ite的这种推荐呢,其实它很多时候跟用户的体验是息息相关的。啊,当我们的模型更新的时候。
我们就要去监控说这个模型的更新是否是满足业务的预期和系统业务的预期的啊,这一般是业务的监控,就比如说说假如说有ABC3个item,然后呢,开始的时候,他们三个是呃均匀的去发,后面呢嗯A发的变多了。
那么你就要去看说A发的变多了,是否是满足你的预期的,对吧?这是一个业务监控,那么系统监控是什么呢?系统监控的话呢,也会去监控说,比如说你这个服务的调用量啊,以及说嗯你现在的这种请求的TPS啊等等之类的。
这些都属于偏我系统监控的一个部分好吧,这些呢都是也是一个系统啊,它比较重要的一个点。好,那关于推荐系统的整体架构呢,我们就暂时先说到这里。然后呢,我们等会儿慢慢去遇到东西的话呢,我们都会去讲。
在本节课的最后呢,我们还会回到这边来再去帮大家再去梳理一下,说我们经过一个多小时的学习,然后呢,又能够对这个张图有一些什么新的了解,好吧。
好,大家有问题吗?那个呃推荐系统方向的工程师都有哪些?有算法工程师,有平台研发工程师都需要掌握什么技能。嗯,一般而言我们认为就是嗯我觉得大概有三类吧。我给大家既然有同学这么去问的,我就说一下啊。
第一类的话呢就是平台研发。
啊,第二类呢是AI系统架构。嗯,第三类呢是纯粹算工程师。嗯嗯其实这三类呢他们嗯都有一定的耦合点,不不能是完全重合的。尤其是这两类,他们的耦合点可能更加多一点。这个平台研发是什么呢?
就比如说一个成熟的业务系统。因为我们的所有的呃呃推荐的都是属于业务的,那么我们一定会有一个业务系统,对吧?啊,就比如说我们一个淘宝,然后呢,大家比如说收银台啊,它就会有一些展位啊。
或者说就是大家一打开了以后进去的那个页面呢,它都会有很多展位,对吧?它背后都有一个业务系统在呈现这些推荐出来的这些讲呃,这些item啊,我们把它称为业务系统,然后呢,AI系统架构,它都包含什么东西呢?
啊,这个包含的话,就比如说像我们刚才所说过的这种model service。就是假如说我训练这个算法工程师呢,他训练出来的一个模型了,然后呢,我需要怎么样去把它部署上线,以及是上线,怎么去对外服务啊。
一般都是业务系统去调用这个model service系统,人mod service系统再返回给这个业务系统等等之类的这是一个点。第二点呢就是系统架构,还包括像那种分布式计算。
就比如说说那种呃老式的那个什么mic克 reduce。以及说亚安管理的方式。你说这两年新起来的那种K8S,就是那个和container的那种方式。啊,这当然这些是偏系统啊部署和运维了。那们式计算的话。
还包括说很多那种实时计算离线计算之类的这些引擎之类的东西,这些都偏向于这种系统架构层。然后呢,最终是算法工程师,就比如说去研发模型,然后去分析数据。
然后以及说呃去自己呃开发一些tle flow的一些功能等等之类的,这些都纯粹的算法工人会做。但其实呢这两部分呢很多时候是要相互合作去做一些事情的。好吧,去回答那个同学的问题。
我。spark用的多吗?嗯,sk还好吧,我觉得不同的公司可能有不同的技术站。所以说嗯如果问我spark用的多不多的话呢,呃我也没有办法去回答。我只能说说呃,反正根据我的经验,以及说我的朋友的经验。
反正就是有的公司是用的,有的公司是不用的,好吧。然后scarlar多还是python多,这个其实还好,基本上都是sk的接口嘛。所以说嗯你是用slar还是python,只要你能完成任务。
其实都都可以是吧嗯。
好。那我们继续来讲,大家有问题可以在评论席再去说,好吧。
嗯,下一个就是说我们第二部分呢主要来讲一下特征和特征工程。那么讲特征特征工程之前呢,我们首先就要说一个什么叫做一个item,对吧?就好像是一句废话。
但是呢嗯既然说我们的研究对象在推荐系统里面就是一个iteom。那么一定要聊一下说什么是一个iteom啊,item呢一般是只是指一个需要打分的一个个体啊,在搜索当中呢,一般是等待被搜索的个体。
在推荐当中呢,其实就是等待被推荐的一个个体。
嗯,当然这还是废话,但是在实际的业务当中呢,却往往不是那么简单啊,同一个ite在具有不同属性的时候,到底是不是一个iteom,这是要给大家提一个问题,什么意思呢?就比如说说经常我们这些iteom呢。
它会有一些说嗯一些你怎么把它去归类的这么一个问题啊,就比如说说假如说大家都卖都去卖那个耐克的鞋。对吧然后呢,很可能第一个呢在shop牌ID。一里面第二个呢在上牌ID。2对吧?两个不同的这个商店。
那么我们是说把他们认为已经是不同的item了啊,还是说他们是同一个item,当然是通过shop IDD来对他们进行一些刻画呢。等等这这样的一些问题。其实嗯这个呢也延伸到说我们再去做一些特征工程的时候。
具体能够挖掘出一个item哪方面的一些信息,对吧?就比如说这里所说的一个shop ID呢是其供的一个信息,那可能呢还有一些什么 categoryID啊。等等这类的各种各样的一些信息,对吧?
所以说嗯我们因为我们推荐系统呢最大的目标就说要给不同的人推荐出最合适的一个item。所以说我们肯定是要对这个item刻画的越精确越好。有的时候呢可能说需要把一些比如说这两个呢可能就是说不同的I。
有的时候呢可能就是说他们是同一个iteom ID。但是呢他们在一些属性值上有一些差异,等等之类这些东西啊吧,这些呢是想跟大家说啊,我们对ite的定义,大家都是什么样子的。
我们这这个公开课大概会持续一个半小时,我大概会讲75到80分钟,最后呢还会留10分钟给大家啊最终的一个提问的一个环节,好吧嗯。
好,我们继续。然后我们现在来聊一下iteom特征。那么在iteom当中呢,我们都用过一些什么样的一些特征。第一类呢就是ite的类别啊,刚才其实像我们的这种shop ID啊。啊开过 i d 啊嗯。
其实呢都属于item的类别信息,对吧?完那这些这这一类这些信息呢,其实大家香港人都比较能想到。那我们来多聊一聊第二类信息,就ite的统计类特征。那什么叫ite的统计类特征呢?嗯,我们打个比方。
就比如说说嗯我们在这个呃推荐系统里面有有一些概念啊,我给大家介介绍一下,比如说曝光和点击,这个其实在。
像搜索和广告里面其实都差不太多啊,那么曝光和点击分别指的是什么?就是说我推荐给了你一个iteom啊,然后呢就称为一次曝光。然后呢,你最终是否点击,这嗯就称为一次点击,对吧?啊,但是这一行又是一句废话。
那么这里面呢,我们一般称为曝光不点击的那些label为理由。曝光以后有点击的那些label唯一。好吧,这就是我们在呃推荐系统的二分类里面最常用的一种label的构造方式啊。
当然这不是唯一的这是我们最常用的一种。那么我们经常用到的一种统计类特征是什么?就比如说呃。那呃我们这个ite有多少次曝光?有多少次点击?以及说一个另外一个特征叫CTR啊。CTR的话呢它。
你先把这个公式写完,就cick初页。exposition就是说点击除以曝光就相当于是呃它的全称是click rate,就是一个计算广告里面的一个数语啊,然后呢他意思就是说啊就是一个点击率,对吧?然后呢。
一般而言这个特征呢还是蛮重要的。我当然我们模型最终的预估,就是预估这个东西。我们如果说把这个东西放到模型当中呢,也会帮助我们模型去做一个预估,好吧,这些呢都属于偏统计类的特征。
我们一般都会用到一些像实时计算的一些东西呢,去把它们给算出来,或者说离线计算啊,我们最长的这个呢其实相当于是三个统计类信息,对吧?但是呢我们一般认为说只有这三个还不够。虽然呢我们会把它们做一成扩展。
叫做什么叫做划窗。She。那么什么叫做划窗呢?划窗那些就是说我们像这个东西,它其实是需要有一个时间标度的。就比如说我最近是多久的一个曝光和点击,对吧?因此而言。
我们就会说嗯经常用的一些把它们按照一个时间划窗的位置依次向前滑动。就比如说我们会有啊我们就拿这个啊曝光来说,就比如说最近一小时的一个曝光。
最近3小时的一个保裹。啊,比如说最近12小时的一个包包。这个数据呢是依次向前去滚动的啊,换句话说说嗯,假如说现在呢是8点20,那么这个东西呢就相当于是这个艾特从7点20到8点20的一个曝光次数。
这个呢就以此类推,5点20到8点20。那假如说现在呢我们变成了8点21。那它呢时间呢也要向前有一个跨度,就是7点21到8点21等等之类这些东西。这些呢也是我们最长的一些统计的特征。
同时呢他们又是一列我把它叫做叫做叫做实时特征。
石头扔呢等会我们还会再见到,到时候呢我们会嗯再学多聊两句,好吧,好,这是这里。
好,at套装。
下面呢是离散特征和连续特征。那么为什么我们要区分离散特征和连续特征呢?就是因为说嗯首先这两个特征呢,它们本身表达意义上呢就可能有些区别,典型的离散特征。包括什么,包括想站点。
这种东西性别它它就是一个离线特,它就是一个离散特征,对吧?因为你要么是男性,要么是女性啊,典型的连续作用是什么?就像刚才我们的那些CTR啊,它其实就是一个比较典型的一个连续的特征。
因为大家可以认为这个值是平滑的,你可以在呃0到1之间的任何一个取值,对吧?那么其实很多特征呢,他们没有一个特别清晰的一个概念,你作为dance还是一个spae。比如这个CTR。
再比如说我们经常说的这个age,就是这个年龄。
它其实呢就是一个既能当spas特征,又能当dance特征的一个特征。为什么这么说呢?是因为说我们可以把它当做dance特征,直接说比如说你是20岁,那你就dance类的值就是20就okK。
那你也可以把它当做spae特征去用,怎么用呢?就比如说我们以是每10岁作为一个标度。比如说在11到20岁啊,算是一组,21岁到30岁,算是一组等等之类的。我们把这种过程叫做什么叫做分头。
叫做bucket,对吧?那这种分筒呢,其实大家如果熟悉特征工程的话呢,应该知道说分筒是一个特别常用的把特征从dance特征转到spas特征的这样一种方式啊。那么就我们说到的离散和连续的一个相互转化啊。
从呃连续到离散的一种简单的做法呢,就是通过一个buet的一个方式。从离散到连续呢?我们通过什么方式呢?一般是通过inbedding的这样的方式。啊,什么叫inbed呢?
这个等会儿我们在讲模型的时候会讲到啊,这个我们也是等会儿再说啊。然后呢,最后呢说一下离散特征和连续特征的一个特点啊,这个特点是什么呢?就是说嗯它之所以会有这两种特征,并且有时候会相互转化。
那么我们经常需要面临的一个问题呢?就是说啊我们什么时候选择离散特征,什么选择连续特征啊,这个呢其实很多时候是跟模型相关的。我举两个例子,就比如说像LR。
这种线性类线性类模型。啊,他们呢都比较喜欢用什么样的特征呢?他们都比较喜欢用连续呃离散特征。然后呢像那种啊呃呃呃那个GBDT这种数模型,他们呢都比较喜欢用dense类的特征。
原因呢是因为LR它对特征的值呢变化波动呢特别的敏感。然后呢,以及说嗯因为它是一个线性模型,所以说。Y等于贝塔X的时候,当你X上升了一个单位,那么你的Y呢一定上升了一个贝塔这么多的一个单位,对吧?
那么很多时候这样做是不一定合理的。所以说我们就需要把它给spae化,使得说特征之间的变化,不会相互影响。你说LR它本身对特征的敏感度要降低。这是LR为什么偏向于spae类的特征。
而GBT为什么要偏向于d类特征呢?其实GBTT在进行数的分裂的时候,它要进行搜索。那么如果说它要进行啊se类的搜索的话,它的搜有空间会过于庞大。而dense类的话呢,我们可以通过一些呃。
近似值以一些呃特殊的一些,比如说取百分位的一些操作去降低我们的搜索空间的复杂度。所以说GBDT比较喜欢这种dense类的特征,好吧,这是我们离散特征和连续特征的一个特点啊。
好,我看大家有没有什么问题。🤧She。啊。AI系AI系统架构和算法功能主要什么语言?这个A系统架构的话呢,基本上嗯比较常用的是java和C加加啊,算法工程师的话呢比较常用的是嗯python和C加加。
我是这么理解的。然后spark的模型上线比较困难啊,对,要导出pamo在java里面加载。但是这种service其实嗯也是可以做的。只是说它这个效率可能没有像C加加写的一些serving效率那么高啊。
热度排序属于排序的领域吗?我不太清楚你这个热度排序是什么?是不是像比如说像新浪微博里面的这种嗯这种就比如说那种呃热搜这样一种概念。如果是这个的话呢。
我理解有的时候可能会有一些排序的因素在有的时候可能没有啊,他什么时候会有呢,他有的时候就比如说说嗯给每一个人一个个性化的一个热搜,然后我看到的热搜和你看到的热搜不一样的时候啊这个。嗯。
这个就是一个个性化的。但有很多时候可能就是一个就是一个top chance,就是反正谁被搜索的数量大,那么谁就放到第一位。啊,这就这个时候可能就是纯粹的一种嗯简单的排序规则啊,它没有嗯一个算法在里面。
好吧嗯。好,然后想知道说模型训练的数据流是怎样的,have到spark到探or flow嗯。这个可能也是不同公司不太一样。像我们公司的话呢,主要就是have里面去处理各种数据。处理完了以后。
其实就已经可以放到tflow里面进行消费了,对吧?其实也不太需要sk中间嗯再差异到了。但有的公司确实也用spark。所以说嗯还是看公司的技术站吧。我觉得。然后PPTPPT等会会发的,好吧。嗯。
然后那个呃分筒有哪些方法嗯,分筒的话呢嗯。
我再举两个方案吧。
啊,第一个方法呃,这种方法分别是人工分头和自动分头。啊,我们先说人工分头啊,人工分头啊基本上是呃利用统计信息分头。啊,信息分头啊,这是什么意思呢?就最长的一种呢,就比如说说我们又回到说我们。
最喜欢说的这个年龄这个特征啊,然后呢他可以做到一个就是呃比如说按照这也有两种方式,一个是按照人的理解去进行分头。你写到这儿。就比如说我们人呢可能就比如说像这种呃呃30岁啊、40岁啊、50岁啊。
我们认为人他就到了一个年龄段的一个变化的一个范畴,是吧?所以说呢我们就可以比如说呃0到9岁、10到19岁等等之类的,这是一种通过人为的理解的方式进行分桶啊。
这个其实就不太像是统计信息了啊另外一种方式呢是通过那个呃分位数。那那什么叫做通过分位数进行分头呢?分进行分的话,就可能比如说说我们要进行一个特征的一个统计,对吧?
就比如说说那个我们可能就是0到10的过这个呢分为一统10到到20进行分吧?相当于就是10个分位数啊,每个都是10分之1的分位数拿它作为分桶的依据进行分桶好吧。
这些呢都是人工分桶人工分的好处和劣势都很明显好处呢就是说嗯会融入一些人的先验知识在里面啊,以及说统计一些信息呢,基本上有的是有的时候其实都够用啊。
但是它有不太好的地方不太好的地方呢就是说这个分这个分桶方法过于很可能说对于模型的训练结果不一定有效。那么我们就引入第二种方案叫做自动分自动分的话,我们一般就会使用GBT加LR的这种方式进行分桶。
什么意思呢?其实就是通过GBTT分对吧?那么我不知道大家。有没有了解过像这样GPT加R的这样一种模型的这样一种结构啊,GPT加LR呢它其实就是。Yeah。嗯。我想一下怎么画。这个GPT就是数嘛,对吧?
我们就画两棵树就好了,这个意思到了就可以了。然后这两棵树呢嗯我们也各自做各自的那个预测功能,对吧?那么很有可能说第一棵树呢,它顺着这个路径呢啊到了这里,就是这个点呢被我们这个叶节点被我们选到了。
这里呢是这个叶子节点呢,被我们选到了,对吧?那么我们如果说对这些叶子眼进行编号呢,那么它就变成了呃12345678,对吧?相当于第二个叶子节点和第八个叶节点呢被我们选中了,因此而言。
我们这个序列呢就可以被。这样这样相当于是什么?相当于是一种另外一种特征编码的方式表示成了01000001,对吧?这个它大家看到可能是说它是一种呃编码的方式。但它其实呢隐含的是什么?是一种分桶的一种方式。
为什么这么说呢?是因为在数模型当中,每一次在进行呃我们这个呃特征的分裂的时候呢,其实暗含的就是一种分筒。就比如这里呢我们就是拿年龄进行分裂的。它可能说这里呢就是年龄。小于等于20岁。
这年就是年龄大于20岁,对吧?那通过这里进行分层了以后呢,在这里假如说这里呢在比如说是你的那个income。假如说是大于50啊,大于5万吧啊,这样的话呢,这个点其实什么?
相当于就是拿年龄小点20和income。大于5万做的一个交叉,对吧?因此而言,它相当于是利用了这种分桶。这边呢很可能这里运用另外一种分桶,比如说H是什么大于70等等之类的。
这样呢其实就也是不同的分桶这样一个概念,好吧。
就是这里。Yeah。那。这个说过了是吧,然后sk里面的函数很难会提前确定好分割点嘛,一般都是要提前确定好的。嗯,反正我们公司在用的时候呢,都是要如果要用的话呢。要提前确定好数据统计。
因为这个东西其实不是那么那么简单的好用。原因在于什么?原因在于说说呃这个数据呢你我们考两种情况,一个是离线离线状态下,一个是在线状态下啊,在离线状态下呢。
我们这个数据呢很就是你要分统你要说这种分位数的统计呃,做统计的时候,那你就需要说全局进行统计,对吧?嗯,或者说你进行采样统计这种方式,那在在线的状态下呢,你要对在线数据进行分。
因为数据的它那个分布是在实时进行变化的对吧?你采样可能是说对这个P做了一个呃对就是流式计算中的这一个批次做的这样一个计算,到下一个批次很可能就不适用了,所以说很可能。这个还挺麻烦的,好吧。
代码库可以分享过。嗯,你想要什么样的代码库,你这样一句话不太知道怎么回答你啊嗯。😊,实时特征的训练现在状态是存在一个实时特征,然后曝光发生品就是去储存查询这个特征,生成离线的样本。
攒过7天就可以开始训练了。那比较快的话,可以不用攒7天数据,当天就可以回溯出之前的实时特征,当天就可以开始训练。我不太明白你为什么你要攒7天才能开始训练的。嗯,我们一般训练的时间是会延迟。
但延迟呢都是延迟一个样本周期嗯,什么叫一个样本周期呢?就比如说说嗯像我们这种嗯推荐搜索里面的推荐搜索广告里面的这些样本呢,其实实效性都很强的,就打比方说百度给你推荐的一个广告,对吧?
那你不可能说说啊给你推荐一个以后,你现在你看到了,但你不点等过了一个小时再去点对吧?基本上你一两分钟之内该点就点,不该点的话,你就去干别的事情去了啊。嗯这样的话,几乎覆盖了99%以上的场景。
那么当天的数据基本上就可以直接拿它训练。甚至于说当。🤧的数据2分钟以后就可以拿来训练,对吧?这也是。不好意思,这也是我们呃省赞学项技术的所在是吧?嗯,GPTT工业一般使用叉Gbo的和赖GBM好吧。
后面怎么讲协同过滤,后面是会讲协同过滤的。然后。chgebo并不能控制这这这这些细节类的信息我就不回答了,好吧。😊,这这个分筒的我刚才说了,就是GBDT它本来有这种特征组合这样一种概念。
但是它隐含的是对特征一种重编码,也有一种分桶的一个概念,好吧嗯。需要学一些什么样的一些LRM的一些呃MIO的一些算法呢?啊,算法的话呢,等会我们会提到一些离线的一些算法和一些。
会及到一些传统级忆学算法和目前比较p的一些深度学的一些算法。好吧,离线的一些算法呢,就比如说像我们这种LR啊,就是比较经典的一些算法,还有兽模型深度学习算法呢就是以DN这个家族等我们也会提一些,好吧。
类似比赛常用的深特征工厂的一些代码库。这个问题不太知道怎么回答。呃,你可以先去看看SK2好吧。先行样本聚队,然后将连续特征嗯转化为呃离散特征,可以吗?嗯。先进行样本聚类,然后再将联续特征者害离散特征。
你可以说一下你这样做的一个意义在于什么吗?其实我不是特别的理解。然后。大家比较热情啊,我有一个问题可能回答不完了,我得快点回答,不然等会我要讲不完了啊,离线训练非实时训练,实时离线训练实时特征。
离线训实时特征是没有问题的。像你刚才做那种方式呢,我们业界有一个专有名词叫做特征快照。就是你当时打分的时候用到什么特征呢?嗯,你就直接落下来拿来去做训练,这样的话不会有特征的不一致性啊。
工资新上一个模型,CTR涨了,但是和CTR正相关的另一个目标降了,这个该怎么办呢?这没办法了,这个要看你们业务诉求啊,就是谁比较重要是吧嗯。工业技目前用的大部分还是LR吧,深度学习用的不是那么普及。
我觉得还挺普及的,就是因为。LR是前几年的一个主流的深度战技术战。其实这两年呢大部分公司都开始逐渐往深度学习进行迁移了。因为深度学习以tenflow为基础的一套啊整个一个环境呢。
目前呃生态环境目前已经做的越来越好了。好吧,包括像tenflow的一些呃训练呀,一些serving啊,其实都越来越好了啊。
Okay。好,那我们继续。
下面呢就是说用户画像啊,这个呢其实呃也是说想跟大家去聊一下,说我们做一个用户建模的话呢,一般都会有一些需要一些什么样的一些用户特征,对吧?这些呢嗯像这个大家就大概看一下就行了。心里有一个数。
就比如说我们有一些基本的特征,像什么年龄性别等等这类一些东西,社会身份类特征。然后呢,这个呢是用户生命周期类特征。这个呢其实是跟公司场景是强相关的啊,就比如说说我们经常会提到一些概念。
比如像什么端活这种东西,就比如说说在我们京东的这样一个客户端,我们用户一些活跃度等这类这些都属于生命周期的特征。生命周期特征呢,一般都跟场景强相关。意思就是说很可能说你在这个场景。
比如京东假如说它有两个阵地啊,就比如说有一个会员阵地和一个普通阵地,那么他就会去统计说你在会员业的这样一个生命周,用户的生命周期,可以在普通页面一些生命周期等等之类的。这些呢共不同的场景建模进行使用。
好吧。类目偏好呢,这些呃这个有可能一般而言嗯像这些偏好呢,因为用户很少会显示的告诉说说那个我喜欢这类的东西,所以这些一般都是通过说用户的一些行为进行一些建模,对吧?就比如说呃你是否是一个吃货。
比如说看你这个买的吃的东西,啊,在你这个总共的买的这些所有的物品当中这样的一个比例等等之类这些东西。然后呢,一般可能还会有一些人为的标注。然后呢,对于那些呃没有呃去那个在我们这个app上活跃很高的人呢。
也可以通过一些模型呢去预测说你的这样一些偏好的一个特征,好吧,然后呢。
这些其实也差不多啊等等之类的。这个大家可以去了解一下。好,我们继续。然后呢,下面就是用户的特征一些挖掘啊,其实很多时候呢我们大家应该都知道说算程师呢其实就是在去挖掘啊。
去探索特征。嗯。我们这个挖掘和探索方争呢,其实要来源于很多方面啊,这里想跟大家去聊的一个方面呢,就是说你拥有其实呢是嗯对于说对于目标的一个管理。以及说对于买点数据的。理解。嗯,什么意思呢?
就是说我们先说后一个对于买点数据一个理解。因为在业绩当中呢,很多数据的时候。大部分都是说你要通过说原始的系统去拿一个东西。打比方说说现在呢我们新开辟的一个场景。那么我去建模的时候呢,我发我通过数据统计。
然后比如说一些热力图,一些数据统计,我发现说哎这个用户只要在这个点待着。然后呢,他最终对于我们这个这个这类用户呢都有一类什么样类似的一个行为。但是呢这个用户在这个点,这个数据我拿不到。
那可能说我就需要说让前端帮我去买一些这样的一些买点。你就说我要自己去深入到这个数据背后的那个系统当中呢去提些什么需求之类的东西。然后呢,能够把这些数据落出来等等之类的。
这些呢都是需要说用我们的算法工程师对于呃业务呢要特别的理解,因此而能才能做到说说我们能够把这个特征挖掘的呃,很清晰很透彻很全面,好吧,就是想说这一点。另外一点呢就是目标管理。这个目标管理是什么意思呢?
我们知道说我们深度学习呃,我们的机忆学习呢其实很重要的一个部分呢,就是怎么去设计我们这样一个lo方。对吧那么以及说对应的这个label啊,很多时候呢我们去设计这个问题呢,不像大家想象的那么简单。
就是说我们这个label呢显而易见的就能去设计出来。我打一个比方,就假如说运营啊,有这么一个诉求,就是说我要想优化啊我们这个呃比如说京东这个客户端的这样1个DAU。这就是一个很大很空的一个话题。
因为DAU这个东西呢,你很难直接通过零1进行建模。嗯,有的同学可能会想到说说可以,比如说按照你今天登录的就是零,您今天没登录就是一啊,呃呃这个说法,今天登录的就是一,没登录就是0。那这样来进行建模。
但是这个呢其实有很多问题啊。第一个就是那这个偶然性其实很大的。然后呢,用户没来登录,其实这个不代表说它对于你这个app不感兴趣,对吧?这是一个点,另外还有很多别的点,就比如说嗯你这样一建模的话。
你的样本你。你的样本和它的实际的关联性也不一定有很大啊,一般呢我们都会说想办法把这些问题呢转化成一些跟业务场景相关的一些问题呢进行建模。好吧,嗯,就比如说说我京东可能说我去发一个优惠券。
那么我们通过优惠券这个方式呢去提升我们这样一个啊app的这样一个日活,对吧?那么你只要用了这个优惠券呢,你肯定得来我这进行消费等等之类这些。然后呢,我们就拿这个优惠券是否更实用啊。
作为说我们这样一个灵1啊来优化我们这个app的这样一个日活等等之类的。我就举举一个例子,很多时候呢业务场景问题要比这个要复杂的多。如何呢进行特征和内部的这些挖掘呢,其实是蛮重要的。好吧。
嗯,下面呢就是我们要介绍一个另外一种类型的特征,就叫U toI特征。那么什么叫U toI特征呢?U toI特征的话呢,基本上是属于那种user和item的一些交叉类特征。
比如说说嗯假设我们有两个user,分别是U一和U2,然后两个ite分别是I一和I2。对吧那一个UI特征呢,就比如说说U一有没有浏览过IE啊,呃就是这个user是否浏浏览过这个iteom,对吧?
那这样的话呢,我们就可以看到说这个user它是否浏览过这个IE啊,它是否浏览过这个I2啊,对吧?那么每一个user呢它都会有多少个U toI特征呢,它都会有2个UI特征,对吧?
就相当于是你的UIE特征和你的UI2特征等等之类的这些。这些呢就是U toy特征。你说常见的UtuI特征呢,就像说这个用户他是否浏览过这个iteom,你说这个用户浏览这个iteom的次数。
再加上说刚才我们所说的那种划窗类统计等等之类的,这些都是一些比较常见的一些U toI特征的那些过造方式,好吧。那么最后一个问题呢,就是。U to I特征和特征交叉有一个什么样的一个区别,对吧?
那么U to I特征和特征交叉有什么样的区别呢?我这里的理解就是说呃U to I特征呢更多是强调说一个说user和item的一些交叉。而我们平常所讲的特征交叉呢。
大部分都是说这个user之间内部的一些特征交叉。就比如说像什么年龄和你的收入的一个交叉呀等等之类这些交叉。好吧,像U to I的这种交叉呢,一般跟场景的信号呢,可能相对而言更强一点。
所以说如何合理的去构造U to I特征其实也是很重要的一个点。好,这里是云开特征。
啊,时间关系呢,这个离线数据存储和在线数据存储,这里我就不讲了,我直接跳到下一个步骤,不然的话等会肯定是讲不完了啊,我现在都怕我讲不完了啊,然后我们就这个东西的话呢,可以大家自己离线学呃。
课下再去学习一下。
我们讲第二个部分召回。And。然后。嗯,mo lens数据集有图片信息吗?minus这个数据机果好久不用了。这个如果下面有同学比较了解话呢,可以帮忙回答一下。好吧,我不太记得。
然后说呃某个年龄段内的样本大概率是一类,然后呢先聚类,然后看这类样本中某个特征的取取范围啊,然后呢再根据这个范围边界进行分头。嗯这作其实也可以,但是你都已经聚类了。
那其实有的时候也不一定再需要后续一些做法。因为聚类这个操作,很多时候是挺消耗资源的,像一些常用的这类算法,比如说嗯。那种像呃那个那个KNN这这种类型的呃呃不是KKmiss这种剧类算法呢。
很多时候时间复杂度都很高啊,好吧,就是说工业界当中呢,对于剧类的需求呢,其实很多时候嗯也不太好弄。然后怎么表征用户的一个实时兴趣?表征用户实时兴趣的话呢,就可能说说嗯打个比方。
一般都是说看这个用户呃呃我们拿一个具体场景来说吧,就比如说说我们在这样一个信息流推荐当中啊,比如说你在今日头条上去看一个信息流,看一个东西,对吧?那假如说今天呢呃新闻呢全都是新冠肺炎。
然后呢你疯狂的在那点击新冠肺炎这个东西,那么就其实我们背后就可以统计到说你对这个新冠肺炎的这样一些创征呢这样一些呃标签类的东西呢都比较感兴趣,对吧?这样就挖掘到你的实时的这样一些兴趣啊。
所以说我们一般都是通过一个你最近所浏览,或者说点击的这些iteom呢去进行挖掘啊。嗯,这个不好说,好吧。然后user和item的一些交叉特征啊,维度太高,怎么进行处理啊,这个交叉特征的话呢。
我们一般都会把他们最终再给呃我我我拿一个深度学用尽量用的一个方法,就是你可能会交叉很多,对吧?但是没有关系,我们呢都是在深度学习当中呢。
这是我们一个深度学习一个框架,对吧?然后呢嗯我们一般呢都会在一个深度学习当中呢,像这些呢你这个特征维度可能很多,假如可能是10万维这么多呢,虽然都会通过一个inbeddding层。嗯。
把它变成一个很低的一个维度,可能这里呢就变成了9256维了。好吧?所以说嗯这个其实还好。嗯,像嗯在那种大场景的那种s的推荐场景的话呢,基本上特征的维度都是特别特别夸张的,都是上千万维上亿维的。
所以说嗯其实这个不是一个问题啊。
好,那我们继续来讲。
下一个板块呢想跟大家分享的是召回啊,召回这里呢呃常用的呢这我们先说一个整个的这样一个呃。recommendation就是一个推荐呃推荐系统这样一个引擎的这样一个架构。刚才呢我们说过说。
其实呢我们就是有两个部分,一个部分呢就是说我们这样一个金牌。另外一个部分呢就是我们这样的一个召回,召回在前,金牌在后。那么他们分别有什么样的区别呢?召回呢。
一般都是说是从我们这样一个海量级的这样一个ite当中呢,把它们给它弹到很少的这样一个特呃嗯就是那个需要排序的item的这样一个维度。比如说很可能就是十的8次方这么多维,就18次方是1亿,对吧?
这么多个iteom给它变成很少。比如说十的3次方,1000个ite,这个做法呢?一般就是召回。啊,召回他的目标,他大家可以发到发现说它既然是从一个很大量的数字变成一个相对来比较小的一个数字。
所以说呢这里呢一般复杂度呢都比较低。他有这样一个特点,复杂度模型复杂度比较低,然后呢要快速。并且说特征也相对比较少,以及说很可能是一些业务规则。和模型。共同使用的这样一些方式。好吧,这里呢就是召回。
第二个呢就是我们这样等会要讲的这样一个金牌。那么金牌呢,它其实就是从10个3次方个ite里面呢,可能就会选择比如说top10出去啊。这个时候呢,因为10个3次方呢量级已经很少了。
我们就可以把这10个3次方这么多个iteom呢全都进行打分啊,然后呢最终从高到低往的那种台。然后可能就是一个很复杂的一个深度学习模型,有好几层网络啊,我们的这样一个特征呢。
很可能也真的变成了那种上呃10亿位呃10亿位啊,10亿维啊这种东西都是有可能的。好吧就是这里。然后呢,这也说了我们这样一些models。这个models呢在这种呃我们的召回场景中呢比较长的。
就比如像这种协同过滤类的啊,就是我们召回当中经常会用到的一些东西啊,以及说经常会用一些其他的求距离的这样方式啊,然后呢这个呢其实嗯是。这个大家就不用看了,反正就是一些比较复杂的一些模型。好吧。
我问大一下,有有人知道我这个图是哪来的吗?如果有人知道的话,可以在那个评论区回答一下,好吧。然后最后一点就是呃data sources,这个呢其实想跟大家聊,有一个点就叫contexts。
contex呢是一类特殊的特征。我们一般叫他们为什么,叫他们为上下文特征。
什么叫做上下维特?上下文特征呢?上下文特征指的是一般是在这个系统的实施状态下能拿到那种特征。之前你不知道的那种信息。打个比方,就比如说现在呢是8点50。打家比方说,那这个东西呢就是一个上下文特征。
你之前呢你也不知道这个人什么时候会来你这样一个系统里面待着。那现在的8点50来了,那么他来的这样一个时间呢就是8点50,以及说假如说他可能是用IOS设备进行访问的等等之类。
这些在实时当中才能拿到的一些信息呢,我们一般称担某为上下文特征。上下文特征呢和实时特征是有区别的。上下文特征呢一般都是通过那种上下文那种嗯工程之间。
我们一般有个专有名字叫做透传这种通过这种字段信息这种透传去拿到的。而这种实质特征呢,是你这样一些数据呢,本身就有,只是说到这个具体的时间点呢,你把它们给计算出来了,好吧。打个比方说。
就比如说这样一个ite的CTR类特征。我和你的这个特征呢,这个实时特征值就是一样的。但是很可能你用的是IOS,我用的是安卓。这样咱俩这个摄像文特征呢就不太一致,好吧嗯。
我们继续啊,下面呢就是讲启动过滤。启动过滤呢作为老一辈的这种推荐系统的这样一个典型代表呢,其实现在呢也有他们的一些应用,只是说没有那么广泛了啊,启动过滤,它一般我们要讲的话呢都会讲三种啊。
是基于用户的基于iteom的和基于model的。基于用户的呢基本上就是在求用户和用户的相似度。She。啊,然后呢假如说A和B这两个用户比较相似,那么B看到什么东西呢?就会推荐给A是吧。
这是属于user base的CF。iteom base的CF呢就取的是ite。嗯,和item相关的一些相似度,对吧?他们呢就会通过说比如说呃这个两个item呢有多少个呃。
比如说我们在这种视频推荐的产品当中呢,有边有个col watch。啊,这样的话呢,就比如说这是一种计算item这样一种相似度这样一的方式啊,那么最后呢然后呢通过说这个user呢。
他看了哪些iteem去找这些ite所对应的相似item。这样的话呢就是我们的种iteom based的CF好吧。嗯,这两个概念呢相对比较容易进行混淆。大家怎么去记呢?
反正我记的方法呢就是说user base的CF就是求用户相似度。iteom baseCF呢就是求iteom相似度。那既然你现在有这些相似度呢,那后续你怎么进行使用,其实就比较明显了。好吧,就是这两点。
最后一点呢就是我们这样一个model based的CF,就是说基于模型的这样一种相似度。这种相似度我们这里会去讲什么呢?我们主要会讲SVD和SVD加加这么两个比较常用的模型嗯。
那么我们来看一个具体的问题,好吧,这个问题是这样的,就是说呃因为典型的这种呃推荐,其实有很多迷失呃趋势质这样一个问题啊,那么比如说这个user,它对于这个item。嗯,他有这样自己的一个打分,对吧?
那具体呢就反映到了这个表当中。当然我们知道说这个ite的数量呢极为庞大啊,有很多个电影,我们不可能每一个人呢都全部看完啊,因此而言,就有很多地方都是缺失的。
那么我们的目标呢就是说把那些缺失的地方呢都给它进行补全。啊,补全完了以后呢,那打分高的自然也就是你可能比较喜欢的。因此而言,也就是说呃是最终应该推荐给你的一些方式。好吧。
讲这个之前呢,我们先去讲一下SVD它是一个什么样的一个概念啊,SVD呢它本质上呢是一个数学概念,它是一个非企那个奇异矩阵分解,就是它的一个全称啊,它呢相当于是说任何一个矩阵M啊。
它可以不是一个行列式的这样一个形式啊,就不是一个那种呃行和列就是行列式那种都相等这样一种方式啊,甚至于它的runR也是可以小于M啊,或者是N的啊,比他们两个都小。
那么SVD主要做的一个什么样的一个事情呢,它需要相当于拆出来一个左矩阵U和一个右矩阵V啊,这两个矩阵呢分别都是那个叫做。
正定矩呃正交矩阵。我。嗯,然后呢以及说中间的一个矩阵西格玛啊,西格玛的对角线呢相当于对应的就是U和V里面的他们的这些呃正交基,他们的这样的一个重要程度,好吧。我们一般认为说这个里面的这个呃这个值呢。
它是越大的话,然后呢呃是它的绝对值越大。比如说-8是比四要大的。然后这个绝对值要大呢,越大呢认为说这个呃它的这样正交机呢是越重要的。好吧,所以说一般呢我们都会通过一些方式呢去对一个矩线做SVD分解。
也比较常的方式呢,就是比如说拿M去乘以M的转质啊,这样的话呢我们就可以去计算出这个好像是计算出那个微矩阵。如果是M的转质乘以M啊,就算是U矩阵,这个具体我可能记串了,好们大概就这么一个意思啊。
然后呢去求它了以后呢。最终对它去做特征根和特征向量的一个分解,就能分解出我们这样一个西igma矩阵。好吧,当然还有一些其他的一些方式,我们刚才讲的是一些最长的一样一个方式。
这个呢就是呃矩阵的SVD分解啊,我们呢最终呢能够通过说嗯去取那些因为大家可以看到说我们这个质呢很可能是说这个黄值呢很可能已经是零了。就只有这两个值呢是有意义的。我们就可以通过说这个西格玛只取前两列。
完了取它对应的这个应该取它对应的前两行吧,这个对它取阵的前两列啊,然后呢最终能够把这个去复原出一个新的矩阵M撇啊,我们一般认为说M和M撇之间,它们的距离呢。是相对而言比较小的。
这个也是我们经常用到一种曲噪的这样一个原理啊。因为如果说你在这个sma里面的这个特征根比较小的话,我刚才说过了,就是你这一个正交基,它不够重要,我们就可以把这个维度直接给它干掉,好吧。
这就是一种渠道的一个逻辑基础,那么我们在这里呢会有一些区别,为什么会有一些区别呢?是因为我们这里呢大家可以看到说打了很多问号,就是说很多值呢?我们是不知道的,不知道的时候呢,我们确实有一些办法。
就比如像这里所说的,我们直接去补零,但补零呢不一定是一个好的办法,为什么这么说呢?是因为如果说补零的话呢,嗯它就会有很多的一个偏差,它只是没看过啊,它并不代表说它不喜欢它。当然我们在这个推荐系统当中呢。
经常会有一个。这样一种bas的这样一种呃现象。什么叫做bas呢?bs指的就是说说嗯很可能是你不看不看它的原因,就是因为你不喜欢它。所以说某种角度上来讲,因为它补1个零呢是有意义的,但是必然是不准确。
因此而言传统的SVD呢在这里是不太适用的。我们就发现发明了一种啊新的一种SVD的一种方式。在我们记忆学习领域。
这个东西呢大家不要去忘掉,因为马上呢我们就会见到它。
就是这里我们呢刚才这个举例Y,就刚才我们那个M,对吧?我们呢这个是它拆解的这种方式啊,然后呢,我们通过这种方式呢,怎么进行计算?刚才我们说过了啊,它有一些自己的一些,对吧?
我们有一些implicit和Xitvalue,有些值是看不到的对吧?另外一个方式,另外一个原因呢,就是说我们再去求它的这样一个最小值的时候呢,直接这么去求,因为没有正德项的问题。
很可能导致说你这里面特别容易出现一些过敏合的情况,因此而言,我们就使用一种。
拆分的一种方式啊去做这样一个问题。我们定义们的模型呢是Y等于VU乘以VI啊,或者说我们呃。
VU和VI他认为是什么?就是说对于一个userU和一个对于ite呃I他们的这样的一个呃向量这容表示方式,好吧。如果大家对inbeddding这个概念比较熟悉的话呢。
其实这里都可以认为是user和item,他们各自的这样一个inbedding。然后呢,只是说它们此时的维度相同,他们进行一个内积,就会计算出我们这样一个估计值by height。
那么我们怎么定义我们的lo function呢?我们的lo function呢,其实就是我们这样一个原始这样一个Y,这是我们的label。对吧这里叫个one hatY hat是什么?
是我们这样一个pred的value。对,这里呢就是我们这样一个正则项,对吧?我们对VU和VI施加正则项的这么一个限制,然后让它呢尽量的不去混拟合,那么纳是我们的正则项系数。
这里的这个呢是我们这样一个啊样本的这么一个权重啊,然后这里需要讲的几点。第一点,ID embedding就是这里所说我的U和I呢,其实就是我们最终去呃inbedding这样一个结果。为什么这么说?
是因为说嗯我们embedding的数学概念是什么呢?embe的数学概念其实是。Yeah。对于一个向量空间X,在对一个向量空间Y啊,我们有一个函有一个函数,或者说有一个映射F。
然后使得说把X映射到Y这个空间当中。首先需要强调一点,就是X和Y这两个向量空间呢,它们本身并不一定存在说哪个向量空间一定比另外一个向量空间大啊,比如说X呢是。RMY呢是RN。
那么M和N的大小关系呢其实是不确定的。但是我们在实际的使用当中呢,经常会让M远远大于N,相当于就是把你这样一个spae这样一个特征呢给你压缩成了一个dance的这样一个特征。
且我们称这个dance压缩后的这个结果呢为in。当然这里有一个问题呢,就是说我们N我们要进行对原始成用一个压缩。那么我们的N设置为大多少的大小比较合适,这个的话呢。可以认为是一个模型的一个超参。
可以进行一个调整。这个就类似于呃其实就是我们这样一个深度网络结构当中,每一层的这样一个大小,对吧?就本我们经常想用的层呢是25664这样的一个数字。当然你要用什么128米T256也是可以的,对吧?
这个呢其实就是影是我们这样一个inbedding size的,这是第一点,第二点呢,就是说在这里呢,我们也会通过说很多的实验呢去确定说我们具体inbedding映射到低维的哪一层是比较合适的。好吧。
这是这里。第二个呢就in the product,就是这里好吧,然后最后一个呢就是miple loss functionavaable,就是我们在这里呢其实有很多种可以使用的lo function的。
我们在这里呢是使用的均方误差。当然这里呢有很多种正策项的这样育方式。这个呢就是我们想要前面讲的SVD。
在我们推荐系统当中的model filtering的这model collaborative filtering。的这样一个用法,好吧,相当于我们。怎么做呢?做法其实也很简单。
就是一般呢我们最开始的时候呢,就会说initialize。我们的这样一个呃VU。
v i 啊。下面呢我们就会说去通过这样一种ds方式呢,对于每一个去求它的这样一个梯度。第三步分呢就进行更新。
啊,第四部分就判断你的生命条件convergence。如果不收敛的话呢,再回到这里来再输入新的样本,再进行计算M的梯度,再进行更新,以此类推。好吧,这样种方式呢也是我们在继续当中最强的一种方式嗯。
好。
我来看一下大家的问题。然后。不是10万,是2000万,交叉300万,这个直接交叉吗?嗯,所以说我们经这个问题问的呃问的其实是比较贴近于我们工业业当中经常用的一个实践的。
有的时候呢我们并不一定啊会去对所有的东西进行交叉,以及说就算对所有东西进行交叉了以后呢,因为我们的向量呢是极为稀疏的啊,可以理解为说一个user。
假如说呃就比如说阿里假如说它有10亿个at但其实呢它相当于就是样相当于是一个one house这样一个结果,对吧?你可能你不可能去浏览那11个ite全都去浏览。
你可能只会浏览其中的1个300万这么多对吧?因此而你去浏览了300万呢,你呃300万都比较快,你可能只浏览了300个啊你浏览了300个呢,只有300个的,他们的这样一个one house的值呢。
是非零的,其他都是零吧。然后为D位度inbedding对召回的结果怎么去评估呢?这个嗯和呃金牌其实也差不太多,一般都是看你这样1个AUC的这样一个情况。好吧,有的时候可能还要看一些效率啊。
youtube对的。这就是刚才那个图的来源的地方。嗯,上文特征还是不太理解是吧?你想一个例子,就是说现在是9点,对吧?那你9点去请求的这样一个系统,那你和你10点去请求这样一个系统。
他们的上文特征呢分别就是9点和10点啊啊,以及说呃或者说。我拿我们两个人进行举例,好吧,就是咱俩这个时候都在9点去请求,咱的上文特征呢都是9点,但咱俩分别用的不同的设备。
比如说你用的是IOS5用的是安卓的那咱俩的设备这个上文特征呢就不一样。加样的实时特征呢,如果看到都是同一个item呢,也可以是一样的。所以说实时特征呢基本上都我们系统呢自己进行计算的。
而上文特征呢就是说是跟当时当前的状态强相关的,好吧嗯。像阿里这种用户实级的怎么实现us色CF嘛?工业级的解决方案嘛?嗯,一般而言,我们像这种解决方案呢。
可能会取一些像什么呃呃向量那个向量与限量之间的这样一个距离,有一些方式呢去比较高效的求向的一些距离,或者说离线呢先去做一些计算,相当于先把那个你之前呃indding就是跟你相关的那些排序都给你排好。
相当于相当于相对而言会给你变得小一点,以及说我们还可能会做一些业务过滤。就比如说会去看你最近浏览过的浏览过的10个东西,然后呢,把他们的开ddy过员ID给你拿出来。然后呢,这些拿出来了以后呢,然后呢。
最终去拿他们先把几个大类给过滤掉。这样呢摄像级呢也会减小很多。很多时候不全是算法的一些功能,一般都是我们的业务过渡和算法过渡一起去做的,好吧嗯。然后大家是召回是自己写函数,还调换库啊,这个看情况吧。
这个问题也不知道怎么回答你嗯。然后SVD进行矩阵分解是直接处始化两个词矩阵。然后通过拟合存在的呃分数的方式训练这两个词矩阵,还是先补赢,再分解矩阵再拟合。这就是刚才我们所说过的两个不同的方法。
我比较推荐于前一种方法,因为前种方法呢,你可控的地方学相同员更多一点,好吧,分解矩阵的话呢,其实你控的地方就很少。求物品的相似度的时候,我为物品的个数很大怎么办?比如说求任意量啊,对。
一般而言工业界就会有一些那种比较呃性能比较高的那些呃呃求向量之间相似度这样一些库。比如说这位同学这里所提的这样一个fs,好吧。然后。HB在线离线对那块更感兴趣。嗯,这个可能没时间讲的。
因为等会儿还会有金牌要讲,如果大家都对这个比较感兴趣的话呢,可以再有几个人再去说,我再去讲,好吧嗯。然后如果说数据级如数据级的规模太大,然后开销太大怎么解决?嗯数据级的规模太大。
你说的是那种离线在计算增后的时候,还是说线上进行服务的时候呢?这个可能也不太一样。然后召回的item没有label啊,怎么去计算AUC直接上线嘛?有离线能跑评估这样一些指标吗?哎,这是一个好问题。啊。
再再离就是你今天召回出来的这些东西呢嗯。有youtu曾经分享过一篇论文,就是说嗯因为你召回的这些东西呢,嗯它虽然说你在这个场景你把这些东西给召回掉了,但是这些物品总有暴露出来的时候,对吧?
那你就总有一段总有时间能够去学习说这些ite的这样一些些他们就有那一些表现的情况。因为我们在学习继续学习肯定学习的不是一个单点性的这样一个行为,学习都是一个全局性的这样一个行为。因此而言。
你在这里看不到,你总有在其他地方能够看到,对吧?还有呢就是说召回确实是过滤掉的很多东西。那么我们怎么能够尽可能去复原说这些被召回出来的东西,他们如果不会去召回,他们对这样物品这样一个影响。
有的时候可能我们就会对样本呢做一些啊全重一些干预或者一些修正,去帮助我们去学习这样的一些东西,好吧。然后强化学习做推荐系统的效果怎么样?一般用什么样的一些模型?
强化学习目前业极的探索还都相对来言比较初步。因为强化学习它本身有自己的很多局限性啊,以及说嗯这项技术呢很复杂。然后呢,接入成本比较高。像我们做强化学习的而且强化学习它有很多的限制。
就比如说要这个用户与这个环境在在一直在进行交互才可以。但是这样的场景呢,其实并不是很多,好吧嗯。一般而言都是属于那种单条行为。就比如我给你推荐出来这样一个东西,然后你点不点呢,因为我会给你推荐很多东西。
对吧?嗯,当然像阿里啊、京东啊,他们都有自己的一些强化学习的一些实践。但据我所了解,强化学习应该在嗯这些地方也没有特别铺开的进行使用嗯。Yeah。然后超大规模特征在线请求毫秒级响应要做哪些优化。嗯。
这也有很多工业界的一些优化。好吧,嗯,超大规模的一些特征呢,工业界一般都会有一些嗯特征的一些提取库。呃,google曾经发表过一篇文章去讲那个特征提取的。大家有兴趣的话呢,可以自己下去搜索一下。
它呢一般就是一个毫秒级的这样一个呃库,它能够保证说说你很大量的一个特征。然后呢,我们去进行提取性能很高。再一个问题就是说我们一般说这种大量级特征,比如说一级啊这种特征呢。
很多时候都是指的那种弯号的之后的那些结果。但你的原始特征呢,其实并没有特别大原特征可能就是万级10万维的这样一个级别。那这样呢其实用那些在配上那些高性能的C加加去编写的那些特征提取库。
其实性能就相对还好。就是一般涉及到性能的,在工业业当中用的最多的呢都是C加加,好吧。然后SVD先补定再做分解,然后呢,然后你不就已经把那些最终的N那个左矩阵U和右矩阵V都求出来了嘛?最终你这个UC嘛V。
你就能够把这个原始的矩阵M给复原出来了,对吧?Yes。哦召回的概念有点没理解。召回的概念你就可以理召回的召回是什么?就是说从亿级到百到千级,金牌就是从千级到个位数级,这么理解就可以了啊。
然后Hb能做实时特征吗?会出现延迟不够的情况吗?嗯你你这句话问的这个问题呢,嗯我感觉是你对Hb这个东西本身不是特别的了解。Hb它是一个存的这样一个地方,它不是它是一个数据的存储引存储的一个引擎。
它不是一个计算引擎计算引擎呢,我们一般在在线呢会用一些呃实时实时计在线的引擎这样一个工具,像link这样一个东西,一般都是我们flink引擎呢,从Hb里面先把需要算的东西给拿过来。
然后或者说买s一些数据库等等这类各种各样的情况都可能会有。然后呢它进行计算计算完了以后呢,再给塞回到Hb或者说买scle当中去。好吧。所以说这是这个。read是好吧,它是属于计算机的。
就是在那个系统里面的这种c。一般而言我们都会read是靠近呃这边就是如果说这个系统是java好吧,靠近JVM的这样一个c。而那个Hb呢相当于是一个远程缓存。一般而我们都会说有一个呃缓存的这样一个失效期。
嗯,因为我们不可能频繁去读Hb,因为你去频繁读Hb的延迟基本上是毫秒级的。但你读read的延迟呢约等于0,因此而言,一般都是说呃把一些东西呢会加载到呃read这种内存的c当中去啊,当然也会有一些失效期。
或者是有一些预热的一些技术,好吧嗯。然后手动做的特征有多少为?呃,现在的话如果说用那种呃深度学习的话呢,其实都很少去人肉做特征了。因为很多时候那个这种模型可以帮我们去做很多事情,好吧。
但是呃有的时候呢也是需要说人去做一些特征交叉的啊,但特征交叉我们一般也是批量进行特征交叉,也不是单点交叉。算法工程师还需要会C加加吗?一般需要会哪些语言?呃,我觉得是需要会thon和C加加。嗯。
因为像比如说tflow,如果说你想去开发一些tflow算子的话呢,flow大家应该都知道它分为thon端和C加加端。你只会thon端的话呢,你所做的事情是有局限的啊,因为on端的性能普遍比较差啊。
当你需要一些高性能的一些库的时候呢,你还是需要通过C加加去那个进行一些开发好吧。你们只会拍的不会C加加可不可以?当然可以了,我就是可以慢慢学习嘛,对吧啊?😊,然后特征的偏量交叉是什么意思啊?
我们一般都是按域语进行交叉。就比如说刚才我们在这里。
你你那个图在哪?在这对。比如说既然是我们把这个特征分组,像基本的特征呢,很可能就会与全部的都会和ite特ite特征交叉为一拖y特征,这就是一种交叉方式。好吧,我不会说在去这里面再进行筛选。
说比如说性别啊什么之类的这些东西啊,这样呢就是特征的数量就变得更庞大了,但是也会引入很多冗余特征啊。
好嗯,我先接着讲好吧嗯。
Yeah。🤧然后呢,这里呢我们刚才始讲的是那种model CF对吧?那讲的这些model。不好意思,讲完这个model CF呃model CF的SVD以后呢,我们下面要引入的是SVD加加。
大家可以理解说在这里面呢,其实我们用到的信息是什么?用到的信息呢其实就是说我们用到了这些user和iteom他们相对应的这样一个打分,就是这样一个Y对吧?但是呢我们还可以考虑额外的信息,额外信息是什么?
就比如说这个user曾经对哪些ite打过分,这这个user呢,它曾经看过哪些ite,比如ite一iteom2,一知道ite10对吧?他看过的这些ite,这样本身呢也是对于这个user的这样一个信息。
对吧?但在这个模型当中呢,我们并没有把它显示给用到。那么我们在这里怎么进行使用呢?那么就引入了我们的SVD加加,我们会引入两个新的向量。
先看这吧。两个一个新的向量,就是这样一个QJ。和这样一个VI对吧?这个QA是什么呢?QA就是指的是我所有打过分的这些item啊,然后呢。
这个叫做user rateiteems of the user to represented him。就是我对哪些东item打过分。
那么我就把那些给我打过分的那些东西呢给他家拿过来去来表示我这样一个user,好吧,所以说呢你可以理解为说这其实是另外一种什么另外一种CF对吧?因为呢我们是拿item去表示这个user,对吧?
我们的目标载体呢是这个item,对吧?当我们把这一部分呢给它加入到我们这样一个协同过滤里面去。
嗯,我们在这里呢有的是什么?不仅是有这个user,它本身的这样一个呃属性,这样一个inbedding,对吧?我们还有的什么?还有的是说这个user它所read的这些items都有什么啊。
我们把它们呢也给它进行相加啊,这些呢最终呢去表示这个user,对吧?这样呢就是。出现了我们这样1个SBD1加加啊,相当于呢他考虑两方面的信息,一个是我单点的打分。一个是说说我曾经看过什么的一个总合打分。
好吧,这里就是SCB1加加啊,这个呢其实是SBD和SBE加加呢是大概在一二十年之前,nflix他们举办一个竞赛的时候,最由得奖的这样一个模型,就是SB加加,它其实也是独领风骚了很长一段时间啊。
好,那我们继续往下去讲讲我们这样一个ranking金牌。金牌。这里呢我们会讲两个深度学习的一个模型啊,一个是Y and deep。等会呢还我们还会第三行也要讲,然后呢,最终还会讲一下。
那个我们这样1个ESMM好吧,那么ve and deep呢,它相当于是什么?大家可以看我们这样一个网络结构啊,其实呢就是这边呢是我们这样一个外的部分,这边呢就是我们一个dance部分,对吧?
d词部分呢其实大家都了解,就是深度网络的这样一个逐层的这样一个往前的这样一个堆叠,对吧?这层这层这层这层对吧?这边呢相当于是从我们的spas特征呢,或者是其他什么特征呢变成inbedding啊。
然后呢再把我们看开到一起,在逐层网络堆叠,这是我们的这样一个dance部分。而这里呢相当于是我们这样一个外的部分,对吧?也是我们啊这样一个直接。大家可以认为说这里是什么?这里就是我们这样的1个LR模型。
对吧?我们相当于是把我们一个传统的LR模型和一个深度的网络结构呢给它结合到了一起啊。
如果说我们这个外的部分呢变成了FMFM大家应该知道吧,叫做嗯。怎么化不了。叫做factize的 machine。哦,知吧。啊,这个也是一个很经典的一个模型。如果大家不了解的话。
建议大家课下去了解一下啊吧。如果说我们外部分呢采用FM,它就变成了个depM。那么之所以要讲外 deep呢,是因为它基本上是所有的这种深度啊模型的这样一个起点啊,因为它代表的深度模型的两个部分。
一个部分呢就是怎么去使用我们这样一个d层一部分呢就是我们这样一个加入加外层能给我们带来什么。一般认为外层表征的是我们这样一些。特别specific的这样一个信息,特别特定的这样一个信息。
而d词层呢表示的表中的是我们什么是我们的一些特别ja的一个信息,对吧?我们从从概念的角度去理解呢,就是说当你这个网络结构逐层往前进行堆叠,进行传递的时候呢,每一层。
他最终呢就是说需要的信息呢进行逐层的这样一个抽象啊,越往上越离你的label近啊,它你这个抽象的这样一种结果呢就越抽象,对吧?曾经我们呃那个有一篇论文呢,它就是连就画了个图,大家应该知道说CN网络结构。
就是对图像做抽取的,对吧?那么我对图像的抽取的时候呢,它可能会有很多个卷积核,你说很多个通道啊,然后呢,我们就会发现说在前边几个卷积呃在卷积每个卷积核能都去滤过的这个图像的不同的部分,对吧?
假如说是一个猫在一个原野上,那有的卷积核可能是过滤这个猫,有的卷积核呢可能是过滤那个天空等的这样一个东西,且越靠近原始数据,这个卷积核所过滤出来的这个东西呢,就越能看出来它是什么东西啊。
越远离它就越看不太出来了,好吧?因此而呢就是越到这边呢是变得越来越粘的。而这个大家怎么去理解呢?就比如说假如说我这个人呢我特别喜欢吃肉啊,那么我喜欢吃肉的时候呢,嗯可能其他人都不喜欢。
如果说我们通过一个全局的大家的视角去学习的话呢,我们模型关注的是globalgbal这样一个因此而可能就把我喜欢吃肉,大家都不喜欢吃肉这个信息呢变成了所有人都不喜欢吃肉。
就11某个人的特定的这样一个信息啊而如果说这里加入外层呢,可能说我们有额外的信息呢被提取出来好吧,就是这样一个呃特别specific的这样一个信息的这么一个学习啊,这个就不讲。大家自己看一下就行。
没时间了。
然后呢,最终呢看一下这个呃这个welandrevisit。刚才我们已经说过了啊,然后呢这里再多说一点,就是说这样一个模型呢,其实它是效果特别好易于扩展。这是为什么weland地其实是。呃。
很多时候特别喜欢被很多算法工程师去使用。因为我们建模的时候呢,呃很多时候也要考一个模型的这样一个复杂度和可解释性啊,一般而言,深度模型呢它就不太好可解释,且会偏复杂一点,但它效果可能就会比较好。
所以说我们就倾向于说我们尽量用一些比较简单的模型,这话也好解释啊,以及说我们线上的服务呢延迟也会相对而言比较低。这是这里。最后呢我们再介绍一个阿里的这样一个呃网络结构ESMM。
这个ESMM呢也是我们在呃那个呃呃计算广告里面呢特别常用的这样一个网络结构啊。ESMM呢它所关注的问题呢是这样的。刚才呢我们说了两个阶段就是曝光到点击,对吧?但其实呢我们还有第三个阶段那我们叫做使用。
什么意思?就给你推的这个广告的,你点了它了。但你最后呢你真正的在这个广告给你推荐这个商品发生了消费啊,这才是一个使用,这才是终极目标,你光看你不消费,其实没什么用的,对吧?
我们很多时候需要优化的这样一个漏斗呢,是这点这个load斗,我们称为这个load斗呢,是CVR。我们称这个呢叫做CTR,全集呢叫做CTCR。好。click throw it。
click view it啊,是view啊,这个替成through。嗯。然后嗯CVR其实是不太好预估的,原因是什么呢?是因为我们很多时候的一个东西的点击率呢可能很低,可能连百亿都不到。这意味着什么?
假如我们有一个亿的样本,一个亿样本好像很夸张,很大量,对吧?但真正最后就只有多少样本,就只有100万这么多样本。100万样本呢,很多时候训练一个深度学习的模型呢是远远不够的啊,因此而言呢。
我们就需要说怎么能够建立用好所有的项目空间啊,那么我们阿里巴巴提出的这个ES3M步模型呢,就通过markettytask learning多目标学习的样本方式呢去通知学习CTR和CVR。
我们这里会有两个塔,一个呢是CTR这个塔,一个呢是CVR这个塔啊,他们呢都分别呢是用各自的样本啊,全量的样本呢进行预估。但是呢由于我们这个CVR呢,它没有办法计算说从这没有点击的那些样本的这样一个对吧?
但是谁可以计算呢?CTR和CDCVR这两个部分呢是可以去计算的。因此而言,我们这两个塔分别计算出CTRCVR以后呢,我们的n呢是通过说CTR的这样一个。和CBR的这样1个CTCBR的这样一个los呢。
去优化说我们这边这个塔和这个塔这两个塔的这样一个网络结构,对吧?然后呢,最终我们去进行线上的预测的时候什么?我们只去去计算说这个塔的这样一个最终的预测值,就不去计算它和它了,好吧,这就是这个。
这个呢其实相当于是怎么能够利用呃利用多目标学习的这样一种方式呢,能够把说我们一个原始的下载空间给它变得更大了一些。好吧,这里呢我们金牌这部分呢,给大家讲了两个模型。
一个是一个是这里我们的S他们分别代表的是说一个特别经典的一个特别战斗一个模型和一个根据场景设计出来的一个特别强相关的这样么一个模型。好吧,因为嗯我们算公师在进行业务的一些呃举呃学习啊。
以及说建模的时候呢,很多时候都是要在一些特别传统的一些模型基础之上呢,加入自己的一些理解,变成一些新的一些网络结构啊,E呢就是一个特别典型的一个例子。以就说大家可能也听说过一些其他一些网络结构。
比如像什么DIN呀什么之类的这些网络结构等等之类的。这些呢其实都是一些特别。
优秀的被设计出来一些网络结构。所以说呢大家也可以通过这些网络结构呢去想一想,背后我们在遇到一个问题的时候,是怎么着一步一步的把这些东西呢给设计出来的,好吧。
好,那么呃在这个课程最后呢,我们做一下推广啊。然后呢,如果说大家对于呃这推荐系统这门课比较感兴趣,或者说说在这个公开课上呢。因为公开课毕竟很难回答说大家所有问题,并且讲的特别透彻,对吧?
如果大家都比较感兴趣的话呢,也欢迎来报名我们这个推荐武器的这么一个课程。好吧,大家可以去看一下这个网址,然后呢去看一下我们这的课程的网站的这样一个介绍。到时候呢会有三位重量级的老师呢来给大家开这门课嗯。
好,那么我们先来看一下。大家这些。问题啊。Yeah。嗯。公式统计特征多吗?有多少个?啥叫公式统计特征,没家看不白你这样一个意思。统计特征的话呢,基本上嗯划商类统计呢呃是用统计类特征。然后呢。
它单纯的at统计类特征,加上U toI之类的,基本上都是偏统计类特征的,好吧。啊,老师的公司是吧,统计特征多不多?嗯,还行。嗯,但是嗯。你要看场景,有的场景呢统计的特征可能就会占特别重要的一个比重啊。
我们也做过说直接拿那个模型。嗯,有一部分呢我专门就不用我们这个CTR这样一个统计的特征,就专门进行一些经典特样一个建模,直接呢去和CTR的特征呢给加总到一起。好吧,这个呢我们也曾经尝试过,效果也还可以。
Yeah。想精确一个语言,推荐C加加还是java的?我觉得你java学精了,C加加应该也能触类旁通。好吧,其实很多语言之间呢都是触类旁通的,就是不要说说那个呃。想一个月我要是学java还是学C加加。嗯。
你想这一个月时间可能都已经学了很多东西了,对不对嗯。java呢是偏向那种业务系统啊,以及说那些呃就那种进传统系统。但像深度学习这边,以及说目前技器实习领域呢,如果说java和C加加进行比较的话呢。
我偏我去建议大家去学一些C加加,好吧。
是。SVD加加为什么有根号啊,这个是做了那个叫呃那个那个什么。
即个嘢。哎,哪里有根号?那个根号我没在这里写,应该是其实呢是有地方做根号的,是在这里有过做过根号。这个我没有写,就是在这里呢大家可以发现说嗯假如说有的user呢可能说对100个ite看过。
另外一个user呢只能看过10个ite特,对吧?那么。
大家量刚就会出现很大的一个差异啊,因此呢我们在这里呢有时候呢会做一些规一化的这样一个操作。我们都会去除以说你所看到过的这些item的这样一个数量,打成这样一个数量。但然这个不能作为完全的规一化,对吧?
完全规一化应该是除以NU但是反正论文中告诉我是除以根号NU。我的理解就是可能说你看的多一点,确实嗯最终他们发现说用根号的效果比较好啊。
后拍时在推荐领域步selflow嘛是这样的,就是在工业界当中呢呃和学术界当中呢就两种不同的声音的。在工业界当中呢,我们一般需要的是什么?一个是稳定,二个是线上有很好的服务。elflow由于出来的比较早。
并且说它很早的推出到serv,所以说它在工业界站稳了脚跟。工业界一旦就是对一个框架用的比较熟的以后,一般是不会像学术界似的在这每天换着玩的,因为考虑的首先是稳定性和这种迁移的成本?
但拍al是由于写起来手,所以说在学术界呢就比较流行。我估计elflow这种流行,在最近一两年之内趋势都不太会发生变化。因为像我们公司没有看到任何拍al式进来的趋势,所以说我建议大家依然想进业界的话呢。
还是多学一些selflow。尤其是大公司,但是你自己建模着玩的话呢,你用哪个其实都无所谓的。然后实时特征缓存在readd,那还怎么实施啊?这个的话呢嗯实时特特征这种东西我们基本上每次都会去查询Hb的啊。
像那种缓存在呃readd里面的这些东西呢,一般都是一些系统经常会去用到的一些东西。因为你去查特征,你怎么着要去查HbHb查询的这种延迟呢是和你的集群相关的,和你的查询次数是没什么关系的。
你因为我们一般都是批量的去查,然后批量去读。因此而你可以把你的这个实时特征和其他特征呢都放到同一个Hb的集群里面。这样话我们查询起来,一般效率都会比较高啊。Yeah。
we deep和地盘FM反应传播的时候有什么区别,没什么区别,都是通过电视法则进行反应传播,好吧?FM没有听懂啊,这个我没有怎么去讲啊,也没有什么时间了。这个大家可以课下再去看一下资料啊。
然后新模型线下AUC涨了,线上AUC没涨。嗯,这个是供应中经常遇到的一个问题,就是线下AUC炸天。然后线上AUC呢就特别拉线上的效果呢特别垃圾啊,这个的话呢。
建议大家去看一下说说首先整个全链路是否你模型做的一些改造呢,你在系统当中没有感知到啊,这是第一个点。第二点呢就是是否说你这个你要去判察一下说你这个模型和上游模型具差别在于哪里。嗯。
有可能是说说嗯你对哪个item发奖量啊,那个是推荐量变多了,导致说说最终呢这个item的表现特别差,你就要需要看一下你这些模型。
比如说嗯你最终对这个item的这样一个打分的这样一个结果是否和你这个预期的CTR是比较一致的等等这这样一些东西啊,基本上都是通过数据分析一步一步去查情况。深度模型很容易过拟合。对的,但深度模型呢。
所以说它需要特别量量大的数据量嘛。因此同时呢我们也有一些防止过你和一些方法。比如说说我们可以去加一些政策项呀,嗯。
以及说我们也可以去用一些d out normalmalization这样一lay去做这些事情,好吧但drop out和malization这种东西做的不一定效果好。我们曾遇到过说做的效果变差的。
这种东西也要慎用。然后多任务学习一般是怎么架构的,这个问题太宽泛了。嗯,大家可以去一个叫做rur。
点IO的里面去看一下ruer。点LO。这个网站呢。是一个depperman的一个工程师,他所写的很多他自己的一些文章里面有一篇就是讲说MTL的一些思路的,大家这个可以去看一下,好吧。
然后。😔,Yeah。这个刚才好像嗯解决了是吧?嗯,就是基本上这些我们也经常遇到,也是通过数据数据分析一步一步去查,这个基本上都是没有一个统一的一个法则,首先要往哪个方向去查。因为哪个方都可能出问题。啊。
大家如果在业界待购应该都知道说业界的系统其实是很混乱的。不像大家想象中那么简单。很可能一个电路出问题就会导致说嗯你这个模型效果就变得特别的奇怪。多目标的精度会提升多少,这我也不知道,好吧。
不一定有会提升吧,我觉得是这样的。嗯,新算法上线后,单路召回的CTR提升,但是大盘的CTR去下降,这种问题怎么去解决?嗯,一般而言我不太清楚你这个情况为什么会出现。因为如果说是你这个桶。
因为我们在去做AB实验的时候,基本上都是同与桶之间进行严格隔离的啊,你这样的话可能就需要去看一下你说这样的话,你是否有AB穿越的这样一个问题。呃,AB是否是正交设计的。
以及说嗯你上实验的时候是否是遵循着先拿小流量,再拿中流量,最后拿大流量这种上线方式。好吧,我觉得可以从这些问题去看一看。Yeah。Yeah。嗯。然后现代工业界有哪些思维和推荐算法结合的应用吗?嗯。
我不太清楚,因为我是专门做推荐搜索广告的。对于CV呢我不是特别的了解。所以这个问题可能如果呃我们的同学当中有哪些大佬的话,可以在评论席当中说一下,好吧。双塔的结果输入出据是一样的吗?嗯,是一样的嗯。
然后基本召核阶段使用的是协同过滤算法,后面排序用的是各种CTR算法也不太一定。因为召合阶段也有可能用CTR算法的一些副产品。比如说我们可能去用一些CTR算法出来一些be,直接进它的相似度。
也可能用一些协同过滤等等之类的。呃,都有可能好吧,这个也不是一概而论的。然后是root点L对,然后是呃做点击预估的时候,你加了特征加特征ACC提了10个填AUC没提升,又加这部分特征吧。嗯。
我建议说就ACC的提升的话呢,也可以线上去尝试一下,好吧,因为像刚才说的,有可能线下AUC提升了,线上没提升。大家可能说线下AUC没提升,线上有可能提升了。但你AUC如果降了,不建议去线上尝试。
因为一般都会变差啊。一般推荐算法自己写还是掉包呢,一般都是需要大家去熟练的掌握一些比较经典的一些网络结构。然后呢,自己在上面呢去进行一些改造,啊吧。
这里面就需要大家去首先要熟悉说经典的一些呃深度学习模型的一些做法。你说大家要对tflow的一些各种的基础知识呢,就比如怎么去写模型啊,然后一些网络结构组网的组网结构啊。
以及一些各种各样的一些中间的操作啊,都要比较熟悉,好吧。Yeah。推荐系统面试一般有什么问题?这个这个问题又变得很宽泛了。问题的话一般都是跟你简历去问你有什么技术站。比如你会你说你会用torflow。
可能我就会问你一些说他们的session是个什么东西等等之类这些问题,对吧?嗯,如果说有项目的话呢,就会从头到尾的去问你说你这个项目呢?从最开始嗯,你怎么准备数据的,怎么去建模的,怎么进行上线的。
怎么进行AB的,怎么进行评估的,怎么进行迭代的,然后你中间都做了什么事情,对吧?这些都需要去进行操作啊。然后偏重哪些?我觉得还是就是你要把你简历中所列到的东西,嗯,你需要了如指掌,好吧。
然后双塔DN和youtubeDN构建训练样本的方式是一样的吗?嗯,双塔DN刚才讲的是一个mar multitask learning的一个双塔DN,对吧?但是嗯如果说那个youtuDN的话呢。
嗯youtuDN其实更主要是偏向于那种。youtu那篇DN那篇作文,它更加偏向的我理解,其实是怎么去介绍说他那个inbedding一些用法,以及它中间的一些各种奇怪的一些操作。
比如说怎么去呃预估说它那个时长的呀,嗯,以及说怎么去做各种那些特征工程的呀等等之类的这些东西,好吧,嗯,以及说怎么防止那种对于序列化建的那种数据穿越等等这样一个东西,它们的侧重点可能不太一样啊。
在学习线上正负样本和离线会有偏差啊,这个怎么去处理?啊,这个是很常见到的一个事情啊,所以说我们一般在学习在进行操作的时候呢,都去做一些采样啊,以及说一些呃其他的一些技巧。
以及说在呃样本补偿补偿可能是在样本层面,也可能是在训练的lo层面都可能去进行操作,好吧。推荐好找工作吗?前景如何?我我是这样理解的,就是刚才我们说了三三大类嘛,推荐所有广告算一类。
然后呢CV算一类LLP算一类,这是三类最大的应用。我认为目前那个LLP和CV的呃。就是那个呃工作的这样一个数量呢,不如推荐搜索这么多啊啊,这是我的一个感受,好吧。Yeah。
然后推荐搜索和广告呢内部也比较相通。所以说基本上你学的一个东西,其他的话也比较能够轻松的触类旁通好吧。好,那时间关系呢,我们这节公约课呢就到这里。那感谢大家的这样一个呃呃收听。然后呢,课下的话呢。
我会把那个PPT呢给发到那个群里面去,好吧,然后呢大家可以去看一下啊,好。多目你想说的多目标吧,懂吧?嗯,业绩有拿到效果的,好吧。好,那没什么问题话,那我就结束这个直播了啊,谢谢大家。😊。