大模型Fine-Tuning技术简介

最近这些年大模型比较火,最早17年的BERT以及最近出现的GPT-3 CHATGPT以及GPT-4,这些模型算法的特点是效果比较好,但是参数量也比较大,训练的时候需要N多的gpu计算资源,一般的个人甚至单位都负担不起.例如,LLaMA论文中提到, 整个项目模型使用了 2048 A100-80G大约5个月去做项目, 这个成本不是一般公司能够承受的。

但另一个好消息是现在很多的模型权重目前是公开的这些都是,我们可以利用的资源,就像我在另一篇文章中提到的,其实我们利用这些权重是在褥facebook的羊毛,参见《基于Alpaca 7B,两天搭建mac单机不用联网纯语音交互机器人》

但很多时候,我们又希望用它来解决我们特殊的定制化业务问题,这个时候如何基于这些已有的大模型权重针对我们的具体问题进行fine-tuning,就显得很重要.

今天要介绍的技术是PEFT(Parameter-Efficient Fine-Tuning),研究的是我们如何利用最少的参数,比较小的计算资源来对已有的预训练大模型进行Fine-Tuning,以解决我们的具体业务任问题和任务.

我举个例子,假设我是一个玩具制造商,我想做很多不同类型的机器人,例如一方面我想做一个机器猫机器人给80后,同时又想做一个小猪佩奇给我们家娃,底层我用到的模型都是LLaMA,但这个时候我不可能为每一个娃娃都去重新Fine-Tuning 完整的一个LLaMA,那这个时候PEFT就显得很重要,因为他只Fine-Tuning很少的一部分权重就能达到实现不同的玩偶娃娃有不同思想,不一样的对话模式,不同特色娃娃的效果

几种PEFT方法

Adapter Tuning

最早提到PEFT方法的论文是《Parameter-Efficient Transfer Learning for NLP》

在论文中提到,如果每次预训练都要去调整所有的权重,进行完整的Fine-Tuning的话,效率太低,但如果每次都采用固定预训练模型的某些层只微调接近下游任务的基层参数时,又很难达到比较好的效果。

所以,文章引入了Adapter的概念在Transformer的结构当中引入了Adapter,在训练的时候,原有的transformer的权重是不会做调整的,只对Adapter去进行参数的调整,而且Adapter的参数相对来说比较少,这样就可以使用比较少的代价来达到不同的任务Fine-Tuning的效果

图:在Transformer中加入Adapter对BERT进行Fine-Tuning的示意图

图:在实验中使用Adapter的方法只额外增加了3.6%的参数规模,但是取得了和Full-Tuning相类似的结果

论文参见:《Parameter-Efficient Transfer Learning for NLP》

Prefix Tuning

Prefix Turning的方式和Full-Tuning以及Adapter的方式都有所区别,该方式在输入Token之前构造一段任务,相关Virtual Token作为Prefix,然后再进行Fine-Tuning的时候只对Prefix部分的参数进行更新,而Transformer中其他部分的参数则是固定的,这样的方式相当于在所有的用户输入的Prompt的过程当中都加入了Virtual Token作为隐性的Prompt.

这样不同的任务Task只要使用不同的Prefix Virtual Token 子网络就可以.具体的transformer的结构不用进行调整.

以下为具体网络的示意图该方式。和当前人工Prompt的方式相对来说比较类似,都相当于是说在输入Prompt前给定对应的隐性限定条件,类似于我们使用ChatGPT,给定对应的鉴定条件prompt效果会更好,其实是一样的道理,只是文章的方式更加隐性,以及soft

图:Prefix Tuning方法

论文参见:《Prefix-Tuning Optimizing Continuous Prompts for Generation》

LoRA

这是今天介绍的主角方法,大家会发现Civitai上很多LoRA模型的分享,会经常听到这个名字

LoRA是现在非常常见,不管是在AIGC图像模型的Fine-Tuning,还是在文本的Fine-Tuning中.

该方法的出发点是因为现有的方式会存在以下两个缺点:

现有的Fine-Tuning的方式会增加模型的深度,这样一方面会增加对应的参数,同时会增加推理的延时,这个很容易理解,当推理的时候,模型层数越多,就会越慢,这里速度太慢,就会影响应用的场景.

因为部分的模型方式可能会降低用户有效的输入序列长度,比如Prefix Turning,它相当于是默认加入了隐性的Virtual Token子网络,用户可输入的网络序列自然就会变短.

文章的出发点就回归到我们大一所有理科同学都学过的线性代数的一个基本概念:因式分解.

文章认为:真正起到关键作用的其实是少数低秩,重要的内在维度(Instrisic Dimensions),所以文章就提出了Low Rank Adapter的概念,简单来说,中心思想:就是使用两个低秩矩阵的乘法来模拟完整的矩阵参数fine-tuning的过程

大家都学过因式分解,无论在推荐系统还是图像压缩中都用的非常多,其原理就是一个大矩阵,可以分解成两个维度较低的矩阵相乘来作为它的近似,两个分解出来的矩阵,因为它的维度较低,所以它的存储以及在计算的时候所涉及到的总体权重都会非常少,而且很多时候都能很好的还原原己矩阵.

以下为LoRA模型结构的示意图

具体到上图中,就是将Fine-Tuning过程当中所产生的原矩阵权重的变化进行因式分解,该方式能够解决以下三方面的问题

第一,相比于原有的Adapter的方式,该方法在进行推理的过程当中没有增加网络额外的深度,所以在进行推理时,只要将原有的预训练模型的权重和变化部分进行相加,即可进行完成推导计算性能不会有(太多)损失.

第二,因为该方式不像Prefix Prompt一样占用用户输入序列的长度,所以用户输入序列长度能够得到保证.

第三,因为该方式是用因式分解的方式去模拟了Fine-Tuning的模式,所以它的效果不会打折,效果和Full Fine-Tuning相同.同时,只要替换AB两个矩阵即可实现Fine-Tuning部分的插拔和替换,可以很灵活的在各个任务之间进行切换,还不会影响到原有的预训练模型的权重.

以下为具体的公式。

图:LoRA对优化问题的定义

图:LoRA的方法, 思路就是将Delta W转化为因式分解的两个低秩矩阵的乘法作为Fine-Tuning的插件,不改变原有pre-training模型权重的情况下, 可以灵活替换fine-tuning的部分

P.S. 公众号完全不支持Markdown,所以截了两个看论文的笔记的图, 凑合看。

具体的代码github上参考有很多, 例如可以参考:https://github.com/Facico/Chinese-Vicuna

参考文献:

《Parameter-Efficient Transfer Learning for NLP》:Adapter方式介绍

《Prefix-Tuning Optimizing Continuous Prompts for Generation》:Prefix方法介绍

《LoRA: Low_Rank Adaptation of LLM》:LoRA模型介绍

https://github.com/Facico/Chinese-Vicuna

《基于Alpaca 7B,两天搭建mac单机不用联网纯语音交互机器人》:简单语音对话机器人pipe line

基于Alpaca 7B,两天搭建mac单机不用联网纯语音交互机器人

最近各种大模型比较火,既让人兴奋,又让人让人焦虑,所以最近一方面也在跟各种模型的论文,也看了比较多,团队也在尝试用各种大模型解决业务问题,同时,自己也在动手试一试这些技术,包括从GPU上的finetuning,以及最终终端的应用。

端午节这周在家没有出游,花了两天时间,利用开源的LLaMa 7B 权重,搭建了一个语音交互机器人。最大的特点是:可以不用联网,可独立在自己mac笔记本上运行,可流畅的实现英文语音对话。中文的等五一有时间再调。

具体的效果可以看以下视频:
NOTE: 视频号链接放不上来, 可以到公众号中查看

视频:mac 单机不用联网的语音交互机器人,其中我的语音输入问题为: 'What is the purpose working hard in China?' ^_*

