强化学习可以观看莫凡的视频
https://www.bilibili.com/video/BV13W411Y75P?from=search&seid=15156991469397588392
参考:https://blog.csdn.net/weixin_42389349/article/details/82935123
一、强化学习
1.1 强化学习原理
强化学习任务通常使用马尔可夫决策过程(Markov Decision Process,简称MDP)来描述,具体而言:机器处在一个环境中,每个状态为机器对当前环境的感知;机器只能通过动作来影响环境,当机器执行一个动作后,会使得环境按某种概率转移到另一个状态;同时,环境会根据潜在的奖赏函数反馈给机器一个奖赏。综合而言,强化学习主要包含四个要素:状态、动作、转移概率以及奖赏函数。————周志华《机器学习》
根据上图,agent(智能体)在进行某个任务时,首先与environment进行交互,产生新的状态state,同时环境给出奖励reward,如此循环下去,agent和environment不断交互产生更多新的数据。强化学习算法就是通过一系列动作策略与环境交互,产生新的数据,再利用新的数据去修改自身的动作策略,经过数次迭代后,agent就会学习到完成任务所需要的动作策略。
1.2 强化学习和机器学习
强化学习是机器学习的分支之一,但是又区别于其他机器学习,主要体现在:
- 无特定数据,只有奖励信号
- 奖励信号不一定实时
- 主要研究时间序列的数据,而不是独立同分布的数据
- 当前行为影响后续数据
从1.1基本原理我们可以看的强化学习和其他机器学习算法监督学习和无监督学习的差别。监督学习和无监督学习都需要静态的数据,不需要与环境交互,数据输入到相关函数训练就行。而且对于有监督学习和无监督学习来说,有监督学习强调通过学习有标签的数据,预测新数据的标签,无监督学习更多是挖掘数据中隐含的规律。
1.3 学习记录
关于Qlearning的一些学习笔记如下
(1)Q Learning 算法如下
(2) Sarsa
二、深度强化学习
2.1 什么是深度强化学习
深度强化学习是深度学习与强化学习的结合,具体来说是结合了深度学习的结构和强化学习的思想,但它的侧重点更多的是在强化学习上,解决的仍然是决策问题,只不过是借助神经网络强大的表征能力去拟合Q表或直接拟合策略以解决状态-动作空间过大或连续状态-动作空间问题。
以Atari打砖块游戏为例,球和砖块任意不同的位置都可以相当于一个不同的状态,如此庞大的状态数量使得传统的强化学习不可能给每一个状态对应一个动作,而深度学习端到端的学习能力能够自动提取特征,训练出一个复杂的多层的具有很强表达能力的模型去拟合当前的状态,强化学习再去学会如何根据当前状态执行相应的动作,以获得最大的累计奖惩。
这其实可以看作两个步骤:原始图片到状态的映射,状态到动作的映射,分别由深度学习和强化学习来完成。而由于神经网络的黑箱性质,深度增强学习可以把整个过程通盘考虑,而不需要去表现中间的状态。
"深度学习"是为了让层数较多的多层神经网络可以训练,能够work而演化出来的一系列的 新的结构和新的方法。
深度学习可以是多层的神经网络,但不仅仅是多层的神经网络。
从广义上说深度学习的网络结构也是多层神经网络的一种。
传统意义上的多层神经网络是只有输入层、隐藏层、输出层。其中隐藏层的层数根据需要而定,没有明确的理论推导来说明到底多少层合适。
而深度学习中最著名的卷积神经网络CNN,在原来多层神经网络的基础上,加入了特征学习部分,这部分是模仿人脑对信号处理上的分级的。具体操作就是在原来的全连接的层前面加入了部分连接的卷积层与降维层,而且加入的是一个层级。
输入层 - 卷积层 -降维层 -卷积层 - 降维层 -- .... -- 隐藏层 -输出层
简单来说,原来多层神经网络做的步骤是:特征映射到值。特征是人工挑选。
深度学习做的步骤是 信号->特征->值。 特征是由网络自己选择。
2.2 主要内容
传统的强化学习局限于动作空间和样本空间都很小,且一般是离散的情境下。然而比较复杂的、更加接近实际情况的任务则往往有着很大的状态空间和连续的动作空间。当输入数据为图像,声音时,往往具有很高维度,传统的强化学习很难处理,深度强化学习就是把深度学习对于的高维输入与强化学习结合起来。
1、当现实问题很复杂,传统强化学习中的Q表巨大时,不利于搜索,与存储。
![]()
![]()
图1 图2 图3
图2,将状态和动作当做神经网络的输入值,经过神经网络分析后得到动作值,这样就没有必要再表格中记录Q值,直接由神经网络生成Q值。也可以通过图3,只输入状态值,生成所有动作值。然后按照Q learning的原则选择最大值的动作作为下一个要做的动作。(神经网络接收外部信息-眼睛鼻子耳朵接收,大脑加工,输出每种动作的值,通过强化学习的方法选择动作)
2、基于图3继续分析。
神经网络需要经过训练才能得到正确的值,那么在强化学习中神经网络是如何被训练的呢?
(1)需要a1,a2正确的Q值,这个Q值由QLearning中的Q现实来代替;同时需要一个Q估计,来实现神经网络的更新。
![]()
即:通过NN预测出Q(s2,a1)和Q(s2,a2)的值为Q(s2)估计,选择Q估计中的最大值来换取奖励。
2013和2015年DeepMind的Deep Q Network(DQN)可谓是将两者成功结合的开端,它用一个深度网络代表价值函数,依据强化学习中的Q-Learning,为深度网络提供目标值,对网络不断更新直至收敛。2015 DQN nature算法可以看下图:
(3)DQN算法