北京国税局网站官网入口,wordpress 获取用户名,官网网站系统,河南专业页面设计模型设计个人主页#xff1a;欢迎来到 Papicatch的博客 课设专栏 #xff1a;学生成绩管理系统
专业知识专栏#xff1a; 专业知识 文章目录 #x1f349;强化学习与有监督学习的区别
#x1f348;数据特点
#x1f348;学习目标
#x1f348;反馈机制
#x1f348;策略… 个人主页欢迎来到 Papicatch的博客 课设专栏 学生成绩管理系统
专业知识专栏 专业知识 文章目录 强化学习与有监督学习的区别
数据特点
学习目标
反馈机制
策略优化
应用场景
强化学习的特点
试错学习
延迟奖励
策略优化
环境交互 不确定性
自主性
应用广泛
强化学习组成部分
智能体
感知能力
决策能力
行动能力
奖励
状态
多样性
影响决策
动态性
环境
环境的定义和组成
环境的特性
马尔科夫决策过程Markov Decision ProcessMDP
定义
核心概念
价值函数
奖励过程
代码实现
动态规划
基本思想
关键概念
工作原理
优缺点
优点
缺点
强化学习基于值函数的学习方法
值函数的定义
常见的基于值函数的学习方法
蒙特卡罗方法Monte Carlo Method
时序差分学习Temporal Difference Learning
SARSA 算法
值函数的更新规则
优点
缺点
基于策略函数的学习方法
策略函数的定义
常见的基于策略函数的学习方法
策略梯度算法Policy Gradient Algorithm
Actor-Critic 算法
策略梯度的计算
优点
缺点
Actor-Critic 算法
基本原理
工作流程
优势
常见变体
示例
示例分析
代码实现
总结 本篇文章可以配合人工智能强化学习核心内容、社会影响及未来展望 食用喔 强化学习与有监督学习的区别 强化学习解决问题流程 强化学习和有监督学习是机器学习中的两个重要分支它们在许多方面存在显著的区别。
数据特点 在有监督学习中数据通常以一组输入特征和对应的正确输出标签的形式呈现。例如在图像分类任务中输入是图像的像素值输出是图像所属的类别标签。而强化学习的数据是智能体与环境交互产生的一系列状态、动作和奖励。
学习目标 有监督学习的目标是学习一个能够准确预测给定输入的输出的模型。比如通过学习大量已标注的猫狗图片模型能够准确判断新输入的图片是猫还是狗。强化学习的目标则是让智能体通过与环境的交互学习到能够获得最大累积奖励的策略以实现长期的最优决策。
反馈机制 有监督学习中模型在每次预测后会立即得到明确的正确与否的反馈。比如预测结果与真实标签进行对比计算损失并进行优化。但在强化学习中智能体的动作所产生的奖励通常是延迟和稀疏的。也就是说智能体可能需要执行一系列动作后才能得到一个奖励信号而且奖励并非在每个动作后都能及时获得。
策略优化 有监督学习主要是优化模型的参数以最小化预测误差。强化学习则是通过不断尝试不同的动作根据奖励来调整策略以找到最优的行动策略。
应用场景 有监督学习常用于图像识别、语音识别、文本分类等任务。例如识别手写数字、语音转文字等。强化学习则更适用于需要做出连续决策的场景如机器人控制、游戏策略制定、自动驾驶等。 举个例子来说在训练一个下棋的模型时如果使用有监督学习可能是让模型学习大量人类高手的棋局预测下一步的走法。而如果使用强化学习模型会通过自己与自己对弈根据胜负结果来不断调整策略学习如何下棋才能赢得更多。
强化学习的特点 强化学习具有以下几个显著的特点
试错学习 智能体通过不断地尝试不同的动作来与环境进行交互从成功和失败的经验中学习。它没有先验的正确答案只能通过不断的试验来逐渐优化自己的策略。例如一个机器人学习如何在复杂的地形中行走可能会经历多次摔倒和错误的步伐最终找到稳定的行走方式。
延迟奖励 强化学习中的奖励通常不是即时给出的而是在一系列动作之后才会显现。这意味着智能体需要考虑长期的回报而不仅仅是眼前的利益。比如在股票投资中一系列的买卖决策可能要经过一段时间才能确定是否获得了良好的收益。
策略优化 强化学习的核心目标是找到最优的策略即给定一个状态智能体应该采取什么样的动作来最大化未来的累积奖励。这个策略会随着学习的进行不断调整和优化。
环境交互 智能体与动态的环境进行持续的交互环境的状态会因为智能体的动作而发生改变。例如在自动驾驶中车辆的行驶动作会改变周围的交通状况。 不确定性 由于环境的复杂性和随机性强化学习的结果往往具有一定的不确定性。即使在相同的初始条件下多次学习的结果也可能会有所不同。
自主性 智能体具有自主学习和决策的能力不需要人类明确地告诉它每一步应该怎么做而是通过自身与环境的交互来探索和发现最优策略。
应用广泛 可以应用于众多领域如机器人控制、游戏、资源管理、金融交易等能够解决各种需要动态决策的问题。 以训练一个智能机器人打扫房间为例它可能一开始会随意移动和操作导致效率低下甚至造成混乱。但通过不断的试错和接收延迟的奖励房间变得整洁干净它逐渐优化自己的动作策略学会更高效地完成打扫任务。
强化学习组成部分 智能体 在强化学习的领域中智能体Agent是一个至关重要的概念。 智能体可以被理解为具有感知、决策和行动能力的实体。它能够与环境进行交互并根据环境的反馈来调整自己的行为策略以实现特定的目标。
感知能力 智能体能够感知环境的状态。这可能包括获取各种信息如位置、速度、周围物体的状态等。例如在自动驾驶场景中智能体可以通过传感器感知车辆的速度、与其他车辆的距离和道路状况。 决策能力 基于所感知到的环境状态智能体能够做出决策决定采取何种行动。决策过程通常基于其内部的学习模型和策略。例如在围棋游戏中智能体根据棋盘的局面决定下一步落子的位置。 行动能力 智能体能够将决策转化为实际的行动并对环境产生影响。例如机器人智能体可以执行移动、抓取物体等物理动作。智能体的行为并非一成不变而是通过不断的学习和优化来改进。在强化学习中智能体通过与环境的反复交互接收奖励或惩罚的反馈从而逐渐调整其策略以追求更多的奖励和更好的性能。以一个自动化交易的智能体为例它会感知市场的各种数据如股票价格、成交量等基于这些信息做出买入或卖出的决策然后执行交易操作。随着时间的推移它会根据交易的结果盈利或亏损来调整自己的交易策略以期望在未来获得更高的收益。再比如一个在迷宫中探索的智能体它会感知自己在迷宫中的位置和周围的通道情况决定前进的方向然后移动。如果它找到了出口会得到正奖励否则可能得到负奖励。通过多次尝试智能体逐渐学会如何更快地找到出口。 总之智能体是强化学习中的核心元素其感知、决策和行动的能力以及不断学习和优化的特性使得它能够在复杂的环境中不断适应和改进以实现各种任务和目标。
奖励 在强化学习中奖励Reward是一个标量反馈信号用于衡量智能体在某个时刻所采取的动作的表现。其核心作用是引导智能体学习最优策略以最大化累计奖励值。 具体来说强化学习基于奖励假设Reward Hypothesis即所有的目标都可以被描述为最大化期望的累计奖励值。这意味着智能体的目标是通过选择合适的动作序列来尽可能多地获得奖励。
不同的强化学习任务对应着不同的奖励设置。例如 在直升机特技表演任务中当直升机按照期望轨迹飞行时会给出正奖励若坠机则给出负奖励围棋游戏里下赢一局给出正奖励输了则给出负奖励投资组合问题中每获得定量收益时给出正奖励发电站控制时每获得新的能源给出正奖励超过安全阈值则给出负奖励控制人形机器人行走时每次向前移动给一个正奖励每次摔倒给一个负奖励玩不同的电子游戏时当分数增加和减少时分别给出正负奖励。 奖励可以是即时的也可能具有延迟性。智能体的动作可能会在很长时间后才产生显著的奖励这就需要智能体考虑长期的回报而不仅仅是眼前的利益。例如一个金融投资策略可能需要数月才能获得收益即当前的动作可能有非常久远的影响给直升机加油这个动作可能会使直升机在未来几个小时免于坠毁。 在每个时刻 t智能体接收上一个动作的奖励值与当前时刻的观测之后执行动作环境则接受智能体的动作并反馈出当前动作的奖励值以及下一个时刻的观测值整个过程随着时间 t 的推进而不断延伸。 奖励的设置对于强化学习算法的性能和收敛速度有着至关重要的影响。如果奖励设置不合理可能导致智能体学习到不理想的策略或者难以收敛到最优策略。例如如果奖励过于稀疏智能体可能很难确定哪些动作是有益的而如果奖励设置不当智能体可能会学会一些“投机取巧”的方式来获取奖励而不是真正实现任务的目标。 在实际应用中设计合适的奖励函数是一项具有挑战性的任务需要对具体问题有深入的理解并且可能需要不断地尝试和调整。有时候为了鼓励智能体进行探索或避免其陷入局部最优还会采用一些奖励塑造Reward Shaping的方法。例如基于势能的奖励塑造Potential-based Reward Shaping通过给每个状态设定势能从势能低的地方到势能高的地方给予正奖励从势能高的地方回势能低的地方给予负奖励从而引导智能体的行为同时保证最优策略的不变性。
状态 在强化学习中状态state是对环境或系统当前情况的描述。它是智能体进行决策和学习的依据。 状态可以包含各种信息具体取决于所解决的问题和应用场景。例如在自动驾驶中状态可能包括车辆的速度、位置、周围车辆和障碍物的状态等在棋类游戏中状态可以表示棋盘上各个棋子的位置在机器人控制中状态可能涉及机器人的关节角度、传感器读数等。
状态具有以下几个重要特点
多样性 不同的任务和环境中状态的形式和内容可以有很大差异。
影响决策 智能体根据当前的状态来选择采取何种动作。
动态性 随着时间的推移和智能体与环境的交互状态会发生变化。 从数学角度来看状态是强化学习中马尔可夫决策过程MDP的一个关键元素。下一个状态的概率通常仅依赖于当前状态和当前采取的动作这被称为马尔可夫性。
状态在强化学习中的作用主要体现在以下方面 提供信息帮助智能体了解环境的情况以便做出合适的决策。确定策略不同的状态可能对应着不同的最优动作通过学习智能体可以根据状态来确定采取什么样的动作以获得最大的累积奖励。更新和优化智能体根据从环境中获得的奖励以及新的状态来更新其对状态价值的估计进而优化策略。 例如在一个简单的迷宫游戏中状态可以是智能体在迷宫中的位置。智能体根据当前所处的位置状态决定是向左、向右、向前还是向后移动动作。移动后会到达新的位置新的状态并可能获得一定的奖励例如找到宝藏获得正奖励撞到墙壁获得负奖励。智能体通过不断尝试不同的动作根据获得的奖励和经历的状态序列学习到在不同位置状态下应该采取何种动作策略以最大化累积奖励。
环境 在强化学习中环境Environment是一个至关重要的概念它与智能体相互作用对智能体的学习和决策产生深远影响。
环境的定义和组成 环境是智能体之外的一切事物包括物理世界、其他实体、规则和条件等。它由多个部分组成例如状态空间State Space即所有可能的环境状态的集合动作空间Action Space表示智能体可以采取的所有可能动作以及奖励函数Reward Function用于根据智能体的动作和环境状态给出相应的奖励。
环境的特性 动态性环境的状态会随着时间和智能体的动作而不断变化。例如在机器人足球比赛中球的位置、队友和对手的位置都在实时改变。不确定性环境中可能存在随机因素使得相同的动作在不同情况下产生不同的结果。比如在股票市场中即使采取相同的投资策略由于市场的不确定性收益也可能不同。复杂性环境可能非常复杂包含大量的变量和相互关系。例如在城市交通系统中需要考虑车辆、行人、信号灯等众多因素。 马尔科夫决策过程Markov Decision ProcessMDP 定义 马尔科夫决策过程是一个五元组S、A、P、R、γ其中 是状态的有限集合。 是动作的有限集合。 是状态转移概率矩阵 表示在状态 s 采取动作 a 转移到状态 s 的概率。 是奖励函数 表示在状态 s 采取动作 a 所获得的即时奖励。 是折扣因子用于权衡未来奖励的重要性取值在 [0,1] 之间。 核心概念 马尔科夫性未来的状态只取决于当前状态和当前采取的动作而与过去的历史无关。策略是从状态到动作的映射即给定一个状态决定采取何种动作。 价值函数 包括状态价值函数 V(s) 和动作价值函数 Q(s,a) 。 状态价值函数表示从状态 s 开始遵循当前策略所获得的期望累积折扣奖励。动作价值函数表示在状态 s 采取动作 a 遵循当前策略所获得的期望累积折扣奖励。 奖励过程 马尔可夫奖励过程MRP 代码实现
import numpy as np# 定义状态数量
num_states 3# 定义状态转移概率矩阵
transition_matrix np.array([[0.1, 0.6, 0.3],[0.4, 0.3, 0.3],[0.2, 0.5, 0.3]
])# 定义奖励向量
rewards np.array([1, 2, 3])# 折扣因子
gamma 0.9# 计算价值函数
def compute_value_function():value np.zeros(num_states)threshold 1e-6delta float(inf)while delta threshold:new_value np.copy(value)for state in range(num_states):value_ 0for next_state in range(num_states):value_ transition_matrix[state, next_state] * (rewards[next_state] gamma * value[next_state])new_value[state] value_delta np.max(np.abs(new_value - value))value new_valuereturn valuevalue_function compute_value_function()
print(价值函数, value_function) 动态规划 在强化学习中动态规划Dynamic Programming是一种用于解决最优控制问题的有效方法。
基本思想 将复杂的问题分解为一系列更简单的子问题并通过存储和复用子问题的解来提高计算效率。
关键概念 策略评估Policy Evaluation给定一个策略计算该策略下每个状态的价值函数。策略改进Policy Improvement基于当前的价值函数找到一个更好的策略。策略迭代Policy Iteration通过交替进行策略评估和策略改进逐步收敛到最优策略。价值迭代Value Iteration直接迭代价值函数以找到最优价值函数从而得到最优策略。 工作原理 假设我们有一个有限的状态空间和动作空间以及已知的环境模型包括状态转移概率和奖励函数。 在策略评估中通过反复应用贝尔曼期望方程来更新状态价值直到收敛。策略改进通过比较当前策略下每个状态的动作价值来确定是否有更好的动作选择。策略迭代不断重复评估和改进的过程直到策略不再改变。价值迭代则更快地收敛到最优价值函数。 优缺点
优点 能保证在有限的状态和动作空间中找到最优解如果环境模型准确。具有良好的理论基础和数学性质。 缺点 对于大规模问题由于需要存储大量的状态值和计算复杂的转移概率计算量可能非常大。通常需要对环境有完整的了解这在实际应用中往往难以满足。 例如考虑一个简单的迷宫问题状态是迷宫中的位置动作是向四个方向移动。通过动态规划可以计算出从每个位置出发采取最优策略能够获得的累积奖励从而找到走出迷宫的最佳路径。
强化学习基于值函数的学习方法 在强化学习中基于值函数的学习方法是一类重要的策略学习途径。
值函数的定义
值函数用于评估在特定状态下采取某种策略的长期期望回报。常见的值函数包括状态值函数State Value FunctionV(s)和动作值函数Action Value FunctionQ(s,a)。
常见的基于值函数的学习方法
蒙特卡罗方法Monte Carlo Method 通过多次采样完整的状态-动作序列来估计值函数。优点是直接估计期望回报无需对环境的动态模型有先验了解。例如在玩纸牌游戏中多次重复游戏过程根据最终的输赢结果来评估每个状态的价值。 时序差分学习Temporal Difference Learning 结合了蒙特卡罗方法和动态规划的思想。基于当前的奖励和对下一状态值函数的估计来更新当前状态的值函数。例如Q-learning 算法就是一种典型的时序差分算法。 SARSA 算法 也是一种时序差分算法。与 Q-learning 的区别在于更新值函数时使用的动作不同。 值函数的更新规则
以 Q-learning 为例其更新规则为 其中a 是学习率γ 是折扣因子 是在状态 采取动作 获得的即时奖励 是下一状态。
优点 能够为策略的改进提供明确的方向。相对较为稳定和收敛。 缺点 对于连续状态和动作空间计算和存储值函数可能变得困难。可能会陷入局部最优。 例如在一个机器人导航任务中通过基于值函数的学习方法机器人可以学习到在不同位置采取何种动作能够更快地到达目标位置从而实现高效的导航。 基于策略函数的学习方法
策略函数的定义 策略函数 表示在状态 s 下采取动作 a 的概率分布。
常见的基于策略函数的学习方法
策略梯度算法Policy Gradient Algorithm 通过计算策略的梯度来更新策略参数以最大化期望回报。例如REINFORCE 算法就是一种简单的策略梯度算法。 Actor-Critic 算法 结合了策略函数Actor和值函数Critic。Critic 用于评估当前策略的好坏Actor 根据 Critic 的反馈来更新策略。 策略梯度的计算
以 REINFORCE 算法为例策略梯度的计算公式为 其中θ 是策略的参数γ 是状态-动作轨迹Gt 是从时间步 t 开始的累积回报。
优点 能够处理连续的动作空间。直接对策略进行优化避免了值函数估计的误差传播。 缺点 方差较大导致训练不稳定。通常需要更多的样本数据来获得较好的性能。 例如在控制机械臂抓取物体的任务中基于策略函数的学习方法可以让机械臂学习到如何以不同的姿态和力度抓取物体以提高抓取的成功率。 Actor-Critic 算法 Actor-Critic 算法是强化学习中一种结合了策略梯度Actor和价值估计Critic的方法。
基本原理 Actor策略网络负责根据当前状态生成动作其策略用 π(a|s;θ) 表示其中 θ 是策略网络的参数。Critic价值网络用于评估 Actor 所采取动作的好坏估计状态值函数 V(s;w) 或动作值函数 其中 S(s,a;w) 是价值网络的参数。 工作流程 Actor 根据当前状态选择一个动作。环境接收动作给出新的状态和奖励。Critic 根据状态和奖励估计价值。基于 Critic 的价值评估Actor 调整策略参数以优化未来的动作选择。 优势 结合了策略梯度方法直接优化策略和基于值函数方法的稳定性。可以有效地处理连续动作空间的问题。 常见变体 Advantage Actor-Critic (A2C)使用优势函数Advantage Function来改进策略更新。Asynchronous Advantage Actor-Critic (A3C)通过异步更新多个线程或进程中的网络参数提高训练效率。 示例
示例分析 考虑一个简单的小车在轨道上行驶的场景。状态可以是小车的位置和速度动作是施加在小车上的力的大小和方向。Actor 网络根据当前的状态输出一个动作Critic 网络评估这个动作在当前状态下的价值。 例如如果小车靠近轨道终点且速度适中Actor 选择一个适当的力来保持或加速前进Critic 给出一个较高的价值评估。如果小车偏离轨道或速度过快Critic 给出较低的价值评估促使 Actor 调整策略。
代码实现
import tensorflow as tf
import numpy as np# 定义 Actor 网络
class ActorNetwork(tf.keras.Model):def __init__(self, num_states, num_actions, hidden_units):super(ActorNetwork, self).__init__()self.layer1 tf.keras.layers.Dense(hidden_units, activationrelu)self.layer2 tf.keras.layers.Dense(hidden_units, activationrelu)self.output_layer tf.keras.layers.Dense(num_actions, activationsoftmax)def call(self, state):x self.layer1(state)x self.layer2(x)return self.output_layer(x)# 定义 Critic 网络
class CriticNetwork(tf.keras.Model):def __init__(self, num_states, hidden_units):super(CriticNetwork, self).__init__()self.layer1 tf.keras.layers.Dense(hidden_units, activationrelu)self.layer2 tf.keras.layers.Dense(hidden_units, activationrelu)self.output_layer tf.keras.layers.Dense(1)def call(self, state):x self.layer1(state)x self.layer2(x)return self.output_layer(x)# 训练函数
def train_actor_critic(env, actor, critic, num_episodes, gamma):optimizer_actor tf.keras.optimizers.Adam(learning_rate0.01)optimizer_critic tf.keras.optimizers.Adam(learning_rate0.01)for episode in range(num_episodes):state env.reset()state tf.convert_to_tensor(state, dtypetf.float32)done Falserewards []states []actions []while not done:# Actor 选择动作action_probs actor(state)action np.random.choice(np.arange(len(action_probs)), paction_probs.numpy()[0])# 与环境交互next_state, reward, done, _ env.step(action)next_state tf.convert_to_tensor(next_state, dtypetf.float32)# 存储信息rewards.append(reward)states.append(state)actions.append(action)state next_state# 计算折扣回报discounted_rewards []cumulative_reward 0for reward in rewards[::-1]:cumulative_reward reward gamma * cumulative_rewarddiscounted_rewards.append(cumulative_reward)discounted_rewards discounted_rewards[::-1]# 训练 Criticvalues critic(tf.stack(states))value_loss tf.keras.losses.MeanSquaredError()(tf.convert_to_tensor(discounted_rewards), values)optimizer_critic.minimize(value_loss, var_listcritic.trainable_variables)# 计算优势值advantages tf.convert_to_tensor(discounted_rewards) - valuesaction_log_probs tf.math.log(action_probs[0, actions])# 训练 Actoractor_loss -tf.reduce_mean(action_log_probs * advantages)optimizer_actor.minimize(actor_loss, var_listactor.trainable_variables)# 示例环境
class SimpleEnv:def __init__(self):self.state np.random.rand(2) # 随机初始化状态def reset(self):self.state np.random.rand(2)return self.statedef step(self, action):# 简单的环境反馈仅用于示例if action 0:self.state np.array([0.1, 0])elif action 1:self.state np.array([0, 0.1])reward np.sum(self.state) # 简单的奖励计算done np.sum(self.state) 1.5 # 结束条件return self.state, reward, done, None# 超参数
num_episodes 1000
num_states 2
num_actions 2
hidden_units 32
gamma 0.99# 创建网络和环境
actor ActorNetwork(num_states, num_actions, hidden_units)
critic CriticNetwork(num_states, hidden_units)
env SimpleEnv()# 训练
train_actor_critic(env, actor, critic, num_episodes, gamma)
总结 强化学习是一种机器学习的重要分支它专注于智能体如何在与环境的交互中通过试错来学习最优策略以最大化累积奖励。 在强化学习中智能体通过感知环境的状态采取行动并根据行动所获得的奖励来调整自己的策略。其核心概念包括状态、动作、奖励和策略。状态是对环境的描述动作是智能体可执行的选择奖励则是对智能体动作的反馈策略决定了在给定状态下智能体采取何种动作。 强化学习的算法众多如 Q-learning 算法通过估计每个状态-动作对的价值来更新策略SARSA 算法在学习过程中同时考虑当前策略和下一时刻的策略以及深度强化学习中的 DQN 算法利用深度神经网络来近似价值函数。 强化学习在许多领域都有广泛应用。在机器人控制领域它可以让机器人学会自主行走、抓取物体等复杂任务在自动驾驶中帮助车辆做出最优的驾驶决策在游戏中训练智能体达到超越人类玩家的水平。 然而强化学习也面临一些挑战。例如奖励的设计需要精心考量否则可能导致智能体学习到不理想的策略训练过程可能不稳定且耗时较长在复杂环境中模型的泛化能力也有待提高。 总的来说强化学习为解决复杂的决策问题提供了有力的工具和方法尽管存在挑战但随着技术的不断发展其应用前景十分广阔。