以下内容不涉及中间的算法,算法后续会单独开topic,不过从代码级别撸了一遍模型结构和推理过程也是一种收获。

另外以下内容和公司业务无关, 会写的细一些,代码级别。

先抛开其中的算法,以下为搭建过程中需要的开源组件,大家要自己搭解决方案的可以参考:

  1. 耳麦语音信号接收和发送,pyaudio,语音信号采集, wav文件播放都很方便。

  2. Speech Recognition,使用OpenAI Whisper, 原则上model size=large 1550M 支持中文,我的code 中使用 model size=small 244M

  3. Alpaca 7B 作为chat 模型,使用Alpaca 7B(基于LLaMA 7B) 进行finetuning 实现文本理解与对话,model 载入内存后占用6065M左右

  4. Coqui TTS 进行TTS处理,原则上支持中文,但Alpaca中文支持较差,所以TTS也先搞了一版英文。

  5. copilot 进行辅助开发,copilot不仅能帮你写代码, 还能帮你写注释, 还能预测你将要写的注释!!!结伴编程效率高, 感觉这个不是面相对象编程, 倒有种跟着对象编程的意思。

这些组件都是开源的,github上都可以下载到,链接和一些示意代码我都贴到最后,大家感兴趣的可以复现。

总共耗时两天左右。

以下为具体用到的库以及使用示例,具体的这些库怎么安装API怎么用我这个地方就不列出来了,想复现或者修改的同学,根据文末最后的链接自己编写pipeline以及修改Alpaca 代码就可以搞定。

耳麦语音接收和播放

图:使用pyaudio进行声音处理和播放

OpenAI Whisper 进行Speech Recognition

图:使用whisper进行speech recognition,model size='small'

Alpaca 7B 进行chat

图:Alpaca 7B client,使用开源Alpaca.cpp修改适配接口, 该client使用cpp能够在多种设备上运行,其中使用gglm.c 库进行模型加载和推理,想具体了解LLaMA模型结构, 以及如何跨平台使用各size LLaMA权重的同学都值得仔细看看,毕竟论文主要看思路, 代码才是全部

Coqui TTS 进行TTS处理

图:coqui tts 进行text2sound,支持中文, 支持voice clone,想象空间比较大

播放TTS结果的线程逻辑

TTS线程逻辑

以上就是Sound->text->chat result->sound整个pipeline用到的组件,pipeline使用python编写,多线程生产和消费语音输入,speech recognition, chat结果和tts结果, pipeline需要自己写,Alpaca的推理程序需要自己改造, 其他的组件github上都有。

感受

写代码的过程当中,将LLaMA的模型结构,推理过程的源代码都读了一遍,还是有比较大的收获,比光看那种概念型的论文还需要具体很多,以下就是几个心得跟大家分享一下:

  1. 大模型已经能够很好的将世界的本质和知识压缩到网络结构的权重中,在推理的过程中能够结合这些知识进行推理和泛化,finetuning只是教模型说我们想要的人话。这个话题比较open,感觉大模型理解世界的空间更大,而人类的语言只是低维空间的一种表现,一个典型的例子就是LLaMA没有经过中文语料的训练,但是能理解一部分的中文问题。现在的finetuning,更多是在教模型如何以我们能够理解和希望的方式交互,而不是教模型更多知识(否则alpaca 这种50K的样本根本不够用)
    就类似于一个智商极高,知识量足够丰富的外星人来到地球,虚心地向人类学习人类语言一样,他学到的是表达,而不是智商和知识。

  2. 算法正在被统一,原来纯算法工种的需求量会急剧下降。一个佐证就是上边提到的LLaMA,Whisper,Coqui TTS,底层的算法结构都是极为近似的,都是基于transformer的大语料五监督训练,文本语音都是如此,之后再进行极其有限的finetuning。在算法领域,白领会逐渐消失,只留下大量的蓝领和金领

  3. 开源组件的有机组合和拼装能够快速满足业务需求,能够带来巨大的商机。开源的组件很多,已经非常成熟,可以开箱即用,或者经过微调就能够很好的满足业务需求,如何将这些组件进行有机的组合和拼接,满足业务场景将存在巨大的商机。例如,定制一个善解人意,某个女明星版本的真人大小的娃娃是不是一个商机呢?虽然说出来并上不了台面。

像ChatGPT或者GPT4这样的大模型效果的确非常好,好到难于置信(相对于单机mac 上的Alpaca)但是创业者或者其他公司在应用的时候会存在以下几个风险:

  1. 平台税造成使用方的成本上升,ChatGPT或者是GPT4的提供方,OpenAI/微软,作为平台,最终可能会收取巨额的平台税,这就会增加应用方的成本,甚至导致应用方公司无法负担这个成本。记得以前央视曝光百度竞价排名有骗子卖假药,说骗子获利的70%都用于百度推广,尴尬的是但是我就在百度做广告算法........

  2. 私域数据的泄露,毕竟如果到最后算法逐渐的被统一之后,数据才是最核心的资产,如何保证私域数据不被泄露?这是一个需要重点考虑的问题

  3. 大模型的提供方会不会因为某些政治或者经济考量? 直接就把某个特定的应用方给停了呢?

在这样的情况下,像LLaMA,ChatGLM这些开源的模型&权重,虽然从效果上不是最优的选择,但是风险可控,进行对私域数据的反有可能是比较好的选择。

同时,因为这些模型权重已经被训练出来了,训练所产生的花费,已经被facebook 承担,所以,从某种意义上也相当于是我们在褥facebook的羊毛了。

当然,现在大模型有点火的过头了,这个技术既让人兴奋,又让人焦虑,发展太快,我们现在也在业务场景里边去试用,而且发现的确效果很好,大家有什么新的idea或者想法,欢迎随时交流。

公众号:颠覆式创新

语音对话用到的组件

  1. coqui tts:https://github.com/coqui-ai/TTS

  2. OpenAI Whisper speech recognition:https://github.com/openai/whisper

  3. Alpaca 算法和跨平台推理代码
    https://github.com/antimatter15/alpaca.cpp
    https://github.com/tatsu-lab/stanford_alpaca

  4. pyaudio语音输入&播放:https://pypi.org/project/PyAudio/

OpenAI的另一个产品-Point-E

先插入广告:我团队还有两个NLP P6,P7工程师的HC,这方面感兴趣的同学可以关注公众号, 或是直接联系我投递简历。

以下是正文--------!

DALL-E

美国人应该都很喜欢《机器人总动员》这部皮克斯的动画片, 因为很多产品的名字, 都会以动画片中的Wall-E方式取名,例如半年前很火的AI作画,同时产生了几个很强大的产品, 一个是MidJourney,另一个是Dall-E,它们的主要功能就是输入一段文本, 然后大模型通过生成输入文本描述的图像,功能很强大, 甚至有人使用算法赢得了全球科幻科幻创作最高奖,赢了百万美金。

图:我在MidJourney尝试的结果

图:Dall-E结果

图:获得科罗拉多博览会数字作品第一名《空间歌剧院》

所以艺术家这个职业以后也很难干了。

3D生成

今天我们简单聊聊OpenAI的一个当前很挫, 但是很有前景的另一个产品:Point-E,其模型功能为输入一段描述性文本, 它直接根据描述生成一个3D点阵(点阵连接起来就是一个3D model),就类似于以前我们使用D3D建模, 只是现在使用文本输入就可以。

以下是试用链接:https://huggingface.co/spaces/openai/point-e

图:Point-E论文中的效果展示

以下是我去尝试这个模型当前的效果。 P.S. 现在真的很挫!!

图:Point-E 3D model generation,输入一段描述文本

图:Point-E 输出的3D model

论文可以参见:

