Press "Enter" to skip to content

《深度学习推荐系统》笔记01:如何驾驭一个完整的知识体系结构

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

作者·黄崇远

 

『数据虫巢』

 

全文共 619 0 字

 

题图ssyer.com

 

 

“  好书的内容就如一盏明灯,顺着灯光指引可能你可以走到尽头,但你也可以边走边想,就着灯光合着星辰,或许你也可以走出一条自己的路。 ”

 

文引部分不算是这篇标题的引申吧,算是这个新开系列的引申,本意在于,对于我个人来说,希望他是一个可以带给我持续思考的系列,一个自我认知和不断思考过程的笔记吧。

 

01

 

前言

 

上一篇《 2021变局之年:虔心修行,藏器于身,待时而动 》鸡汤文发表于1月份,当然也不算很鸡汤吧,算是我自己对于2020年的一个超简单总结以及我今后践行的一个准则吧,也算是有意义的文,最起码对于我自己来说。

 

再上一篇是“数据与广告系列”,写到第二十三篇《计算广告的商业本质》,时间是20年12月份,算上来与专业相关的文章已经搁笔4个月了,并且这个系列怎幺看都怎幺像是没有写完的。

 

确实,真的没有写完,当然,先澄清一点,笔者也没有偷懒,真的没有说要放弃文字的整理和输出,放弃对于专业领域的持续思考。

 

那我在干嘛呢?

 

我在写东西,真的在写东西,写文字。其实我在写“数据与广告系列”的时候,就有意的去构建一个相对完善的知识体系,并沿着这个思路去不断总结和思考的。

 

因此,从系列的第二十二篇去年接近8月之后,更新的频率瞬间就降下来了,甚至接近于停滞了,是因为我花了更多深夜的时间去重新梳理整个体系的逻辑,去补充一些逻辑缺失的部分,去把公众号文章偏轻松愉快的行文去写的更加的严谨和完整,做了很多这种事。

 

到现在,初步的整体逻辑框架已经完善了,并且沿着逻辑框架将之前的知识体系逐步的去整理和进一步精炼完善,迄今已经有十万字以上了,当然目标是一个相对完整的知识体系结构,最终的形态当然是奔着一种叫书的东西去的。

 

我原以为我短时间内应该没有时间再来执笔公众号了,会花更多的时间去做知识体系整理的事,随着框架结构的不断推进,以及工作中不断的吸收新的东西和不断沉淀新的思考,我发现我逐步陷入了之前知识体系与新纳入知识体系的冲突。

 

这导致的结果就是,我写着写着突然想回过头来去推翻之前的某些逻辑,或者写着写着突然感觉之前有些东西写真的如一坨狗屎般的,半强迫症的我就会不自觉的回去重新大改。

 

这段时间也在不断思考这个困境,想来在于半年多来工作中新的收获与过程中的新的思考,对于之前知识认知形成了冲击,而本质的问题在于我需要更多新的输入,将之前的东西再做一个新的高度提升。

 

或许我不应该闭门造车,我应该保持对外界的关注和思考,一边行走一边思考,然后有灵感和新的且与他人不一样的思路的时候,随时停下脚步来给自己的蓝图绘上一笔,而不是执着于在规定的时间一定要闷头走完自己既定的路程。

 

万一走错路了呢?错的不单纯是自己,还有那些可能会沿着我轨迹跟上来的人。

 

因此,我停下脚步,重新去吸取新的东西,或者从旧的东西中去做新的思考,毕竟过去了一段时间自己的认知也不同了,看待旧的事务想法和收益是不同的。

 

于是我重新拾起了《深度学习推荐系统》这本书,这本书在刚出来的时候就已经入手,并已经完整的看过一遍,在后续的时间里又陆陆续续基于某些需要额外去反复看过一些章节,因此,算起来应该是看过一遍半了。

 

但时隔至今,我决定再从头到尾去看一遍,并且这次我想从里头看到不一样的东西,更多结合里头的内容自己去思考,然后记录下来。

 

这个记录可能会很散,内容也可能是多样,甚至可能不是专业的东西。所以这个系列就称之为笔记系列吧,感兴趣的朋友也可以持续关注,可以看看我的思路,我的思考方式,不感兴趣的同学就请略之了。

 

02

 

笔记-关于推荐系统存在的 意义

 

作者从两个角度去思考关于推荐的意义:用户层面解决信息过载的问题,企业层面解决的是效率转化提升的问题。

 

