经典模型结构
如何选择适合的模型?

说说久经考验的机器学习经典模型。

LR models

逻辑回归模型简单,解释性好,使用极大似然估计对训练数据进行建模。 它由两部分构成: 线性回归 + 逻辑函数

采用梯度下降法对LR进行学习训练,LR的梯度下降法迭代公式非常简洁。 LR适合离散特征,不适合特征空间大的情况。

GBM models

xgb、catboost、RandomForest

FM models

对categorical类型进行独热编码变成数值特征(1变多)之后,特征会非常稀疏(非零值少),特征维度空间也变大。因此FM的思路是构建新的交叉特征。

FM的表达式是在线性表达式后面加入了新的交叉项特征及对应的权值。 相比于LR, FM引入了二阶特征, 增强了模型的学习能力和表达能力。

https://www.cnblogs.com/wkang/p/9588360.html

FFM

Field-aware Factorization Machine

Deep-learning based CTR models

搜推广场景的特点:

Wide and Deep learning WDL模型

可以看做是 LR + DNN

DeepFM 模型

将LR替换为FM。 可以看做是 FM + DNN

Deep&Cross DCN 模型

它和Wide&Deep的差异就是用cross网络替代wide的部分。

Cross Layer

DIN & DIEN

在embedding层和MLP层之间加入 attention 机制

MOE

Deep-learning based NLP models

Batch Negative

通过在批量样本中引入负样本,更好地优化推荐系统模型。具体来说,Batch Negative 使用了负采样的方法,在每个训练批次中引入了一些负样本。这些负样本是从用户未观察到的项目中随机选择的。

Deep-learning based CV models

LeNet-5网络,AlexNet,VGG网络,GoogLeNet,残差网络

GAN models

GAN由两个子模型组成:

训练过程:

GAN模型的特点

GAN衍生版本

RNN models

输入特点:连续输入序列,将输入x0,x1,…,xt作为从0到t时刻的序列

结构特点:有向环连接,层的输出不仅连接到下一层,还连接到自身。层内的计算不是并行而是串行的。

RNNCell: TensorFlow库中的class RNNCell是所有RNN大类模型的抽象类,实现类需要具有__call__、output_size、state_size、zero_state四个属性。

BasicRNNCell: https://github.com/tensorflow/tensorflow/blob/r1.4/tensorflow/python/ops/rnn_cell_impl.py#L238

标准RNN的升级版:输出包含一个记忆向量,表示综合了过去时刻记忆和当前时刻输入所得的新记忆

BasicLSTMCell: https://github.com/tensorflow/tensorflow/blob/r1.4/tensorflow/python/ops/rnn_cell_impl.py#L361

Gated Recurrent Units的LSTM的一个变种。

GRUCell: https://github.com/tensorflow/tensorflow/blob/r1.4/tensorflow/python/ops/rnn_cell_impl.py#L272

单元中包含两个隐藏层状态,它在RNN单元的基础上增加了相反方向的隐藏层状态转移。 本质上是两个独立基本RNN单元组合而成

https://github.com/tensorflow/tensorflow/blob/r1.4/tensorflow/python/ops/rnn_cell_impl.py

Seq2Seq

Transformer models

transformer layer的样子

通过这种自注意力机制层和普通非线性层来实现对输入信号的编码,得到信号的表示。

Transformer结构

  1. 编码器(Encoder):
    • 输入嵌入(Input Embedding)
    • 位置编码(Positional Encoding)
    • N个编码器层(每层包括以下子层)
      • 多头自注意力(Multi-Head Self-Attention)
      • 加法 & 归一化(Add & Norm)
      • 前馈神经网络(Feed-Forward Neural Network)
      • 加法 & 归一化(Add & Norm)
  2. 解码器(Decoder):
    • 输出嵌入(Output Embedding)
    • 位置编码(Positional Encoding)
    • N个解码器层(每层包括以下子层)
      • 多头自注意力(Masked Multi-Head Self-Attention)
      • 加法 & 归一化(Add & Norm)
      • 多头编码器-解码器注意力(Multi-Head Encoder-Decoder Attention)
      • 加法 & 归一化(Add & Norm)
      • 前馈神经网络(Feed-Forward Neural Network)
      • 加法 & 归一化(Add & Norm)
  3. 最后的线性层和softmax层输出预测结果。

Transformer门派

BERT

BERT的全称是Bidirectional Encoder Representation from Transformers,即双向Transformer的Encoder,因为decoder是不能获要预测的信息的。模型的主要创新点都在pre-train方法上,即用了Masked LM和Next Sentence Prediction两种方法分别捕捉词语和句子级别的representation。

BERT 模型是最经典的编码预训练语言模型,其通过掩码语言建模和下一句预测任务,对 Transformer 模型的参数进行预训练。

BERT在美团搜索核心排序的探索和实践

GPT

不再需要对于每个任务采取不同的模型架构,而是用一个取得了优异泛化能力的模型,去针对性地对下游任务进行微调。 GPT开启了”大模型“时代。 -> LLM -> 请见另一篇以LLM专题的Blog.

References

wide&deep

seq2seq

PNN

NCF

MV-DNN

FNN - 利用FM的结果进行网络初始化

DNN-YouTube

DCN DCN介绍

GBDT+LR

FM

NFM - 使用神经网络提升FM二阶部分的特征交叉能力

AFM - 引入了注意力机制的FM模型

deepFM

深度学习推荐系统

CTR深度模型总结

推荐系统多目标模型

*****
Written by Lu.dev on 04 February 2019