Nichol A, Jun H, Dhariwal P, et al. Point-E: A System for Generating 3D Point Clouds from Complex Prompts[J]. arXiv preprint arXiv:2212.08751, 2022

后续趋势

但, 大家可以思考下, 如果某一天, 这个模型能够达到超高的效果, 那会有什么影响?以及产生什么样的机会?

3D建模从业人员失业

最直接的影响, 就是现在使用软件进行3D建模的从业人员失业, 虽然需要创作的3D 数字化内容会爆发, 但从传统从业人员的角度来说人员会急剧减少。当然这是这个算法产生的影响的极小的一方面。

元宇宙的重生

现在元宇宙算是虚了, 和两年前相比已经躺平了。但如果Point-E后续效果突飞猛进,那么虚拟世界创作会极度简单, 3D AIGC内容量爆发, 目前萧条的元宇宙概念及实际落地会大幅增加, 更多的人无所事事, 会更加频繁地进入元宇宙环境进行Kill Time,元宇宙届时必火!

甚至结合OpenAI的语音识别, 翻译,生成, 以及更多的智能产品(以后我会进一步介绍),内容的生产更加自动化, 甚至算法自发生成元宇宙中的世界,想象下骇客帝国, 以及Musk在推进的脑机接口, 其实并不久远。

这就是趋势, 大家需要思考如何融入这个趋势。

技术从业者眼中的ChatGPT及危机分析

笔者了解到,微软内部参与Bing项目的同事的以下反馈:

  1. 微软内部很认这个技术, 大老板已经砍掉了其他大模型, ALL IN GPT-4

  2. GPT-4效果比ChatGPT好太多太多

  3. 微软内部员工已经在使用ChatGPT编程,自己更多是调整测试

  4. 很可悲, 微软的裁员涉及到很多NLP的员工, 有点像中国古代法家变法,最后都是变法者用自己的血证明变法的有效性。。。

这些变化都在发生,那我们需要做哪些思考?

动荡之下的一丝光亮

大家有没有直观的感受?过去两年,世界似乎变得前所未有的动荡:中美持续的贸易对抗;突然发生的俄乌冲突,一开始以为一天就能打完,结果打到现在还是打了个寂寞;国家限制资本的无序扩张,疫情的反复,以及过程中的种种怪象,导致无论是从社会的层面还是公司个人的层面,都感觉到持续的动荡和强烈的不确定性,以及随之而来的不安和焦虑,很多公司也在这样不确定的环境当中做出了激烈的降本增效的措施,也影响到了很多认识的人。

前几年,算法工程师津津乐道的是发Paper,打比赛,优化各种模型提指标,参加各种国际学术会议,现在却在这样动荡的大环境之下,战战兢兢的尽量做好业务,以证明自己存在的价值。

在具体项目方法的选择上,能用便宜的,绝不用贵的,能短期见效的,绝不考虑长远的。平常挂在嘴边更多是成本,性价比,业务收益,至于长期的技术投入,那几乎已经沦为另外一个平行宇宙的话题。

这样的大背景之下,ChatGPT横空出世,似乎给这个动荡的环境带来了一丝久违光亮和激动。甚至美团大佬也出来高调宣布入局并发英雄贴。

图:美团大佬入局宣言

下面就简单说一下,是用车的chatgpt之后从程序员的角度的一点感受。

直观的使用感受

直观的使用感受就是chatgpt确实强大,和之前所有的模型算法技术相比,他似乎已经真的能够理解人的意思了。

例如你让ChatGPT对比中国空间站和国际空间站具体优劣及详细参数时,他能够很快的把具体的数据阐述出来。同时,你的问法不一样,他产出的结果也会稍有差异。

虽然经常会出现生成模型的问题:一本正经的胡说八道, 但感觉这些随着训练数据和投入的增多能很快解决优化。

图:回答个问题也不在话下,写代码也是没问题的,而且写代码可以增加各种条件限制,它都能理解。

震撼

试用了chatgpt这个产品之后,第一感觉就是被深深的 震撼了:我们在做传统算法的时候,很多时候都会有一个基础的认知,就是同样的一套模型或者算法很难完美的解决所有的任务,虽然这些年我也有很多的多任务模型的尝试工业界的应用,但想要做到各个领域都通用,还是比较有挑战的。

但ChatGPT很大程度上改变了这样的一个状态。他构建了一个使用门槛非常低,但是相当通用的模型,先不问其中的算法是否先进,但单这一点就是一个非常大的进步,特别是在写代码层面,已经相当的成熟。而且很多时候, 它的确听懂你的问题了,似乎真的有点灵魂了。

我听到一种说法,就是微软内部很多员工已经在使用GPT4进行代码的编写,他们所做的工作就是定义功能的输入和输出,以及生成代码的调试。ChatGPT功能已经比较强大,而据说内部使用GPT-4,功能要强大很多很多很多。基本的程序员在不久的将来被替代是一个必然的事实。大家可以想一想,自己平常的工作有多少是看着github上的copy and paste?而现在,github上的copilot已经非常的成熟。

以下是笔者在的一个老同事群中,直接参与微软使用GPT-3,GPT-4的同事对于微软内部的看法, 供大家参考:



画圈的部分为参与Bing的内部人士的原话。简单来说就是以下几点:

微软内部很认这个技术, 老板已经砍掉了其他大模型, ALL IN GPT-4

GPT-4效果比ChatGPT好太多太多

微软内部员工已经在使用ChatGPT编程,自己更多是调整测试

很可悲, 微软的裁员涉及到很多NLP的员工, 有点像中国古代法家变法,最后都是变法者用自己的血证明变法的有效性。。。

另外最近看一个文章, 有权威专家平台预测, 2030年, 通用大模型的coding能力会达到专业级别开发者的水平。。

图:大模型的能力在2030年在代码层面就能够达到,资深程序员的水平

从这个角度,必然会让很多程序员感到恐慌和沮丧。

沮丧

为什么感到沮丧呢?就是感觉到这么一个牛叉的产品,自己却很难参与到其中,如果是前两年, 国内互联网可以和美国互联网分庭抗礼的时候, 各个大厂都撒钱买N多GPU,但现在已经完全不一样了, 看看国内互联网大厂的市值。。

另外就是ChatGPT确实贵, 一般人搞不起。

图:ChatGPT的训练成本,真是Simple But Imposibble!

感性&危

对于很多人来说,这必然是一场危机,如果不改变,不持续学习,那必然被淘汰,而且被淘汰的时候都不知道是怎么回事。可能表现出来的自己被淘汰的原因会千差万别:以后有些人会认为是自己绩效不好或者公司效益不好被干掉, 有些可能会觉得是自己和老大关系不好, 或者其他问题, 其他现象,但本质上还是技术的进步,导致原有的社会结构和工种发生了变化。

未来只有蓝领和金领, 没有白领

前几年就听公司的一个大佬说过,未来从职业划分的角度,白领将会消失,只会留下蓝领和金领,现在看起来正在朝着这个趋势去发展,一些原有蓝领的工作将会持续存在,很多白领的工作将会被AI算法所取代,而开发AI算法和平台的人将成为金领,当然,资本仍然是资本,而且可能资本会向头部更加集中。

