热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《StatisticalMethodsforRecommenderSystems》阅读笔记第三章(1)EE问题

插一句:这个问题,我之前写过三篇相关的博客(有一篇竟然不知道怎么被不小心覆盖了。悲伤。。。),感兴趣的可以先参

     插一句:这个问题,我之前写过三篇相关的博客(有一篇竟然不知道怎么被不小心覆盖了。悲伤。。。),感兴趣的可以先参考:
   ● http://blog.csdn.net/allenalex/article/details/78220926
   ● http://blog.csdn.net/allenalex/article/details/78242068
   当然,这本书里的这一章节,对这个问题整理的非常好。推荐大家认真学习一遍。

推荐系统总的EE问题
直译过来就是“探索-利用”问题。
先直观理解:
   探索:我要不要尝试新的(推个新物品怎么样?)
    利用:现在推的这个东西还可以阿。要不要继续?
所谓EE均衡,就是在这两者之间达到某种平衡。

本章主要包括以下内容:
   3.1节:简单介绍了EE均衡问题
   3.2节:常见的EE方法
   3.3节:讨论了推荐系统中的EE挑战
   3.4节:处理EE挑战的主要思想

3.2 Multiarmed Bandit Problem (MAB,多臂老虎机问题)

    MAB的简单描述网上一搜一大把。这里不过多探讨。给出书中的一段较形式化的定义:
使用 θt代表赌徒在t时刻摇臂前所获得的所有信息。θt可称之为t时刻的状态参数或者就叫做t时刻的状态。主要包括每个臂i到t时刻时的摇臂次数γi 以及总奖励αi。 一个摇臂机制(bandit scheme,或者又叫EE机制(explore-exploit scheme)、策略)就是一个决策函数π:它的输入时θt,输出是下次要摇的臂。摇臂机制可以是状态参数的一个确定性函数,也可以是一个随机函数。

MAB 主要可以分为以下三类:
    ● 贝叶斯方法(Bayesian methods )
    ● 极大极小方法(minimax methods)
    ● 启发法(heuristic methods)

3.2.1.贝叶斯方法

:(这块还没完全弄懂。主要是beta分布那块)
   从贝叶斯的角度,可以把MAB问题定义为一个马尔科夫决策过程(MDP)。最优解可以通过动态规划解决。当然,尽管存在最优解,但要求解,计算复杂度非常高。
   对MAB定义一个 β-二项式 MDP(Beta-binomial MDP):

  • 状态 了最大化收益,赌徒需要估计每个臂的奖励概率。 设t时刻的状态θt 表示赌徒在t时刻前基于实验数据所获得的知识。 对于每个臂,所知的信息用一个两个参数的贝塔分布表示。也就是:
                 θt=(θ1t,...,θKt)
    其中θit 为t时刻i的状态:
                    θit=(αit,γit)
    也就是臂i用一个两个参数的beta分布表示。其中γit 表示臂i到t时刻时的摇臂次数,αit 表示臂i到t是所获得的总收益。
    分布满足:
    这里写图片描述
    平均值表示基于到目前为止所有数据,赌徒对奖励概率的一个经验估计。而方差衡量他的估计的不确定性。
  • 状态转换 赌徒通过摇臂i并观察它的输出可以获得关于臂i的更多输出。状态由θt转换为θ(t+1)。这里,对应是否获得收益(奖励),有两种可能的新状态:
                   - 赌徒有αit/γit 的概率获得奖励,状态由θit=(αit,γit) 转换为状态θi,t+1=(αit+1,γit+1)
                   - 1. 没获得奖励的概率为1 - αit/γit, 状态转换为θi,t+1=(αit,γit+1)
        其他所有的臂j的状态保持不变;也就是θj,t+1=θj,t,这是经典老虎机问题(classical bandit problem)的一个重要特性。我们使用p(θt+1|θt,i)表示转换概率,表示摇臂i后状态由θtθt+1的概率。因为在当前状态下转换的新状态只有两种,所以转换到其他其他状态的概率为0。
            以上的状态转换遵循beta-二项式共轭(这个不太懂)。使用ci ∈ {0, 1}表示赌徒在摇臂i后是否获得收益。如果我们假定:
    这里写图片描述
    其中,pi为 奖励概率,那么,
                       (pi|ci)Beta(αit+ci,γit+1)
  • 奖励 奖励函数Ri(θt, θt+1)定义摇臂i从状态θt 到 θt+1 期望的奖励。经典的老虎机问题中,这个奖励函数定义非常简单:如果状态由 (αit, γit) 转换为 (αit + 1, γit + 1); 就换的一单位的奖励,否则 就是没有奖励。
  • 最优策略(Optimal Policy) 原文没有给出具体的算法。提到了一种‘Gittins index’,感兴趣的读者可以参考:
    1) Gittins, J. C. 1979. Bandit processes and dynamic allocation indices. Journal of the
    Royal Statistical Society. Series B (Methodological), 41(2), 148–77
    2)Nino-Mora, Jos ˜ e. 2007. A (2 ´ /3)n3 fast-pivoting algorithm for the Gittins index and
    optimal stopping of a Markov chain. INFORMS Journal on Computing, 19(4),596–606

    此外,还有一段比较详细的讨论了最优解问题。有一定的理论深度,我也没有深入研读。感兴趣的读者可以参考原文。


3.2.2 极大极小方法

关注UCB算法。
这里写图片描述

其中,3.12公式的前一项表示臂i当前奖励概率的一个估值,后一项表示估计的不确定性。
参考:Auer, P. 2002. Using confidence bounds for exploitation-exploration trade-offs. Journal of Machine Learning Research, 3, 397–422.
除此之外,还可以参考我的另一篇博文:http://blog.csdn.net/allenalex/article/details/78242068

3.2.3启发式bandit机制

有以下几种机制(方法):

  • epsilon-Greedy算法.这个方法,可以直接参考我的另一篇博文:http://blog.csdn.net/allenalex/article/details/78220926
  • SoftMax; 首先定义一个称之为“温度”的参数–τ,每次摇臂i的概率为:
    这里写图片描述
    当τ很高的时候,ep^i/τ1,那么每个臂被选中的概率就几乎一样。相反,如果 τ很低,则几乎总是选择奖励概率最大的那个臂。
    下面这两种,本文见得比较少。不翻译整理了,直接贴出原文。
  • 这里写图片描述
  • 这里写图片描述

评论(原文)

    通常,贝叶斯方法计算复杂度高,但是如果建模假设合理,性能相对更好。相反,极大极小值方法在最坏的情况下能够实现最好的性能,但是要平均要尝试的次数更多。实践中通常使用基于启发式的方法。启发式方法实现相对更简单,并且通过合适的调节,能够实现合理的性能。


推荐阅读
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 序言Broadcast作为Android的四大组件之一,重要性不言而喻;一般我们使用广播的方式通常如下,继承BroadcastReceiver,新建一个广播类。publicclas ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • x86 linux的进程调度,x86体系结构下Linux2.6.26的进程调度和切换
    进程调度相关数据结构task_structtask_struct是进程在内核中对应的数据结构,它标识了进程的状态等各项信息。其中有一项thread_struct结构的 ... [详细]
  • AstridDAO 专访:波卡稳定币黑马 BAI
    加入Pol ... [详细]
  • C#设计模式之八装饰模式(Decorator Pattern)【结构型】
    一、引言今天我们要讲【结构型】设计模式的第三个模式,该模式是【装饰模式】,英文名称:DecoratorPattern。我第一次看到这个名称想到的是另外一个词语“装修”,我就说说我对“装修”的理 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
author-avatar
teddy213
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有