IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 强化学习笔记(1.0) -> 正文阅读

[人工智能]强化学习笔记(1.0)

1.强化学习

强化学习是一类算法,是让计算机实现从一开始什么都不懂,通过不断地尝试并更新自己的行为准则。从错误中学习,最后找到规律,最终达到目的的方法。

在计算机中,可以为每一次的行为进行打分。分为高分和低分,有了打分的经验,就可以尽量去选择高分,而避免选到低分。所以强化学习具有分数导向性。

强化学习的算法:

(1)通过价值选行为:Q learning、Sarsa(使用表格学习)、Deep?Q Network(使用神经网络学习)

(2)直接选行为:Policy?Gradients(基于概率)

(3)想象环境并从中学习:Model?based?RL

2.强化学习方法汇总

Model?free?和Model?based

强化学习的方法分为不理解所处环境的model-free方法和理解model-based方法。

在Model-free中,Q-learning、Sarsa、Policy?Gradients都是从环境中得到反馈然后学习。

而Model-based多出了一个虚拟环境,且比model-free多了想象力。

Model-free中,机器人智能等待真实世界的反馈,然后根据反馈做出行动。

Model-based,能够通过想象来判断接下来发生的状况,然后选择想象情况中最好的,然后采取下一步的策略。

【1】将强化学习分为基于概率和基于价值(分类方式)

基于概率是强化学习中最直接的一种,能通过感官分析所处环境,输出下一步要采取行动概率,然后根据概率采取行动,所以每种动作都有可能被选中。

基于价值的方法是输出所有动作的价值,它会直接选择价值最高的。

动作一般是不连续的,对于连续的动作,就能体现出基于概率的优势,而基于价值确实无能为力的。

通过基于概率的方法和基于价值的方法,又创造出了Actor-Critic.actor会基于概率做出动作,而critic会对动作给出价值,在原有的基于概率的policy?gradients上加速了学习过程。

【2】另一种分类方式,回合更新和单步更新

类比于玩游戏,回合更新是在一局游戏结束后进行总结,一局游戏中所有的转折点,然后更新行为准则。

单步更新,游戏中每一步都在更新。边玩边学习。

Monte-Carlo?learning和基础版的policy?gradients等是回合更新

Qlearning,Sarsa,升级版的policy?gradients等是单步更新。

现在大多数方法采用单步更新,因为单步更新更有效率。

【3】另一种分类方式,在线学习和离线学习

在线学习:本人在场,本人边玩边学习(on-policy)比如:Sarsa

离线学习:本人可以不在场,本人或者其他人玩,不必边玩边学习(off-policy)

Sarsa--在线学习

Q?learning,Deep-Q-Network--离线学习

3.为什么要用强化学习

强化学习(Reinforcement?Learning)是一个机器学习大家族的分支,由于近些年的技术的突破,和深度学习(Deep?Learning)的整合,使得强化学习有了进一步的运用。强化学习是让我们的程序从对当前环境完全陌生,成长为一个在环境中游刃有余的高手。

Q-learning

为了得到最优策略policy,我们考虑估算每一状态下每一种选择的价值value有多大。然后我们通过分析发现,每一个时间片的Q(s,a)和当前得到的Reward以及下一个时间片的Q(s,a)有关。Q-learning建立在虚拟环境下无限次的实验。这意味着可把上一次实验计算得到的Q值进行使用。这样,就可以根据当前的r,reward以及上一次实验中下一个时间片的Q值来更新当前Q值。下面来具体分析。

Q-learning的算法过程:
初始化Q(s,a),任意s属于S,a属于A(s),任意的数值,并且Q(terminal-state,.)=0

重复(对每一节episode):
初始化状态S

重复(对episode的每一步):
使用某一个policy比如(伊布西龙-greedy)根据状态S选取一个动作执行

执行完动作后,观察reward和新的状态S'

Q(St,At)<--Q(St,At)+alpha(R(t+1)+lanmdamax(a)Q(S(t+1),a)-Q(St,At))