以我深度参与的技术领域来看,我觉得以下方向可能都是会被颠覆的:

  1. 数据分析:数据分析,从研发的角度一直都是一个脏活累活,首先是公司里边一直都存在这样的活必须要有人去做,但是大家谁都不想去做,没有太多技术难度,反而因为数据里边的各种细节,各种坑会耗费太多的精力,类似的工作在以后,如果我们把数据的met a信息定义的比较完整,在chatgpt这样的大模型上层进行垂类的定制,将可以完美的取代大部分数据分析的工作,而且以我的判断,像阿里这样的平台在两年之内必然会出现类似的平台应用

  2. 画像标签的挖掘,觉得强依赖于大数据以及知识性的工作,绝对是chatgpt这样的大模型最擅长的工作

  3. 现有搜索推荐模式的变革,搜索不用说了,chatgbt出来之后,google慌的一X,那对推荐或者更大范围,例如电商会有什么样的影响?最近是情人节,想象那么一个场景:你要给老婆买个礼物,你不用费心的到淘宝上去搜各种关键词,因为搜出来的可能你也不满意,你就告诉这样的大模型,你要给老婆情人节礼物,然后再描述一下礼物的一些基本信息,例如你要花费多少钱,你老婆大概是怎么样的一个性格和习惯?他就给你选对你的礼物,或者有可能你老婆的画像信息已经在平常你和大模型交互的过程当中已经被个性化定制,到时候你的收入就是告诉模型,你需要给老婆买一个不一样的情人节礼物,你就能得到满意的结果。那现在做淘宝搜索和推荐的那些产品和研发以后会去干什么呢?这是一个值得思考的问题。

冷静思考&机

当然,每一次变革都是有危就有机,并且我们需要顺应这样的趋势,才能不被淘汰或者才能抓到这样的机遇。

这样的大趋势下,我觉得有两方面的能力和工作是会显出更大的价值的:第一类就是在非常垂直领域,并且涉及到多环节沉淀的工作,我举个例子,在地图领域,有一部分员工已经在这个领域工作了几十年,经验非常丰富,也非常受人尊敬,他们经过多年的沉淀,对这个领域有非常深的理解,并且对各种数据生产的工艺,标准,环节,各种坑都了如指掌,这种垂泪,而且又涉及到多环节长链条的工作,很难被这样的通用模型所取代。

第二类就是老掉牙的概念:创新,因为你模型再牛,更多是对已有知识的沉淀和应用,但一些新的模式以及新的组合,从模型的角度是很难理解和构建的。大家可以参考以上两点去思考以后的职业方向。在危机中,肯定有一部分人会脱颖而出,抓住机遇,各位技术同学,现在是需要我们思考这个问题的时候了。

LBS搜索中的群体效应

观察到一个有意思的现象, 社会上的热点内容, 或多或少都会通过用户群体,传导到LBS搜索, 例如前些天的佩洛西访台, 就在LBS搜索上, 就让‘台湾省’的搜索量上升了5000倍,比较搞笑的是同时火的还有类似于‘山西刀削面’, 因为有新闻说地图上能搜这个query, 结果有更多人来进行搜索。

再一个case,就是8约19日‘北京银行’ 这个query搜索量的暴增, 因为新闻说9月1号后医保费就取不出来了。

图:左一,8月19日北京出台新医保账号支取政策导致北京地区‘北京银行’ 搜索量提升10倍;左二因佩洛西访台,导致query'台湾省',‘山西刀削面’等搜索量暴涨5000倍;右一,长沙电信大楼大火, 导致该query搜索量暴增几百倍, 大部分为长沙人民带来的搜索量

其他还有很多类似的query,我从中有两点思考:

  1. LBS搜索中的群体效应,现实中的社会事件, 在新闻热点开始传播时, 总有一部分关注度会扩散到LBS的搜索场景, 类似于我们小时候学习写记叙文时,总会强调其中的 时间,地点, 人物, 事件。地点这个因素总会作为关注点, 以一定的概率从大搜传递到LBS搜索, 例如体现在高德地图, 百度地图, Google Mapde的搜索表达中。

  2. 强地点属性的热点, 传递到LBS搜索中的概率越大, 例如新闻热点就是和地点相关, 比如XXX楼因疫情封闭, YYYY县地震, 都会导致这些县/市/楼的搜索量暴增。相反,非LBS属性的事件在LBS场景的影响偏小,例如前两天‘李易峰’, 在LBS场景这个query有变化但总量仍然很小。

  3. 大家都关注和自己‘近’的事件,例如前两天长沙中国电信大楼, 平常没人搜, 着火当天LBS搜索上搜索量暴涨几百倍。而且大部分搜索都是长沙人民带来的。

从大数据的角度, 以上两点恒成立, 特别是对于一个用户量几亿的应用。一个热点事件发生的时候, 总有人手闲在LBS搜索场景去搜这个query,只是事件越和地点相关,则在用户在LBS搜索上表达的概率越高, 类似于以前学概率论的时候提到的, 永生的猴子总有一定的概率随机打出一部哈姆雷特一样。

图:理论上寿命无限的猴子随机敲键盘,能以极小的概率打出一本哈姆雷特

例如前两天李易峰事件, 在LBS场景, ‘李易峰’ 这个query的搜索量也增加了几十倍, 虽然基数本来就很低。

预判群众的行为

从大数据的角度来说, 预判群众的行为很多时候是相对简单的, 我经常和下属说:我们可以将大众用户看成一个人来判断大众的行为及习惯, 这个人有以下特点:

思考模式相对简单, 比如LBS场景,天阴出门的人就少, 下雨打车的人就多。不会出现说每个群众都觉得其他人觉得:‘天阴其他人不出门, 所以出门不堵车, 所以我出门’, 导致的拥堵。说的有点绕, 就是群众的行为模式不会出现‘我预判了你的预判’那么复杂的情况。 类似于‘乌合之众’ 中提到的, 只要是个群体, 群体的智商就会偏低一些。

图:如果将群体看成是一个人的话,群体这个人的行为模式总是简单的,情绪化的, 总体智商偏低的

更多的内容可以参见《乌合之众》,作者在一两百年前就研究透了。另外文章开始的LBS搜索相关的认知也值得大家在所有LBS场景借鉴。

如何确定自己在做难而正确的事,而非难而长期且错误的事?

简单记录下最近工作中的一个思考,供大家参考。P.S. 目前还有少量数据工程HC,感兴趣可关注公众号信息并联系我。

难而错误的事

工作十多年, 待过几个公司, 每个公司都有自己的风格文化价值观。

总体来说, 阿里是待过的几个公司中,最看重产出及结果的公司;很多其他公司既看中员工拿到的结果, 也看中过程:过程对了, 结果一般, 很多时候公司也认,绩效也不会差。

阿里不一样, 阿里为过程鼓掌,为结果买单, 好的产出结果才会有好绩效。

以前就在想:这样会不会太短视, 导致大家都追求短期利益, 一定程度上忽略了长期的投入, 会导致大家都不愿意做‘难而正确的事’

记得去年有个离职的同学也和我说他觉得自己做的事是难而正确的事, 觉得公司的环境不太认这样的工作和投入(虽然我当时就觉得他做的事产出肯定有问题)

最近老大的分享终于让我想通了这个问题, 首先要回答的问题是:如何证明你做的是难而正确的事,而非难且需长期投入且错误的事?

Think Big, Start Small

只能先快速出原型,拿到收益,证明可行性, 然后再做大拿到更多收益, 直到将这个事做大, 做成一个长期的事。

当然我们一开始的时候需要想的理想化一些, 但从需要快速某个点快速入手进行验证。这一点类似于Google早年工程师推进工作的方式:Think Big,Start Small,都是一个道理。

业务优先 VS 平台建设优先

例如研发很多时候会抱怨:‘我们成天做业务做需求,没有足够时间将平台做好!希望有时间先将平台做好,之后在平台上再支持业务!’

那到底是业务优先, 还是平台优先?这个问题没有正确答案, 不能走极端,需要迭代推进。例如先快速糙快猛验证模式原型, 验证拿到收益后,再扩大系统建设投入, 之后拿到更多业务收益后,在系统建设上争取到更多业务的信任, 资源后, 再进行系统建设, 以此正向迭代。否则如果短期内拿不到收益, 那就说明不了长期看这是个正确的事, 很可能就是一个自以为的难而正确的事, 其实是难而长期且错误的事。

图:平台建设VS业务开发,需要拿到业务收益,验证模式,迭代推进。

