码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 一文看懂推荐系统:排序13:FNN模型(FM+MLP=FNN),与PNN同属上海交大张楠的作品


    一文看懂推荐系统:排序13:FNN模型(FM+MLP=FNN),与PNN同属上海交大张楠的作品

    提示:最近系统性地学习推荐系统的课程。我们以小红书的场景为例,讲工业界的推荐系统。
    我只讲工业界实际有用的技术。说实话,工业界的技术远远领先学术界,在公开渠道看到的书、论文跟工业界的实践有很大的gap,
    看书学不到推荐系统的关键技术。
    看书学不到推荐系统的关键技术。
    看书学不到推荐系统的关键技术。

    王树森娓娓道来**《小红书的推荐系统》**
    GitHub资料连接:http://wangshusen.github.io/
    B站视频合集:https://space.bilibili.com/1369507485/channel/seriesdetail?sid=2249610

    基础知识:
    【1】一文看懂推荐系统:概要01:推荐系统的基本概念
    【2】一文看懂推荐系统:概要02:推荐系统的链路,从召回粗排,到精排,到重排,最终推荐展示给用户
    【3】一文看懂推荐系统:召回01:基于物品的协同过滤(ItemCF),item-based Collaboration Filter的核心思想与推荐过程
    【4】一文看懂推荐系统:召回02:Swing 模型,和itemCF很相似,区别在于计算相似度的方法不一样
    【5】一文看懂推荐系统:召回03:基于用户的协同过滤(UserCF),要计算用户之间的相似度
    【6】一文看懂推荐系统:召回04:离散特征处理,one-hot编码和embedding特征嵌入
    【7】一文看懂推荐系统:召回05:矩阵补充、最近邻查找,工业界基本不用了,但是有助于理解双塔模型
    【8】一文看懂推荐系统:召回06:双塔模型——模型结构、训练方法,召回模型是后期融合特征,排序模型是前期融合特征
    【9】一文看懂推荐系统:召回07:双塔模型——正负样本的选择,召回的目的是区分感兴趣和不感兴趣的,精排是区分感兴趣和非常感兴趣的
    【10】一文看懂推荐系统:召回08:双塔模型——线上服务需要离线存物品向量、模型更新分为全量更新和增量更新
    【11】一文看懂推荐系统:召回09:地理位置召回、作者召回、缓存召回
    【12】一文看懂推荐系统:排序01:多目标模型
    【13】一文看懂推荐系统:排序02:Multi-gate Mixture-of-Experts (MMoE)
    【14】一文看懂推荐系统:排序03:预估分数融合
    【15】一文看懂推荐系统:排序04:视频播放建模
    【16】一文看懂推荐系统:排序05:排序模型的特征
    【17】一文看懂推荐系统:排序06:粗排三塔模型,性能介于双塔模型和精排模型之间
    【18】一文看懂推荐系统:特征交叉01:Factorized Machine (FM) 因式分解机
    【19】一文看懂推荐系统:物品冷启01:优化目标 & 评价指标
    【20】一文看懂推荐系统:物品冷启02:简单的召回通道
    【21】一文看懂推荐系统:物品冷启03:聚类召回
    【22】一文看懂推荐系统:物品冷启04:Look-Alike 召回,Look-Alike人群扩散
    【23】一文看懂推荐系统:物品冷启05:流量调控
    【24】一文看懂推荐系统:物品冷启06:冷启的AB测试
    【25】推荐系统最经典的 排序模型 有哪些?你了解多少?
    【26】一文看懂推荐系统:排序07:GBDT+LR模型
    【27】一文看懂推荐系统:排序08:Factorization Machines(FM)因子分解机,一个特殊的案例就是MF,矩阵分解为uv的乘积
    【28】一文看懂推荐系统:排序09:Field-aware Factorization Machines(FFM),从FM改进来的,效果不咋地
    【29】一文看懂推荐系统:排序10:wide&deep模型,wide就是LR负责记忆,deep负责高阶特征交叉而泛化
    【30】一文看懂推荐系统:排序11:Deep & Cross Network(DCN)
    【31】一文看懂推荐系统:排序12:xDeepFM模型,并不是对DeepFM的改进,而是对DCN的改进哦


    提示:文章目录

    文章目录

    • 一文看懂推荐系统:排序13:FNN模型(FM+MLP=FNN),与PNN同属上海交大张楠的作品
    • 前言
    • 一、FNN模型结构
    • 二、FNN优缺点
      • 2.1 优点
      • 2.2 缺点
    • 总结


    前言

    原来是想把FNN和PNN放到一篇博客里一起写了,
    主要原因有两个:

    1. 是这两个模型都是交大张伟楠老师及合作者的成果;
    2. PNN也是对FNN的改进,两者之间存在一定关联。

    但最终还是决定分开写,因为放到一起会略显杂乱。

    因此,这篇博客的篇幅应该会相对较短,看起来会很舒服。

    言归正传,FNN全称Factorisation Machine supported Neural Network,
    如果用一句简短的话概括FNN那就是:FM+MLP,

    如果再用一句稍显复杂的话概括FNN那就是:
    FNN是一个两阶段训练的模型,
    阶段一,先训练一个FM模型得到每个field的embedding向量,
    阶段二,基于阶段一的embedding向量初始化MLP的embedding层,然后训练一个MLP(DNN)。

    这种就比较简单的想法


    一、FNN模型结构

    FNN的整体网络结构如下图所示(图片摘自原论文):
    在这里插入图片描述

    FNN的训练方式带有传统机器学习浓厚的烙印,
    并不想深度学习模型那样是end-to-end的,而是两阶段训练方式。

    阶段一:使用FM模型训练得到每个field的embedding向量。

    阶段二:基于阶段一的embedding向量初始化MLP里的embedding向量,也就是上图中的Dense Real Layer。
    然后训练MLP网络得到最终的模型。

    至于FM训练得到的embedding向量如何初始化MLP中的embedding向量,
    借用一张图能够清晰的看到(图片来自王喆《深度学习推荐系统》):
    在这里插入图片描述

    二、FNN优缺点

    2.1 优点

    一般在end-to-end训练DNN(MLP)的embedding层向量时,都是随机初始化的。

    而FNN把FM训练好的embedding向量用于初始化DNN的embedding向量,
    相当于在初始化DNN的embedding向量时引入了先验知识,
    因此能够更好更快的收敛DNN。

    2.2 缺点

    正如张伟楠老师在PNN那篇论文中所提到的那样,FNN主要有两个比较大的局限性:

    DNN的embedding层质量受限于FM的训练质量。
    在FM中进行特征交叉时使用的是隐向量点积,
    把FM预训练得到的embedding向量送入到MLP中的全链接层,
    MLP的全链接层本质上做的是特征间的线性加权求和,
    即做的是『add』的操作,这与FM有点不太统一。

    另外,MLP中忽略了不同的field之间的区别,全部采用线性加权求和。

    PNN论文中原话如下:

    the quality of embedding initialization is largely limited by the factorization machine.
    More importantly, the “add” operations of the perceptron layer might not be useful to explore the interactions of categorical data in multiple fields.

    关于PNN将在下一篇博客中介绍。


    总结

    提示:如何系统地学习推荐系统,本系列文章可以帮到你

    (1)找工作投简历的话,你要将招聘单位的岗位需求和你的研究方向和工作内容对应起来,这样才能契合公司招聘需求,否则它直接把简历给你挂了
    (2)你到底是要进公司做推荐系统方向?还是纯cv方向?还是NLP方向?还是语音方向?还是深度学习机器学习技术中台?还是硬件?还是前端开发?后端开发?测试开发?产品?人力?行政?这些你不可能啥都会,你需要找准一个方向,自己有积累,才能去投递,否则面试官跟你聊什么呢?
    (3)今日推荐系统学习经验:两阶段FM+MLP

  • 相关阅读:
    【BurpSuite】插件开发学习之J2EEScan(上)-被动扫描
    失效的访问控制及漏洞复现
    [Linux打怪升级之路]-缓冲区
    html中的爱心小特效。
    【学习笔记】[ARC153F] Tri-Colored Paths
    【C++】差分
    JDK 17 之 JVM调优 史诗级 教程
    方舟生存进化服务器怎么开?方舟生存进化架设服务器教程
    Linux常用命令、tomcat常用命令
    ADB环境搭建和抓取Crash日志实践总结
  • 原文地址:https://blog.csdn.net/weixin_46838716/article/details/126565847
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号