————————————————————2020.8.11更新————————————————————

强化学习的一些相关概念

  • 智能体(Agent): 智能体对环境进行观察,决策出行动,获得一个从环境返回的奖励
  • 决策(Decision):意识层面的
  • 行动(Action , a):物质层面的
  • 环境(Environment):与智能体交互的对象
  • 状态(State,s):是历史信息的函数,包含所有已有的信息。
  • 奖励(Reward,R):是智能体采取行动后环境的一个反馈
  • 策略(Policy):是状态到动作的函数
  • 价值函数(Value function):是评价状态的一个指标
  • 模型(Model):是个体对环境的建模

例题 1

背景描述:假设某个楼层共有 5 个房间,房间之间通过一道门相连,正如下图所示。我们将
房间编号为房间 0 到房间 4,楼层的外部,编号为 5。注意到房间 1 和房间 4 都可以直接通
到外部 5。


问题:假设有一个机器人对楼层的布局事先不知道,如何让一个机器人,从任意房间出发,能走到外面吗?

从奖励矩阵 R 出发来理解各个概念:
智能体(Agent):机器人
决策(Decision):从当前所在房间准备往哪里去
行动(Action):决策好到哪里去后,行动到那里去
环境(Environment):楼层布局
状态(State):当前所在房间
奖励(Reward):从当前房间走到另一个房间的奖励值(奖励矩阵中-1 表示无效值)

奖励矩阵 R(state, action)或 R(s, a): 每个元素值 R(s,a)表示在当前状态 s 下,采取行动 a 后
的即时奖励。

Q-学习简介

Q 矩阵:跟 R 矩阵维数相同,不同的是 Q(s, a)表示在当前状态 s 下,采取行动 a 后的后续累计奖励。是状态 s 和行动 a的函数, Q(s, a)用于评价当前状态 s 下,采取行动 a的结果好坏,Q也叫动作价值函数

假定已经获得一个最优的 Q 矩阵,则对任意状态 s 出发,到达目标状态的算法如下

步骤 1:随机选择一个初始状态 s
步骤 2:确定行动 a,使它满足 a = argmax{ Q(s , a~\widetilde{a}a)},a~\widetilde{a}a∈A ,A是所有可能行动集合
步骤 3:令 s = s~\widetilde{s}s,(s~\widetilde{s}s为执行动作 a 后对应的下一个状态)
步骤 4:返回步骤 2

假定初始状态为 2,根据最优 Q 矩阵,有 2→3→1(4) →5→5;
假定初始状态为 1,根据最优 Q 矩阵,有 1→5→5;
假定初始状态为 0,根据最优 Q 矩阵,有 0→4→5→5;

如何获取最优的 Q 矩阵?
答案:Q-学习算法

Q-学习算法流程

步骤 1:给定奖励矩阵 R 和学习参数 γ,初始化 Q = 0,
步骤 2:随机选择一个初始状态 s,在当前状态 s 的所有可能行动中选取一个行动 a
步骤 3:利用选定的行为 a , 得到下一个状态 s~\widetilde{s}s
步骤 4:按照转移规则,计算Q(s,a)
步骤 5:s = s~\widetilde{s}s,判断得到的Q矩阵是否收敛,不收敛则返回步骤 2,收敛则退出,完成q矩阵的学习