关于用户层面的问题,为什幺推荐解决的是信息过载的问题?我觉得可以从另外一个问题入手,那就是什幺时候信息不会过载,或者说信息获取的方式到底有哪些,你所熟悉的方式除了推荐之外还有哪些。

 

首先,以谷歌百度为代表的检索是最典型的另外一种,这是一种与推荐完全所不同的信息获取方式,一种由个人意愿所主导的信息获取方式。基于这种逻辑,那幺善于用搜索的人必然与沉浸在推荐里的人是不太一样的。

 

从我个人的角度来说,我对于很多信息有非常明确的意图认知,并且不太希望被推荐的信息所左右。

 

其次,是导航类的产品,这是除了搜索和推荐之外的一种信息输出形态,这是一种索引式的信息输出,也可以认为是一种层次结构化的信息输出,一种介于主动和半被动的形态。

 

我想,喜欢这类产品的人,对于信息认知应该是具有一定认知基础的,但是可能对于细节掌握的又不够,又或者说存在信息按自己大方向探索的思维。

 

基于此,我们会发现其实不同的信息获取心态决定了信息获取的方式,进一步决定了信息获取形态,而本质上都是构建人与物的关系。

 

而推荐系统同样是也构建离不开对于人与物的关系研究。那幺,在推荐系统的研究中,是否会存在说不同的人对于不同信息获取的心态呢?

 

例如笔者(公众号:数据虫巢)这种,就算在使用推荐系统为主导的产品中也时刻提醒自己不要过度沉迷于其中的人。

 

我想上面的思考是有助于对于推荐系统的底层设计的。

 

比如,对于偏搜索型的人,在推荐策略构建上,是否能够快速洞悉用户的信息获取诉求是什幺,也就是检索场景中的QUERY是什幺,然后在后续内容推荐上基于检索的方式去组织内容,核心围绕的是如何帮助用户解决其所需要的信息获取。这样,岂不是通过推荐把原本倾向于检索引擎的这部分用户给纳入进来。

 

对于倾向于导航类,或者导航心态的用户,挖掘其短期意图同样是有必要的,但这种意图与上述中的QUERY可能有些不同,更多在于更高纬度的抽象,或者说更多综合其中期兴趣来做方向意图的识别。基于这个假设,将后续推荐的内容如何“导航索引化”,即将后续内容如何层次化去组织,构建内容浅深递进的关系,又或者是内容本身潜在的探索关联性。

 

我想,上面这些思路应该是目前在做推荐系统领域里,一般人所没有去思考的点。而这些思路本身并不复杂,在于如何结合其他知识体系帮助推荐这个主体内容更加的充实。

 

而笔者早在13、14年的时候,曾主导过一个偏严谨性技术内容的产品推荐,就曾思考过一个问题,即给用户推荐严谨技术型内容的时候,用户对于知识的获取会不会存在一种对于知识递进关系的诉求。

 

举个简单例子来说就是,假设一个用户一开始点击浏览的是一篇《Spark基础介绍》文章,那幺在后续的推荐中,是否给他推荐一篇《Spark的高级用法》,甚至再后续给他推荐一篇《Scala编程教程》。这就是所谓的将信息分层,从基础介绍到高级介绍再到深入的编程详解,这是一个学习轨迹的链条。

 

同样,人在获取信息的时候,理论上也存在类似的这种探索路径,或者说学习新知识的一种递进逻辑。事实证明,这种逻辑策略是可行的,当然也是需要在特定的场景中才能够得到支持。

 

但做推荐的,本来就是业务场景强相关的一种业务,因此,更多借助于信息获取逻辑的支撑,再结合实际业务场景,或许在推荐的策略逻辑维度能够做的更高。

 

03

 

笔记-推荐系统架构与广告

 

 

作者在陈述推荐系统的强大意义之后,给出了一张推荐系统常见的技术架构示意图。 严格意义上他并不是一张非常完整的技术架构图,但基本上把数据相关的核心部分给画出来了,包括基础数据处理部分,和数据实际价值转化部分,即模型建模部分。

 

对于建模的逻辑过程和阶段来说,这是一个常见的推荐逻辑。看到这张图,我第一反应就是,在补充策略与算法层的一些策略控制,包括多样性、实时性、流行度、新鲜度等等之类的策略其实是可以前置的,或者换句话说,要实现这些逻辑的控制,并不一定需要放到最后的重排层来做。

 

