Beyond Globally Optimal: Focused Learning
这里对WWW 2017文章《Beyond Globally Optimal: Focused Learning for Improved Recommendations》进行一个简单的分析解读。
文章亮点:
作者群来自Google和Pinterest
第一次系统性的解释了为什么用全局模型可能会在局部数据上表现不好
文章提出了简单易行的解决办法,可以让全局模型在局部数据上依然能够达到最优
文章很全面得在一些数据及上进行了比较完整的比较
这篇文章来自一群前CMU的学者,目前在Google和Pinterest。那么这篇文章试图解决什么问题呢?具体说来,就是作者们发现,传统的推荐系统,基于优化一个全局的目标函数,通常情况下往往只能给出一个非常有“偏差”(Skewed)的预测分布。也就是说,传统的推荐系统追求的是平均表现情况,在很多情况下的预测其实是十分不准确的。这个情况在评价指标是Root Mean Squared Error(RMSE)的时候,就显得尤为明显。
这篇文章的作者是这么定义了一个叫做Focused Learning的问题,那就是如果让模型在一个局部的数据上能够表现出色。那么,为什么需要模型在一个局部的数据上表现出色呢?作者们做了这么一件事情,那就是对每个用户,以及每一个物品的预测误差(Error)进行了分析统计,发现有不小比例的用户的预测误差比较大,也有不小比例的物品的预测误差比较大。作者们发现模型在一些数据上存在着系统性的误差较大的问题,而不是偶然发生的情况。
作者们又从理论上进行了对这个问题一番讨论。这里的讨论十分巧妙,大概的思路就是,假定现在在全局最优的情况下,模型的参数的梯度已经为0了,但模型的Loss依然不为0(这种情况很常见)。那么,就一定存在部分数据的参数梯度不为0,因为某一部分数据的Loss不为0。这也就证明了部分数据的模型参数在这些数据上的表现一定不是最优的。值得注意的是,这个证明非常普遍,和具体的模型是什么类型没有关系。
在有了这么一番讨论之后,那么作者们如何解决这个问题呢?这篇文章走了Hyper-parameter Optimization的道路。文章展示了这在普通的Matrix Factorization里面是如何做到。具体说来,就是对于某个Focused Set做Hyper-parameter的调优,使得当前的Hyper-parameter能够在Focused Set上能够有最好表现。而这组参数自然是针对不同的Focused Set有不同的选择。文章提到的另外一个思路,则是对Focused Set以及非Focused Set的Hyper-parameter进行区分对待,这样有助于最后的模型能够有一个比较Flexible的表达。
文章在实验的部分针对几种不同的Focused Set进行了比较实验。比如,针对Cold-Start的物品,针对Outlier的物品,以及更加复杂的libFM模型都进行了实验。我们在这里就不去复述了。总体来说,Focused Learning在不同的数据集上都得到了比较好的提升效果。同时,作者们还针对为什么Focused Learning能够Work进行了一番探讨,总体看来,Focused Learning既照顾了Global的信息,同时又通过附加的Hyper-parameter调优对某一个局部的数据进行优化,所以往往好于Global的模型以及也好于单独的Local模型。
Beyond Globally Optimal: Focused Learning的更多相关文章
- Machine and Deep Learning with Python
Machine and Deep Learning with Python Education Tutorials and courses Supervised learning superstiti ...
- Learning Query and Document Similarities from Click-through Bipartite Graph with Metadata
读了一篇paper,MSRA的Wei Wu的一篇<Learning Query and Document Similarities from Click-through Bipartite Gr ...
- an optimal solution to the problem
http://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/Greedy/greedyIntro.htm Greedy Introdu ...
- 论文解读(GraphDA)《Data Augmentation for Deep Graph Learning: A Survey》
论文信息 论文标题:Data Augmentation for Deep Graph Learning: A Survey论文作者:Kaize Ding, Zhe Xu, Hanghang Tong, ...
- cvpr2015papers
@http://www-cs-faculty.stanford.edu/people/karpathy/cvpr2015papers/ CVPR 2015 papers (in nicer forma ...
- 2016CVPR论文集
http://www.cv-foundation.org/openaccess/CVPR2016.py ORAL SESSION Image Captioning and Question Answe ...
- ECCV 2014 Results (16 Jun, 2014) 结果已出
Accepted Papers Title Primary Subject Area ID 3D computer vision 93 UPnP: An optimal O(n) soluti ...
- CVPR 2015 papers
CVPR2015 Papers震撼来袭! CVPR 2015的文章可以下载了,如果链接无法下载,可以在Google上通过搜索paper名字下载(友情提示:可以使用filetype:pdf命令). Go ...
- 机器学习资源汇总----来自于tensorflow中文社区
新手入门完整教程进阶指南 API中文手册精华文章TF社区 INTRODUCTION 1. 新手入门 1.1. 介绍 1.2. 下载及安装 1.3. 基本用法 2. 完整教程 2.1. 总览 2.2. ...
随机推荐
- SpringBoot应用部署到Tomcat中无法启动问题
SpringBoot应用部署到Tomcat中无法启动问题 背景 最近公司在做一些内部的小型Web应用时, 为了提高开发效率决定使用SpringBoot, 这货自带Servlet容器, 你在开发We ...
- C#:StreamReader读取.CSV文件(转换成DataTable)
using System.Data; using System.IO; /// <summary> /// Stream读取.csv文件 /// </summary> /// ...
- CenOS 6.5下 mysql自动备份
1.mysql备份命令是mysqldump,自动执行可以用cron,但是文件名需要带有时间标志,shell处理起来很麻烦,我就选择了python来解决 2.文件名用time模块来解决,执行系统命令 ...
- WebApi的多版本管理
1.多版本管理概念 什么是API的多版本问题?Android等App存在着多版本客户端共存的问题:由于早期没有内置升级机制,用户不会升级,拒绝升级等原因,造成了许多软件的旧版本App也在运行.开发新版 ...
- JDBC中rs.beforeFirst()
写在前面: 最近的项目比较老,用到了jdbc查询数据,展示数据.有时候一个查询语句的ResultSet需要用到好几次,即需要遍历好几次同一个查询结果集,那要怎么办呢? 使用如下方式即可解决 其实这里理 ...
- iOS Button 上文字图片位置的设置
1. 添加图片+文字/文字+图片 ,不分前后,图片默认在文字前边 加空格隔开 UIButton * button =[[UIButton alloc] initWithFrame:CGRectMake ...
- 并行cmd
#!/bin/bash ]; then echo -e "usage : \n\t$0 hostList REMOTE_CMD" echo -e "example: \n ...
- Paho - MQTT C Cient的实现
来自我的CSDN博客 在前几天,我大致了解了一下Paho C项目,并对其的一些内容进行了翻译.俗话说,光说不练假把戏,今天就给大家讲一下使用Paho的客户端库文件实现MQTT C Client的过 ...
- TensorFlow文档翻译-01-TensorFlow入门
版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/junyang/p/7429771.html TensorFlow入门 英文原文地址:https://w ...
- Docker(十三):OpenStack部署Docker集群
1.介绍 本教程使用Compose.Machine.Swarm工具把WordPress部署在OpenStack上. 本节采用Consul作为Swarm的Discovery Service模块,要利用C ...