matlab算法如下

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 机器人如何从五个房间中的任意一个走出来?
% 中南大学 自动化学院 智能控制与优化决策课题组
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Q学习算法
% function Q = Reinforcement_Learning(R,gamma)
clear all
clc;
format short    %显示4位小数
format compact  %压缩空格% 输入: R and gamma
% R:即时奖励矩阵; 行、列表示状态
% -1 = 表示无效值
R = [-1,-1,-1,-1,0, -1;-1,-1,-1,0,-1, 100;-1,-1,-1,0,-1, -1;-1, 0, 0,-1,0, -1;0,-1,-1,0,-1, 100;-1,0, -1,-1,0, 100];
gamma = 0.80;            % 学习参数N = size(R,1); % R的行数,所有状态的个数,一行代表一个状态的所有信息
Q  = zeros(size(R));     % 初始化Q矩阵,其行数和列数和R一样。Q初始全是0
Q1 = ones(size(R))*inf;  % 前一次比较对象,判定收敛,Q初始全是无穷大
count = 0;               % 计数器for episode = 0:50000% 产生随机初始状态state = ceil(N*rand);    %产生1-N之间的随机数% 从当前状态出发,选择一个行动x = find(R(state,:)>=0);   % 所有可能行动,R(state,:)代表R的第state行,find(R(state,:)>=0)代表R的第state行里面大于0的数的列位置集合,是个行向量,%上一句代码理解成找出当前状态可以向那些状态转移if ~isempty(x)   %如果有可以转移的x1= x((ceil(length(x)*rand)));                  % 随机选择一个行动,理解成随机向一个状态转移,x1代表第几行(即为第几个状态)endqMax = max(Q,[],2);   %返回矩阵中每行的最大值,是一个列向量,大小是Q的行数,每行最大值物理含义是这个状态下的最好奖励(最好出路)Q(state,x1) = R(state,x1) + gamma*qMax(x1);   % 转移规则。qMax(x1)代表x1这个状态下的最好奖励% 判定是否收敛  其实就是前后两个Q矩阵的差很小就认为是收敛了if sum(sum(abs(Q1-Q)))<0.0001 && sum(sum(Q>0)) %sum(sum(Q>0))代表Q大于0的数的个数,sum(sum(abs(Q1-Q)))代表Q1与Q对应位置相减绝对值之和if count > 1000         %且学习了超过1千次disp(strcat('强化学习的总次数: ',num2str(episode)));     break                %跳出for循环else                    %没有学习了超过1千次count = count+1; endelse  %不收敛,差距很大Q1 = Q;  %把最新的一个Q作为比较对象,覆盖掉原来的count = 0; endend% 归一化
Qmax = max(max(Q));%max(max(Q))代表Q里面最大的元素,max(Q)代表每一列最大的元素
if Qmax >0Q = 100*Q/Qmax;
end
Q

本文来源于中南大学 自动化学院 智能控制与优化决策课题组周晓君老师的学习笔记,加了一些我自己对代码的注释,

还有两个问题未解决

1、Q-学习算法的转移规则可以换成其他的公式来产生新解迭代吗

2、除了Q-学习算法还可以用其他方法来解决Q矩阵的求取吗?

继续学强化学习,看看有啥新的体会与想法没

强化学习学习什么东西?

1、Q矩阵,动作价值函数算出来的一个矩阵,其中的Q(s,a)评价当前状态 s 下,采取行动 a 后的结果好坏程度。

2、策略函数π,π(s,a)代表当前状态 s 下,采取行动 a 的一个概率。当前状态下所有行动的概率和为1.

只要学到其中一个就可以实现对智能体的控制了。上面代码显示的就是第一种——Q矩阵的学习

