AutoRec模型结构详解
一、前言
这个模型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模型结构详解相关推荐
- 经典Seq2Seq与注意力Seq2Seq模型结构详解
介绍 在本文中,我们将分析一个经典的序列对序列(Seq2Seq)模型的结构,并演示使用注意解码器的优点. 这两个概念将为理解本文提出的Transformer奠定基础,因为"注意就是您所需要的 ...
- classical CNN models : AlexNet 模型结构详解
AlexNet 相关文献: ImageNet Classification with Deep Convolutional Neural Networks Alex Krizhevsky Ilya S ...
- classical CNN models : ZF Net 模型结构详解
ZF Net 相关文献: Visualizing and Understanding Convolutional Networks Matthew D. Zeiler and Rob Fergus D ...
- Transformer(二)--论文理解:transformer 结构详解
转载请注明出处:https://blog.csdn.net/nocml/article/details/110920221 本系列传送门: Transformer(一)–论文翻译:Attention ...
- [java] 虚拟机(JVM)底层结构详解[转]
[java] 虚拟机(JVM)底层结构详解[转] 本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 在以前的博客里面,我们介绍了在java领 ...
- 搞一下 车载以太网实战 | 01 车载以太网帧结构详解
前言 搞SOA.搞 AP & CP AUTOSAR.搞异构SoC.搞车载以太网.搞车载OS等就找搞一下汽车电子. 全系内容可在<搞一下汽车电子>后台回复 "系列" ...
- Java内存模型(JMM)详解
在Java JVM系列文章中有朋友问为什么要JVM,Java虚拟机不是已经帮我们处理好了么?同样,学习Java内存模型也有同样的问题,为什么要学习Java内存模型.它们的答案是一致的:能够让我们更好的 ...
- Linux TC 流量控制与排队规则 qdisc 树型结构详解(以HTB和RED为例)
1. 背景 Linux 操作系统中的流量控制器 TC (Traffic Control) 用于Linux内核的流量控制,它规定建立处理数据包的队列,并定义队列中的数据包被发送的方式,从而实现对流量的控 ...
- Android 8.0学习(32)---Android 8.0源码目录结构详解
Android 8.0源码目录结构详解 android的移植按如下流程: (1)android linux 内核的普通驱动移植,让内核可以在目标平台上运行起来. (2)正确挂载文件系统 ...
最新文章
- ReportViewer改变图表类型
- 20200505:力扣151周周赛上
- sqlite 查看数据库表和字段
- 台达触摸屏MODBUS直接与台达变频器通讯程序
- OpenVN客户端添加路由配置(流量分流)
- 淘宝以图搜图接口,图片搜索商品接入指南
- LoadRunner 11.50 下载+安装+补丁
- mysql版本号xx.xx.xx类型字段排序问题解决
- TCP协议和UDP协议头部结构
- 虚幻引擎图文笔记:使用MixamoConverter对Mixamo动画重定向成UESkeleton匹配动画
- CSS笔记 —— 美化网页
- Revit SDK EXTENSIONS(软件开发工具包扩展)是什么
- win32程序窗口的创建
- 【知识点4】素数(质数)
- 华南农业大学课设——数据结构课设、Java课设、操作系统课设
- 用hutool实现邮件发送功能
- 设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五人运算的表达式是: A) n=(n*100+0.5)/100.0 B)m=n*100+0.5
- uni-app中@tap和@click的区别
- win10系统没有电源高性能选项
- css过渡 取消过渡_CSS过渡
热门文章
- MMA-Mathematica定义函数
- pyfolio教程2——第一个returns_tear_sheet
- Python网络爬虫实践(1):爬取网易云音乐播放量大于1000万的歌单
- 电脑如何调整分辨率大小查看网页
- echarts画出特殊形状的柱状图
- 印度最大IT公司与IIT联手研究5G和AI 他们有什么优势
- ROS 相关学习资源汇总
- 使用tesseract训练自己的字库提高识别率
- Vscode c与c++编译环境配置(.vscode),看这一篇就够了
- oracle数据库方案模式,Oracle数据库技术服务方案.doc