否则,技术长时间仅接业务需求,会导致工程师没有成长,没有能力提升,没有系统性思考;而如果先搞牛叉系统,很大概率是投入比较多,但做出来的系统没人用,因为业务觉得不好用,负责人会死得很惨。例如好多年前我搞过一版用户画像,自己觉得自己搞的数据很牛叉,还挺全, 结果业务方觉得不是自己想要的数据, 不好用也不愿意用, 结果投入人力挺多, 结果就是在自HIGH。

老板想要什么?

从业务的角度, 老板想要的是什么, 这个问题也值得好好思考, 很多时候老板想要的是:业务长期良性的增长, 那光实现业务需求, 或者光做平台就能解决吗?解决不了, 还是需要短期糙快猛的拿业务结果验证模式, 以及长期的系统建设需要结合。

所以, 各位研发, 或者产品同学如果觉得老板似乎在同一时间又在乎短期业务收益, 又似乎更看中长期投入的时候, 你需要按照以上思路来理解, 并且按照上述思路来推进你的工作。这样你才能想明白为什么觉得老板真的是:既要也要还要都要

当然, 以上只是针对当前多变世界的一种应对模式, 很多优秀的公司, 也会在某个方向持续做十几年然后突破爆发, 例如特斯拉,XSPACE都是成立十几年的公司,做的方向也很聚焦。具体思维框架的应用, 也分具体的环境。

中台的困境​及破局思考

前台,平台,中台的定义&区别

没有对错,只有选择

前些年,阿里比较强调中台的建设,希望大力投入资源去建设中台,以便能够高效解决众多不同业务的共性,底层的效率问题。这两年不怎么提这个概念了,因为很多时候大家也会比较担心中台可能会带来更多的沟通成本,或者是担心中台不太能适应业务定制化的场景需要额外的开发代价和成本。

业务前台

一般情况下,我们认为业务前台就是具体针对业务的产研。这样的团队对最终的业务指标负责,比如说商业化的收入,大搜索/推荐的流量,增长的日活等。

业务前台很多时候会快速的针对业务的特点去做定制,他们会为了探索更好的模式,快速的进行尝试,甚至不断地调整方向,以最快的速度以及最好的投入产出比去推进项目。

平台

平台一般是解决某个部门的共性问题所建立的团队,他们会去解决BU内部相似的问题,以便产出能够在BU内部为多个业务所使用,其目标解决BU级别的共性问题,提升BU的整体效率。例如某个应用的UGC可能涉及到评论, 或者其他用户反馈, 此时审核平台都需要统一支持审核需求。

中台

中台则是解决大型企业各个部门甚至是不同子公司的共性问题而设立的团队,他们的目标是对更底层的基础设施进行抽象,以期望这些设施能够在各个子公司都能够进行复用,提升公司OR集团的整体效率。

图:业务前台,平台,中台区别。一般平台+某个使用该平台较多的业务前台会由同一人来负责,这样的组织叫做L形组织,如红框部分。

各自解决的问题

前台业务,就是解决具体的业务问题,他是高度定制化的,需要快速进行模式的尝试。如果需要,整体的业务模式都可能很快进行调整。它解决的是模式问题,所以其特点就是高度定制,快速试错。

而平台和中台更多的解决的更大范围的是效率问题,他们的出发点是希望在进行模式探索的时候,能够将平台或者中台当做乐高或者积木组件,能够快速的去组建新的探索模式。

但很多时候,事与愿违:中台做了之后,前台业务不愿意用,经常出现的情况有两种:

  1. 要么就是前台业务,觉得中台根本就不理解业务,很多功能都不支持,如果需要在中台中去加定制的逻辑,中台不愿意或者需要的开发成本比较高,开发周期比较长,业务前台觉得还不如自己去开发来的快,效果更好。

  2. 另外一种就是前台业务,在初期的时候觉得中台能解决一切问题,等在使用的时候发现不是那么回事,就会觉得中台做的比较烂,以后就再也不用了。

导致以上两种情况的原因,是因为中台不是万能的,它所解决的问题是有一个边界的,不属于这个边界之类的问题状态是不能很好支撑的,但是业务方并不太理解。所以中台以及平台一定要定义好自己的边界,有所为,有所不为,并且需要让业务方尽早知道这一点。

中台注定难做

绩效评估体系的‘锅’

以我的经验,中台注定非常难做。搜推广这样的前台业务,或者大数据平台dmp这样的平台系统我都做过。这一点我体会比较深一些。最直接的感受就是:平台OR中台,真心难做!

原因很简单:公司是非常强调投入产出比的组织,很多时候,对于产出的衡量,更偏向于业务指标。因为业务指标更客观,更容易和公司的目标绑定。但中台最终对公司业务目标是间接关系,产出内容就不太容易客观的衡量。这就导致从绩效评估体系的角度就天然重视前台业务。

前台业务比较像球场上的一个前锋,而平台中台更像是一个后卫。我们可以清晰的衡量一个前锋进了多少球,但我们很难衡量一个后卫对进球的贡献;同时,从另一个角度,我们经常听说某某明星球员转会会费高达XX亿,这样的明星绝对是一个前锋,很少听说一个后卫有天价的转会费用。

例如,数据平台产生的数据用到业务当中,结合业务的策略OR算法上线,如果运气比较好:上线效果比较好,有可能业务会认为是自己算法做得比较好,并不一定会认为说数据有多牛逼;但反过来,如果策略效果不好,很有可能会认为是数据质量比较差,这是经常发生的情况。

所以经常发生的情况,就是要么别人不用中台,要么用了之后觉得中台不好用。

所以中台很难做,也很难成功。平台则比中台容易做那么一丢丢,该有的困难也都有。

目标不一样,不相为谋

业务前台和中台的目标,一般情况下也大相径庭,这就导致两种团队一般都互相不待见。可以认为,业务前台有自己非常清晰,并且压力很重的业务指标,这是他们的KPI,必须要完成。

而中台则会从集团或者公司的角度去考虑整体的效率最大化,整体的效率最大化并不代表单独各自业务的效率最大化,也许业务前台自己搞更快并且效果更好,或者他们单独搞会有更高更快的投入产出比,能更快的达成自己的KPI。这就会导致前台业务没有动力去用中台,或者支持中台。

什么时候可以做中台

那什么时候可以做中台呢?我看到的比较令人沮丧的现象是:没有什么时候是适合做中台的,直接上来就定位是做中台的团队都死掉了。

那是不是没有成功的中台呢?也不是,也有一些成功的状态存在,很多都是先应用于某个特定的场景去认真打磨,并且相对是比较定制化的,刚才这个业务当中用的比较好,在逐渐将可能的通用组件抽象出来,支撑其他的业务。比如阿里的语雀。相当于中台都是在不知不觉中做成的。

平台成功的关键:L形组织

一般成功的中台都是首先依附于某一个比较重要,比较大的业务,先把这个业务支撑好,并且可能存在比较多的定制证明效果和收益,之后再视情况,将通用的部分抽出来作为平台或中台,只有这样的方式才可能成功。

而很多时候,中台的负责人也需要是某个业务的负责人,这样中台才有优化的目标和动力, 有很多公司强调的L形组织,一竖就是具体的被支撑的业务,一横则是平台,这个平台先支持一竖,之后再进行应用的拓展。这样的组织形式也简称一横一纵。

什么是好的平台?

以我的经验来看,平台首先要在一个比较重要核心业务中体现出来它的价值,这个时候只能说这个中台做的还行,而如果这个中台能够支撑两个及其以上的不同核心业务,并能拿到收益,这个平台就算是成功了,而且在其他的类似业务当中去推进的时候就会很迅速,很容易,因为之前的两个成功案例都可以拿出来证明中台的有效性以及更容易让用户理解中台功能的边界。

