一、前言

这个模型2015年由澳大利亚国立大学提出, 是个单隐层的神经网络推荐模型,网络结构简单,非常适合深度学习推荐系统的入门模型,但由于比较简单, 表达能力不足, 并没有真正的被应用。

二、AutoRec介绍

它的基本原理是利用协同过滤中的共现矩阵, 完成物品向量或者用户向量的自编码。 再利用自编码的结果得到用户对物品的预估评分, 进而进行的推荐排序。

1、AutoRec架构:

结构图如下:

自编码器输出层的节点数与输入层相等,训练这个网络以期望得到近似恒等函数, 假设数据向量是r, 自编码器的作用是将向量r 作为输入, 通过自编码器, 得到的输出向量尽量接近其本身。
那么自编码器的目标函数:

图中的V 和W 分别表示输入层到隐层, 隐层到输出层的参数矩阵, 如果熟悉神经网络的计算, 这个模型的重构函数表示:

这里的f ,g都是激活函数。为防止过拟合, 还加入了L2正则, 即最终的目标函数为:

n表示所有向量的集合,输出向量尽量接近其本身。完成自编码器的训练后, 相当于在h(r;θ)中存储了所有数据向量的“精华”。经过自编码器生成的输出向量, 经过了自编码器的“泛化”过程, 具备了一定的缺失维度的预测能力, 这也是自编码器能用于推荐系统的原因。

2、AutoRec怎么用

假设有m 个用户, n 个物品, 用户会对物品中的一个或者几个评分, 这样就会得到一个m × n 的评分矩阵,未评分的可用默认值或者均值表示。 这个就是共现矩阵了。

对于一个物品i来说,单个m维的向量就是它的评分表示(物品1的向量: r1=(5,3,4,3,1)),AutoRec也是要通过自编码器学习一个重建函数h ( r ; θ ) , 使得所有该重建函数生成的评分向量与原评分向量的平方残差和最小。

3、AutoRec的推荐过程

当我们输入物品i的评分向量r ( i ) 的时候, 模型的输出向量h ( r ( i ) , θ ) 就是所有用户对物品i的评分预测。 那么其中的第u维就是用户u对物品i的评分R ^ u i

通过遍历输入物品向量就可以得到用户u 对所有物品的评分预测, 进而根据评分预测排序得到推荐列表。

三、AutoRec的总结

AutoRec模型由于结构比较简单, 表达能力不足,并且往往共现矩阵非常的稀疏, 更加加大了模型的预测难度。

所以这个东西是将深度学习思想应用于推荐系统的初步尝试, 拉开了使用深度学习思想解决推荐问题的序幕。

AutoRec模型结构详解相关推荐

  1. 经典Seq2Seq与注意力Seq2Seq模型结构详解

    介绍 在本文中,我们将分析一个经典的序列对序列(Seq2Seq)模型的结构,并演示使用注意解码器的优点. 这两个概念将为理解本文提出的Transformer奠定基础,因为"注意就是您所需要的 ...

  2. classical CNN models : AlexNet 模型结构详解

    AlexNet 相关文献: ImageNet Classification with Deep Convolutional Neural Networks Alex Krizhevsky Ilya S ...

  3. classical CNN models : ZF Net 模型结构详解

    ZF Net 相关文献: Visualizing and Understanding Convolutional Networks Matthew D. Zeiler and Rob Fergus D ...

  4. Transformer(二)--论文理解:transformer 结构详解

    转载请注明出处:https://blog.csdn.net/nocml/article/details/110920221 本系列传送门: Transformer(一)–论文翻译:Attention ...

  5. [java] 虚拟机(JVM)底层结构详解[转]

    [java] 虚拟机(JVM)底层结构详解[转] 本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 在以前的博客里面,我们介绍了在java领 ...

  6. 搞一下 车载以太网实战 | 01 车载以太网帧结构详解

    前言 搞SOA.搞 AP & CP AUTOSAR.搞异构SoC.搞车载以太网.搞车载OS等就找搞一下汽车电子. 全系内容可在<搞一下汽车电子>后台回复 "系列" ...

  7. Java内存模型(JMM)详解

    在Java JVM系列文章中有朋友问为什么要JVM,Java虚拟机不是已经帮我们处理好了么?同样,学习Java内存模型也有同样的问题,为什么要学习Java内存模型.它们的答案是一致的:能够让我们更好的 ...

  8. Linux TC 流量控制与排队规则 qdisc 树型结构详解(以HTB和RED为例)

    1. 背景 Linux 操作系统中的流量控制器 TC (Traffic Control) 用于Linux内核的流量控制,它规定建立处理数据包的队列,并定义队列中的数据包被发送的方式,从而实现对流量的控 ...

  9. Android 8.0学习(32)---Android 8.0源码目录结构详解

    Android 8.0源码目录结构详解 android的移植按如下流程:     (1)android linux 内核的普通驱动移植,让内核可以在目标平台上运行起来.     (2)正确挂载文件系统 ...

最新文章

  1. python爬虫xpath的语法
  2. Java 枚举(enum)详解
  3. 《数据中心设计与运营实战》——2.6 监控基础设施
  4. 2022年改变数据中心行业的八大趋势
  5. 网络协议——TCP/IP协议
  6. Oracle使用impdb/expdb数据泵导入/导出数据库
  7. 347. Top K Frequent Elements 前 K 个高频元素
  8. 使用网页对话框来显示图片 window.open()
  9. DP:最大公共子序列
  10. 仿得微博字符限制效果
  11. Jeesit下面form:select的二级联动
  12. Linux TTY 串口 struct termios结构体参数
  13. Laya Tween循环
  14. word加上尾注之后参考文献下面的横线去除
  15. 假装接入阿里云---PC运行mqtt.fx
  16. 系分架构 - 软件架构设计
  17. Spring boot JPA+Gradle+QueryDSL 完美配置生成Q文件依赖
  18. grid布局浏览器兼容_CSS Grid 网格布局教程
  19. 爬虫一 requests库与BeautifulSoup库、HTML
  20. Spyder 错误:error: (-215:Assertion failed) dst.data = src.data in function ‘cv::undistort‘

热门文章

  1. 淘宝 聚划算 整点免费 支付宝延时时间1秒
  2. HTML5 2D游戏引擎研发系列 第五章
  3. 面向开放词汇的目标检测ECCV2022
  4. 如何破解类似于简书登录的滑动式验证码
  5. 64码高清电视 android版,爱直播tv版-爱直播v4.7.64 安卓智能电视版__西西安卓tv
  6. arduino二位数码管_用arduino和2个74HC595级联控制8位数码管显示
  7. Jaccard和Levenshtein
  8. 软件架构非功能需求——互操作性
  9. 转载_BlueTooth: 蓝牙基带
  10. PPa-HA/NH2/NHS/MAL焦脱镁叶绿酸-a修饰叶酸/氨基/活性酯/马来酰亚胺的反应