我试图了解使用python的多臂强盗问题。当随机概率小于分配的强盗的成功概率时,我不断遇到返回值1(即奖励)的代码片段。请参阅下面的代码
def reward(prob):
reward = 0;
for i in range(10):
if random.random() < prob:
reward += 1
return reward
我从以下链接获得此信息:http://outlace.com/rlpart1.html
另外我在另一个github页面上看到了类似的东西。基于第一个链接,奖励函数背后的直觉是什么(它与实际的一个武装强盗的直觉类似),最后为什么当它小于概率时我们分配1的奖励。除非我弄错了,否则它应该是相反的。谢谢。
答案 0 :(得分:1)
概率仅是勘探与利用之间的转换,这意味着您可以设置您想要探索的频率和利用频率。该实现是最简单的算法(epsilon)之一,在更高级的版本中,它可以动态更改此比例或利用其他算法
应该减少还是增加都没有关系!我的意思是说,数学是相同的,您可以实现一种类似于1的方法。
同样,奖励为1是任意的,并且是简单的选择之一。这很容易,因为您可以稍后计算获得的奖励金额,例如在营销案例中,如果您有100000个广告系列,则可以轻松计算成功率。在更高级的版本中,奖励可以是一种功能,您可以使其变得更加复杂,再次在同一营销活动中,您可以将价格和成本嵌入奖励中,因此,奖励不会简单地为1,而是会继续存在。
答案 1 :(得分:0)
如果您有关于选择手臂的实际数据和成功标签的信息,则该奖励功能将不存在。
我的理解是您正在执行此操作,因为您没有实际的数据响应数据。换句话说,您举起一只手臂,您不知道它们是否导致成功(1)或不成功(0)。
因此,您仅假设,如果概率为0.7,您将有70%的机会获得1。就像伯努利变量一样,成功概率为0.7。这个random.random()只供您实现。概率(手臂的成功概率)越大,获得奖励的机会就越大。