多臂老虎机的强化学习笔记

最近因为路径规划方面需要用到强化学习算法,最先看的就是这个老虎机,,但是好像联系并不大,可能是因为我没咋看懂(。。。)本着学有所惑和学有所获的精神,把这俩货进行记录,也望大神看到了可以指点迷津呀!

这里先写一下路径规划中想的强化学习的思路,驾驶车为agent,有四个方向(上下左右)来行驶就是四个action(前进,刹车,左拐弯,右拐弯),将可行驶的区域进行画框,state就是每次行驶格子的状态,奖励分为障碍物-1000,后退为0,走对的按目的地的远近奖励分数递增,好然后,就开始强化学习(没想法了,这里先打住以后再补)

1.基于上下文的多臂老虎机

先奉上学习的原文,避免各位大神看到我写的跟我走偏了。。https://zhuanlan.zhihu.com/p/26075668

在此之前看了一个不基于上下文的,就是没有state的老虎机,也是似懂非懂但是毕竟思想相似我也会用到state所以就直接记录这个了。这里的state是有不同的老虎机,但是看代码好像state之间是没有关系的,而我路径规划是想做有关系的state(不会不要让我做无用功啊啊啊)

原理(自己理解的):agent就是赌博本人((^-^)V),action就是拉动机臂,reward就是拉动机臂后获得的奖励(代码中是1和-1),而加入的state就是有多个老虎机,我我赌博本人正在操作那一个,我们的agent需要学习到在不同状态下(老虎机)执行动作所带来的回报。

代码思路:(这里不太懂权重的含义之前的老虎机权重代表的是action,以及代码中一个老虎机的概率系数?)代码是用tensorflow构造的一个神经网络,输入状态并且得到动作的权重。通过策略梯度更新方法,我们的agent就可以学习到不同状态下如何获得最大的回报。

   程序段1:定义老虎机:使用三个多臂老虎机,不同的老虎机有不同的概率分布,因此需要执行不同的动作获取最佳结果。(这里不太懂“不同的老虎机有不同的概率分布”这句,可能是真的不会玩)

import tensorflow as tf
import tensorflow.contrib.slim as slim
import numpy as np


class contextual_bandit():
    def __init__(self):
        self.state = 0
        #List out our bandits. Currently arms 4, 2, and 1 (respectively) are the most optimal.
        self.bandits = np.array([[0.2,0,-0.0,-5],[0.1,-5,1,0.25],[-5,5,5,5]])
        self.num_bandits = self.bandits.shape[0]
        self.num_actions = self.bandits.shape[1]
        
    def getBandit(self):
        self.state = np.rand
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值