强化学习——Q学习算法相关推荐

  1. 强化学习q学习求最值_通过Q学习更深入地学习强化学习

    强化学习q学习求最值 by Thomas Simonini 通过托马斯·西蒙尼(Thomas Simonini) 通过Q学习更深入地学习强化学习 (Diving deeper into Reinfor ...

  2. 强化学习q学习求最值_Q学习简介:强化学习

    强化学习q学习求最值 by ADL 通过ADL Q学习简介:强化学习 (An introduction to Q-Learning: reinforcement learning) This arti ...

  3. 强化学习 补充笔记(TD算法、Q学习算法、SARSA算法、多步TD目标、经验回放、高估问题、对决网络、噪声网络)

    学习目标: 深入了解马尔科夫决策过程(MDP),包含TD算法.Q学习算法.SARSA算法.多步TD目标.经验回放.高估问题.对决网络.噪声网络.基础部分见:强化学习 马尔科夫决策过程(价值迭代.策略迭 ...

  4. python强化学习之Q-learning算法

    强化学习是什么? 简单来说就是通过感知周围环境而行动,以取得最大化收益的一个过程. 其中Q-learning算法的感知状态为离散,无规律. 华丽的分割线------------------------ ...

  5. Deep Q Network 算法

     Deep Q Network 算法前置基础知识: Reinforcement Learning 基本概念 Q Leaning算法原理 深度学习神经网络知识 Tensorflow.Pytorch.Py ...

  6. 神经网络+深度学习+增强学习

    神经网络+深度学习+增强学习 神经网络 像飞机的灵感来源于鸟类,雷达的灵感来源于蝙蝠,红外线的灵盖来源于蛇,而本文要讨论的神经网络灵感来源于我们自己,人类大脑的神经元结构.从神经元结构被提出,到时下火 ...

  7. 强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例----Sarsa算法, Q学习, 期望Sarsa算法

    强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例 5.1 TD预测 例5.1 回家时间的估计 5.2 TD预测方法的优势 例5.2 随机移动 5.3 ...

  8. 【Matlab】强化Q学习算法求解迷宫问题

    本篇博客向大家介绍一个利用强化Q学习求解迷宫问题的实例. 在这个问题中,机器人只能向上下左右四个方向移动.在每一步,基于机器人动作的结果,它被教导和再教导是否是一个好的动作,最终整个过程被一次又一次地 ...

  9. 强化学习(二):Q learning 算法

    强化学习(一):基础知识 强化学习(二):Q learning算法 Q learning 算法是一种value-based的强化学习算法,Q是quality的缩写,Q函数 Q(state,action ...

  10. 【强化学习笔记】从 “酒鬼回家” 认识Q Learning算法

    1.背景 现在笔者来讲一个利用Q-learning 方法帮助酒鬼回家的一个小例子, 例子的环境是一个一维世界, 在世界的右边是酒鬼的家.这个酒鬼因为喝多了,根本不记得回家的路,只是根据自己的直觉一会向 ...

最新文章

  1. python CST中国标准时间格式转换
  2. CentOS6.5环境使用keepalived实现nginx服务的高可用性及配置详解
  3. Redis 五种数据结构以及三种高级数据结构解析以及使用
  4. 关于javascript遍历对象
  5. 前端学PHP之面向对象系列第六篇——简单图形面积计算器实现
  6. android log显示
  7. mysql连接命令行,从命令行连接到MySQL
  8. html界面选择按钮没法取消,如何使用JavaScript取消选择按钮
  9. 虚拟机管理解决方案逐个看:微软篇
  10. vb集合类接收子类事件时,给集合类赋值应注意的一个定义
  11. drupal.behavior 和 document.ready 没有直接的关系
  12. MIT 线性代数习题
  13. 【Kubernets】——搭建k8s多节点集群
  14. 用R做GLM的Summary相关指标解释——以Poission regression为例
  15. 企业的商业模式和盈利模式概述,业务流程再造
  16. Modbus的常见问题解答:RS485总线连接采用什么样的线缆?RS485总线为什么要采用手拉手结构?RS485总线在连接时为什么要屏蔽接地?什么叫共模干扰和差模干扰?如何消除通讯线上的干扰?
  17. Hibernate 查询Criterion数据
  18. 前一段时间比较火的刷网课平台源码,带数据库和教程
  19. Matlab安装失败问题
  20. cv2.imread

热门文章

  1. 华为交换机配置console口和telnet密码实例
  2. Redies tutorial
  3. 几种短距离无线通信技术及未来展望
  4. JAVA程序修改PDF内容_java 修改pdf
  5. php 12306模拟登录,12306 selenium 模拟登录
  6. (休息几天)读曼昆之微观经济学——供给需求和政府政策
  7. dll文件保存到服务器,dll是什么文件?dll文件怎么打开?
  8. java无头浏览器_Java + Selenium 无头浏览器模式
  9. 浅谈安科瑞餐饮油烟在线监测系统在餐饮油烟治理中起到的作用
  10. pyqt5 加载gif_PyQt5:在Qmovi中重新加载gif