51cto强化学习(2)Q—learning学习笔记

我们假设一个场景,一间房子,分为0,1,2,3,4五个屋子,5号所代表的是屋子以外。此时此刻,一个智能体从2号屋子开始走,目标是5号室外。我们根据左图的信息,抽象出右图的路线图。

我们为这个问题设计奖励函数的值,奖励函数值为0的时候表示两点之间可以到达。由于最终的目标是5号室外,所以我们将1——5,4——5,5——5这三段的奖励函数设置为100。

我们将这段抽象为一个矩阵,纵向表示为状态,横向表示为下一步的操作。可以达到的我们可以设置为0,不可以达到的我们设置为-1,而最终到达为5的三个我们设置为100。由此我们抽象出一个矩阵,以此表示奖励函数R。

Q-learning的精髓便是计算q表,出现q表之后,智能体根据q表来决策自身究竟是进行什么样的action。智能体到达什么状态s,之后查看q表,之后选择q表中这一行中最大的那个那个action来做。

下面我们来探索一下建立q表的过程:

step1:给定参数γ和reward矩阵R:其中参数γ是衰减系数,reward矩阵R是回报矩阵。这两部分需要在建立q表之前人为的设置好。

step2:初始化Q表,并令Q为0矩阵。:在此我们说明一下,reward矩阵R和Q表是两个矩阵,两者并不是同一个矩阵,两者的关联仅仅在于两者的行数和列数是一致的。

step3:for each episode:就是第三步必须要实现一个完整的过程,就是每一次迭代,必须从当前的点,必须要到达结尾的终点,方可停止,不可以没有到达终点,便停止这次的过程。

3.1:随机选择一个初始状态s:这一步是随机进行的

3.2:若未到达目标状态,请执行以下几步:

(1)在当前状态s的所有可能行为中选取一个行为a:这一步也是随机进行的

(2)利用选定的行为a得到下一个状态:这一步顺理成章,s确定,a确定,势必会得到下一个状态

(3)按照最上方公式计算Q(s,a):最上方公式表示,一个点的q值 = 当前点对应的R值+γ*下一个状态q值得最大值。这样我们便得到了这个点得q值

(4)令下一状态为当前状态

下面我们举一个例子来计算一点得q值:

首先我们先初始化γ,R矩阵便是最上方的R矩阵。之后我们初始化Q表(全部为0),并且和R表是相同形状的。

之后,我们随机的选择状态s1,可以看到s1中可以继续的有a3和a5,我们随机的选择,这次我们选择a5。

之后,我们到达状态5以后发生什么呢?状态5以后的下一步状态将是1,4,5。但是Q表中(5,1),(5,4),(5,5)都是0,所以在最后计算Q值的时候第二项是0,只有第一项的值

下面进行下一次迭代,依旧是随意得选择一个s,再从中随意得选取一个a,之后按照公式计算价值。

经过不断的迭代,最终得q表将会收敛到上图左侧得形式。我们可以看出最后得数字比较大,为了方便,我们可以对其进行归一化,找到左图中最大得数500,对所有得数字都处以500,再加上百分号,获得百分比,得到右侧得数组。根据右侧得数组可以转化为状态转化图,这样在进行决策得时候就可以按照q表中得进行决策了。

以上就是Q-learning得全部过程。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值