S<--S'

循环直到S终止

对于Q-learning,首先就是要确定如何存储Q值,最简单的想法就是矩阵,一个s一个a对应一个Q值,所以可以把Q值想象为一个很大的表格,横列代表S(STATE),纵列代表a(ACTION),里面的数字代表Q值,如下所示:

Q(1,1)Q(1,2)Q(1,3)
Q(2,1)Q(2,2)Q(2,3)
Q(3,1)Q(3,2)Q(3,3)

这样就可以知道Q值是怎样的了,下面就是看Q表是如何更新的。

(1)初始化Q矩阵,比如说都设置为0

(2)开始实验。根据当前Q矩阵及伊布西龙-greedy方法获取动作。比如当前处在状态s1,那么在s1一列每一个Q值都是0,那么这个时候随便选择就可以。

0(s1,a1)00
000
000(s3,a3)

假设为选择a2动作,然后得到的reward是1,并且进入到s3状态,接下来我们要根据

Q(St,At)<--Q(St,At)+alpha(R(t+1)+lanmdamax(a)Q(S(t+1),a)-Q(St,At))

来更新Q值,这里我们假设alpha=1,lamda=1,也就是每一次都把目标Q值赋给Q。那么公式变成:

Q(St,At)=R(t+1)+max(a)Q(S(t+1),a)

所以在这里,就是

Q(s1,a2)=1+max(a)Q(S(3),a)

那么对应的s3状态,最大值是0,所以Q(s1,a2)=1+0=1,Q表格就变成:

0(s1,a1)1(s1,a2)0
000
000(s3,a3)

(3)接下来就是进入下一次动作,这次的状态是s3,假设选择动作a3,然后得到1的reward,状态变成s1,那么我们同样进行更新:

Q(s3,a3)=2+max(a)Q(s1,a)=2+1=3

所以Q表格就变成:

0(s1,a1)1(s1,a2)0
000
003(s3,a3)

(4)重复上面的方法。

就是这样,Q值在实验的同时反复更新。直到收敛。

DQN

为什么会产生DQN呢,那当然是因为Q-learning也有他的不足之处。我们已经知道,Q表是用表格来表示的Q(s,a),但是这只适合于少量的状态空间和行为空间,如果出现大量的数据的话,用表格就显得格外不妥。所以我们需要对状态的维度进行压缩,解决办法就是价值函数近似。

价值函数近似(Value?Function?Approximation)

什么是价值函数近似,其实很简单,就是用一个函数来表示Q(s,a).即

Q(s,a)=f(s,a)

这里的f可以是任意类型的函数,比如线性函数:

Q(s,a)=w1s+w2a+b? ?其中w1,w2,b就是函数f的参数

通过函数的表示,我们就可以无所谓s到底是多大的维度,反正最后都会通过矩阵运算输出为单值的Q。这就是价值函数近似的思路。

如果我们就用w来统一便是函数f的参数,那么就有

Q(s,a)=f(s,a,w)

为什么叫近似,因为我们并不知道Q值的实际分布情况,本质上就是一个函数来近似Q值的分布,所以,也可以说是Q(s,a)≈f(s,a,w)

高维状态输入,低维动作输出的表示问题

对于海量(state,action)数据来说,这是一个高维状态输入,低维动作输出。那么怎么来表示这个函数f呢。最简单的尝试,把高维s和低维a加在一起作为输入。但实际确有一些不妥。我们只需要对高维的状态进行降维,而不需要对动作也进行降维处理。

Q(s)≈f(s,w),只把状态s作为输入,但是输出的时候输出每一个动作的Q值,也就是输出一个向量[Q(s,a1),Q(s,a2),Q(s,a3),...,Q(s,an)],记住这里输出是一个值,只不过是包含了所有动作的Q值的向量而已。这样我们就只要输入状态s,而且还同时可以得到所有的动作Q值,也将更方便的进行Q-learning中动作的选择与Q值更新。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-07 13:51:15  更:2021-10-07 13:53:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 10:32:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码