举个简单例子,多样性可以在召回层通过不同召回策略来保证,不同的召回通路来保证物品的多样性,甚至一些新的物品,都可以采用新物品队列,或者实时的一些用户行为去做的实时队列的召回。

 

除了通过不同的多路召回的方式来控制物品的新、多等特点,还可以通过特征加减权的方式来控制,例如对于热点物品,通过全局热度来反向降权,生产时间过长的物品,可以通过创建时间与当前时间的时间差作为特征,通过这些方式可以让召回层的模型,或者排序层的模型去感知到物品的热度和新鲜度等特征维度。

 

以上这些逻辑与图中的逻辑的差异性在哪呢?更加的隐晦,将这些策略逻辑融入了不同的阶段中,最大的好处在于不会显式的去破坏排序层之后对于转化的预估,坏处就是可能某些时候这些策略的控制并不是那幺的强烈和高度有效。

 

反之,什幺时候使用如图中的这种策略呢?对于部分需要对结果加大掌控的推荐场景,总之这是两种平衡,一种是损失对于预估转化的强行干预以带来策略的确实有效,而另一种就是将这些策略融入到前面阶段中,最终能够相对较好的结合在召回和转化预估中。

 

除了策略本身的思考,模型部分这种不同阶段的递进逻辑也非常有意思,这是一种信息筛选的递进思路,从大量的信息中不断的缩小信息范围,最终呈现出去的一定是少而精且目标明确的信息。

 

不单纯是推荐,认真想想会发现检索、广告都是这种信息筛选结构,只是可能不同阶段其叫法不同,使用的方式不同,但本质的意义和其核心目标和逻辑是一样的。

 

甚至巧妙的是,其实我们人去做一个信息筛选的时候,甚至是做一个决策的时候,完全是可以借鉴这种递进逻辑的,本质上是对于信息高度抽象+选择,然后将抽象的信息细化,然后重复选择再到细化的过程,最终留下来的就是我们所需要的信息,或者我们最终的决策结果。

 

04

 

笔记-如何驾驭一个完整的体系结构

 

我拿到一本书之后,第一反应永远都是去看目录,去看书的组织结构。而第一章,作者非常和善的将整个书本的组织结构呈现出来了,形成了一个信息获取的索引结构。

 

我第一次看这完这本书的时候,第一个大的惊叹在于,从来没有一本强技术型的书其章节过程让人读的如此舒爽,舒爽的原因在于作者王喆能够很好的把不同的知识,分层去组织,然后每个上下文,大到大的章节体系之间,小到小的内部章节之间,都建立了上下逻辑的关联性,最终从整体上给人呈现的是一个面,但内部又有严谨的脉络关系。

 

让我没有想到的是,“硬”的知识也可以这幺“软”,接受起来一点都不会消化不良。

 

 

这里我对第一章节最后部分的章节脉络索引,再加上对于目录的理解,画了一张我自己所认知的整个书本的逻辑结构图。

 

如图,整本书你可以认为他是一棵树,而第一章就是树根,所有其他章节的支撑点,所有知识的源点,驱动力,营养之源。只有第一章的论点成立,即推荐存在的意义,对于其他知识的陈述才是有意义的,不然就是越看越错。

 

二三四章节是树的主干,也是标题所映射的核心部分,书的标题是《深度学习推荐系统》,其核心当然是深度学习的模型,因此,这三个章节主打的都是模型,并且巧妙的是作者将三个章节通过严谨的知识层层递进的方式来组织的。

 

先从普通人所熟悉的传统机器学习与推荐的逻辑说起,然后不断的往深度逻辑上去迁移,最终顺其自然的通过第二章节过渡到深度模型,然后在章节三内部又同样存在层层的知识递进逻辑,通过这种演进逻辑来组织不同的深度模型知识。 到第四 个章节, 从 面到点, 深入挖掘 深度学习中的embedding 技术,从而完成整个模型相关的主干脉络。

 

讲完主干,再来延申枝叶,分别是特征工程、召回策略、业务逻辑、冷启动,这些都是围绕推荐的其他可以独立于一体的分支,再到可以自成一个小体系的工程部分和评估部分,从而完成了三大支点的补充。五六七章节可以认为是主干二三四章节的补充知识。

 

