郑州网站建,浙江网站建设价格低,住房和城乡建设官网证书查询,网站定位代码深入详解强化学习之常用算法#xff1a;Q-Learning与策略梯度 强化学习#xff08;Reinforcement Learning, RL#xff09;作为机器学习的一个重要分支#xff0c;近年来在多个领域取得了显著成果。从棋类游戏的人机对战到自主驾驶汽车#xff0c;强化学习技术展示了其强大…深入详解强化学习之常用算法Q-Learning与策略梯度 强化学习Reinforcement Learning, RL作为机器学习的一个重要分支近年来在多个领域取得了显著成果。从棋类游戏的人机对战到自主驾驶汽车强化学习技术展示了其强大的潜力。本文将深入探讨强化学习中的常用算法重点介绍Q-Learning和策略梯度方法详细阐述其关键概念、核心原理、示例及主要应用帮助读者全面掌握智能体与环境的交互机制。 目录
深入详解强化学习之常用算法Q-Learning与策略梯度
1. 引言
2. 强化学习概述
关键概念
智能体与环境的交互机制
3. Q-Learning
核心原理
算法步骤
示例网格世界Grid World
主要应用
4. 策略梯度方法
核心原理
常见策略梯度算法
REINFORCE
Actor-Critic
示例CartPole平衡
主要应用
5. 比较与选择
6. 深度强化学习
深度Q网络DQN
深度确定性策略梯度DDPG
7. 总结与展望
8. 参考资料 1. 引言 强化学习是一种通过与环境交互来学习最优策略的机器学习方法。与监督学习和无监督学习不同强化学习关注的是智能体Agent在环境中采取行动以最大化累积奖励的过程。理解强化学习中的常用算法如Q-Learning和策略梯度方法对于解决复杂的决策和控制问题至关重要。
2. 强化学习概述
关键概念
在深入算法之前理解强化学习的基本概念至关重要
智能体Agent执行动作以与环境互动的实体。环境Environment智能体互动的外部系统对智能体的动作做出反应。状态State, S环境在某一时刻的具体情况。动作Action, A智能体在特定状态下可以采取的行为。奖励Reward, R智能体执行动作后环境给予的反馈信号用于指导学习。策略Policy, π智能体选择动作的策略可以是确定性的π(s) a或随机的π(a|s)。价值函数Value Function, V评估在状态s下智能体未来能获得的累积奖励。状态-动作价值函数Q-Function, Q评估在状态s下采取动作a智能体未来能获得的累积奖励。
智能体与环境的交互机制
强化学习的核心是通过试错与环境进行互动智能体在每一步选择一个动作环境返回一个奖励和下一个状态。智能体的目标是学习一个策略使得在长期内累积的奖励最大化。这一过程可以形式化为马尔可夫决策过程Markov Decision Process, MDP。
3. Q-Learning
核心原理
Q-Learning是一种基于价值的强化学习算法通过学习状态-动作价值函数Q(s, a)实现最优策略的逼近。Q-Learning的核心思想是通过迭代更新Q值使其逐步逼近真实的Q值。
Q-Learning的更新公式为
\[ Q(s_t, a_t) \leftarrow Q(s_t, a_t) \alpha \left[ r_{t1} \gamma \max_{a} Q(s_{t1}, a) - Q(s_t, a_t) \right] \]
其中
\( s_t \)是当前状态\( a_t \) 是当前动作\( r_{t1} \) 是执行动作后的奖励\( \gamma \) 是折扣因子通常介于0和1之间\( \alpha \) 是学习率
算法步骤
Q-Learning的基本步骤如下
初始化Q表Q(s, a)为任意值通常为0。对于每一个回合 初始化环境获取初始状态s。对于每一个时间步 根据当前策略如ε-贪心策略选择动作a。执行动作a观察奖励r和下一个状态s。更新Q值 \[ Q(s, a) \leftarrow Q(s, a) \alpha \left[ r \gamma \max_{a} Q(s, a) - Q(s, a) \right] \] 将状态s更新为s。若达到终止状态则结束当前回合。
示例网格世界Grid World
下面通过一个简单的网格世界展示Q-Learning的应用。假设智能体在一个4x4的网格中移动目标是从起点到达终点。
import numpy as np
import random# 定义网格世界
class GridWorld:def __init__(self):self.size 4self.start (0, 0)self.end (3, 3)self.state self.startself.actions [up, down, left, right]def reset(self):self.state self.startreturn self.statedef step(self, action):x, y self.stateif action up:x max(x - 1, 0)elif action down:x min(x 1, self.size - 1)elif action left:y max(y - 1, 0)elif action right:y min(y 1, self.size - 1)self.state (x, y)if self.state self.end:return self.state, 1, True # 奖励1终止else:return self.state, 0, False # 奖励0继续# Q-Learning算法
def q_learning(env, episodes500, alpha0.1, gamma0.9, epsilon0.1):Q {}for x in range(env.size):for y in range(env.size):Q[(x, y)] {a: 0 for a in env.actions}for episode in range(episodes):state env.reset()done Falsewhile not done:# ε-贪心策略if random.uniform(0, 1) epsilon:action random.choice(env.actions)else:action max(Q[state], keyQ[state].get)next_state, reward, done env.step(action)# Q值更新Q[state][action] alpha * (reward gamma * max(Q[next_state].values()) - Q[state][action])state next_statereturn Q# 训练代理
env GridWorld()
Q q_learning(env)# 展示学习后的策略
def print_policy(Q, env):policy_actions {up: ↑, down: ↓, left: ←, right: →}for x in range(env.size):row for y in range(env.size):if (x, y) env.end:row G else:action max(Q[(x, y)], keyQ[(x, y)].get)row policy_actions[action] print(row)print_policy(Q, env)
代码说明 GridWorld类定义一个4x4的网格环境智能体从(0,0)出发目标是到达(3,3)。每次动作后如果到达终点获取奖励1并终止回合否则奖励为0。 q_learning函数实现Q-Learning算法初始化Q表采用ε-贪心策略选择动作并根据奖励和最大Q值更新Q表。 print_policy函数展示学习后的策略用箭头表示智能体在不同状态下的最佳动作。
结果展示 → ↓ → ↓ ↑ → → ↓ ↑ ↑ → ↓ ← ← ← G
上述策略表明智能体在各个状态下最优的动作方向通过学习能够有效地从起点到达终点。
上述策略表明智能体在各个状态下最优的动作方向通过学习能够有效地从起点到达终点。
主要应用
Q-Learning广泛应用于各种决策和控制问题主要包括
游戏AI如Atari游戏、棋类游戏等智能体的策略学习。机器人导航机器人在未知环境中的路径规划与避障。推荐系统根据用户行为动态调整推荐策略。自动驾驶车辆在复杂交通环境中的决策与控制。
4. 策略梯度方法
核心原理
策略梯度方法是基于策略优化的强化学习算法直接优化策略函数π(a|s; θ)使得预期累积奖励最大化。与基于价值的方法如Q-Learning不同策略梯度不依赖于价值函数而是直接通过梯度上升来优化策略参数。
目标函数
\[ J(\theta) \mathbb{E}_{\pi_\theta} \left[ \sum_{t0}^{T} \gamma^t r_t \right] \]
策略梯度的更新规则基于梯度上升
\[ \theta \leftarrow \theta \alpha \nabla_\theta J(\theta) \]
其中梯度可以通过“策略梯度定理”得到
\[ \nabla_\theta J(\theta) \mathbb{E}_{\pi_\theta} \left[ \sum_{t0}^{T} \nabla_\theta \log \pi_\theta(a_t|s_t) G_t \right] \]
其中\( G_t \) 是从时间步t开始的累积奖励。
常见策略梯度算法
REINFORCE
REINFORCE是最基础的策略梯度算法又称为蒙特卡罗策略梯度。其特点是使用完整的回合数据进行更新。
算法步骤
1. 初始化策略参数θ。 2. 对于每一个回合 生成一个完整的回合记录状态、动作和奖励。 计算每个时间步的累积奖励 \( G_t \)。 更新策略参数 \[ \theta \leftarrow \theta \alpha \sum_{t} \nabla_\theta \log \pi_\theta(a_t|s_t) G_t \]
Actor-Critic
Actor-Critic结合了策略梯度和值函数的方法利用一个“演员”Actor来更新策略一个“评论家”Critic来评估当前策略的价值函数从而提高学习效率。
算法步骤
1. 初始化策略参数θActor和价值函数参数ϕCritic。 2. 对于每一个时间步 根据策略π(a|s; θ)选择动作a。 执行动作a观察奖励r和下一个状态s。 计算TD误差 \[ \delta r \gamma V(s; \phi) - V(s; \phi) \] 更新Critic参数 \[ \phi \leftarrow \phi \alpha_c \delta \nabla_\phi V(s; \phi) \] 更新Actor参数 \[ \theta \leftarrow \theta \alpha_a \delta \nabla_\theta \log \pi(a|s; \theta) \]
示例CartPole平衡
以经典的CartPole环境为例演示策略梯度方法的应用。智能体需要通过移动小车使得杆子保持平衡。
import gym
import numpy as np
import tensorflow as tf
from tensorflow.keras import layers# 创建环境
env gym.make(CartPole-v1)num_states env.observation_space.shape[0]
num_actions env.action_space.n# 构建策略网络
model tf.keras.Sequential([layers.Dense(24, activationrelu, input_shape(num_states,)),layers.Dense(24, activationrelu),layers.Dense(num_actions, activationsoftmax)
])optimizer tf.keras.optimizers.Adam(learning_rate0.01)
gamma 0.99# 策略梯度算法
def policy_gradient():state env.reset()state np.reshape(state, [1, num_states])done Falserewards []actions []states []while not done:action_probs model(state).numpy()[0]action np.random.choice(num_actions, paction_probs)next_state, reward, done, _ env.step(action)next_state np.reshape(next_state, [1, num_states])states.append(state)actions.append(action)rewards.append(reward)state next_state# 计算累积奖励discounted_rewards []cumulative 0for r in rewards[::-1]:cumulative r gamma * cumulativediscounted_rewards.insert(0, cumulative)discounted_rewards np.array(discounted_rewards)discounted_rewards - np.mean(discounted_rewards)discounted_rewards / (np.std(discounted_rewards) 1e-8)with tf.GradientTape() as tape:loss 0for logit, action, reward in zip(model(np.concatenate(states)), actions, discounted_rewards):loss -tf.math.log(logit[action]) * rewardgrads tape.gradient(loss, model.trainable_variables)optimizer.apply_gradients(zip(grads, model.trainable_variables))return np.sum(rewards)# 训练智能体
episodes 1000
for episode in range(episodes):total_reward policy_gradient()if (episode 1) % 100 0:print(fEpisode: {episode 1}, Total Reward: {total_reward})env.close()
代码说明
环境创建使用OpenAI Gym中的CartPole环境。策略网络构建一个两层隐藏层的神经网络输出层使用Softmax激活函数表示每个动作的概率。策略梯度函数policy_gradient 运行一个完整的回合记录状态、动作和奖励。计算每个时间步的折扣累积奖励并进行标准化。使用梯度带Gradient Tape计算损失函数的梯度并更新策略网络参数。训练过程进行1000个回合的训练每100个回合输出一次总奖励。
结果说明
随着训练的进行智能体通过策略梯度方法逐步学会保持杆子的平衡累积奖励不断增加最终能够稳定地控制小车平衡杆子。
主要应用
策略梯度方法在需要连续动作空间和复杂策略优化的任务中表现优异主要应用包括
机器人控制如机械臂的精确控制、自主导航。游戏AI如复杂策略游戏中的智能对手。金融交易模拟和优化交易策略进行高频交易决策。自然语言处理如对话生成、文本摘要等任务中的策略优化。
5. 比较与选择
Q-Learning和策略梯度方法各有优缺点选择合适的算法取决于具体应用场景
Q-Learning 优点 简单易实现适用于离散动作空间。理论基础扎实收敛性良好。缺点 难以扩展到高维和连续动作空间。对于大型状态空间Q表难以存储和更新。策略梯度方法 优点 适用于高维和连续动作空间。能够直接优化策略处理复杂策略类型。缺点 收敛速度较慢易受局部最优影响。需要大量样本进行训练训练不稳定性较高。
在实际应用中深度强化学习Deep Reinforcement Learning, DRL结合了深度学习与强化学习的优势采用神经网络近似价值函数或策略广泛应用于复杂任务中。
6. 深度强化学习
深度强化学习通过使用深度神经网络作为函数逼近器解决了传统强化学习在高维状态空间和复杂任务中的局限性。典型的深度强化学习算法包括深度Q网络Deep Q-Network, DQN和深度确定性策略梯度Deep Deterministic Policy Gradient, DDPG等。
深度Q网络DQN
DQN通过使用神经网络近似Q函数解决了Q-Learning在高维状态空间中的问题。DQN引入经验回放和目标网络提升了训练的稳定性和效率。
关键技术
经验回放Experience Replay将智能体的经验存储在缓冲区中随机采样进行训练打破数据的时间相关性。目标网络Target Network使用一个固定的目标网络来稳定Q值的更新减少训练过程中的震荡。
深度确定性策略梯度DDPG
DDPG是一种适用于连续动作空间的深度强化学习算法结合了策略梯度和确定性策略的方法。DDPG使用两个神经网络一个是策略网络Actor另一个是价值网络Critic通过经验回放和软更新机制提升训练稳定性。
7. 总结与展望
本文深入探讨了强化学习中的两大主流算法Q-Learning和策略梯度方法详细介绍了其关键概念、核心原理、示例及主要应用。Q-Learning作为基于价值的方法适用于离散动作空间简单易实现而策略梯度方法适用于复杂和连续动作空间能够直接优化策略。通过对比与分析可以根据具体任务选择合适的算法。
随着计算能力的提升和深度学习技术的发展深度强化学习DRL进一步拓展了强化学习的应用范围解决了许多传统方法难以应对的复杂问题。未来强化学习将在更多领域发挥重要作用如智能制造、智能医疗、无人驾驶等推动人工智能技术的进一步发展。
8. 参考资料
《强化学习An Introduction》Richard S. Sutton, Andrew G. Barto 著DeepMind的DQN论文Mnih, V., et al. (2015). Human-level control through deep reinforcement learning.OpenAI Gym官方文档Gym DocumentationTensorFlow官方网站https://www.tensorflow.org/PyTorch官方网站PyTorch 【此文为作者经过搜集资料整理及编辑而成仅供学习者参考。本文属于个人学习过程中对于人工智能相关知识概念进行的整合作品如需更详细的信息和扩展内容建议参考相关专业书籍和学术论文若有不当之处可进行指正共同学习交流】 文章转载自: http://www.morning.cykqg.cn.gov.cn.cykqg.cn http://www.morning.wwgpy.cn.gov.cn.wwgpy.cn http://www.morning.ljcf.cn.gov.cn.ljcf.cn http://www.morning.sloxdub.cn.gov.cn.sloxdub.cn http://www.morning.txnqh.cn.gov.cn.txnqh.cn http://www.morning.bybhj.cn.gov.cn.bybhj.cn http://www.morning.mszwg.cn.gov.cn.mszwg.cn http://www.morning.xfyjn.cn.gov.cn.xfyjn.cn http://www.morning.lsqmb.cn.gov.cn.lsqmb.cn http://www.morning.wdshp.cn.gov.cn.wdshp.cn http://www.morning.jppb.cn.gov.cn.jppb.cn http://www.morning.bqrd.cn.gov.cn.bqrd.cn http://www.morning.xstfp.cn.gov.cn.xstfp.cn http://www.morning.ryznd.cn.gov.cn.ryznd.cn http://www.morning.mdwb.cn.gov.cn.mdwb.cn http://www.morning.baohum.com.gov.cn.baohum.com http://www.morning.qlkjh.cn.gov.cn.qlkjh.cn http://www.morning.stfdh.cn.gov.cn.stfdh.cn http://www.morning.kkjlz.cn.gov.cn.kkjlz.cn http://www.morning.zrgdd.cn.gov.cn.zrgdd.cn http://www.morning.jcxgr.cn.gov.cn.jcxgr.cn http://www.morning.ydwnc.cn.gov.cn.ydwnc.cn http://www.morning.mwbqk.cn.gov.cn.mwbqk.cn http://www.morning.mgkb.cn.gov.cn.mgkb.cn http://www.morning.tgpgx.cn.gov.cn.tgpgx.cn http://www.morning.sgjw.cn.gov.cn.sgjw.cn http://www.morning.qzsmz.cn.gov.cn.qzsmz.cn http://www.morning.rjjjk.cn.gov.cn.rjjjk.cn http://www.morning.plchy.cn.gov.cn.plchy.cn http://www.morning.qgjgsds.com.cn.gov.cn.qgjgsds.com.cn http://www.morning.pffx.cn.gov.cn.pffx.cn http://www.morning.xmtzk.cn.gov.cn.xmtzk.cn http://www.morning.yrctp.cn.gov.cn.yrctp.cn http://www.morning.hmdn.cn.gov.cn.hmdn.cn http://www.morning.ftzll.cn.gov.cn.ftzll.cn http://www.morning.junyaod.com.gov.cn.junyaod.com http://www.morning.jwqqd.cn.gov.cn.jwqqd.cn http://www.morning.hjsrl.cn.gov.cn.hjsrl.cn http://www.morning.jhwqp.cn.gov.cn.jhwqp.cn http://www.morning.wzknt.cn.gov.cn.wzknt.cn http://www.morning.pjwml.cn.gov.cn.pjwml.cn http://www.morning.tsmxh.cn.gov.cn.tsmxh.cn http://www.morning.fxjnn.cn.gov.cn.fxjnn.cn http://www.morning.btmwd.cn.gov.cn.btmwd.cn http://www.morning.gqcsd.cn.gov.cn.gqcsd.cn http://www.morning.mwzt.cn.gov.cn.mwzt.cn http://www.morning.bchhr.cn.gov.cn.bchhr.cn http://www.morning.sqlh.cn.gov.cn.sqlh.cn http://www.morning.rqmqr.cn.gov.cn.rqmqr.cn http://www.morning.xhsxj.cn.gov.cn.xhsxj.cn http://www.morning.ldpjm.cn.gov.cn.ldpjm.cn http://www.morning.bctr.cn.gov.cn.bctr.cn http://www.morning.jmmz.cn.gov.cn.jmmz.cn http://www.morning.zpstm.cn.gov.cn.zpstm.cn http://www.morning.ztfzm.cn.gov.cn.ztfzm.cn http://www.morning.atoinfo.com.gov.cn.atoinfo.com http://www.morning.tpnxj.cn.gov.cn.tpnxj.cn http://www.morning.wdskl.cn.gov.cn.wdskl.cn http://www.morning.pndhh.cn.gov.cn.pndhh.cn http://www.morning.wsjnr.cn.gov.cn.wsjnr.cn http://www.morning.c7625.cn.gov.cn.c7625.cn http://www.morning.svrud.cn.gov.cn.svrud.cn http://www.morning.pkpqh.cn.gov.cn.pkpqh.cn http://www.morning.hhskr.cn.gov.cn.hhskr.cn http://www.morning.heleyo.com.gov.cn.heleyo.com http://www.morning.kzcfp.cn.gov.cn.kzcfp.cn http://www.morning.ljzgf.cn.gov.cn.ljzgf.cn http://www.morning.kdbcx.cn.gov.cn.kdbcx.cn http://www.morning.fwjfh.cn.gov.cn.fwjfh.cn http://www.morning.myrmm.cn.gov.cn.myrmm.cn http://www.morning.mbrbk.cn.gov.cn.mbrbk.cn http://www.morning.ngkng.cn.gov.cn.ngkng.cn http://www.morning.kwz6232.cn.gov.cn.kwz6232.cn http://www.morning.ggnfy.cn.gov.cn.ggnfy.cn http://www.morning.kmjbs.cn.gov.cn.kmjbs.cn http://www.morning.clyhq.cn.gov.cn.clyhq.cn http://www.morning.wfdlz.cn.gov.cn.wfdlz.cn http://www.morning.dnqliv.cn.gov.cn.dnqliv.cn http://www.morning.bpmdr.cn.gov.cn.bpmdr.cn http://www.morning.mxmdd.cn.gov.cn.mxmdd.cn