ai-intro

目标:

人工智能 Artificial Intelligence >> 机器学习 Machine Learning >> 深度学习 Deep Learning:

训练:从数据中学习,以最大限度地减少其预测与实际结果之间的误差。但避免过度学习,要有泛化能力,以便可以对新的、看不见的数据做出准确的预测。

应用场景:
自动化与效率优化:替代重复性劳动或优化资源分配。例如:

本质:从数据到价值的转化路径

模型

flowchart LR
    subgraph 数据准备
        A1[数据收集]
        A2[数据预处理:归一化-量纲;标准化-符合分布]
        A3[训练集、验证集、测试集分割]
        A4[模型构建:
1. 定义模型(假设函数)
2. 定义损失函数(评估模型好坏)
3. 优化参数(寻找最优解) ] end subgraph 模型训练 B1[模型训练] B2[前向传播-预测值,计算损失;反向传播-梯度下降,参数更新] B3{验证集性能达标?} end A1 --> A2 --> A3 --> A4 A4 --> B1 B1 --> B2 --> B3 B3 -- 否 --> B1 B3 -- 是 --> 模型微调
flowchart LR
	subgraph 模型微调
        C1[模型微调]
        C2[使用特定任务数据进行微调]
        C3{微调后性能达标?}
    end
    
    subgraph 模型固化与部署
        D1[模型固化]
        D2[模型测试、部署]
    end
    
    subgraph 推理与监控
        E1[接收新输入数据;数据预处理;模型推理;输出预测结果]
        E2[监控与反馈]
        E3{性能下降?}
        E4[模型重新训练或微调]
    end
    C1 --> C2 --> C3
    C3 -- 否 --> C2
    C3 -- 是 --> D1
    D1 --> D2
    D2 --> E1
    E1 --> E2 --> E3
    E3 -- 是 --> E4

将模型比作一个数学函数:

推理模型:慢思考(思路):背景,要/不要,目标
指令模型:快思考(操作):prompt

决策顺序 是否关键
1. 选定任务类型⭐ 必须
2. 选定损失函数⭐ 最关键
3. 适配输出层激活函数 必须
4. 选择优化器 推荐 Adam
5. 设置评估指标 视需求而定
损失函数,是预测与真实标签之间的差异,是模型训练的目标函数。其他参数(如激活函数、优化器、评价指标等)会根据损失函数和任务类型进行适配。

常见任务与损失函数对应关系(推荐组合)
根据任务类型(分类、回归)、输出形式(概率分布、数值)、标签格式(one-hot、整数、连续值)来决定

任务类型 输出层激活函数 损失函数 标签格式 推荐优化器 推荐评估指标
二分类 sigmoid binary_crossentropy 0/1 或 [0,1], [1,0] Adam / SGD accuracy, precision, recall
多分类(≥3类) softmax categorical_crossentropy one-hot 编码 Adam / SGD accuracy
多分类(整数标签) softmax sparse_categorical_crossentropy 整数(如 0, 1, 2) Adam / SGD accuracy
回归任务 linear mse(均方误差) 连续值 Adam / SGD mae, mse
带类别权重的分类 softmax categorical_crossentropy + class_weight 参数 one-hot Adam accuracy, f1-score(需自定义)
如何确定这些组合?
  1. 官方文档推荐
  1. 论文或教程参考
  1. 经验法则

问题分类:

graph TD
    A[确定问题类型] --> B{有标签数据,有明确的目标值?}
    B -->|是| C[监督学习]
    B -->|否| D[非监督学习/强化学习]
    
    %% 监督学习分支
    C --> E{任务类型?}
    E -->|分类| F[分类模型:识别
例1:情感分析(正面/负面)
例2:账户风险等级(高/中/低)] E -->|回归| G[回归模型:预测
例1:大促销量预测(对于不同促销/广告投放方案)
例2:房价线性回归] E -->|排序/推荐| H[排序模型] %% 非监督学习分支 D --> I{任务类型?} I -->|聚类/降维| J[非监督模型:聚类,挖掘无标签数据的隐藏分组
例:复购行为的用户群体特征;

降维,异常检测:识别离群数据
例:信用卡欺诈交易识别] I -->|与环境交互| K[强化学习模型:动态决策优化
条件:需定义状态-动作-奖励机制

路径优化场景
例1:交通信号控制优化
例2:物流配送路线规划

资源调度场景
例1:电商动态定价策略
例2:云计算服务器资源分配

交互决策场景
例1:自动驾驶车辆控制
例2:游戏AI策略生成] %% 分类模型细分 F --> L{数据规模与复杂度?} L -->|小规模/线性| M[逻辑回归/SVM线性核] L -->|中规模/非线性| N[随机森林/XGBoost] L -->|大规模/图像/语音| O[CNN/Transformer] %% 回归模型细分 G --> P{是否有时序依赖?} P -->|否| Q[线性回归/梯度提升树] P -->|是| R[ARIMA/LSTM/Prophet] %% 非监督模型细分 J --> S{任务目标?} S -->|分组| T[K-means/DBSCAN] S -->|降维/特征提取| U[PCA/自编码器] %% 强化学习细分 K --> V{状态空间维度?} V -->|低维| W[Q-learning] V -->|高维| X[DQN/PPO] %% 特殊数据类型分支 A --> Y{数据是否含特殊结构?} Y -->|时序数据| R Y -->|图结构| Z[GCN/GNN] Y -->|多模态数据| AA[CLIP/多模态Transformer]

ai-tech-stack

模型训练

房价预测场景(涉及概念:参数、导数、梯度、梯度下降)

1.目标锚定:让预测值接近真实值

2.量化误差:定义损失函数如均方误差(MSE)

3.分析参数影响:偏导数 -> 梯度



4.优化参数策略:L(θ),说明 y^ 越接近 y,模型越优 -> 减小梯度 -> 梯度下降最快,迭代更新参数
Stochastic Gradient Descent,SGD,随机梯度下降

5.收敛终点:梯度为0时的最优解

6.评估

