探索和利用

2021-07-29  本文已影响0人  Rain师兄

假设有两台bandit,简化成只需要拉杆就能玩,结果只有胜利和失败,胜利为1,失败为2。

事先并不知道每台机器的实际胜率,所以只能不断的玩来评估。一开始玩哪一台都一样,胜率都为0,假设我玩第一台,输了。第二次选择玩第二台就很合理。假设玩第二台我赢了,这个时候第一台胜率为0,第二台为100%。这个时候合理的选择是玩第二台,假如之后一直玩第二台,然后一直输,无论如何第二台的胜率都是会高于第一台0。

如果是利用,则会选择最优的策略,也就是概率最大的,也就是选择玩第二台。达到收益最大化。

如果是探索,则应该有一定几率选到第一台,由此获得更多的数据,使得实验结果更加精确。

如果纯粹使用利用。那么得到的策略可能是次优的。

纯探索可能达不到收益最大化。

解决这个问题的算法:epsilon-greedy

应用到现实,可以做推荐系统,a/b测试。

实例:1.定义bandit类,拥有实际概率,和评估概率的self.拥有一个pull方法,返回值是布尔类型。

2.创建一个循环,循环执行算法

3.绘图

special point:求mean公式,推导。numpy各个函数的作用。

问问题,问傻问题也总好过不问。

乐观初值算法

设置一个大的估计均值,直接用贪婪策略。

ucb1算法

也是贪婪算法,不过加了一个递减函数。

上一篇下一篇

猜你喜欢

热点阅读