就类似于公司销售去售卖自己公司产品的时候, 如果有一两个成功的样板,则客户会更容易理解产品, 以及更容易说服客户。

这里也有一个有意思的现象:做平台或者中台的同学, 无论是产品还是技术, 都需要承担起一部分销售和售后支持的工作。

只有变化才是不变的

那是不是所有的公司都不需要做中台呢?

这是一个比较有意思的问题:当阿里不再强调中台的时候,我看腾讯却组建了比较多的中台团队,腾讯之前一向是一个个独立的小团队,作为业务前台进行快速独立的尝试闻名的,这其中包含了非常多的重复造轮子的工作。

是不是觉得比较搞笑?

这也是个哲学问题,包括公司的组织形式,你是以游击队非正规军的模式作战,还是以集团正规军的模式去进行组织,是没有统一的标准答案的,需要在不同的情况,不同的阶段,不同的大环境之下去进行调整和选择的。

没有对错,只有选择

工业界内容审核系统构建

P.S. 还有少量数据&工程HC,欢迎推荐和自荐,关注该公众号->人才招聘,获取更多信息。

背景

目前,随着智能手机的普及,几乎人手一个智能手机,并且上网的费用也越来越便宜,这就导致内容的生产以及内容的传播变得非常方便,有一种说法就是东北的产业,主要是主播和烧烤就是在这样的大背景之下产生的。

同时,从增长飞轮的角度,内容也是非常重要的环节,很多的互联网产品如抖音头条,小红书,快手都是这样。都是优质内容增长,带来流量增长,流量增长带来收入的增长,而收入的增长又可以反哺激励内容创造者带来更多的优质内容,形成正向的内容生产循环,所以,内容,特别是优质内容就变得越来越重要。

图:内容增长飞轮, 更多流量带来更多创作者, 更多创作者生产更多优质内容,优质内容带来好的用户体验,产生更多流量,同时更多流量可以进行商业化变现,这些收入可以用于内容生产者的激励,以便产生更多内容形成正向循环。

而每个内容平台也会有自己内容的调性和定位,例如,抖音是用户年轻内容清晰;快手是搞怪奇特;小红书是白领年轻有品位;B站是二次元。

此时,内容平台会面临一个巨大的挑战,就是内容的合规性和质量保障,比如平台的内容必须符合国家的法规,否则,就不仅仅是内容质量问题了,而是犯法的问题可能会面临国家的严重处罚,一条内容有问题导致整个平台完蛋的例子也不是没有。

在这样的大背景下,生产的内容需要保障其调性和质量。这就需要构建完整的内容审核平台来对内容的合规性和质量进行审核。每一个内容平台都会在审核上投入大量的产业以及外包审核人员。

甚至有一种说法是字节跳动的内容审核团队一直在增长,有上万人的规模, 类似于B站等都有小几千人的审核员。在这样的环境下, 如果构建一个算法+人工的审核平台, 最大化提升审核效率同时保障内容质量, 降低内容带来的风险就尤为重要。

审核具体的工作范畴

审核就是一个专家系统打标签&决策的过程

绝大部分的数据处理工作,例如数据挖掘,文本分析或者图像语音分析,我们都可以将其视为一个打标签的工作。审核也不例外,我们可以认为,审核就类似一个信息专家系统,是不断地打标签的过程。

例如,审核的内容是不是合规?内容是不是优质?都可以说一个打标的过程。

再简单一点,我们可以将其视为一个不断使用规则进行二分类的过程:不断用不同的规则检查是否通过?YES OR NO。是否优质?YES OR NO。

审核是一个算法与人工配合的过程

一方面, 是否违规,内容是否涉及黄赌毒, 是否涉政, 这些都是相对明确禁止的;如果UGC内容中出现这些内容, 直接判定审核不通过就可以。

但更多的情况是针对不同的业务, 需要判断内容是否符合内容调性, 质量, 这时候就会存在很多灰色的部分, 机器很难做到100%覆盖, 此时就需要机制引入人工审核。例如LBS场景中,内容中不能出现广告, 但评论中对某个门店露骨地使劲夸, 这样算不算广告?如果不算, 那如果发评论的人经常夸这个店呢?

又或者内容本身没什么大问题, 但被评论的POI是一个高风险的类别呢, 例如‘按摩’ 这个类别风险比较高, 那需不需要人工审核呢?

所以, 在机器无法完全判黑, 或者在识别存在潜在风险的情况下, 需要引入人工审核。 审核系统永远是算法 + 人工的组合。算法无法做到全自动化。

从这个角度构建审核系统, 更像是构造一个专家系统的过程,并不像搜推广一样倾向于使用端到端解决问题。这一点和搜推广有本质区别。

审核是一个需要分级处理的过程

为什么需要分级呢?主要的出发点,还是审核的计算, 人力资源有限, 需要将资源投入在最重要, 最需要审核的环节。

这里的分级, 包括用户的分级, 以及待审核内容的分级,如果做的精细化, 还需要根据具体审核人员根据审核质量的分级。

工作中的一个方法论:只要(而且是必然)资源有限, 就需要进行分级,而且只要存在2/8原则, 就能够分级进行处理。很简单超级有用的思维模式。

  • 用户分级:此处需要对用户进行分级, 根据C端内容提交用户的活跃程度,账号存在时间, 对内容的正向贡献, 或者负向内容提交的比例等, 对用户进行行为信用分级, 总的思路是信用好的用户审核偏松, 信用差的用户审核偏严格。思路比较直接, 一直做好人好事的C端用户, 有理由相信他作恶的概率较低, 反过来有前科的用户就要重点关注了。

  • 内容分级:例如涉黄涉政这种原则问题, 直接审核不通过, 而一些模棱两可, 例如可能是偏营销的内容, 则审核要求会没有那么高。

  • 影响面分级:如果一个评论发表后, 预估看到的人会比较多, 则这条评论审核通过后的影响面会比较大, 则需要投入的审核资源要多一些, 而如果预期这条评论审核通过后, 看到的人会比较少, 则影响面相对较小, 此时投入的审核资源也较少。

  • 生效手段的分级:在审核内容生效后, 需要综合考虑用户分级, 内容分级, 影响面分级确定生效手段的分级。例如高风险的内容, 但没有触发明显的规则, 则可以小流量试投, 低风险的则可以直接全流量。

在经过必要的安全审核和机器自动审核后, 就会根据以上前3个维度, 将内容审核分发至不同的审核流程分支, 之后决定生效手段:有些内容可以直接上线 ,有些需要人工审核, 有些则可以小流量试投。

审核的内容划分

从具体审核的内容的角度来看,我们可以将审核的内容分为安全审核和业务审核两类:

  1. 安全审核:就是看待审核的内容,是不是触犯法律法规.例如,是不是涉及黄赌毒?或者内容是不是侵权等,这是原则问题, 一旦触碰, 直接将内容干掉, 没有任何余地。

  2. 业务审核:主要看内容是不是符合平台的规则和调性,例如,内容可能有长度限制,图片可能有尺寸或者图片内容的限制,或者想中提到的一些调性的限制。

在大公司一般安全审核会有专门的平台或中台团队来支持,一般审核内容更多的指业务审核。

对审核平台的要求

  1. 准确性:一般审核平台对准确性有较高的要求,很多平台出问题,不管是法律风险或者舆论风险,可能就只是因为一条内容内容,所以一般审核平台对准确性有较高的要求。

  2. 审核效率:从内容创造者的角度,他希望自己发布的内容很快能被C端用户看到,那种平台的角度,很多内容是具有时效性的,需要具有很强的新鲜度,所以审核效率是很重要的一个考量因素。这里面还需要考虑的一个点,就是机器审核的占比在审核平台当中,我们不能过多的投入人力资源,人力资源,人力资源是比较贵的。

  3. 可扩展性:内容支持的形态和字段都会不断的在变化或者扩展,所以平台需要具有一定的可扩展性