最终推导链(嵌入细节版)
预测目标(y^y想让房价预测准最小化损失(L(θ)用MSE量化误差,越小越好分析参数对损失的影响(偏导数)看单个参数咋变,能让损失下降到0梯度是“变化趋势的合力”把各参数的影响整合成向量数学推导:梯度(是方向向量的)反方向使损失下降↓最快方向导数↓+点乘证明“最陡下坡”梯度下降迭代更新参数沿最快下坡方向一步步调参数梯度为0时收敛(y^y到达谷底,预测最准

每一步都紧扣房价场景,从“想预测准”的朴素目标,到用数学工具(导数、梯度)分析优化方向,再到用梯度下降策略逼近最优解,逻辑环环相扣。这样就能彻底理解:参数向量是优化对象,导数是“微观调整依据”,梯度是“宏观变化方向”,梯度下降是“高效优化策略”,最终实现预测值接近真实值的目标。

一些参数

激活函数:

优化器的学习率调度(Learning Rate Scheduling)

批量大小(Batch Size)

评估指标

Pasted image 20250630134533.png|500

准确率 accu =

圆内,“How many selected items are relevant?”(在项目中的被选择部分,有多少是相关的?)

左侧,“How many relevant items are selected?”(在项目中的相关部分,有多少被选择了?)

F1=2××+

问题

优化失败:
梯度消失/爆炸:深层网络中梯度反向传播时逐渐减小(消失)或增大(爆炸),可通过残差连接(ResNet)、梯度裁剪(Clipping)缓解。

方法 原理 适用场景
残差连接(ResNet) 通过短路连接(x+F(x))让梯度直接流过浅层,避免链式衰减 深层CNN(如ResNet、DenseNet)
梯度裁剪(Gradient Clipping) 设定梯度阈值(如"||g||>threshold"时缩放梯度),防止爆炸 循环网络(RNN/LSTM)
合适的激活函数 ReLU系列(ReLU/Leaky ReLU)导数在正数区域为1,避免梯度衰减;Swish等平滑激活函数减少梯度消失 全连接层、CNN
Batch Normalization 归一化各层输入,稳定激活函数梯度范围 各类神经网络
权重初始化策略 Xavier/Glorot初始化(适配线性激活)、Kaiming初始化(适配ReLU),控制初始权重尺度 网络初始化阶段
LSTM/Gated RNN 门控机制(遗忘门、输入门)控制梯度流动,缓解RNN中的梯度消失 序列建模任务
graph TD
   A[训练损失高] --> B{测试损失是否高?}
   B -->|是| C[模型偏差,模型无法拟合数据的真实规律:增加模型复杂度/验证集和测试集分布一致]
   B -->|否| D[优化问题,模型可以拟合,但未找到最优参数:调整学习率,自适应学习率(如Adam)/权重初始化/数据归一化和标准化]
   E[训练损失低] --> F{测试损失是否高?}
   F -->|是| G[过拟合,模型过度训练学习到噪声,泛化能力差:数据增强/正则化]
   F -->|否| H[模型良好]

过拟合问题。模型可能会过度学习训练数据中的噪声和特殊细节,导致在测试数据上表现不佳。表现为,模型在训练集上损失低,但在测试集上损失高。解决方法:

L1倾向于产生稀疏参数(部分权重为0),L2使权重整体更小,前者适用于特征选择,后者适用于防过拟合。
L1正则化

多层神经网络:

模型评估与选择:

机器学习训练营 | python入门到进阶 |
LLM学习笔记:最好的学习方法是带着问题去寻找答案 | 腾讯技术工程 | 2025年05月12日 17:35:从使用到浅层原理
datawhale-AI3-reasoning

huggingface.co/spaces/open-llm-leaderboard-CSDN博客

基础

一、数学基础技术
核心作用:为模型构建提供理论支撑与算法推导工具

技术方向 关键内容 应用场景
线性代数 矩阵运算、特征分解(PCA/SVD)、向量空间变换 降维、特征表示、神经网络权重更新
概率论与统计 概率分布(高斯/伯努利)、贝叶斯推断、假设检验、最大似然估计,探索性数据分析(EDA) 生成模型(VAE)、不确定性建模、模型评估
微积分 梯度计算、链式法则、凸优化理论(梯度下降/牛顿法) 模型参数优化、损失函数最小化
信息论 熵、交叉熵、互信息 损失函数设计(如CE Loss)、特征选择

二、算法基础技术
核心作用:构成模型架构的底层算法模块

  1. 传统机器学习算法
  1. 深度学习基础模块

三、数据处理技术
核心作用:保障数据质量与模型输入适配性

技术类型 关键技术 实施场景
数据预处理 数据清洗(去噪/缺失值处理)、特征标准化(Z-score)、归一化(Min-Max) 所有模型的输入阶段
特征工程 特征选择(卡方检验/RFE)、特征提取(词袋模型/TF-IDF)、特征变换(one-hot编码) 传统机器学习、NLP基础任务
数据增强 图像:旋转/翻转/噪声添加;文本:同义词替换/掩码;时序:时间偏移 解决数据量不足、提升模型泛化能力

四、优化与训练技术
核心作用:保障模型收敛与性能优化

  1. 损失函数体系:

    • 分类任务:交叉熵损失(CE Loss)、焦点损失(Focal Loss)
    • 回归任务:均方误差(MSE)、平均绝对误差(MAE)
    • 生成任务:对抗损失(GAN Loss)、变分下界(ELBO)
  2. 优化算法:

    • 基础算法:随机梯度下降(SGD)、动量梯度下降(Momentum)
    • 自适应算法:Adam(结合动量与自适应学习率)、RMSprop
    • 技术演进:从单步更新到二阶优化(如L-BFGS),提升收敛效率
  3. 正则化技术:

    • L1/L2正则化(防止权重过大)、Dropout(随机失活神经元)、早停(Early Stopping)
    • 核心目标:缓解过拟合,提升模型泛化能力

五、评估与解释技术
核心作用:量化模型性能并增强可解释性

  1. 性能评估指标:

    • 分类:准确率(Acc)、精确率(Precision)、召回率(Recall)、F1值、AUC-ROC
    • 回归:均方误差(MSE)、决定系数(R²)
    • 生成:FID(特征距离)、IS(初始得分)
  2. 模型解释技术:

    • 局部解释:LIME(局部可解释模型无关解释)、SHAP值(基于博弈论的特征归因)
    • 可视化解释:CNN的类激活映射(CAM)、注意力权重热力图

六、工程化支撑技术
核心作用:实现模型从研发到落地的工程化流程

七、技术演进脉络与交叉融合

  1. 从传统到深度:
    • 传统机器学习依赖“特征工程”,深度学习通过“端到端学习”自动提取特征
  2. 模块融合案例:
    • CNN+RNN:用于视频分析(CNN提取空间特征,RNN处理时间序列)
    • Transformer+GAN:如DALL·E(自注意力机制结合生成对抗训练)
  3. 新兴基础技术:
    • 神经符号系统(融合神经网络与符号逻辑)、神经辐射场(NeRF,3D场景表示)

总结:基础技术的层级关系

数学理论(线性代数/概率) → 算法设计(模型架构) → 数据处理(输入适配)  
↓                                 ↓                                 ↓  
优化训练(参数更新) → 评估解释(性能验证) → 工程化(落地部署)  

这些基础性技术构成了机器学习与深度学习的“基础设施”,无论是序列模型、CNN还是生成模型,其核心创新均基于对上述技术的组合与改进。例如,Transformer的自注意力机制本质是“加权求和”(线性代数)与“Query-Key-Value映射”(算法设计)的结合,而GPT的训练则依赖大规模数据增强、自适应优化算法(如AdamW)等工程化技术的支撑。

CRT

定义:
CTR,Click-Through Rate,点击(通过)率,广告展示→点击的转化率。
CTR = 点击次数 / 曝光次数 × 100%。广告展示 1000 次,被点击 20 次,则 CTR=2%。

┌──────────────────────────────────────────────────────────────┐
│                         数据层挑战                             │
│  ┌────────────┐  ┌─────────────┐  ┌──────────────┐           │
│  │ 冷启动处理  │  │ 噪声过滤    │  │ 多源特征融合  │           │
│  │ (相似性迁移)│  │ (孤立森林)  │  │ (内容+用户+外部)│           │
│  └────────────┘  └─────────────┘  └──────────────┘           │
├──────────────────────────────────────────────────────────────┤
│                         模型层架构                             │
│  ┌────────────┐  ┌─────────────┐  ┌──────────────┐           │
│  │ 时序模型    │  │ 非线性模型  │  │ 模型簇管理    │           │
│  │ (LSTM+ATT)  │  │ (LightGBM)  │  │ (按视频类别)  │           │
│  └────────────┘  └─────────────┘  └──────────────┘           │
├──────────────────────────────────────────────────────────────┤
│                         工程层优化                             │
│  ┌────────────┐  ┌─────────────┐  ┌──────────────┐           │
│  │ 分布式训练  │  │ 实时更新    │  │ 模型轻量化    │           │
│  │ (Spark+Flink)│  │ (FTRL在线) │  │ (知识蒸馏)    │           │
│  └────────────┘  └─────────────┘  └──────────────┘           │
└──────────────────────────────────────────────────────────────┘
       ↓                                                        
┌──────────────────┐ ┌─────────────────┐ ┌──────────────┐
│  评估指标体系    │ │ 业务价值落地    │ │ 伦理合规     │
│  (MAE/RMSE)     │ │  (降本/增效)    │ │  (联邦学习)   │
└──────────────────┘ └─────────────────┘ └──────────────┘

业务意义:衡量广告 / 推荐内容的吸引力,辅助内容创作者、平台运营者和广告投放者做出更科学的决策。

目标:点击率预测,评估广告有效性

准确性:

华为 https://github.com/reczoo/FuxiCTR
简介:广告行业中那些趣事系列52:一个超好用的CTR开源项目FuxiCTR | 数据拾光者 | 2022年04月11日 09:00:导读:本篇从理论到实践介绍了华为CTR开源项目FuxiCTR。首先是背景介绍,然后重点详解开源项目FuxiCTR,最后分别简单介绍了传统CTR模型发展进程和深度学习CTR模型发展进程。对CTR模型感兴趣小伙伴可以一起沟通交流。

使用:配置数据集(特征处理)和模型(训练、评估)

模型:
集成学习框架:“时序模型+特征工程模型” √

模型优化与评估:

数据预处理:

特征工程:生成视频发布后的时间间隔、近7天平均观看次数等时序特征;对类别型特征(如视频标签、作者ID)进行独热编码、Label Encoding或Embedding编码;通过特征交叉(如“视频标签”与“发布时间”交叉)创造新特征,增强模型对复杂关系的学习能力。

编码方式 核心思想 优点 缺点 适用场景
独热编码 离散类别 -> 二进制向量 简单直观:无需训练,直接映射类别到向量。
正交性:向量间相互独立(内积为 0),避免模型误判类别间的顺序关系。
维度灾难:词汇表规模 V 增大时(如10万词),向量维度 V 极高,导致计算效率低下。
语义缺失:无法表达词语间的语义关联(如"apple"与"fruit"的关系)。
小类别数、离散标签
标签编码 用连续整数表示类别(如0,1,2) 维度低 引入顺序假设、语义无关 决策树等不敏感模型
词嵌入 低维稠密向量表示语义关联 捕捉语义关系、维度可控 需大量数据训练 NLP、文本分类
二进制编码 用二进制位组合表示类别(如3类→2位) 维度低于独热编码 引入位间依赖、语义解释难 类别数较多且无语义关系

多源特征融合:
分类特征(离散值):需根据类别数量选择One-Hot或Embedding处理。

准确性要求:
迁移学习与领域适配:

冷启动问题(新视频预测)


实时性要求:
大量数据实时流式处理:日均处理亿级视频的点击日志(如 YouTube 每日新增视频超 500 万条)处理;热门视频的点击量可能在短时间内激增(如 1 小时内从 1 万增至 10 万),需实时更新预测。

实时预测与缓存策略:


可用性要求:

部署成本与效果平衡

监控与自动调优

大规模并发与资源优化


业务与伦理难点

用户行为博弈:

隐私与数据合规:

五、总结
工业级视频点击量预测需从“模型精度、工程效率、成本控制”三维度设计方案:

搜索

搜索算法

TF-IDF

简单实用

TF-IDF 算法是基础,用于信息检索 Information Retrieval,文本挖掘 Text Mining,自然语言处理 Natural Language Processing。
目前也有深度学习为基础的文本表达和算分 Weightin。

TF-IDF 来自 向量空间模型 Vector Space Model,把查询关键词和文档表达成向量,用向量运算表达向量间关系,如计算相关度,用余弦相似性 Cosine Similarity、点积 Dot Product 这样的一个值来表达,可以从线性代数或几何的角度解释计算合理性。
词汇表/单词表Vocabulary 的长度就是关键词和文档的向量维度,可以用1表达单个词的出现,0表达未出现,这是给维度赋值 Weighting 的最简单方法。
更复杂的赋值方法,TF Term Frequency,单词频率,计算关键词中某个单词在文档中出现的次数。TF的假设是,关键词的单词比其他单词更重要,文档的重要程度(相关度)与单词在文档中出现的次数成正比
问题是,一些连接词 如 The,An,常出现但相关度不大。则用 IDF Inverse Document Frequency,逆文档频率=1/DF,惩罚 Penalize 出现在太多文档中的单词,DF值越大越不重要。
TF · IDF (点积)表达某个查询单词在一个文档中的重要性,叫做相关度打分Scoring

算法变种


TF/IDF(Term Frequency-Inverse Document Frequency)即词频 - 逆文档频率,是一种用于信息检索和文本挖掘的统计方法,用于评估一个词在文档或文档集合中的重要性,由词频(TF)和逆文档频率(IDF)两部分组成,相关公式如下:

词频(TF,Term Frequency):表示一个词语在文档中出现的频率,计算公式为:TF(t,d)=nt,dknk,d
其中,t 代表某个词,d 代表文档 ,nt,d 是词 t 在文档 d 中出现的次数 ,knk,d 是文档 d 中所有词的出现次数总和。该公式含义是词 t 在文档 d 中出现的次数占文档 d 总词数的比例 ,词频越高,说明该词语在文档中相对越重要。
有时也会使用简化版本:TF(t,d) = nt,d

逆文档频率(IDF,Inverse Document Frequency):衡量一个词在整个文档集合中的稀有程度 ,计算公式为:IDF(t,D)=log(1+|D|1+|Dt|)
其中,D 是文档集合 ,|D| 是文档集合 D 中文档的总数 ,|Dt| 是文档集合 D 中包含词 t 的文档数 。公式中对 1+|D|1+|Dt| 取对数,并且分子分母都加 1 是为了避免分母为 0 的情况(平滑处理) 。如果一个词在很少的文档中出现,那么它的逆文档频率就高,说明这个词具有很好的区分度 。

TF - IDF值:将词频(TF)和逆文档频率(IDF)相乘,得到TF - IDF值,计算公式为:TF - IDF(t,d,D)=TF(t,d)×IDF(t,D)
TF - IDF值越高,说明该词在特定文档中出现频繁,同时在其他文档中较少出现,也就越有可能是该文档的关键词 。

举个例子,假设有文档集合 D 包含 10 篇文档,其中词 “苹果” 在文档 d1 中出现了 5 次,文档 d1 总词数为 50 ,而包含 “苹果” 的文档数为 3 篇 。那么:


辨别:score=y, weight, x
线性模型(如线性回归、逻辑回归)的核心公式:预测值 y=wx

  1. 符号定义
  1. 预测值计算
    对于所有样本,预测值 ym×1 向量)可表示为:y=wx
    展开形式:
[y1y2ym]=[x11w1+x12w2++x1nwnx21w1+x22w2++x2nwnxm1w1+xm2w2++xmnwn]

常见应用场景
(1)加权平均分

BM25

经验公式,工业系统常用

信息检索领域发明的排序算法。BM=Best Match
非监督学习排序算法的典型代表,文档与一个查询关键词的相关性是不知道的,算法本身无法从数据中学到相关性,而是根据某种经验法则猜测相关文档的特质,所以,BM25 是一个经验公式,每个参数经过迭代逐步发现。

  1. 单词和目标文档的相关性:基本思想是词频TF,BM25 挖掘出了词频和相关性的关系是非线性的,每个词对于相关性的分数不会超过阈值,阈值与文档有关。因此,词频标准化,目标是某个单词对最终分数的贡献有阈值。标准化方法是词频/(词频+权重),这个做法在非监督学习中很普遍;权重包含2个重要信息1. 当前文档长度2. 所有文档平均长度
  2. 单词和查询关键词的相关性
  3. 单词的权重 1. IDF变形。IDF用对数函数log对词频进行变换。2. RSJ值,是更复杂的IDF,需要一个监督信息,验证文档对某个查询关键词的相关性。
    三者乘积组成某个单词的分数。某个文档相对于查询关键词的分数=查询关键词中所有单词分数和

算法变种

语言模型

容易解释,自由扩展

希望用概率模型描述查询关键词和目标文档间的关系。最基础的是模型是查询关键字似然检索模型 Query Likelihood Retrieval Model。
语言模型:一个针对词汇表的概率分布。则查询关键字是从一个语言模型抽样Sample 得到一个样本(关键词抽样假设),从而产生一个随机过程。

变种

机器学习排序

用机器学习提升检索的性能水平。于是产生了机器学习排序算法。

单点法

排序问题转机器学习问题。特别是监督学习。之前的算法都是无监督学习,即不知道关键词与哪些文档相关,是一个猜测相关性的过程,于是用算法对 关键词-文档 打分,希望分数反映相关性。但这种排序算法不是最优的,特别是相关信息存在时,应该可以直接用相关信息帮助算法提升准确度。
构建训练集

排序算法可以在训练集上,从五级相关度上训练多类分类器,在测试集上用NDCG指标评价排序。查询一个关键字,相关度不是二分类,而是进行相关程度打分,最相关 相关 不确定 不相关 最不相关,一共五级定义,使用多类分类评价,把五级相关度当作5种标签,来看分类器的分类准确度。当然,这种评价不适合排序。五种相关类型对应的数据量不同。但某个排序算法可以把最不相关的文档分类正确,但可能错失了所有的最相关文档,分类是准确的,但没有价值。多数时候,最相关数量少,不相关数量多,会得出不恰当的结果。解决,NDCG Normalized Discounted Cumulative Gain,不是一个分类准确度评价指标,而是排序的精度指标,设排序结果里,相关信息比不相关的排序高。任何排序一旦偏离这样的结果,就会受到扣分(惩罚)。

配对法

单点排序法与我们需要的结果有差距,这个差距不是算法好坏决定的,而是算法要优化的目标,即单个数据点是否相关,和一组结果的NDCG排序最优间的结构化区别。对于一个查询关键字来说,最重要的不是针对某一文档相关性估计的准确,而是一组文档间的相对关系估计的准确。
配对法基本思路是,对于一个查询关键字,有一个完美的排序关系,推导出两个文档的相对关系,从相对关系中学习,得知如何对其他关键字排序。
于是,训练集的样本,不是关键字-文档,而是关键字-文档-文档。如有三个文档A B C,完美排序是B>C>A,希望通过学习两两关系,B>C C>A B>A ,来重构B>C>A
假设是

  1. 可以针对关键字得到完美排序关系。可以通过五级相关标签,或是点击率获得。但完美关系不是永远∃的,电商中,关键字“哈利波特”,有的希望是书,有的希望是有哈利波特图案的衣服,这就不是一个完美排序
  2. 希望学习两两文档的配对关系来重构完美排序。但可能,两两关系是独立的,特别是预测时,模型能正确判断两两关系 B>C C>A ,但不代表能得到B>A。即我们不能保证能得到最优排序
  3. 构建的样本,可以描述两两相对的比较关系。可以简单认为,文件间的两两关系来自文档特征 Feature 间的差异。将差异值作为新的特征,从而学习到差值到相关性差异的关系。
    注意,在测试集预测时,会有计算复杂度问题,因为,原则上,必须对所有两两关系都进行预测,现实中,基于线性特征差值构造样本,则测试可以回归到测试复杂度的情况。其他方法则有问题。计算提速或逼近算法为两两比较排序提供了可能。

列表法

基本思路是

  1. 尝试直接优化像NDCG这样的指标,学习到最佳排序效果。目的简单,用什么做衡量标准,就优化什么目标。但指标在数学形式上是非连续,不可微分的。多数优化算法基于连续微分,解决:
    1. 近似 NDCG的指标。SoftRank,AppRank
    2. 尝试从数学形式上写出 NDCG的边界,优化边界。有 SVM-MAP,SVM-NDCG
    3. 涉及复杂的优化算法,以优化 NDCG 指标。有 AdaRank,ListMLE。
  2. 根据一个已经知道的最优排序,尝试重建这个顺序,衡量中间差异。AdaRank,ListMLE。
  3. 在纯列表法和配对法间寻中间解。找 NDCG替代,直接优化列表想法,退化成优化某种配对。有LambdaRank,LambdaMART。原理是,一个排序算法是否达到最优,简单讲,是看当前排序,相比于最优,哪些两两关系搞错。学习最优问题,转成减少两两排错问题。这不需要真正的目标函数形状,仅需要某种形式的梯度。受此启发,大多数的优化过程,目标函数仅是为了推导梯度存在。如果直接得到梯度,就不需要目标函数。实验证明,把NDCG通过梯度变化差异x梯度,达到增强效果的目的。早期的LambdaRank用神经网络进行模型训练,而LambdaMART用决策树,效果非常好,成为很多类似方法的标配。

列表法是比较理想的排序学习方法,因为列表法尝试统一排序学习的测试指标和学习指标。工业界,基于配对法和列表法的混合方法更受欢迎。因为列表法复杂度高。

RANKSVM:排序支持向量机

GBDT Gradient Boosted Decision Tree 梯度增强决策树

LambdaMART

查询关键字理解

用户行为背后的目的。这是很强的指导因素。也是个性化搜索结果重要的原因。

分类

自动化分类,定义更精细的用户意图。
查询关键字的目的,用户日志和调查问卷证明这点。

  1. 导航 Navigational 26%:特征,对应唯一少量的标准答案,信息集成网站也是可以接受的答案。
  2. 信息 Informational 50%:目标不仅是找到权威性质的网页,还包括列举权威信息的节点网页
  3. 交易 Transactional 24%:到达中间站点,进一步完成交易。主要对象是购物。
    查询关键字分类的价值:1. 不能依靠用户汇报自己关键字的用途 2. 亿万用户输入的关键字,不可能人工标注 3. 希望更细粒度的用户意图
    把查询关键字分类转成监督学习任务。每个查询关键字是一个数据样本,响应变量是对应的类别。具体情况取决于任务,是把认为类别独立还是可以同时存在。
    简单假设下,关键字分类是一个多类分类问题。可以用 支持向量机 SVM,随机森林 Random Forest及神经网络 Neural Networks解决。
    大多数监督学习任务,最重要的组成是选取特征,有效的特征有:
  4. 查询关键字:含人名或公司名,则分类更可能是信息。关键字和类别有直接的关系。
  5. 搜索引擎返回的,查询关键字相关的页面:页面信息和类别有直接的关系。
  6. 用户的行为信息,用户输入查询关键字后会点击什么网站,在哪些网站停留。用网站作为查询关键字代表的信息靠谱
    实际上,查询关键字分类很难,每天1/3的查询关键字之前没出现过,也有长尾的低频关键字

解析

分割:如“White House Opening”,可以分割成“White House”,“Opening”
关系到搜索结果的质量。标准的搜索引擎,根据查询关键字提取倒排索引 Inverted Index,数量从百到千。有了文档,用较复杂的排序算法,如基于机器学习的排序学习模型,对文档重排序 re-rank

扩展

希望不仅理解关键字,也能补充用户输入信息,为用户提供扩展选项,因为用户输入信息不足,丰富查询效果。这是精度和召回recall 的平衡。
召回:查询相关的信息
同义词

搜索系统评价

if you can't measure it, you can't improve it.

指标

线下评测
设你开发了一个新软件,怎么知道用户是不是喜欢,是不是愿意掏钱?核心是了解用户喜好。最直接的方法是询问用户。最好形成一组数据帮助系统反复迭代,减少人工成本。
早期为了比较多个系统,先构造一个线下的测试数据集,以对系统进行改进提升。数据集特点是

基于二元相关度的评测指标
针对某个查询关键字,整个测试集中的文档,有一个标签,相关 不相互。
二元相关度上的指标,是很多其他重要指标的基石,如精度 Precision,提取的文档中,多少是相关的,即 (提取+相关)/提取;召回 recall,相关文档中,提取出了多少,即 (提取+相关)/相关。这里的假设是,提取的文档数< 所有文档数。精度和召回指标不能评价排序系统,即无法确定提取出的文档在最后排序中的位置。

基于多程度相关原理的评测
折扣化的累计获得 discounted cumulative gain,设倒序排序,位置1是最高排序

在线表现

检验用户和系统的互动。是建立因果联系 Casual Relationship 的重要工具,基于统计的假设检验。
划分应用人群,一半是平均划分,50%控制组,50%对照组,区别是系统不同。设一个搜索系统,需改进的部分是实验设置的变量,叫独立变量 Independent Variable。评测的指标,特别是用户指标如网站点击率、搜索数据,叫依赖变量 Dependent Variable。希望在独立变量和依赖变量间通过假设检验建立关系。

文档理解

从文档中抽取特性,帮助检索算法找到更相关的文档

首要:分类

把分类看成机器学习任务,则常见分类有

特性
文字

算法

关键:聚类

文档聚类是非监督学习的典型代表。分扁平聚类,类外无关;层次聚类,类外有结构关系。硬聚类是文档明确的分到一组类中;软聚类是,学到文档分配到一组聚类的分布,即分配以概率存在。
聚类关系不是事先定义的,并且不容易衡量聚类结果的好坏
应用

特例:多模文档分类

文档有多种模式 model 的表达路径,不同模式间共同描述一个文档的不同方面。如文字和图片。难点,,不同模式的数据有不同特征,有效用各自特性,最优的反映到某一任务。
建模的核心思路是数据表征,两个不同的神经网络学习隐含单元 Hidden Unit 来表达图片和文字信息。

多模数据的其他任务

搜索框架

大型搜索框架

基于文本匹配的信息检索系统,特点是

基于机器学习的信息检索系统。特点是

进一步

多轮打分系统

也叫多层搜索架构

机器学习模型,用于预测搜索关键字和文档间的相关性,理想状态下,针对每个关键字,需要对文档进行打分 Scoring。如果是互联网引擎,需要对十亿文档打分,这个数量级不现实。此外,通用机器模型,特别是便于排序的树模型 tree model,如 GBDT,神经网络,有较高的计算复杂度。想在实时响应(几百ms)对上万文档进行打分难度大。
因此,需要极值,对于每个查询关键字,先有一个方法在整个数据集上快速评价出百到千的文档,然后用模型计算和排序。这种需要对文档进行2轮打分的流程,叫两轮打分框架。

多轮打分系统特点,1. 每轮用的文档数量比上轮少 2. 每轮用的特征数量和模型比上轮更复杂

搜索索引

用于查询关键字处理的场景。key,values

  1. 也可以存文档含查询关键字的次数,及词频这个特性。可用于对词频计算有很强依赖的算法,搜索算法如 TF-IDF,BM25,语言模型。
  2. 查询关键字在文档中出现的位置 position,这对于多个查询关键字非常重要,也可以帮搜索引擎生成结果摘要信息

索引技术

经典图算法

PageRank

用图表达网页间的关系,计算网页重要性。
每个网页,有一个输出链接outlink A→B√/输入链接 inlink A√→B的集合,设每个页面A都有一个值,叫 pagerank,衡量页面的重要程度=输入链接B pagerank 值的加权和,则权重=1/输入链接B的输出链接个数,即B的pagerank/N 分给A。谁的输出链接多,谁分给A的就少。页面的pagerank 值之前是不知道的,则给予相同的初始值,根据定义更新pagerank值,直到所有页面的pagerank不再发生很大变化,通常比较少的迭代,pagerank值就能收敛。
改进:整个页面网络是一个完全联通的图,使得 pagerank 值由唯一收敛的解

pagerank 解释

HITS

网页的网格结构。权威节点 Authority,枢纽节点 Hub。
循环:很多枢纽节点的输出链接是好的权威节点,好的枢纽节点指向很多好的权威节点。
用数学的方法表达权威和枢纽节点,则必须为页面准备两个值,因为不能有一个页面完全是权威或枢纽。最直观的定义是,对于A的权威值B,B是A页面输入链接的枢纽值的和。如果A页面的输入链接的枢纽值大,说明B自身的权威性高,如果A经常能指向好的权威节点,则A的枢纽性也高。

求解权威值X和枢纽值Y,通过矩阵运算,转成求解特征向量。表达方式和 pagerank一样,虽然定义不一样。经过变形,两个算法都可以转成矩阵求解特征向量的问题。

图算法的一个重要分支就是把图表达成矩阵,通过主特征向量对图的一些特性进行分析。可以用乘幂法 power method。
HITS在搜索中的使用

HITS特性

社区检测算法:模块最大化

前面两者都希望赋予网页权重,表达网页重要性。
社区检测 Conmunity Detection,是一个网页分析工具,希望把网页代表的图分成小块的图,每个小聚类叫社区,希望从图上挖掘出一个潜在的社区结构。
模块最大化的社区检测算法

深度学习搜索

深度结构化语义

经典搜索模型,争取用某种表示 Representation 来表达查询关键字,用类似的表示来表达文档。通过匹配函数计算查询关键字和文档的距离,进行排序。
深度学习实现,前馈神经网络是最重要的改进

卷积结构下的隐含语义

局部和分布表征下的搜索

推荐

应用:电商、新闻、音乐

简单模型

流行度

Popularity-based,推荐吸引用户的内容。
假设:物品好坏和流行度成正比。即好的东西,关注的人多,谈论多。
如果能判断一个物品在任何时间点上的流行度,按流行度排序物品就可以了。判断指标:

单位时间内点击的数目,购买的数目,点赞的数目,都会存在时间和位置的影响(偏差),而不只是物品本身属性。因此,不能用直接的数值对流行度建模。往往用比值 Radio,或是计算某种可能性,如点击率、购买率。
要进一步建立无偏差的数据,是一个课题,比较经济的方法是收集没有偏差的数据,把服务流量分成2部分,流行度+随机推荐,使用算法叫 Exploitation&Exploration中的 epsilon-Greedy。

从数学上对点击率建模,可以把一个物品在显示后是否被点击看成“伯努利随机变量”,对某段时间内点击率的估计,转成对伯努利分布参数的估计。参数估计方法可以是最大似然法 Maximum Likelihood Estimation,即把参数估计问题变成最大化的优化问题,希望参数取值可以最大限度解释当前数据。估计的数值是某个物品当前点击总数/被显示次数,缺点是,没有点击率的参数值为0,分子分母为0,无法体现物品的流行度。这是一个悲观的估计,因为你可以认为,不管在任何情况下,就算没有一次点击,出现的概率也不该绝对是0,这会导致过拟合或泛化能力差。

针对0的概率估计,用平滑Smoothing的技术,给0值非0的估计值,平滑是必要的,可以使估计不完全由点击决定,消减过分流行的概率。1. 简单的一个做法是通过整个数据集的频率做平滑。点击率的频率,是单一物品点击的平均频率和所有物品点击的平均频率的加权平均。这个权重可以动态调整。2. 借助贝叶斯统计推断,为类别概率加上一个先验分布,通常是狄氏分布,计算出点击率在先验分布和数据都存在情况下的后验概率。

流行度的推荐不是个性化的,面向全体用户。

相似信息

也叫 Neighborhood 临近模型,推荐相似的数据点。

假设是协同过滤 Collaborative Filtering,相似用户有相似喜好,相似物品被相似的人偏好。相似的用户互相过滤信息,在用户A数据不足时,借鉴用户B的数据。把用户A和用户B聚类在一起,可以对同一类型的用户建模。
问题抽象成,估计用户A,对没见过的物品a的偏好,如点击、购买或评分。

相似用户的协同过滤,可以用为相似物品的协同过滤。与用户过去偏好相似的物品

协同过滤的推荐,可能受数据稀缺的影响。

内容

一种普遍方法,使用不同的推荐场景。用特征 Feature 表示用户、物品和两者间的交互,把推荐问题,转成监督学习任务。

内容的主要特性
物品特性

目标函数:点击率、购买率;预测用户在某一物品上的停留时间

基于隐变量的模型

用户和物品的隐含结构。
设实际数据由隐藏变量构成,通过模型假设,知道隐变量的关系,但不知道取值。因此推断取值,根据取值预测和分析数据。
假设隐变量间或与显变量间,存在统计分布 distribution,最简单的模型是高斯混合模型,假设数据由多个不同的高斯分布产生,每个高斯分布有自己的均值和方差。对于每个数据点,我们就有一个隐含的变量,表达这个数据点属于哪个高斯分布。
学习的过程需要估计数据点的来源,及多个高斯分布的均值和方差。

矩阵分解

核心假设是,用隐向量表达用户和物品。显式的对用户和物品的隐含结构进行建模,用来表示评分、点积、购买关系。
推荐系统最常用的数据表达,就是用户和物品的交互,如评分,点击。对于每个用户,用一个向量表达对可能物品的评分,堆积所有用户的向量,就得到一个矩阵,行代表用户,列代表物品,每个元素代表一个用户对一个商品的评分。矩阵特点是稀疏,因为一个用户不可能对所有物品评分,多数的评分值是缺失。则补全 complete 矩阵,因此可以根据评分大到小,推荐给用户。
补全矩阵信息:设矩阵每个元素的产生过程如下:

矩阵分解仅描述了模型表达,但没说怎么获得模型的核心内容,即用户和物品矩阵中每个元素的值。适用最小二乘法拟合,求解这些隐向量。
矩阵中每个元素,来自2个隐向量的点积,可用于构造目标函数,使得点积与我们观测到的矩阵数值相近,相近可以用平方差衡量,误差越小,则数据拟合的越好,隐向量能更好的表达用户和物品。
优化目标函数。因为计算未知数点积,因此目标函数无全局最优解,可以通过梯度下降找到局部解。

回归的矩阵分解

是矩阵分解基础上衍生出的模型,矩阵分解的问题:

回归的矩阵分解

基于回归的矩阵分解,即“层次的贝叶斯模型”,学习此模型的方式,都只学到局部最优解

  1. 简单方法,2阶段学。1. 针对已知的用户和物品,通过矩阵分解学习到隐向量。2. 学习显式特性到隐向量的线性回归
  2. 期望最大化,用一组随机参数决定回归的部分,学习到最佳隐向量,根据隐向量更新回归部分的参数。

分解机

是基于回归的隐变量模型的衍生,因简单易用,是主流的推荐模型。回归训练复杂,统一显式特性和隐向量的另一种方式就是分解机,结合基于内容的推荐和基于回归的隐变量模型。

分解机的输入是显式变量。不仅对显式变量建模,也对显式变量的两两关系进行建模。把两个特性的数值进行乘积,结果作为新特性,进一步处理新特性。原始特性两两配对,是构建模型的重要方法,特别对于非深度学习模型、自己做特征工程的模型。问题是,特性空间会急速增长。特别是∃类型特性,则两两配对后会产生大量的0,从而产生大的稀疏矩阵。
分解机的解决思路是,矩阵分解的降维思路。把稀疏矩阵分解后进行建模。假定所有特性都对应一个隐向量,两个显式特性的乘积,就是两个特性隐向量的点积。
可以用随机梯度下降求解。

高级

张量分解

Tensor Factorization,张量是对N维关系的建模。把上下文当作新维度,放进张量中建模。问题是求解难,不同的分解方法带来不同的建模选择。
在二元模式下,矩阵是表达用户和物品关系,最好的数据结构。矩阵分解绕开用户基于某个时空下的上下文影响。把这些信息放在隐变量中。张量是另一种方法,将上下文信息,融入到用户和物品的建模中。
张量分解的两种形式,如三维张量<用户、物品、时间>

求解

协同矩阵

Collective Matrix Factorization,有多少种二元关系,就用多少个矩阵分解去建模这些关系。
核心假设是,两个没有关系的矩阵,各自做矩阵分解,则分解出来的信息,没有任何关联。要想在两个矩阵分解间建立联系,必须假设两组用户的隐变量是一样的,即用户隐变量,在用户间,用户和物品间的关系中,是同一个隐变量在起作用。因此,虽然是2个矩阵分解,但限制了某部分参数的取值范围。优势是建立关联,减少总的变量数目,让关系相互影响。问题是,找到这样的隐变量难度高,且表达性差

学习,用随机梯度下降法。不过,每个隐变量存在于多个矩阵分解中,更新隐变量需要的计算量大。

优化复杂目标

基于流行度和相似度的系统,没有目标函数。

基于信息的推荐系统,是监督学习的应用,目标函数多是点击率或购买率,即二分分类的目标函数。

矩阵分解对用户和物品建模,多是评分。评分常用线性回归,或泊松分布(整数变量的建模好于线性回归)。
从效果看,用户对物品的评分,不是推荐系统需要优化的目标。真实场景更可能是,用户打开应用,浏览商品,翻阅,找到喜欢商品。和搜索结果的浏览相似,只不过推荐没有搜索关键词。因此,可以把用户喜欢的物品排到前面,把评分的预测,改成排序学习。虽然没有查询关键字,可以通过会话 session 来学习排序,对用户交互过的物品进行建模训练。因为反馈是隐性的,假设正交互信息的物品比其他物品更相关,有更高的预测值。正交互可以是点击、购买。可以用配对法训练,对于某个查询关键字,学习到每对文档间的关系,将两两关系预测正确,建立一个完整的排序结果。

Exploit 和 Explore

EE

利用,探索。用时间维度上看,当信息不足以决策,优化目标函数的两个决策方法

UCB

EG epsilon-greedy,是最简单的EE算法。
P%的用户看到按估值如点击率排序的物品,(1-P)%的用户看到随机物品。随机性可能会导致用户体验下降,但随时间推移,整体上对所有物品的估计会更准确。是牺牲小部分用户体验换来大部分用户体验的思路。

UCB upper confidence bound,动态调整概率P。
物品点击率预测,可以根据物品显示记录预测,这个数值是一个估计的均值,准确度不高,即置信度不高。
衡量一个物品的置信度,可以用标准差 standard deviation,描述数据的离散程度,量化数据在均值周围的分布情况。标准差小说明信心大。
因此,若要动态调整物品显示的可能性,需要考虑物品的估计,也要考虑估计的置信度,用均值和标准差表达对一个物品的整体估计。根据估计来排序显示物品。不确定大的物品,可以显示到前面。经过多轮显示,物品数据越多,标准差越小,UCB会收敛到均值,置信度提高。

UCB的问题,是对物品打分的机制:均值+2* 标准差,对于没有显示过的物品,均值是0,或初始值默认,没有区分度。因此,UCB基于计算出的置信上限值进行选择,而不是完全随机决定下一个要探索的选项。更倾向于选择那些有可能提供更高奖励的选项(优化长期累积奖励),以提高学习效率,不能做到真正的随机探索。

汤普森采样

随机采样,涉及概率分布,计算机生成随机数。从一个概率分布中产生一个随机变量的样本。可以用均值估计。样本可以刻画一个概率分布。
不是所有的分布都容易抽样,能够抽样的,往往是标准的分布,如伯努利分布、高斯分布。
UCB算法的问题在于,参数确定的情况下,用户看到的内容是一样的,因此丧失了探索的机会。对于用户体验不好。
通过采样对物品进行排序,带来随机性。
汤普森采样

评测

线下

流行把推荐系统模型,简化成对用户评分的估计,并对用户评分进行矩阵分解。
简单评测,是衡量评分的准确性。在机器学习中,经常用均方差 Mean Square Error,对所有差值的平方取均值。方差 Rooted Mean Square Error RMSE,就是均方差开根号。
RMSE 的问题是

  1. 用户误差会造成均值偏差,即差值大部分用来描述评分较多的用户,因此,RMSE小的模型,只是少部分高频用户的评分结果高,不代表整个推荐系统质量得到提高。
  2. 没有反应真实的应用场景。从大堆物品中,选出一个物品进行交互,而物品的单独评分就不重要。即便推荐系统能准确预测评分,也不能证明推荐系统在真实场景中表现优异

可以把搜索的一些指标移到推荐中。两个定义在二元相关度的指标,精度 Precision,召回 recall,是其他指标的重要基石。
搜索的相关度是人工标注,而推荐的相关度,可以是用户的反馈。点击某物品,则认为是相关的。用排序的思路评测推荐系统,是线下评测的标准指标。

线上

核心是在线可控实验,即 A/B实验。这是建立因果关系 Casual Relationship 的重要工具,基础是统计的假设检验。让改变是唯一的独立变量 Independent Variable。认定独立变量会导致系统性能的提高或降低。
需要提前确定要评测的指标,特别是用户指标,如网站的点击率,搜索的数量。这些指标叫依赖变量 Dependent Variable。希望在独立变量和依赖变量间。通过假设检验,建立联系。
设计有效的A/B实验,是非常前沿的研究课题。

评测指标

无偏差

推荐系统的偏差。如新闻推荐系统,只推荐用户体育新闻,从不推荐财经新闻。会导致用户只看体育新闻。
进行矫正,假设是收集到的数据涵盖整个数据集。按用户的回馈概率,进行反比矫正。出现概率越大,样本权重越小。平均加权点击率=正样本/概率。
但不容易实现,新闻质量呈指数级下降。但做无偏差估计,需要随所有文章进行显示,这需要冒文章低质量的风险。这是热门的研究领域

架构

线下离线计算

要解决的问题。

线下,事先完成打分,当用户适用网站,只需要从存储中取得推荐结果。用空间换时间,解决第一个问题。
适用于简单场景和应用初期架构。

多层搜索

第一层,有一个索引,根据某些特性,如关键字,存储所有文档,方便随时检索。通过简单流程,如线性函数或布尔值函数,获取最相关成千上百的文档。
第二层,重排序,对上百个文档打分,适用较复杂函数,如基于决策树的模型或深度模型,得到最终结果。
第三层,针对不同的商业规则,如结果的多样性,进行处理。

因为,索引+数量少,所以可以快速响应,满足需求1
因为,重排序阶段,对用户反馈进行更新。1. 更新模型,如果是决策树,则重新训练决策树,因计算量大,所以不是好方案 2. 更新重排序模型中,某些特性的数值,满足需求2
因为,搜索架构天然支持新用户,索引不是用户信息,所以,以索引为基础的架构对于新老用户是一样的,只不过用户的特征值不同。因此,重排序对老用户的效果更好。缺点在于新物品,新物品不在索引中,就无法被提取出来,重建索引也不简单。

新用户多的思路:
多层搜索

深度学习推荐模型

受限波兹曼机 RBM

RBM 是一层隐单元 Hidden Unit 和一层显单元 Visible Unit 组成的神经网络结构。显单元和隐单元联通,并且自身有一个权重 Weight,连接也有一个权重。这些权重是需要通过训练学习到的未知参数。RBM 可以针对高斯信号即实数信息,伯努利或二项分布信号即离散信息,进行建模。3个显单元,5个隐单元,则权重个数=自身权重个数+连接权重个数=(3+5)+3* 5=23

以用户为电影打分为例。1个用户用1个 RBM 进行建模,仅对曾打分过的数据建模。
通过隐单元,连接多个用户的RBM。假设每个用户的隐单元不一样,则可以学习到用户的偏好。如果两个用户对同一个电影打分,则两个RBM共享同一个权重。
每个显单元,是用户对某个电影的评价。是一个K维的数组,只有1个元素是1,其他是0,即用二元的数组表达,对“用户K种可能的输出”建模。
在这个模型中,需要学习的参数有:显单元的权重,隐单元的权重,及两者连接的权重。同一个电影的权重共享。
学习,无法用最大似然估计或梯度下降,提出用 CD Contrastive Devergence 对比散度方法,对RBM采样。这是简化的MCMC方法

基于 RNN

Recurrent Neural Network,递归神经网络,对时序信息建模,如在一个会话中的推荐。
常见,用户对电影的爱好,随时间变化。
输入一个物品,RNN 输出对下一个物品的预测。RNN为了在时间序列上建模,会维持一个隐含的状态序列。
在矩阵分解中,设隐向量随时间变化。则可以用 LSTM Long Short-Term Memory的 RNN 模型。
总结来说,RNN,对输入和输出变量,在时间上的关系,进行建模。同时用内部隐状态序列,对输入输出变量进行建模。

深度学习扩展推荐系统

深度学习始于计算机视觉,能在众多信息中,学习到高维度的特性 Feature。
矩阵分解中,隐变量是从数据中提取的特征信息,这种提取是一种线性变换。而深度学习模型,是多层次的非线性变换。

用多层神经网络提取特征
输入用户ID,物品ID。可以认为,ID是高维的离散输入。对用户和物品建立多层神经网络。层数至少是1,把离散输入,转成连续的数据层,这层叫做嵌入层 Embedding。希望连续信息携带语义 Semantic上的相似,即如果用户相似或物品相似,则希望嵌入层在数值上相近,则嵌入层很好的捕获到相似度。
连接用户和物品的嵌入层,形成一个大的嵌入层,作为输入,进行多层的神经网络变换。最后输出对评分的预测。

自动编码器 AutoEncoder,希望无监督化的学习到某信号编码后的信息,再通过解码还原最初的信号。如果能找到这样的完美过程,则在假设中,我们获取了更有价值的特征信息。用于推荐系统,主要是对用户和物品进行编码。

CNN 卷积神经网络,提取用户和物品信息。通常是在嵌入层后,不用多层神经网络,而是用CNN对信息进行变换。

效果不差,但没有更好。

自然语言和文本处理

LDA

文本挖掘中,一项任务就是,分析和挖掘出文本中隐含的结构信息,而不依赖提前标注的信息,是典型的无监督学习。LDA Latent Dirichlet Allocation,开启了主题模型。用于分析文档数据,如新闻、医药、考古文献、政府公文。其模型变种,被用到图像、音频、混合信息、推荐系统、文档检索等

LDA 属于 产生式模型 Generative Model。产生式模型,相对于判别式模型 Discriminative Model 而言。
设需要建模的数据有特征信息X,及标签信息Y。判别式只对Y的产生过程 Generative Progress 进行描述,用于分类器和回归分析。产生式对X,Y同时建模,用于无标签的数据分析,如聚类。因为产生式学习X标签,因此,模型更难识别。

产生式希望通过一个产生过程帮助理解模型。产生过程是描述一个联合概率分布 Joint Distribution的分解过程。这是一个虚拟过程,是模型的一个假设,一种描述,真实数据往往不是这样产生的。任何一个产生过程在数学上都等价于一个联合概率分布。
LDA的产生过程,描述文档、文档中文字的生成过程。

全局的泊松 Poisson 参数为β的分布
全局的泊松 Poisson 参数为β的分布
全局的狄式 Dirichlet 参数为α的分布
全局的狄式 Dirichlet 参数为α的分布
当前文档的θ
当前文档的θ
当前文档长度N,对于每个字
当前文档长度N,对于每个字
一个主题Topic 的下标 Index z_n
一个主题Topic 的下标 Index z_n
以θ为参数的多项Nultinomial 分布
以θ为参数的多项Nultinomial 分布
一个字 Word w_n
一个字 Word w_n
以φ和z为参数的多项Nultinomial 分布。
φ是主题矩阵KV的行∈K,1行是1个φ,是某个生成字的多项分布。主题矩阵是学习到的。
以φ和z为参数的多项Nultinomial 分布。...
θ是长度为K的向量,描述当前文档在K个主题上的分布
θ是长度为K的向量,描述当前文档在K个主题上的分布
产生过程中,对于文档中的每个字,都先从θ向量中产生一个下标,告诉我们从主题矩阵的哪行去生成当前的字
产生过程中,对于文档中的每个字,都先从θ向量中产生一个下标,告诉我们从主题矩阵的哪行去生成当前的字
Text is not SVG - cannot display

最重要的未知变量是每个单词对应的主题下标,这是从每个文档对应的主题分布中采样获得。每个文档的主题分布本身是一个未知的多项式分布,用来表达当前文档所属主题。未知的多项式分布从全局的狄氏分布产生。狄氏分布起到超参数作用,参数取值多是未知的。可以根据经验值进行设置。除了每个文档的主题分布和主题下标,也需要对全局的语言模型进行估计,这些语言模型直接决定了各类词语出现的概率。

LDA 模型训练与结果
训练:学习属于贝叶斯推理,只有MCMC为主的吉布斯Gibbs采样 和 VI 变分推理 Variational Distribution 可以解决。VI 选取一组简单的、可以优化的变分分布来逼近模型的后验概率分布。分布的选取,可能给模型带来误差,但把贝叶斯推理转成了优化问题。VI 更新 θ 和z值时,可用它们最新值更新α值。整个流程叫 变分最大期望 Variational EM 算法。

扩展
LDA只对文档的文字信息建模。用额外信息,是LDA扩展的重要工作。
额外信息,影响主题分布,进而影响文档字句的选择。是概率图模型的基本思路,把变量放到产生式模型的上游,使得下游受到影响。

基础文本分析

隐语义分析

看似没有头绪的文字中,隐含什么规律呢?能不能提取出更有用的结构性内容?
Latent Semantic Indexing,这是文本分布的基础模型。从文本中提取特性,这些特性对原来文本的深层关系又更好的解释,是无监督学习。用矩阵分解对“词-文档矩阵” Term-Document Matrix 进行分解。假设是,“词-文档矩阵” 是一个稀疏矩阵。从大量数据看,文字服从幂定律 Power Law Distribution,大多数单词只出现少的次数。少数的单词会出现在很多文档中,可以理解成28法则。
对于稀疏矩阵,假设矩阵不能真正表示数据内部信息,即矩阵中有个结构。这个假设,就是矩阵分解中的低维假设 Low-rank Approximation,核心是用少的维度表达原来的稀疏矩阵。
N个单词,M个文档的矩阵=单词矩阵NK x 文档矩阵KM,K是一个参数。单词矩阵可以把某语境下的单词聚拢,可以定义成一个主题。基于矩阵分解的隐语义分析是最早的主题模型。文档矩阵描述不同文档在K个主题下的强度。
流行的隐语义模型,基于奇异值分解 Singular Value Decomposition,SVD分解。核心思想就是分解出的主题矩阵。
优势:直接用代数计算,对文本进行分析。
劣势:分解出的矩阵是实数,有±,限制我们用这些数做一些含义的推断,无法很好的解释结果

概率隐语义分析

Probabilistic Latent Semantic Indexing PLSA。对文档和其单词的联合分布,类似隐语义分析模型中的文档和单词的矩阵,进行建模。不过,PLSA 不是对数据直接建模,而认为数据是从某个分布中产生的结果。
对联合分布的建模方式

从第一种方法上看,是给每个单词,联系了一个未知的主题变量,主题变量从一个文档级别的主题分布中得出,这是一个多项分布。根据主题变量,从语言模型中,抽取单词,这也是一个多项分布。因此,PLSA 和 LDA相似。从模型根本特征看,PLSA 和 LDA 都是对文档单词分布的一种分解,或者产生解释。不过 LDA 对两个多项分布都加了先验分布,使模型更符合贝叶斯统计。

EM算法

PLSA 和 LDA 都依赖一个算法,期望最大化 Expectation Maximization,EM,这是针对隐参数模型 Latent Variable Model最直接有效的训练法之一。
EM算法基于统计参数方法,最大似然估计 Maximum Likelihood Estimation,MLE。多数机器学习都可以表达成某种概率模型的MLE求解。
MLE 构造:通过概率模型写出当前数据的似然表达,即在当前模型参数值的情况下,看整个数据出现的可能性。可能性越大,表示参数越好的解释当前数据。因此,MLE就是找到一组参数的取值,使其更好的解释现在的数据。
针对模型写出MLE,就是个公式,找出公式最大值下的参数取值。问题转成优化问题。可以针对参数求导,令公式函数=0,求解参数值。
简单模型,如用高斯分布建模,可以求出似然表达式,通过求最优函数解的方式,得到最佳参数表达。最优的参数正好是样本均值和方差。其他模型不能得到解析解 Closed Form Solution,也无法优化MLE表达式,适用EM算法,简化MLE求解。
EM算法核心,通过代数变形,为每个数据点的似然公式找到一个新的概率分布,这个概率分布通过隐含变量达到。隐含变量可积分,用以恢复原始的MLE公式。问题是,MLE中,对数函数 log 在积分符号外面,因而无法操作整个式子。EM 要把 log 放在积分符号里面,杨森不等式表达,函数的期望值>=先对函数变量求期望再作用于函数。于是,求积分,可以看作对某一函数求期望值。这个函数,正好是模型的似然表达。用杨森不等式,可以求出是隐含变量MLE式的下限。
有了下限公式,可以用MLE的流程。对两组未知数,模型参数和模型隐含变量,分别求导,得到最优表达。
对模型隐含变量的概率分布求解后,最优隐含变量的概率分布=隐含变量基于数据的后验分布,可得到最优解。这个步骤叫E步。再按当前的隐含变量,解得最佳模型参数,叫M步。E步+M步,是EM算法的一个迭代轮回。

Word2Vec

把单词顺序用到学习中。
LDA 和 PLSA 把文档当作词包。磁暴要求把一个词表达成一个向量,向量中只有一个值是1,其他值是0。因为每个词都表达成离散向量,所以词间没有重叠,因此无法从词包中推断出高维语义。
用词的分布假设,从离散词包中获取更丰富的信息。方法是从离散向量力抽取出每个词组的连续 Continuous 信息向量,设两个词意思相近,则两个词的联系向量相近,通过词向量,得到词汇的高级语义。
Word2Ve 是一种语言模型。根据当前语境,预测下个单词出现的概率。和产生式模型相似,从模型中产生单词。和主题模型不同,没有假设单词是从某几个模型中产生。
核心思想是,当前单词是周边单词的隐含表达,或词向量中产生的。每个单词都依赖上下文,单词的产生,依赖周围单词的连续表达。这个连续表达是需要学习到的未知参数。
两种模型

扩展
用到离散数据:语言模型把词库转成离散数据。如把词汇库从英语单词换成物品的下标。则 Word2Vec 变成对物品序列建模的工具。

应用

序列建模RNN 架构

更丰富的用文字序列信息,从而对文本进行大规模建模。
文本中的序列数据。句子,段落,章节,文章,对话,都是序列(顺序)关系。需要对时序建模。
传统机器学习,经典时序模型有隐马尔科夫模型 Hidden Markov Model,HMM,假设是,当前的序列数据根据隐含状态产生。HMM 认为每个时间点有一个对应的隐含状态,这个状态之域当前时间点之前的时间点,对应的隐含状态有关。更简单的假设认为,当前时间点的隐含状态,只与之前最直接相邻的一个时间点的隐含状态有关,这是一个强假设。HMM 构建一个隐含状态的一阶(最近邻的一个时间点)马尔科夫链。构建好隐含状态后,就可以对链条建模。效果上,模型的表现力有限,因为只有异界,无法对所有隐含状态的转换建模。超过一阶的表达训练复杂。HMM不适合大规模问题。

RNN,是一个框架,在框架内部根据不同需求,构建不同模型。 优势是深度模型的很多优化算法,可以直接用到RNN上。
1个RNN,有1个输入序列X和1个输出序列Y,两个序列随时间变化。假定X,Y不独立变化,变化关系由一组隐含状态控制。T时刻的隐含状态有2个输入,T时刻前的隐含状态,当前时刻 即T时刻的输入变量X值。输入产生一个输出Y,T时刻的Y值。在简化状态下,不是每个时刻都有输出信息,则对一个句子分类,只有整个句子结束后才输出,则Y仅在最后一个时刻实现。隐含状态可以通过标准的深度学习框架学到。
最简单的RNN模型,需确定2个元素。

  1. T时刻处理过去的隐含状态和输入X,从而得到当前的隐含状态
  2. 从当前的隐含状态到输出变量Y
    元素选择:T-1时刻的隐含状态是一个向量 Status(T-1)
    选择1:用一个线性模型表达对T时刻的隐含状态Status(T)的建模。即把 Status(T-1) 和 Status(T) 当作特性串联起来。用矩阵W作线性变换的参数。或许加上一个偏差项 Bias Term。则当前的隐含状态可以是过去所有隐含状态及输入的一阶变换结果。将线性变换改成任何深度模型的非线性变换,就是更标准的RNN模型。
    选择2:将Status(T)变换成Y,简化为,Status(T)就是Y,表达隐含状态和输出变量的一一映射。
    但这个模型不能用,因为深度学习模型依赖反向传播 Back Propagation,来计算参数的梯度,用于优化算法。但RNN的问题是梯度爆炸,或梯度消失,这两种梯度异常导致无法进行优化算法的迭代,因而无法学到模型参数。
    解决梯度异常,可以设计 门机制 Gated Mechanism。主要解决隐含变量从一个时间点到另一个时间点的变化,使整个向量变换成另一个向量。通过限制向量的变化,不让整个向量进行复制,让部分单元变化。设计门机制,使得模型知道当前模型知道需要对隐含向量的哪些单元进行复制,则不复制的单元可以变化。复制的单元被屏蔽了转换这个操作。门机制的实现,使在隐含变量中引入伴随变量G,伴随变量有和隐含变量一样的单元个数,不过取值范围是0或1,0不许通过,1允许通过。只要伴随变量和隐含变量相应单元相乘,就可以控制单元。
    基于门机制的RNN架构,
    LSTM:将隐含变量分成2个状态,一部分是存储单元 Memory Cells,保留信息,保留梯度,跨越多个时间点,由门函数控制,决定信息保留到下一个节点的数量;一部分是工作单元 Working Cells
    GRU:为简化 LSTM,两套门机制决定隐含单元的变化。一个门决定哪些单元复制,形成临时状态;另一个门融合临时状态和过去状态。

RNN 整个过程是编码解码的过程,从已知的序列,到中间的隐含状态,再到输出序列

应用
分类:输入一个序列的文字,作决策,输出一个符号。这是文本挖掘和分析中最基本的场景。相比于传统文字表达,如词包或N元语法,效果差不多。
在句子级别的情感份上 Sentence-Level Sentiment Classification,效果好,常用于分析商品的评论文本 Review。对每个句子至少输出两种感情色彩的判断,褒义或贬义,如分析一个电影。流行的RNN建模方式是,把每个单词作为一个输入单元,把一个句子当作序列输入到一个RNN,维持一个隐含状态。句子结束时,用最后的隐含状态,经过多层感知网络,产生二元或多元的分类输出。
用2个RNN 建立起的链条,能提升分类效果。一个模型,RNN把一个句子按顺序输入或归纳;另一个模型,用RNN建模句子的逆序,把句子倒过来,学习一个隐含状态。串联顺序的隐含状态和逆序的,成为分类器需要学习的特性,这种架构称为双向模型。
从句子到文档的层级,RNN很难针对长序列建模,需要把文档拆成小的单元,如句子,句子还可以拆成短语,对不同级别的数据建模,再把小单元的RNN结果作为输入串联,这叫层次式 Hierarchal RNN建模。

特征提取器:在监督学习任务中,隐含状态被作为特征使用。适合任务对文字顺序有要求。常见任务有,

对话模型

是文字相关的人工智能系统。
图灵测试,是建立在对话系统上的。一个人和一个机器对话的过程中,能否猜出这个系统是真人还是计算机程序。智能的对话能力,是衡量智能的一个标准。
早期对话系统,基于规则 Rule。特征不是理解对话,而是针对预设模板,模仿对话。机器学习+规则,在多数场景下效果好,因此规则很重要。

对话可以分为,

架构

任务型对话

NLU

聊天机器人

基于信息检索的对话系统,在知识库的基础上和用户对话。知识库可以是海量的过去的对话(核心假设),也可以是知识。核心假设的实现,找到与当前输入最相近的某个语句,返回之前回复的内容。如果把问题抽象成搜索问题,可以建立复杂的检索系统,对回复内容建模,可以用搜索技术,排序学习。如把输入当作查询关键字,不过输入的语句长。
问题是,无状态 Statusless,无法对上下文追踪。

基于深度学习的对话系统,能有效的管理状态。经典模型是序列到序列 Sequence To Sequence,S2S,对话系统是翻译问题,对输入句子的回应,看作是把某种语言翻译目标语言。S2S 把输入语句的字符,通过机器学习,转成中间状态,这是一个编码过程。当前中间状态结合之前中间状态,用于跟踪上下文。中间状态会随上下文变化。然后解码,把中间状态转成输出字句。
S2S 用 RNN 和 LSTM实现,很多深度序列模型可以用到对话系统中。S2S 可以灵活处理语言上的多样性,及不完全匹配问题,因此效果好

非任务对话的问题:

文档情感分类

Sentiment Analysis。很实用,可以分析用户对商品的评价中,涉及的情感,用于商品推荐和搜索。或了解用户对时事观点的异同,分歧,了解新闻的舆情动态。
是文本情感分析中最基本的任务。假设一段文本的作者,通过文本相对某个实体 Entity 表达一种情绪。实体类型有很多,如商品,事件,或人物。文本可以是文档,段落或句子。
这类任务,限制一个文本单元只表达一种情感。这种假设较局限,实际可能多于一种情绪。
基于监督学习。希望通过有标签的训练集学习到一个分类器 Classifier 或回归模型 Regression,从而在未知的数据上预测用户情感。

基于非监督学习。设计打分机制 Scoring Heuristics,对整个文档做一个粗浅的判断。可以分析先识别的词类,特别是大量相邻的两个词的词性,如特别好,副词和形容词搭配。当正向情感词多的时候,则文档偏正向的情感。
优势:通过简单的情感词库,开发出文档情感分类的算法,是一种快速迭代的方式,因为获取大量高质量的标签耗时,甚至不可能。

提取情感实体和方面

很多情感分析任务,围绕 Entity 和 Aspect 产生。Entity 是文本中的某个对象,如产品名,公司名,服务名,人名,事件名。方面是实体的属性和组件。xx 手机(实体)通话质量(属性)不错(情感表达)。
广义来说, Entity 和 Aspect ∈ 信息提取 Information Extraction,这是大的任务类别,用于从大量非结构化文本中,提取有价值的信息,可以用一般性提取技术,或句子的特殊结构。

意见总结和搜索

Opinion Summarization,Search。
为用户评论总结,让用户看到总体的有代表性的评论,能节省时间和精力,获得更好体验。

总结意见是从无结构的文本中,提取出情感的综合表达。主要是基于 Aspect 的意见总结。特点是:

针对性观点总结,Contrastive View Summarization,针对同一主题两种相反的观点,可以是商品,新闻事件如某个政策法规,选举结果等较有争议的话题事件。

搜索
可以看作搜索是基于分析+总结的任务。通常,用户输入一个主体名,返回主体相关信息,信息可以是意见总结。
难点,针对意见信息的索引和检索。

  1. 在索引库中,找到文档和词句包括需查询的主体。可以用搜索技术,如文本搜索或基于排序学习的搜索,得到文档备选集。
  2. 找包含主体的意见、评价。设计评分机制,返回最有说服力的文档。在文档基础上,进行意见总结。可以通过模型,对文档备选集进行意见打分。模型可以是简单分类器,分析子句和主体意见的关系;也可以文本分类器,输出当前文档和主体在哪个方面的关系。

广告

简单场景,一个互联网内容服务商,如新闻网站或社交媒体网站作为发布(广告)商,希望在服务中插入广告,这是一个内容匹配问题。目的是匹配广告和目标人群(受众),使得目标人群对广告产生兴趣并点击,产生行动,如购买商品,订阅服务,或者对品牌有印象。
基本的广告模式

架构

实时竞标,real time bidding,RTB。角色有:

用户行为定向。
合作伙伴的参与动作,RTB 可以是 SSP,或ADX

回馈预估

广告本身的交互;广告代表的服务或商品,达成的交易。叫 回馈 Feedback。要预测用户这种行为的可能性,或概率,如用户点击广告,看完视频广告,购买广告商品。
对广告回馈概率进行有效估计,是广告生态系统组件中的核心需求。预估的越准确,则越能保证收入。
简单设定下,回馈预估可以看作监督学习任务。标签是用户动作,如点击、观看、购买。需要建立用户在某种上下文对广告标签的模型。上下文含查询关键字、用户信息、广告信息等。
挑战是,

点击率预估

根据环境和广告类型,估计用户点击当前广告的可能性。预估值可用于广告主的计费模块。因此准确性和实时性要求高。

Google
在线逻辑回归 Logistic Regression。传统且强大的线性分类工具。是点击率预估的核心算法。
逻辑回归对二元分类问题建模,核心是通过一组特征及对应的参数,对目标标签拟合。拟合过程通过逻辑转换或者函数完成,使得线性的拟合转成非线性的二元标签。
FTRL Follow The Regularized Leader,在线算法,模型参数会在每个数据点更新。目标函数分三部分:

FaceBook
雅虎
LinkedIn
Twitter
阿里

出价

基于第二价位的广告竞拍

在众多广告中选择1个,即广告的竞价排名。基于,广告位有限有竞争,引入竞价机制会抬高广告单价,可以让广告中间商或发布商获利。

基于第一价位的竞拍。投标方定好自己的出价,一次性统一出价,出价时,看不到竞争对手出价,确保出价的诚实性。价高者得。问题是,竞价结果虚高,不利于广告商的长远发展,也打击广告商的积极性。

基于第2价位的竞拍。

  1. 按期望收入排序。期望收入=出价 (Bid)×点击率 (CTR)。点击率是广告被点击的概率,基于历史统计得出。
  2. 用第二高排名的价格作为第一高胜出者的支付价格。这更符合广告商对于广告位真实价值的判断。
    难点:

竞价策略

DSP 和广告商的竞价策略 Bidding Strategy。基于实时竞价 RTB。自动竞价模式下,需要一种指导,使得计算机能根据形式变化来出价。
竞价的重要特征是,作为竞标方,不知道其他竞标方的点击率和出价,在一个信息不完整的竞价环境中。只能根据自己的点击率估出自己的出价,或根据过去出价成功对整个市场形式的判断。因此,竞价策略有2种思路

第二种思路,就是根据当前输入,如页面、广告、用户、上下文,学到一个输出价格的函数。函数值就是出价。

搜索广告竞价:每个出价针对一个关键字,车辆广告商可能竞标自己的车品牌,如”大众汽车“。或者竞标更宽泛的关键字,如”买车“,”汽车“。出价是事先设置好的。可以用机器学习对出价建模。用线性函数把信息当作特性,学习从特性到出价的线性关系。
展示广告竞价:广告商无法针对场景产生出价。这要求提供商在不同场景中帮助广告商出价。用 CPM 的收费模式,一旦赢得广告位,广告商就要支付费用,因此需要针对当前页面显示机会,预算剩余等因素建模。

竞价系统的其他问题

优化广告竞价策略
单个广告推广 Campaign
简单假设,推广计划的出价是点击率的一个函数。

多个广告推广
把单个广告的有限优化问题扩展到多个广告。除了满足总的预算要求,也提出基于风险的控制思路,来计算每个广告推广计划的均值和方差,通过限制方差的大小来降低风险。但优化是一个基于EM 算法的过程,解是局部最优解。

控制预算

预算步调优化 Budget Pacing,在某时间段内均匀分配广告商的预算。理想的状态是一个广告在一天的不同时段被不同受众看到,实现扩大广告受众的目的。常见思路

频率上限 Frequency Cap,限制某个或某种广告在某个媒介上一段时间内出现的次数,如限制一个肯德基的广告在半天内让同一个用户看见的次数。
限制原因:降本增效,花钱少,效率高

竞价低价

发布商在广告竞价流程中的调优,广告竞价中的低价优化。底价方案好,可以增加市场的竞争,从而人为抬高竞价,增加收益
低价是竞拍的最低价格。因为,理想状态下,一个充分竞争有充分广告元的市场,广告单价逐渐升高,因为广告资源有限,所有广告商为竞争有限的广告位,必定太高广告价格。作为广告发布者,可以享受到逐渐升高的广告位价值。但是,理想状态的竞争态势∄,对于一个新的内容提供商,新闻首页顶端的广告位更吸引眼球,这种广告位可以引起充分竞争。但其他广告位的点击率只有顶部广告的1/10,甚至更少,则对于无法带来充分竞争的广告位,内容发布商无法收取理想状态下的收益,极端情况下降价甩卖。即真实的广告竞争市场中,很多广告位无法得到充分竞争。此外,同一广告位在一天不同时段的竞争不同;搜索广告,不同搜索关键字有不同的竞争。因此,广告发布者要保护自己的广告位价值并保证最低收益。因此,设置广告竞价的最低价格。即底价,所有广告位不低于这个价格,就人为的抬高了广告位的竞争水准。带来的问题是,底价抬高,会打击广告商的积极性,进一步影响广告位的竞争,让整个市场变得竞争不足拉低价格;底价太低,则没有起到实际作用,广告商可以用较低价格获得广告位,而广告发布者没有得到足够利益。

底价优化
在基于第二价位的竞价系统中,三种底价,这导致发布商有不同收益

程序化直接购买和广告期货

Programmatic Direct,广告商不通过竞价方式,获取发布商的广告位。而是两者直接签合同,以获取一定量的展示机会 Impression。这在互联网早期,由公司的销售人员直接洽谈。这更快捷。对于顶级发布商,可以把最优价值广告位,如较好位置或尺寸较大的广告,留下来当作 独家 Premium 广告位,用于直接购买合同。用程序让直接购买更便捷是广告中间平台的重要任务。
广告发布商对程序化直接购买的推动:预估未来一段时间内展示机会的数量。如下一个小时,有多少展示机会,这种预估就是对流量的统计。把预估展示机会分成2部分,1. 给 RTB,广告竞价排名,2. 直接购买
程序化的直接购买,不需要发布商和广告商建立联系,而是通过平台交易,这种交易方式和股票类似,平台显示展示机会的统一价格,广告商按需购买,一般需提前几个星期或几个月。广告商愿意提前购买,因为这样购买的广告价值低于他们的心理价位。而发布商需权衡两种渠道间的收益平衡,在市场竞争不完全的情况下,这也是发布商确保一定收益的方法,即在有折扣的情况下卖掉广告位。
不过,程序化直接购买技术少,需要高级的广告系统作为支撑。

广告期权
公告生态系统架构和金融系统,特别是股票或大宗商品交易类似。

广告有效性:归因模型

这不是机器学习,在计算广告中的主流应用,但在现实中有大的实用价值。
Attribution Model,是一种计算广告中,分配贡献的机制。广告商想知道,哪个广告起了更大作用,不同广告对最后转化起了什么作用。
难点:

基于模型的归因

可以把归因信息,用到广告竞价中,即针对有价值的渠道进行有效出价,对没有效果的渠道进行控制。
此外,归因信息可以帮助广告商分配预算,大的预算放在优质渠道进行广告投放。

广告投放扩展受众

受众选择
为让广告商选择受众,广告平台提供2种基本功能

受众扩展 Audience Expansion,实现受众转化的最大化

检测广告欺诈

Fraud Detection。不同广告欺诈对应不同计费方式

计算机视觉

这是人工智能的核心方向。人工智能用计算机技术mock人的感官,如视觉、听觉、触觉和思维,建立起逻辑推断等能力。
输入是现实中的场景,但需要借助其他感知仪器 Sensing Device,如照相机、摄像机,获取原始信息。通过算法理解,构建语义信息。
难点:

基础操作和模型

像素表达 Pixel。将图像信息用像素(矩阵)表达很直观。

过滤器

特征提取

理解图像语义,图像中具体的物体,如哪里是一只动物。或图像表达了怎样的社会关系或场景关系,如会议室图像,不仅关心陈设和人物,还关心整体气氛,及气氛是不是传递出了更复杂的,人物间的社会关系。
方法是,抽象底层的图像,建模。
除了对图像本身的理解,可能结合文字,对某个物品或某件事进行描述,如电商网站的商品信息,有图片有介绍。再同时理解图片和文字的任务中,容易想到的方式是,分别抽取特征,建模。
小的计算机视觉任务,有2个步骤,1. 把任务抽象成提取特征 2. 转成机器学习任务,如回归或分类。也可以是非监督学习任务。在学习框架中,一般在一个架构下训练,效果好。

难点,图像信息复杂。如两张人民大会堂的建筑图片,一张地面拍的,一张空中拍的,虽然图片在角度、色彩、位置上不同,但两张照片描述的对象一致。我们希望找到多个变化元素中不变的成分。一个思路是从局部信息 Local Information 开始,从图像中提取特征,这比全局特征稳固。构造局部特征,整体思路是从局部找到有代表性的特征,把因各种因素,造成的特征变化,归一化。

深度神经网络

深度学习,从数据或特征 Feature 中,构造多层或深度变换,得到非线性的表征 Representation。
可以构造非线性特征,用线性模型把非线性特征串联起来。如网页搜索,用 PageRank 表征一个网页的重要性,这是对非线性的对,网页图的一种表征,由此构建线性模型。对于很多深度学习模型,即使进行复杂的表征转换,在最后一层,对最终输出建模,用的是线性模型。
非线性特征外加线性模型的问题。如何系统性的找到非线性特征,用机器学习的特征工程 Feature Engineering。有时,找到好的特征需要灵感和领域知识。要让模型从数据中发现非线性关系,

特点:

深度学习模型

基本模型
前馈神经网络 Feedforward Networks。
线性模型是 x->y,学到一组向量,也叫系数w,通过x 预测 y。在图像中,输入的是向量,输出的是向量,则学到的是矩阵。只叠加多层线性模型,只要每层变换是线性的,得到的结果也是线性的。要构建多层的非线性模型,就需要每层变换是非线性的。最小的改动是,激活函数 Activation Function,如 Sigmoid 函数,把-∞~+∞ 的实数,映射到 0~1 范围内。也叫对数几率回归。用 Sigmoid 激活的线性模型,本质是做二元分类。但 Sigmoid 的值不稳定,因为梯度可能溢出或归零,模型就无法学到参数。解决是线性整流函数 Rectified Linear Unit,Relu 函数,将 set <0=0。
经过非线性的多层转换,最后一层是把已有信息映射到最终输出上,这可以是回归问题,或分类问题。最后一层是线性模型层。中间层用原始信息,自动提取数据特征。
前馈神经网络用到图像处理,最直观表达图像数据的方法是,把图像看作矩阵数据。如 长32像素x 宽32像素x3颜色通道的图像=3072个需要学习的系数或权重。如果长宽改成200像素,则是12w个系数。如果用更简洁的方法表达,要用 卷积神经网络 Convolutional Neural Networks,CNN,方法是

优化
区分模型、目标函数和优化过程。以线性模型为例,期望用一组特征,对输出反馈,进行线性预测。线性指的是,针对反馈变量的参数是线性的。
线性模型是数学模型,不限制模型参数如何得到。即数学模型的设置,和得到的参数间,相互独立。得到参数的过程,叫模型训练,或模型优化过程。
线性模型,常用最小二乘法,构造参数学习的目标函数。可以得到一个解析解 Closed Form Solution,也能通过梯度下降法进行数值优化。

模型优化过程

  1. 选目标函数。机器学习有2类目的,回归和分类。回归用最小二乘法,即 平方损失 Squared Loss 作为目标函数。分类用 对数几率损失。损失,和模型是否是线性的,没有直接关系。但模型往往是线性的,如果目标函数是这2类,用的模型就是线性回归和对数几率回归。
  2. 根据目标函数找参数的最优解。写出参数梯度。
  3. 尝试解析解,则不需要通过迭代得到结果值。而迭代只是近似值,解析解是确切值。参数梯度=0,看能否有解。理论上的解析解因为数值稳定性的因素无法得到。
  4. 没有解析解,则用梯度下降法,这是求一个函数最小值的数值流程。如果求最大值,则用梯度上升。梯度下降只能找到局部最优解。对于凸问题 Convex Problem,局部最优=全局最优。非Non凸问题,梯度下降能收敛到一个局部最优解,但解能不能被接受,不确定。找到最优解的速度,即算法的收敛速度是另外一个问题。

深度学习优化
需要目标函数对参数进行有效学习。深度模型,充当更复杂的特征提取的角色。特点是多层

AlexNet

ImageNet 有120w张训练图片,5w张验证图片,15w张测试图片。分属于1k个类别。图片的分辨率都是 256* 256。AlexNet 直接在图片的RGB 像素点上建模。
AlexNet 有 8层网络结构,5层全联通层(前馈神经网络)。每层提取的信息越来越高度的概括。

VGG & GoogleNet

是对 AlexNet 的改进。

VGG,加深层次,获得更好的模型泛化能力,实现更小的分类错误率。改卷积层的过滤器,增加到19层,使得错误率下降1半。

ResNet

图像物体识别和分割

Object Recognition,Segmentation,输入图形,希望模型分析出有哪些物体(物体分类),定位物体的位置(位置分析),图像中的每个像素属于某个物体(像素级分割)。即目标是更仔细的理解图片中的物体。

R-CNN。输入图片,输出选定框 Bounding Box 和相应标签。

  1. 尽可能多的生成选定框,看究竟哪个选定框对应一个物体。针对图像,用不同大小的选定框扫描,尝试把类似的色块、类型、密度的像素划为1类。
  2. 用 AlexNet 变形,对候选 Proposal 的选定框进行特征提取 Feature Extraction。
  3. 最后一层用支持向量机 Support Vector Machine,判断选定框是否是某个物体。
  4. 判断后,用一个线性归回对选定框的坐标进行微调。缺点,由多个模块组成,繁琐。
    Fast R-CNN

视觉问答

根据一个图片,进行基于自然语言的问答。

产生式模型

不仅针对已有数据建模,也能产生新数据。新旧相似,以假乱真。产生数据的工具

人工智能

在实践中学。通读这个知识点的相关内容,相同内容多看不同观点。

和每篇论文背后的作者进行一场对话。
背景,作者群,对应学术机构和公司
解决的问题,核心贡献(主线),方法

演讲报告
讲座 tutorial:总结好的,系统性的研究成果
研讨班:work in progress
跟踪活跃、有权威的学者,研究组或公司

了解主干,便于清楚技术的时效性

技术选择

成果转化

## 基础

### 热点

### 研究

### 技术选择

### 学术会议

## KDD 2017

### 线性支持向量机

## EMKLP 2017

## ICCV 2017

### Mask R-CNN

### 目标函数:焦点损失

### 视觉问答系统:深度强化学习

### 非凸优化
### KSD测试检验两个分布的异同

### 非完美信息博弈

### 位置偏差估计

### 挖掘商品的替代和互补信息

### 深度学习上下文

### 商品的图片美感建模

### 推荐算法 BPR改进

### 从文本中提取高元关系

### 计算机视觉任务间的关系

### 从整体上对人体进行三维建模

### 排序学习计算复杂度高

### 偏差和流行度

### 对抗学习增强排序模型的普适性

### 对搜索页面的点击行为进行序列建模

### 对抗样本对模型的攻击

### 机器学习算法的公平性问题

### 优化目标函数,可能放大了不公平

## ACL 2018
### 问答系统,提出好问题

### 对话中的前提触发检测

### 端到端的语义Hash

数据科学团队

建设周期

团队小,则需要通才。主要工作:

  1. 搭建公司的数据平台,数据引入、整合、清理
  2. 计算简单的产品运行指标 Metrics,在仪表盘 Dashboard 上展示出来。
  3. 数据分析主导,和产品经理、工程师一块分析产品问题,为产品迭代的决策提供数据支持。
  4. 算法建模优势不大,若有需求,需快速识别和实现基本的模型
    团队大,则需要专才。主要工作

概率统计

离散场景还是连续数值建模
离散:

假设检验:
一个产品,持续做A/B测试,引导产品迭代,这就是做假设检验。
假设检验的基本设定,把现在的系统情况如用户点击率、购买率当作零假设H0,把改进的系统或算法结果叫做备择假设H1。
选择检验模型:看目前的实验环境,是否满足要求,如T检验、Z检验(默认用,当有大量数据可用时)
计算统计量。根据统计量和检验模型,可以得到一系列数值,如P值,比较P值和预设范围值(如0.95),确定,H1在统计意义上和H0不同。
正确对待结果:只能说不支持H0,不能说更支持H1。把结果当工具,结合更加复杂的决策流程,从而产生综合分析。
置信区间,广泛用在推荐系统的”利用和探索“策略中

因果推论 Causal Inference
用于 1. 不可测试的产品,通过数据研究得到期望的结果 2. 想在有偏差的数据中,进行无偏差的训练和评测

机器学习

解决,监督学习和无监督学习的基本思路,是机器学习。

  1. 把现实问题抽象成数学模型,怎么假设 ⭐
  2. 用数据工具,对数学模型参数进行求解。取决于模型复杂度和成熟度,多用现成软件包求解
  3. 根据实际问题提出评估方案,评估模型,看是否解决了实际问题

监督学习:通过外部的响应变量,指导模型学习我们关心的任务,以达到目的。目标是使模型可以准确对需要的响应变量建模。如系统通过一系列特征,来预测某地区的房屋销售价格,预测电影票房,可能购买的商品。这里的”销售价格“、”票房“、”可能购买的商品“,都是响应变量。

无监督学习:没有明显的响应变量。核心是希望数据发现内部结构和规律,提供下一步的参考。如利用数据特征对数据进行分组(聚类)。聚类可以是某一数据∈某类,或∈多个类,不过每类概率不同。
因为监督学习可以发现内部结构,所以,监督学习可以辅助无监督学习。

监督学习基础

  1. 了解模型的数学含义,理解模型的假设和解法
  2. 了解什么场景下使用模型最合适,怎么把实际问题转成模型应用,如果不能转差距在哪
  3. 写实际代码或伪代码描述模型算法,达到对模型的真正掌握

无监督学习基础

  1. 理解和掌握核心的概率分布,包括离散和连续分布
  2. 理解假设实验
  3. 理解因果推断

系统

要求

  1. 基本的编程能力,了解数据结构和算法。Pyton,Hadoop,Spark
  2. 搭建人工智能系统,如搜索、人脸识别、图像检索、推荐

Pipeline:数据采集(数据要可靠、可重复)处理-产品。产品是一个自动化的闭合环路。

同步、异步:对于交互性强的产品如电商、搜索引擎、社交媒体,用户打开页面到页面展示内容如推荐商品或搜索结果,这个响应时间就是同步,一般几百毫秒。
如,构建一个垃圾检测系统。如一个二分分类器,需训练这个分类器的参数。训练逻辑回归,需大量训练数据,或用更复杂的二阶算法,不能在几百毫秒完成,则是异步运算。此外,数据收集、特征生成、放在异步。可以将所有邮件,输出到一个特征产生的模块;特征产生后进行邮件判断,保存结果。用户查询时,直接返回结果。但当有大量突发数据来临,需要更新模型。

分析、评估产品

分析

  1. 如何衡量经济收益
    1. 衡量收入现状
    2. 衡量收入增长
  2. 能否用经济收益直接指导产品构建:经济收益有时是副产品,如社交网站的广告收入是副产品,但用户来到网站的目的不是点广告
    层次化评估体系

提高产品性能:提升品质,吸引更多用户

能力要求

基础:机器学习、统计、计算机
现实场景和技术挂钩:用人工智能描述这个场景
动手,代码编写,数据结构

能力培养,5~6年为周期的换代更新
跨团队的组织、协调和沟通。分清主次。把自己的解决方案说清楚,用通俗的语言解释复杂问题,把主要思想梳理明白,并传递出足够多的信息

不管什么团队,产品或工程师,都是为了产品的进步和提高出谋划策的,希望产品越做越好。但团队分工和专业背景不同,在让产品越来越好的目标上,可能有不同意见

数据分析

算法模型

工作衡量

绩效评定 Performance Review。规则必须在团队建立初期就明确,否则一些不定因素,对招聘、培训和留住人才,有不可估量的影响。

数据科学最大价值,就是为企业或团队引入数据驱动和持续决策。

初级:用模型和算法,对整个业务提供解决方案,即翻译业务的能力
中级:有可能的新方向
高级:对某类产品解决方案有深刻洞察,对新场景有快速和成熟的理解
对业务和产品有深入理解,包括需求、数据和工程技术,对产品提出合理和成熟的解决方案。
团队

工作流

保证项目达到质量标准的方法。增加产品成功的可能性,减少问题的发生

开发:研究项目中,开发的目的是完成文章发表需要的实验结果,但容易变成无人维护和不能更新的情况。用版本管理工具,使用分支,隔离开发进度
部署:CI/CD,对代码的不同分支进行测试运行
数据:数据在第一位。即便有正确的代码,如果数据有偏差,都对结果产生重大影响。任何对数据的改变,如改字段名,都需要面向相关团队的沟通。同时,数据检测很重要,避免垃圾进垃圾出。

值得合作的产品