序言
本书的目的是“从技术创造的视角,以具体的技术诞生场景为蓝图,试图引导读者学习和掌握工业界模型设计背后真正“银弹” - 目的是解决什么样的问题”
深度学习打破之前原有的学术界模型复杂条件苛刻的情况,它具有以下特点:
- 开源工具多
- 深度模型的模块标准化程度高
- 模型的设计和实现结构,大大提升了算法迭代效率
工业界技术的正确视角是问题驱动
而不是拿着锤子找钉子
问题驱动: 定义清楚问题,想清楚技术的需求,然后寻找或构思相应的技术工具
以阿里为例它通过电商场景的行为模式和用户兴趣的利用,进行了一系列的算法迭代,是问题驱动
的典型例子.
现在,大部分公司的工业级深度学习处于1.0, 已经遇到了瓶颈,传统的:
- 搭积木
- 喂数据
- 算法改进需要工程大量的升级改造
这几种形式已经难以为继,需要进入2.0阶段,作者判断和呼吁
对于推荐\搜索和广告领域,业界需要重新定义和设计新的系统架构,以适应深度学习爆发式发展带来的领先算法那能力.
需要专项更为复杂和系统性的技术体系,进一步创造技术红利.
1. 互联网增长引擎-推荐系统
推荐系统的意义
用户角度:推荐系统解决在"信息过载"的情况下,用户如何高效获得感兴趣信息的问题. 即用户体验.
公司角度:推荐系统解决产品能够最大限度地吸引用户,留存用户,增加用户粘性,提高用户转化率的问题,从而达到公司商业目标连续增长的目的. 即商业利益.
这些目表可能是视频公司的观看时长\新闻公司的点击率\电商公司的转化率等
推荐系统的逻辑框架
推荐系统的问题定义: 通过用户U\场景C\物品I,预测用户对特定物品的喜好程度.
推荐系统的架构
如上图,推荐工程师需要解决的问题有两类:
- 数据问题:数据的存储,处理,实时数据处理
- 模型问题:模型的构建,迭代,上线,流式更新
2. 前深度学习时代-推荐系统的进化之路
传统的推荐算法那的演进如下图, 传统的推荐模型是很重要的基础:
- 目前cf\lr等传统的推荐模型具有可解释性强\硬件环境要求低\抑郁快速训练和部署的优势,有大量使用的场景;
- 传统的是深度学习推荐的基础.
例如,lr是是单层单神经元的神经网络;因子分解演化除了FM,deepFM等深度模型具有很好的效果.
上图,可分为4个部分:
- 协同过滤(蓝色)
- 逻辑回归: LR
- 因子分解机:FM,FFM
- 组合模型:GBDT+LR
CF
通过贡献矩阵和合适的相似性度量的方法,进行推荐的技术
userCF
细节不赘述
缺点:
- 实际场景中user量大,开销大,计算量大
itemCF
细节不赘述
CF的缺点
协同过滤虽然直观,可解释性强,但是不具有较强的泛化能力,无法将两个物品相似这一信息推广到其他物品的相似性计算上.导致里一个严重的问题:
热门物品具有很强的头哦不相应,容易跟大量物品产生相似性;而尾部物品由于特征向量稀疏,很少与其他物品产生相似性,导致很少被推荐.
矩阵分解
矩阵分解即将共现矩阵分解得到用户和物品的隐向量.
矩阵分解有几种方式:
1.特征值分解eigen decomposition
2.奇异值分解sigular value decomposition
- 要求共现矩阵是稠密的,复杂度高,不适合大数据场景
3.梯度下降
优缺点
- 泛化能力强
- 空间复杂度低
- 易于扩展和灵活:和embedding的思路类似
逻辑回归
理论知识略,网上很多了
优点
1.物理意义匹配
:逻辑回归是广义线性模型的一种,它的假设是因变量服从伯努利分布.对于用户是否点击的场景也可以定义为这个分布.
2.可解释性强
:根据权重解释特征的强弱.
3.工程化简单
缺点
无法进行交叉,特征筛选等,有信息损失.
FM/FFM
书中使用辛普森悖论
解释了不同性别数据和总体数据得到不同物品点击率顺序的例子,说明单一特征信息的大量损失问题.
ploy2
二阶乘积是最直接的方法,但是数据非常稀疏,权重参数数量上升
FM模型-隐向量特征交叉
FM与PLOY相比,主要区别是用两个向量的内积取代了直接交叉.
参数量个
优点
- 参数从缩减到了;
- 稀疏性减少:不局限于单一的交叉存在时才能学习,只要有其中一个特征参数,就会被更新.
FFM模型-引入特征域的概念
引入了特征域的概念,每个特征对于另外的特征(域)都有一个单独的向量表达
参数量个
GBDT+LR-特征工程化的开端
之前提到了FFM模型,提升了特征的交叉English,但也只有二阶交叉的形式,如果再进行更高阶的交叉,会产生组合爆炸和计算复杂度过高的问题.
2014年FB提出了GBDT+LR的方式: 利用GBDT自动进行特征筛选和组合,进而生成新的离散特征向量,在吧该向量特征当做LR模型的输入.
GBDT的特征转换过程
我们首先需要训练一个GBDT,假设我们训练好的模型有三颗树组成,一个样本输入树中后,会知道它到底经过了这些树的那些叶子节点,我们把这些阶段标成1其他为0即可.
MLR
阿里提出的MLR模型是对lr模型的一个扩展,它假设样本可分为m类,每一类也会学习到参数,并与lr结合,使得模型有了更强的学习复杂分布数据的能力:
如果从深度学习的角度来理解这个模型,可看做是一个加入了(attention)机制的神经网络模型.