3. Embedding

3.1 Embedding

  • 传统推荐算法:评分卡 LR,博闻强记,个性化差

    • 扩展性:将细粒度的概念,拆解为一系列粗粒度的特征

    • 依赖于特征工程 → 能否自动将概念拆解?

  • 核心套路:无中生有的 Embedding,精确匹配 → 模糊查找

unq_categories = ['music', 'movie', 'finance', 'game', 'military', 'history']
id_mapping = layer = tf.keras.layers.StringLookup(vocabulary=unq_categories)
emb_layer = tf.keras.layers.Embedding(input_dim=len(unq_categories) + 1, output_dim=4)

3.2 共享 or 独占

  • 共享 Embedding:训练充分、节省存储空间

  • 独占 Embedding:避免互相干扰

    • FM(共享):logitFM=i=1nwixi+i=1nj=i+1n(vivj)xixjlogit_{FM}=\sum_{i=1}^n w_i x_i+\sum_{i=1}^n \sum_{j=i+1}^n\left(\mathbf{v}_i \cdot \mathbf{v}_j\right) x_i x_j

    • FFM(特征爆炸 nfk):logitFFM=i=1nwixi+i=1nj=i+1n(vi,fjvj,fi)xixjlogit_{FFM}=\sum_{i=1}^n w_i x_i+\sum_{i=1}^n \sum_{j=i+1}^n\left(\mathbf{v}_{i, f_j} \cdot \mathbf{v}_{j, f_i}\right) x_i x_j

    • Co-Action Network (CAN):使用网络结构进行特征交叉,item 拆解 × user 输入小型 MLP

3.3 Parameter Server 训练加速器

  • 传统分布式计算的不足:master 容纳不下参数量、广播网络负载巨大

  • PS(分布式 KV 数据库):参数由一群 PS Server 节点存储读写,只需要传递非零特征参数

    • Data Parallelism:训练数据分布在各个 worker 节点

    • Model Parallelism:不会再同一特征的参数下产生竞争,worker 相对解耦

  • PS 中的并发策略

    • 同步并发策略(Bulk Synchronous Parallel, BSP)

    • 异步并发策略(Asynchronous Parallel, ASP):梯度时效(Stale Gradient)不严重,但 DNN 权重更新冲突

    • 半同步半异步(Staleness Synchronous Parallel, SSP):允许一定迭代轮数之内保持异步

  • 基于 ps-lite 实现分布式算法

  • 更先进的 PS

    • 阿里 XDL:ASP + 流水线机制,Server 节点也能部署训练模型(降维)

    • 快手 Persia:同步异步混合,特征准入 + 特征逐出

Last updated