审核逻辑必须规则化

这里要重点说一下,在审核平台当中,技术体系和业务体系的关系:

我可以说,在审核平台当中,还是以业务体系为主导的,最终,我们在审核过程当中,都是将逻辑抽象成一组组的规则,然后去用规则去判定内容是否符合规则,之后用这些规则去对内容进行达标分级,我们可以认为是我还是以规则驱动的,从这个角度来说,审核平台更新是一个专家系统。

只是在判定是否符合某条规则的时候,需要有很强的技术性,甚至里面会包含多个执行单独任务的模型,例如,以下规则的判定就需要很强的技术能力,甚至每个条件的判定都是一个单独的算法模型,甚至会用到深度学习:

  • 图片中是否包含广告字样内容,中间可能需要使用到OCR的文字识别引擎。

  • 是否为截屏图片,需要去识别图片当中各部分的组成,有没有投入的时间信号等各种要素。

  • 图片中是否包含色情内容,内容中是否以人像为主体,这会涉及到图像识别和分类

  • 图片中是否包含建筑,是否是一个加油站的图片,或者说是一个门店的门脸。

以上这些规则都很简单,但是要实现的时候都需要使用图像识别的模型来解决判定。

简单来说,就是整体审核或是一个规则系统,所有的审核逻辑都通过规则进行串联,只是规则的判定会使用到算法模型。

系统架构

图:审核系统算法架构图

整个审核系统从业务逻辑的角度,主要要包含以下部分:

  1. 安全审核,例如是否黄赌毒是否涉政,一旦命中,直接干掉。

  2. 机器审核,将规则引擎中的审核规则都按照合适的顺序过一遍,命中黑规则的直接干掉;其余的打上灰或白的标签,供后续走不同的分支使用;从业务的角度,可能还需要区分是否优质,是否高质量,这个和具体审核系统的业务逻辑相关。

  3. 派单人工审核:根据机器审核的不同结果,再结合影响面和用户信用的分类,确定是否需要人工审核,以及线上投放的话,需要按照什么样的流量比例进行投放。例如,提交内容的用户是优质用户,而提交的内容预估影响面比较小,同时,机器审核的时候没有命中任何违规的规则,这这条内容甚至可以不过人工审核;如果预估这条内容审核通过后,影响面比较大,则需要进入人工审核的流程。

  4. 线上投放:一条评论经过机器审核,而如果因为内容创作者的信用比较好没有经过人工审核,此时,满足上线条件,我们可以先让这条内容小流量上线,如果小流量上线之后发现用户的观看比较多,则可以让人工再次进行审核;如果上线之后流量比较小,则人工无需再次进行审核。

  5. 定期机器巡查:有时候内容是否违规,需要综合内容创作者在多天在不同poi上的行为来进行综合定,这样的判定规则是无法实施实现的,所以我们需要对已经上线的内容进行定期的巡查,把这种单挑没有问题,但汇总起来就有的问题给干掉。例如,有的用户会在同类型不同的POI上都发表相同的评论,我们需要在单条审核通过的情况之下,批量的把这一类评论下线。

  6. 人工抽查:需要对线上审核通过的评论进行定期的抽查,以检查审核的准确度。

其中,在审核&决策部分,需要综合考虑用户信用等级,内容影响面, 内容质量确定是需要进入人审, 还是进行线上小流量投放, 还是直接正常投放。这是加速审核逻辑非常重要的核心思想:将有限的审核资源投入到影响面,风险最大的内容审核上。

图:审核&决策思路,在进行完用户信用分级, 内容质量分级, 内容影响面分级后, 就会根据这三个要素维度进行接下来的审核决策, 图中仅展示了用户信用为高的用户路径,红勾代表需要人工介入审核, 例如内容影响面较大,而内容质量一般就必须人工审核,而对于高信用用户,影响面偏低的内容,过了基本的机器审核后, 就可以直接上线投放。

审核元素的设计

上面也提到,在进行审核平台建设的时候,我们需要考虑平台的扩展性。我们可以简单的将社会平台看成是一个规则的系统,所以为了扩展性,我们需要抽象规则的定义以及作用于规则的逻辑。以便能够灵活地增加各种字段以及这些字段上所作用的规则。

我们可以使用xml或者json这样的格式去描述对应的字段,以便接字段以及其上的规则,可以进行灵活的扩展。

同时,对于审核的各种基础算子,我们可以进行抽象,以便在不同的字段,甚至不同的业务里边都可以服用这些具体的算子。

评价&优化

审核系统就类似于球场上的后卫,他和前锋不一样,我们很难去评判他对业务的直接贡献,但是我们可以通过机器审核的比例的提升,以及审核人力的减少去评估系统效率的提升。

同时,有些系统可能比较注重审核的时效性,在这样的业务场景审核的时效性也可以纳入指标统计。

另外,做审核系统的一个经验就是审核系统是非常CASE驱动的,所以做审核系统的同学,一定要细致的去看各种CASE,不过,幸运的是,一般某几类CASE就会占到问题的大部分,所以我们可以开始先解决头部问题,先解决容易的性价比高的问题,之后再去精细化的构建其他审核规则完善系统。

大型平台商品选货逻辑

现在在很多大型平台,一提到其中的算法,大家的第一反应就是搜推广中1. 的CTR预估模型或是CVR预估模型。
的确,在系统当中,从分发的角度,在线的分发效率是直接能够影响到最终的业务结果,也是最好度量的,类似于球场上的射手。但这也是我一直强调的,在线的分发虽然非常重要,但它不是全部。
为了提升整个系统的分发效率,我们还需要综合考虑数据的应用、供给的优化、人群的定向挖掘等然后才能有最终分发效率的提升,而且这个过程当中还会伴随着各种风险的防控和反作弊的策略。所以就最终达到比较好的业务效果整个系统链路是比较复杂和冗长的。有可能系统当前最大的瓶颈还不是分发部分。
大部分情况下,分发效率的提升,必然会伴随着供给侧的优化,也就是b端的优化。例如,在广告系统中,会伴随着广告主侧的优化,包括物料创意等。 例如,百度凤巢的关键词,推荐账户优化等工具。或者是交易型系统中的选货盘货工具。
这些B端的选货,盘货逻辑和在线分发系统的关系,就类似一个传球手和射手之间的配合关系,他们是相互补充的关系。
因为B端的工具一般是优化供给,它能够利用B端离线的丰富的统计数据。而在线的分发系统则主要是面向C端,它有丰富的实时在线的用户数据和场景数据。两类系统互相配合补充最大化B端商户营销交易的目标,C端用户体验的目标和平台收入的目标.

废话了半天,今天我们就来聊一聊B端的选货平台的构建。

选货的重要性

我们经常说互联网三类比较重要的变现手段:交易广告和游戏,无论一个工具或者平台,他是做什么的,最后,他要商业化的时候,都是通过这三种模式。
对于存在交易的平台来说,用户之所以来这个平台,肯定是平台给他带来了特殊的价值。而一般最主要的价值主要是信任感和价格优势。
如何找出对用户有信任感和价格优势的货呢?就需要有对应的选货平台支撑,因为所有的选货逻辑都是人工进行的话,一方面,人工会有其经验的局限性,另外人的精力是有限,货品太多肯定会有疏漏,第三是人工操作可能就会带来对应的腐败,如何通过算法去自动化的,规模化的选货,是非常有价值意义的一个工作。


图:淘宝聚划算展示模式,选出具有品牌效应的折扣商品,让用户对该板块有心智,新用户访问淘宝,提升淘宝的DAU和交易量

而对于美团或者高德这样的LBS生活服务平台,同样需要将具有品牌效应和价格竞争力的商品选出来展现给用户。

实现思路

