| 第6行: |
第6行: |
| | | | |
| | ====基本概念==== | | ====基本概念==== |
| − | 强化学习(Reinforcement Learning, RL)是一种[[机器学习 Machine Learning|机器学习]]方法,强调[https://baike.baidu.com/item/%E6%99%BA%E8%83%BD%E4%BD%93/9446647 智能体](agent)通过与环境的交互,在试错过程中学习策略,以最大化累积奖励。其核心在于解决“探索-利用”之间的权衡:既要尝试新的动作以发现潜在的高奖励策略(探索),又要利用已知的最优策略以获得即时收益(利用) 。
| + | [[强化学习]](Reinforcement Learning, RL)是一种[[机器学习 Machine Learning|机器学习]]方法,强调[https://baike.baidu.com/item/%E6%99%BA%E8%83%BD%E4%BD%93/9446647 智能体](agent)通过与环境的交互,在试错过程中学习策略,以最大化累积奖励。其核心在于解决“探索-利用”之间的权衡:既要尝试新的动作以发现潜在的高奖励策略(探索),又要利用已知的最优策略以获得即时收益(利用) 。 |
| | | | |
| | ====面临的挑战==== | | ====面临的挑战==== |
| 第69行: |
第69行: |
| | ===深度学习与强化学习的融合背景=== | | ===深度学习与强化学习的融合背景=== |
| | | | |
| − | [[深度学习]]与强化学习的融合起源于两者互补的优势:强化学习擅长决策与策略优化,而深度学习擅长处理高维感知数据(如图像、语音、文本等)。传统强化学习方法在面对大规模状态空间(例如图像输入)时,因无法使用查表的方式存储 Q 值而表现不佳。为了解决这一瓶颈,研究者引入深度神经网络作为函数逼近器,用以估计状态-动作值函数(Q 值)或策略函数,从而大幅提升了强化学习在复杂环境中的泛化能力和实用性。 | + | [[深度学习]]与[[强化学习]]的融合起源于两者互补的优势:强化学习擅长决策与策略优化,而深度学习擅长处理高维感知数据(如图像、语音、文本等)。传统强化学习方法在面对大规模状态空间(例如图像输入)时,因无法使用查表的方式存储 Q 值而表现不佳。为了解决这一瓶颈,研究者引入深度神经网络作为函数逼近器,用以估计状态-动作值函数(Q 值)或策略函数,从而大幅提升了强化学习在复杂环境中的泛化能力和实用性。 |
| | | | |
| − | 这一融合的代表性成果是 2015 年 DeepMind 提出的深度 Q 网络(DQN),首次在无需人工特征设计的情况下,仅凭像素输入便在多款 Atari 游戏中实现了超越人类水平的表现。 | + | 这一融合的代表性成果是 2015 年 DeepMind 提出的深度 Q 网络(DQN)<ref name="dqn" />,首次在无需人工特征设计的情况下,仅凭像素输入便在多款 Atari 游戏中实现了超越人类水平的表现。 |
| | | | |
| | ===DQN 的提出及其在 Atari 游戏中的突破性成果=== | | ===DQN 的提出及其在 Atari 游戏中的突破性成果=== |
| − | [[文件:Atari游戏之breakout.gif|缩略图|举例:Atari游戏之breakout,引自<ref name="dqn">{{cite journal|last=Mnih|first=V.|last2=Kavukcuoglu|first2=K.|title=Human-level control through deep reinforcement learning|journal=Nature|year=2015|volume=518|pages=529–533|issue=7540|doi=10.1038/nature14236|pmid=25719670}}</ref>]]<br> | + | [[文件:Atari游戏之breakout.gif|缩略图|举例:Atari游戏之breakout,引自<ref name="dqn">{{cite journal|last=Mnih|first=V.|last2=Kavukcuoglu|first2=K.|title=Human-level control through deep reinforcement learning|journal=Nature|year=2015|volume=518|pages=529–533|issue=7540|doi=10.1038/nature14236|pmid=25719670}}</ref>]]Deep Q-Network(DQN)是由DeepMind团队在2015年发表的论文<ref name="dqn"></ref>中提出的深度强化学习算法。该研究首次将深度神经网络与Q-learning结合,直接从高维感官输入(如Atari游戏的像素)学习控制策略,而无需手工设计特征。DQN在Atari 2600游戏上的表现达到或超越人类水平,标志着深度强化学习在复杂任务中的重大突破。 |
| | | | |
| − | Deep Q-Network(DQN)是由DeepMind团队在2015年发表的论文<ref name="dqn"></ref>中提出的深度强化学习算法。该研究首次将深度神经网络与Q-learning结合,直接从高维感官输入(如Atari游戏的像素)学习控制策略,而无需手工设计特征。DQN在Atari 2600游戏上的表现达到或超越人类水平,标志着深度强化学习在复杂任务中的重大突破。
| + | DQN的核心创新包括使用深度[https://baike.baidu.com/item/卷积神经网络/17541100 卷积神经网络(CNN)]处理原始像素输入,模仿生物视觉系统的层次化特征提取能力。此外,为了解决传统强化学习在非线性函数逼近下的不稳定性,DQN引入了'''经验回放(Experience Replay)'''机制,通过存储并随机采样历史经验来打破数据相关性,提高训练稳定性。同时,采用目标网络分离技术,定期冻结目标Q网络的参数,减少训练过程中的波动。 |
| − | | |
| − | DQN的核心创新包括使用深度[https://baike.baidu.com/item/卷积神经网络/17541100 卷积神经网络(CNN)]处理原始像素输入,模仿生物视觉系统的层次化特征提取能力。此外,为了解决传统强化学习在非线性函数逼近下的不稳定性,DQN引入了经验回放(Experience Replay)机制,通过存储并随机采样历史经验来打破数据相关性,提高训练稳定性。同时,采用目标网络分离技术,定期冻结目标Q网络的参数,减少训练过程中的波动。 | |
| | | | |
| | 在实验中,DQN在49款Atari 2600游戏上进行测试,仅以游戏屏幕像素和分数作为输入,使用相同的网络架构和超参数。结果显示,DQN在43款游戏中超越了此前所有强化学习方法,并在29款游戏中达到人类专业测试员水平的75%以上。例如,在“Breakout”中,DQN自主发现“侧边挖隧道”的高分策略,最终得分远超人类玩家;在“Space Invaders”中,DQN学会忽略无关视觉特征,专注于关键状态价值预测。 | | 在实验中,DQN在49款Atari 2600游戏上进行测试,仅以游戏屏幕像素和分数作为输入,使用相同的网络架构和超参数。结果显示,DQN在43款游戏中超越了此前所有强化学习方法,并在29款游戏中达到人类专业测试员水平的75%以上。例如,在“Breakout”中,DQN自主发现“侧边挖隧道”的高分策略,最终得分远超人类玩家;在“Space Invaders”中,DQN学会忽略无关视觉特征,专注于关键状态价值预测。 |
| 第85行: |
第83行: |
| | | | |
| | ====提出的模型==== | | ====提出的模型==== |
| − | [[文件:WechatIMG402.jpg|缩略图|模型示意图,引自<ref name="dqn"></ref>]]<br> | + | [[文件:WechatIMG402.jpg|缩略图|模型示意图,引自<ref name="dqn"></ref>|替代=|500x500像素]]该示意图展示了深度Q网络(DQN)的典型架构设计,直观呈现了从原始游戏画面到控制指令的端到端处理流程。系统采用多级特征提取架构,左侧输入层接收预处理后的游戏画面(84×84像素,4帧堆叠),通过两个卷积层(Convolution)进行空间特征提取,其中网格状结构表示卷积核在空间维度上的特征映射过程。随后经由两个全连接层(Fully connected)实现高级特征的抽象与组合,最终输出层与游戏手柄控制指令直接关联,作为根据学到的动作价值Q来选择动作。该架构设计充分体现了DQN直接从原始像素学习控制策略的核心思想,通过卷积神经网络的特征提取能力与强化学习的决策机制相结合,实现了从感知到行动的完整映射。 |
| − | 该示意图展示了深度Q网络(DQN)的典型架构设计,直观呈现了从原始游戏画面到控制指令的端到端处理流程。系统采用多级特征提取架构,左侧输入层接收预处理后的游戏画面(84×84像素,4帧堆叠),通过两个卷积层(Convolution)进行空间特征提取,其中网格状结构表示卷积核在空间维度上的特征映射过程。随后经由两个全连接层(Fully connected)实现高级特征的抽象与组合,最终输出层与游戏手柄控制指令直接关联,作为根据学到的动作价值Q来选择动作。该架构设计充分体现了DQN直接从原始像素学习控制策略的核心思想,通过卷积神经网络的特征提取能力与强化学习的决策机制相结合,实现了从感知到行动的完整映射。 | |
| − | | |
| | ====模型的细节==== | | ====模型的细节==== |
| | 该研究在模型设计上体现了显著的普适性特征,采用单一网络架构处理所有Atari游戏任务,仅需输入原始像素、动作空间和生命值等基本先验知识。在算法实现方面,创新性地引入了经验回放机制(experience replay),通过循环缓冲区存储历史转移样本(s<sub>t</sub>, a<sub>t</sub>, r<sub>t</sub>, s<sub>t+1</sub>),并采用均匀随机采样方式抽取小批量(minibatch size=32)进行训练。这种设计有效打破了数据间的时间相关性,显著提高了样本利用率和训练稳定性。 | | 该研究在模型设计上体现了显著的普适性特征,采用单一网络架构处理所有Atari游戏任务,仅需输入原始像素、动作空间和生命值等基本先验知识。在算法实现方面,创新性地引入了经验回放机制(experience replay),通过循环缓冲区存储历史转移样本(s<sub>t</sub>, a<sub>t</sub>, r<sub>t</sub>, s<sub>t+1</sub>),并采用均匀随机采样方式抽取小批量(minibatch size=32)进行训练。这种设计有效打破了数据间的时间相关性,显著提高了样本利用率和训练稳定性。 |
| 第93行: |
第89行: |
| | 在奖励函数设计方面,研究者采用了归一化处理策略,将正向奖励设为+1,负向奖励设为-1,其余情况为0,这种标准化方法有效控制了误差范围并实现了跨游戏的统一训练速度。经验回放机制与奖励归一化的协同作用,使得算法能够在不同游戏间保持一致的性能表现。 | | 在奖励函数设计方面,研究者采用了归一化处理策略,将正向奖励设为+1,负向奖励设为-1,其余情况为0,这种标准化方法有效控制了误差范围并实现了跨游戏的统一训练速度。经验回放机制与奖励归一化的协同作用,使得算法能够在不同游戏间保持一致的性能表现。 |
| | | | |
| − | 针对大规模训练数据的高冗余特性,研究采用了RMSProp优化算法,其核心机制是通过将梯度除以其近期幅度的滑动平均值来调整学习率。训练过程中引入衰减系数ϵ,采用ϵ-greedy策略进行探索-利用权衡:在前1百万训练步中,ϵ值从1线性衰减至0.1,之后保持恒定。这种动态调整策略与经验回放机制相结合,有效避免了过早收敛问题,特别适合处理非平稳目标函数。值得注意的是,经验回放缓冲区的容量设置为1,000,000个样本,并在训练前预填充50,000帧数据以确保初始采样质量。
| + | 针对大规模训练数据的高冗余特性,研究采用了'''RMSProp优化算法''',其核心机制是通过将梯度除以其近期幅度的滑动平均值来调整学习率。训练过程中引入衰减系数ϵ,采用ϵ-greedy策略进行探索-利用权衡:在前1百万训练步中,ϵ值从1线性衰减至0.1,之后保持恒定。这种动态调整策略与经验回放机制相结合,有效避免了过早收敛问题,特别适合处理非平稳目标函数。值得注意的是,经验回放缓冲区的容量设置为1,000,000个样本,并在训练前预填充50,000帧数据以确保初始采样质量。 |
| | | | |
| | 为提高计算效率,研究者对所有游戏采用了跳帧技术(每4帧处理1帧),在保证性能无明显下降的前提下显著提升了训练速度。这种时间抽象方法与经验回放机制协同工作,使得样本复杂度相比在线策略降低了约10倍。实验结果表明,移除经验回放会导致性能下降58.7%,充分验证了该机制的必要性。这些创新设计共同构成了DQN算法的核心框架,为后续深度强化学习研究奠定了重要基础。 | | 为提高计算效率,研究者对所有游戏采用了跳帧技术(每4帧处理1帧),在保证性能无明显下降的前提下显著提升了训练速度。这种时间抽象方法与经验回放机制协同工作,使得样本复杂度相比在线策略降低了约10倍。实验结果表明,移除经验回放会导致性能下降58.7%,充分验证了该机制的必要性。这些创新设计共同构成了DQN算法的核心框架,为后续深度强化学习研究奠定了重要基础。 |
| | | | |
| | ====具体算法及其训练流程==== | | ====具体算法及其训练流程==== |
| − | [[文件:Algorithmdqn.jpg|缩略图|算法流程,引自<ref name="dqn"></ref>]]<br> | + | [[文件:Algorithmdqn.jpg|缩略图|算法流程,引自<ref name="dqn"></ref>|替代=|500x500像素]] |
| − | [[文件:Dqn算法流程.jpg|缩略图|算法流程示意图,引自<ref name="dqn"></ref>]]<br> | + | [[文件:Dqn算法流程.jpg|缩略图|算法流程示意图,引自<ref name="dqn"></ref>|替代=|500x500像素]]1. 初始化阶段 |
| − | 1. 初始化阶段 | |
| | *回放记忆库(Replay Memory):创建容量为N的经验存储库D,用于缓存历史转移数据。 | | *回放记忆库(Replay Memory):创建容量为N的经验存储库D,用于缓存历史转移数据。 |
| | *动作-价值函数网络: | | *动作-价值函数网络: |
| 第209行: |
第204行: |
| | 收敛的关键条件: | | 收敛的关键条件: |
| | | | |
| − | 充分探索:智能体必须保证所有对无限次访问,通常通过 ε-greedy 等策略实现。学习率衰减:学习率αt随时间衰减,但不宜过快。折扣因子限制:γ∈[0,1),保证未来奖励的影响递减。 | + | 充分探索:智能体必须保证所有对无限次访问,通常通过 ε-greedy 等策略实现。 |
| | + | |
| | + | 学习率衰减:学习率αt随时间衰减,但不宜过快。折扣因子限制:γ∈[0,1),保证未来奖励的影响递减。 |
| | | | |
| | 在满足适当的学习率调节、充分探索、以及折扣因子约束的情况下,Q-Learning 算法能够以概率 1 收敛到最优值函数Q∗,其数学表达为: | | 在满足适当的学习率调节、充分探索、以及折扣因子约束的情况下,Q-Learning 算法能够以概率 1 收敛到最优值函数Q∗,其数学表达为: |
| 第217行: |
第214行: |
| | ===Q-Learning 的局限性=== | | ===Q-Learning 的局限性=== |
| | | | |
| − | Q-Learning 广泛应用于多种决策任务。在实际应用中,它的局限性主要体现在以下几个方面:(1)状态-动作空间维度灾难(Curse of Dimensionality):Q-Learning 使用 Q 表来存储每个状态-动作对的价值。当状态或动作空间非常大时,Q 表的尺寸会急剧膨胀,导致存储和更新变得不切实际。 | + | Q-Learning 广泛应用于多种决策任务。在实际应用中,它的局限性主要体现在以下几个方面: |
| | + | |
| | + | (1)状态-动作空间维度灾难(Curse of Dimensionality):Q-Learning 使用 Q 表来存储每个状态-动作对的价值。当状态或动作空间非常大时,Q 表的尺寸会急剧膨胀,导致存储和更新变得不切实际。 |
| | | | |
| | 例如,在具有数百万状态和动作的环境中,传统的 Q 表方法可能无法有效处理。为了解决这个问题,通常采用函数逼近方法,如线性函数逼近或深度神经网络,以估计 Q 值,从而避免直接使用庞大的 Q 表。 | | 例如,在具有数百万状态和动作的环境中,传统的 Q 表方法可能无法有效处理。为了解决这个问题,通常采用函数逼近方法,如线性函数逼近或深度神经网络,以估计 Q 值,从而避免直接使用庞大的 Q 表。 |
| 第236行: |
第235行: |
| | DQN的⾏为值函数<math> Q(s,a;θ) </math> 利⽤神经⽹络逼近,属于⾮线性逼近。此处的值函数对应着⼀组参数,在神经⽹络⾥参数是每层⽹络的权重,用θ表示。 | | DQN的⾏为值函数<math> Q(s,a;θ) </math> 利⽤神经⽹络逼近,属于⾮线性逼近。此处的值函数对应着⼀组参数,在神经⽹络⾥参数是每层⽹络的权重,用θ表示。 |
| | 用公式表示的话,如下: | | 用公式表示的话,如下: |
| | + | |
| | <math> Q^{*}(s,a)≈Q(s,a;θ) </math> | | <math> Q^{*}(s,a)≈Q(s,a;θ) </math> |
| | | | |
| 第244行: |
第244行: |
| | | | |
| | 在论文中DQN所用的网络结构是三个卷积层加两个全连接层,网络的输入是经过预处理后的数据,预处理指的是将210*160的游戏图像转化为84*84的图像等操作,得到算法结构中的具体代码实现和网络结构见图和以下代码: | | 在论文中DQN所用的网络结构是三个卷积层加两个全连接层,网络的输入是经过预处理后的数据,预处理指的是将210*160的游戏图像转化为84*84的图像等操作,得到算法结构中的具体代码实现和网络结构见图和以下代码: |
| − | [[文件:网络结构.png|缩略图|网络具体结构]] | + | [[文件:网络结构.png|缩略图|网络具体结构|替代=|400x400像素]] |
| | <syntaxhighlight lang="python"> | | <syntaxhighlight lang="python"> |
| | # 预处理图像 | | # 预处理图像 |
| 第521行: |
第521行: |
| | ===Double DQN:解决 Q 值过高估计问题=== | | ===Double DQN:解决 Q 值过高估计问题=== |
| | ====Double DQN的思想==== | | ====Double DQN的思想==== |
| − | [[文件:在DQN与Double DQN中使用目标网络的学习结构.png|缩略图|在DQN与Double DQN中使用目标网络的学习结构]] | + | [[文件:在DQN与Double DQN中使用目标网络的学习结构.png|缩略图|在DQN与Double DQN中使用目标网络的学习结构|替代=|400x400像素]] |
| | 在经典的 Q-Learning 及其深度版本 DQN(Deep Q-Network)中,动作值函数的估计存在系统性偏差,即过高估计(overestimation bias)。这种偏差源自于最大化操作: | | 在经典的 Q-Learning 及其深度版本 DQN(Deep Q-Network)中,动作值函数的估计存在系统性偏差,即过高估计(overestimation bias)。这种偏差源自于最大化操作: |
| | | | |