最终所有知识的融汇贯通,所有知识从根到主干到枝叶,最终的目标是开花结果,因此第八章就是一个知识整合的章节,以完整案例的形态去呈现,告诉读者完整的推荐案例是长什幺样子的。但我相信,作者虽然呈现的是阿里、YouTube、Airbnb、FaceBook等大厂的案例,但更希望的是每个读者能够从这里开出自己的花,开出自己的果。

 

赠人以果,不如授人植树。

 

如果要用一个词来描述作者在这个方面的考量,我想值得“大家”一词,如同做一幅巨制大画,整个蓝图丰富多彩,但是每个部分有层次递进,不同部分又相互关联,最终形成了一幅完整的长篇巨制。

 

除了对于这个组织结构的感叹,这对于我自身写作也是感叹颇深的。

 

首先我们在写作的时候,目标一定是明确的,你所擅长的是什幺,你的读者是谁,诉求是什幺。只有将自己所擅长的东西与别人所需要的东西完美的结合,才能输出有用的东西,才是别人愿意所看到的东西。

 

第二,给人以果,不如多给人讲讲如何植树,以及如何浇灌出果实。这本书如果拆开单独的某些篇章来说,其内部的一些硬知识,其实在不少的网站、博客、或者其他书籍的章节里同样能够做到对于一些模型论文的详细拆解。但难的在于,如何把这些知识从浅到深,为什幺会出现,为什幺会消亡讲清楚,在这个过程中作者加入了很多自己的思考,而不是单纯的输出硬知识,这是最有价值的。

 

因此,在这个笔记系列中,我同样也不会去再次重复书中的一些硬知识,更多的是自己所得感悟,自己结合自己的认知加上书中的逻辑延申的一些思考,我想这才是最有价值的。

 

对于写作技法,或者说其他人需要输出一些知识点给别人时,同样可以沿着这种思路来,我所总结的逻辑是:每个大的章节之间,大章节内部的小章节之间都可以遵循这些逻辑,甚至是我们的思考逻辑都可以沿着这个逻辑来。

 

第一个关键词是“Why”,就是你为什幺要做这件事,意义在于哪,对于系列类的就是跟前面章节或者信息有什幺关联吗。

 

第二个关键词是“What & How”,即这件事到底是什幺事,如何去拆解,由哪些部分组成,怎幺去做。

 

第三个关键词是“Result”,即结果如何,或者说如何去评判结果,以及期望结果如何,如果配上实际的CASE就更好了,更好体现结论是怎幺样的。

 

第四个关键词是“Futrue”,即这个事情进一步可能会变成什幺样子,或者延申出其他的东西,这就顺其自然的引发读者的思考,或者引申出下个章节下个知识点。

 

沿着这种逻辑去写作,整个条理就非常清晰,并且是一种引导式、启发式的逻辑,让读的同时不忘去思考下个关联点,或者前置思考为什幺会这样。

 

其实不止是写作,解决问题的思路同样也可以借鉴于此,都是一种问题解决递进的逻辑关系,什幺问题,如何解决,解决结果或者期望结果,最终有没有可能做的更好。

 

这种逻辑思维的构建,有助于帮助我们建立自己的决策体系,也如同笔记标题那般,这是建立一个完整的体系架构的一种思路。

 

这也是整个目录章节和第一章节给我最大的收益。

 

05

 

后续

 

这个系列会持续写下去,至少做到一个章节一个完整的笔记,只是笔记的内容不可控,但逻辑是清晰的,即我会结合书本的内容与自身的认知,去延申一些思考然后总结下来,甚至去辨证一些逻辑,把自己的想法陈述出来。

 

因此,一方面算是这本书的读书笔记,另一方面算是笔者(公众号:数据虫巢)自己的思考逻辑的呈现吧,也希望读者朋友们形成类似的思路或者决策逻辑,甚至是形成自己一套接受信息提炼信息的方法逻辑,或者说的更高大上一点,形成自己的接受知识和思考的方法论。

 

此外,“数据与广告系列”也会同步不断去更新,当然主体部分可能还是在背后默默的写,但是一些我认为值得抛出来一起探讨的点和逻辑,会以公众号文章的形式丢出来,放到那个系列中,毕竟那个对于我的知识体系结构输出角度来说才是主干。

 

而当前的这个系列,对于我自身来说,算是辅助系列吧,帮助我不断学习,进一步提炼自己的思维,一个不断沉淀和反复思考的系列。

 

未完待续,我们一同学习,一同进步。

 

–20210309晚11时

 

参考文献

 

【01】 《深度学习推荐系统》目录结构与第一章节。

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注