一般的选货平台中,主要包含以下几个主要逻辑:

  1. 群组推荐(group recommendation)进行人群圈选,确定平台或者板块主打的人群类别,并且使用群组推荐的方式确定人群的需求或者类目&心智,以便后续进行对应的类目和商品的圈选。
  2. 品类规划:在很多业务场景中,我们进行选货的目的是为了最大化线上的业务指标收益,但这个过程当中,我们还需要考虑品类的多样性,就和推荐系统一样,我们认为业务指标是短期收益的度量,但多样性是为了提升用户选择的类目广度,它是一个长期收益的度量。为了平衡长短期收益,我们就需要进行品类规划,保证各个类别的占比在合适的水位上。
  3. 货品选取:当选货的类别和占比确定之后,我们就要进行具体货品的选择。 在进行选择的时候, 需要充分考虑商品的价格竞争力, 品牌能力, 后续商品的趋势等因素。
  4. 商品评估:然后进行具体的商品选取
  5. 在线投放和效果回收:之后配合在线的分发投放系统进行商品的投放以及对应的效果回收。
    以上就是整体选货的逻辑和步骤。

系统架构

货品选择和线上投放进行互补,需要进行离线选货和在线投放分发的联动。
智能选品, 选品后台和前台流量投放的链路打通, 以人群需求出发, 结合推荐等算法技术, 深入挖掘人群偏好和商品, 类目。 同事对价格力, 销量趋势, 品牌力等进行多维度立体评估, 这样可以让投放链路来撬动极致的供给。


图: 选品平台示意图,通过对品的选择, 人的选择, 结合投放端最大化撬动供给。

人群选品

人群选品解决的问题, 是在不同的场景, 根据不同的对象用户, 主打品牌折扣的心智, 针对货品,场景特点, 主打不同特点的人群, 例如聚划算品质辣妈, 精明主妇, 高德周末遛娃, 出差白领, 货车司机,网约车司机等人群。 基于人群推荐group recommendation 算法挖掘不同人群下的货品个性化供给, 提升目标人群的选品效率和准确性。
该思路其实也比较通用:就是每一个产品或者平台必须要确定其主打的人群,然后对这些人群去用不同特点的货品作为钩子去吸引住这些用户。比如,在电商平台,有一波消费的主力是家庭主妇或者有娃的妈妈,那就要针对这些特定的人群去进行选货;或者在LBS场景周边溜娃会是非常大的需求人群,也可以针对这些人群去进行定向的盘货。

群主推荐的主要思路是根据群组中的个体对item的偏好去计算群组总体的偏好,具体计算的过程当中有以下三种思路:

$group score=\sum_{uj\in G}w{ij}*f_{UI}(u_j, item_i)$

  1. ADD的思路:该思路下认为,群主中的每个群体成员的重要性都是一样的,所以$w_{ij}$的权重可以设置为1
  2. Least Misery(LMS):该方式需要避免群体最不容易接受的情况,所以,将$w_{ij}$低分设置为1,其他为0
  3. MRP: 该方式是将头部的重要人物的权重$w_{ij}$设置为1,其他为0,该方式主要考虑的是意见领袖的倾向,而不考虑大众的感受。

三种方式各有各的特点和倾向,所以在应用的时候,我们需要挑选合适的模式应用到我们的场景中。

更多的细节可以参见群组推荐这个topic的相关研究和进展。

参考聚划算

聚划算的心智, 简单来说就是品牌折扣的心智: 让用户买到品质优惠的商品(to c) 让商家实现用户增长和商业增长( to b), 对于这样的模式, 核心优势是商品供给, 而商品供给的关键, 在于运营招商, 商家是否愿意参加, 是否愿意给到极具吸引力的折扣, 很大程度上取决于商家在聚划算固定渠道上的流量体感。
其实绝大部分的平台选货都可以参考聚划算的思路。

品类规划

品类规划根据品类整体收益函数$f(x,c)$ 可以得到品类x规划c个坑位带来的预期总收益,品类规划问题, 是希望能够在单坑满足条件的情况下, 尽可能最大化品类宽度。
例如,业务上的指标可能是需要保证各个业务或者行业的成单占比,以及在各个入口的占比。我们可以将业务指标作为具体的约束项,然后将目标设定为在保证业务场景整体占比等约束的基础之上,去最大化品类的数量和宽度。
例如,将问题定义为如下形式:

  • 目标:保证业务要求的基础之上,去最大化品类的数量和宽度。
  • 输入:总的类目集合,总得资源位坑位数,各个业务的单坑产能。
  • 输出: 未来一段时间,每个类目的坑位数。
    相当于使用这样的方式将每个类目再接下来一段时间的坑位数进行规划。 可以使用动态规划的方式进行求解。当然求解出来的模式不是最优解,但是具有很强的参考意义。

货品选取

一般情况下,在选择货品的时候,以下几方面是最重要的度量因素:

  1. 价格力:即价格是否优惠,而且度量的方式是看用户是否真的买到了便宜。例如iPhone可能平常不打折,但某一天他的价格突然降低了300块钱,这其实已经是一个很好的折扣了,我们就说他有很好的价格力;反过来,如果一个商品常年都是打五折,那这个折扣其实并没有什么西引力,因为用户并没有买到真正的便宜。
  2. 品牌力:指的是这个货品的品牌效应,更多体现的是这个商品的质量保障。还是以iPhone为例,如果官方旗舰店打了一个300块的折扣,因为有品牌的背书,所以对用户购买意愿的刺激其实是非常大的;但如果是一个不知名的小店,她卖的iPhone打了一个300块钱的折扣,因为这个店的品牌效应不行,所以他对顾客所带来的消费刺激也不一定会明显。
  3. 贡献力:指该商品对平台的收入这贡献。平台需要考虑自己长短期的收益。
  4. 趋势力:指这个商品是不是能够引领整个平台用户消费的趋势, 是不是应季货品, 是不是新品等。


图:商品选货五要素

整个商品选货的过程就需要围绕以上方面进行。而在具体选货的过程当中,可以考虑以上5因素的综合影响。

以下为更加详细的操作展开介绍

价格力

核心思想就是看用户能不能买到真正的便宜,而真正的便宜的度量可以是多维度的,就要可以包含以下维度的度量:

  • 历史比价:这可能是价格最有吸引力的方式了,例如,淘宝双11说,这是全年最低价,虽然可能也就比平常便宜5%,但对用户购买的刺激性爆棚。
  • 同款商品比价
  • 相似商品比价
  • 实时价格变化

品牌力

主要是看用户对品牌的认知程度以及对应的货品的质量保证,主要可以从以下几方面去衡量:

  • 热门程度:热门程度体现了用户对该商品的认可程度
  • 美誉度/提及度:例如,用户评论的数量和好评的数量

趋势力

主要看商品后续是不是能够引领平台的趋势和成为爆品的可能性。只要衡量的指标可以是:

  • 预测的销量
  • 是否为应季的商品
  • 新特奇的程度

综合以上的维度以及人工运营的市场需求,最终对货品进行盘点。

选货完成之后,相当于是对这些货品打上了特殊的高阶标签,这个时候需要对接线上的投放系统进行分发,根据预先定义的标签,所投放的入口以及规划的坑位,投放的时间去展现给特定的用户群体。此时就要求选货系统和线上的分发引擎是打通的。在很多场景选货的维度非常多,同时选出来的货也会多种多样,此时如果将所有的货品的标签都同步到线上,全量同步会给线上索引投放系统带来巨大的压力,此我们可以跟线上引擎有联动,仅同步有diff的部分减轻线上系统的压力。

总结

离线对于货品的选择,是整个系统对攻给重要的分析以及处理,是整个系统必不可少的部分。
我们可以利用离线的丰富的数据以及人工的经验去对货品进行选择,然后配合在线的实时场景的预估去进行分发,从整体系统的角度去最大化用户体验以及收益。