强化学习

news2024/11/25 22:53:23

文章目录

  • 强化学习概念
  • Model-Free
    • Value-based learning
      • DQN
    • State-based learning
      • 蒙特卡洛近似
  • Actor-Critic Learning
  • Model-Based
    • Monte Carlo TreeSearch(MCTS)-AlphaGo

强化学习概念

  • Terminologies(术语)
    • State s:环境的一个状态
    • Agent :代理
    • Action a:动作
    • Environment:代理外的其他东西
    • Reward r:反馈,代理从环境中收到的数值
    • Policies π(a|s):策略是代理根据state来决定action
    • State transition p(s’|s,a):状态转移函数
    • Trajectory:序列是代理和环境交互过程中的一系列状态和动作组成
  • Return and Value
    • Return:回报,衡量当前时刻局势的好坏,未来的回报没当前汇报重要
      U t = R t + γ R t + 1 + γ 2 R t + 2 + … U_t = R_t + \gamma R_{t+1} + \gamma^2 R_{t+2} + \ldots Ut=Rt+γRt+1+γ2Rt+2+
    • Action-Value Function:近似Ut,依据动作
      Q π ( s t , a t ) = E [ U t ∣ s t , a t ] Q_\pi(s_t, a_t) = \mathbb{E} [U_t | s_t, a_t] Qπ(st,at)=E[Utst,at]
    • Optimal action-value function:
      Q ∗ ( s t , a t ) = max ⁡ Q π ( s t , a t ) Q^*(s_t, a_t) = \max Q_\pi(s_t, a_t) Q(st,at)=maxQπ(st,at)
    • State-Value Function:近似Ut,依据策略
      V π ( s t ) = E A [ Q π ( s t , A ) ] V_\pi(s_t) = \mathbb{E}_A[Q_\pi(s_t, A)] Vπ(st)=EA[Qπ(st,A)]
  • Value-based learning.对选择的动作进行评分
    • Deep Q network (DQN) for approximating Q*(s, a).
    • Learn the network parameters using temporal different (TD).
  • Policy-based learning.计算选择某动作的概率
    • Policy network for approximating π(a | s).
    • Learn the network parameters using policy gradient.
  • Actor-critic method. (Policy network value network.
    Example: AlphaGo

Model-Free

Value-based learning

DQN

  • 目标:最大化return
  • 问题:如果我们知道价值函数Q*,什么是最好的action?
  • 挑战:Q*是什么?
    • 使用神经网络Q去近似Q*
  • 时间差分学习(temporal-difference learning)

Definition: Optimal action-value function.

  • Q*(st, at) = maxπE[Ut|St = st, At = at].
  • DQN: Approximate Q*(s, a)using a neural network (DQN).
  • Q(s, a; w)is a neural network parameterized by w.
  • Input: observed state s.
  • Output: scores for every actien a ∈ A.

Step1:观察状态St和动作At。
Step2:预测值函数:V(St, At) = f(St, At; w),其中f是具有参数w的值网络。
Step3:对值网络进行微分:∇w V(St, At) = ∇w f(St, At; w)。
Step4:环境提供新的状态St+1和奖励Rt。
Step5:计算TD目标:Yt = Rt + γ * maxa Q(St+1, a; w),其中γ是折扣因子,Q是动作值函数。
Step6:执行梯度下降来更新参数:w’ = w - α * (V(St, At) - Yt) * ∇w f(St, At; w),其中α是学习率。
Step7:更新值网络的参数:w = w’。
在这里插入图片描述

State-based learning

策略函数π(a | s)是一个概率密度函数,它接受一个状态(state)作为输入,并输出代理(agent)可以采取所有动作(action)的概率。例如:

π(left | s) = 0.2
π(right | s) = 0.1
π(up | s) = 0.7

类似于基于价值的学习,我们可以使用神经网络来近似这个策略函数。

使用策略网络(π(a | s; θ))来逼近策略函数π(a | s)。
θ表示神经网络的可训练参数。

步骤:

  • Algorithm: Policy Gradient with Approximate Policy Gradient Theorem

    • Step1:Observe the state st.
    • Step2:Randomly sample action at according to the policy network π(at | st; θ).
    • Step3:Compute the estimated action-value Q(st, at).
    • Step4:Differentiate the policy network: ∇θ π(at | st; θ).
    • Step5:Compute the (approximate) policy gradient: g(at, θ) = Q(st, at) * ∇θ π(at | st; θ).
    • Step6:Update the policy network parameters: θ’ = θ + β * g(at, θ).
  • 算法:使用近似策略梯度定理的策略梯度方法

  • Step1:观察状态st。
  • Step2:根据策略网络π(at | st; θ)随机采样动作at。
  • Step3:计算估计的动作值Q(st, at)。
  • Step4:对策略网络进行微分:∇θ π(at | st; θ)。
  • Step5:计算(近似)策略梯度:g(at, θ) = Q(st, at) * ∇θ π(at | st; θ)。
  • Step6:更新策略网络的参数:θ’ = θ + β * g(at, θ)。

蒙特卡洛近似

  • 利用大数定理,来做期望的近似
    在这里插入图片描述

Actor-Critic Learning

  • 目标函数还是状态价值函数(状态的期望),不过值(演员)和概率(评论家)都需要用神经网络去拟合
  • 在这里插入图片描述
  • 步骤:
    • Step1:观察状态 st。
    • Step2:根据策略 r(·, st; θ) 随机采样动作 at。
    • Step3:执行动作 at,并观察新的状态 st+1 和奖励 rt。
    • Step4:使用时序差分(Temporal Difference, TD)更新值网络(value network)的参数 w。
    • Step5:使用策略梯度(policy gradient)更新策略网络(policy network)的参数 θ。

Model-Based

  • AlphaGo Zero 使用191917的张量表示一个状态,8个矩阵是白子的格局,8个矩阵是黑子的格局,1个矩阵代表如果该落黑子,表示全部元素等于1,如果该落白子,该矩阵全部元素等于0。

在这里插入图片描述
在这里插入图片描述

Monte Carlo TreeSearch(MCTS)-AlphaGo

  • 假设此时已经训练好了策略网络T(a l s;θ)和价值网络v(s;w)。 AlphaGo真正跟人下棋的时候,做决策的不是策略网络或者价值网络,而是蒙特卡洛树搜索(MonteCarloTreeSearch),缩写MCTS。MCTS不需要训练,可以直接做决策。训练策略网络和价值网络的目的是辅助MCTS。

  • 人类玩家通常都会向前看几步;越是高手,看得越远。

  • MCTS的基本原理就是向前看,模拟未来可能发生的情况,从而找出当前最优的动作。AlphaGo每走一步棋,都要用MCTS做成千上万次模拟,从而判断出哪个动作的胜算最大。

  • 步骤:

    • Step1:选择:观测棋盘上当前的格局,找出所有空位,然后判断其中哪些位置符合围棋规则;每个符合规则的位置对应一个可行的动作。每一步至少有几十、甚至上百个可行的动作;假如挨个搜索和评估所有可行动作,计算量会大到无法承受。虽然有几十、上百个可行动作,好在只有少数几个动作有较高的胜算。选择(Selection)的目的就是找出胜算较高的动作,只搜索这些好的动作,忽略掉其他的动作。
    • Step2:拓展:把第一步选中的动作记作at,它只是个假想的动作。AlphaGo需要考虑这样一个问题:假如它执行动作at,那么对手会执行什么动作呢?AlphaGo可以“推己及人”:如果AlphaGo认为几个动作很好,对手也会这么认为。所以AlphaGo用策略网络模拟对手,根据策略网络随机抽样一个动作。
    • Step3:求值:从状态st+1开始,双方都用策略网络π做决策,在环境中交替落子,直到分出胜负。AlphaGo基于状态sk,根据策略网络抽样得到动作。对手再基于动作,观测到的棋盘上的新状态再根据策略网络抽样得到新动作,直到游戏结束。当这局游戏结束时,可以观测到奖励r。如果AlphaGo胜利,则r=+1,否则r=-1。状态st+1越好,则这局游戏胜算越大。因此,奖励r可以反映出st+1的好坏。此外,还可以用价值网络v评价状态st+1的好坏。价值v(st+1;w)越大,则说明状态st+1越好。
    • Step4:回溯:再第三步求值中,算出了第t+1步某一个状态的价值,记作V(st+1);每一次模拟都会得出这样一个价值,并且记录下来。模拟会重复很多次,于是第t+1步每一种状态下面可以有多条记录;第t步的动作at下面有多个可能的状态(子节点),每个状态下面有若干条记录。把at下面所有的记录取平均,记作价值Q(at),它可以反映出动作at的好坏。
      给定棋盘上的真实状态st,有多个动作a可供选择。对于所有的a,价值Q(a)的初始值是零。动作a每被选中一次(成为at),它下面就会多一条记录,我们就对Q(a)做一次更新。基于棋盘上真实的状态st,MCTS需要从可行的动作中选出一个,作为at。MCTS计算每一个动作a的分数:
  • 原理推导比较多,还没懂,估计后面用不到就不细看了,有用到再回来补一下这部分知识

  • 强化学习是机器学习中最难的一部分之一

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1093065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程 控 电 源1761程控模块电源

程 控 电 源 1761程控模块电源 1761程控模块电源是在自动测试环境中提供偏置功率和对部件或最终产品提供激励的理想设备,是测试系统必备的测试仪器。适用于研发、设计、生产制造等自动测试领域。 1761程控模块电源为用户选配电源提供了灵活性,根据需要…

27岁,准备转行做网络安全渗透,完全零基础,有前途吗?

你该不该转行的问题一样,都是你自己的人生选择,怎能听人一面之词? 所以转行一定要想清楚,对自身的实力做好清晰的估算,换个赛道重新开始、从头再来的话,那么我建议你考虑“网络安全”,前景好薪…

CSS 轮廓(outline)

轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。 轮廓(outline)属性指定元素轮廓的样式、颜色和宽度。 CSS 轮廓(outline) 轮廓(ou…

关于网络协议的若干问题(五)

1、DH 算法会因为传输随机数被破解吗? 答:DH 算法的交换材料要分公钥部分和私钥部分,公钥部分和其他非对称加密一样,都是可以传输的,所以对于安全性是没有影响的,而且传输材料远比传输原始的公钥更加安全。…

Vue和React高级特性之传送

一、Vue中的Teleport 是一个内置组件&#xff0c;它可以将一个组件内部的一部分模板“传送”到该组件的 DOM 结构外层的位置去 试想下面这样的 HTML 结构&#xff1a; <div class"outer"><h3>Tooltips with Vue 3 Teleport</h3><div><M…

Zabbix 使用同一ODBC监控不同版本MySQL

一、ODBC介绍 ODBC是Open Database Connect 即开发数据库互连的简称&#xff0c;它是一个用于访问数据库的统一界面标准。ODBC引入一个公共接口以解决不同数据库潜在的不一致性&#xff0c;从而很好的保证了基于数据库系统的应用程序的相对独立性。ODBC 概念由 Microsoft 开发&…

【AI视野·今日Robot 机器人论文速览 第五十三期】Thu, 12 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Thu, 12 Oct 2023 Totally 25 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Pixel State Value Network for Combined Prediction and Planning in Interactive Environments Authors Sascha Rosbach, St…

Python学习记录——이십이 Bytes和字符集编码

文章目录 根据ANSI标准&#xff0c;各国对于各国的文字有自己的编写方法&#xff0c;中国发展的就是gbk编码&#xff0c;国际上有个unicode码&#xff0c;适用于所有语言&#xff0c;依据这个标准出来utf-8标准。像ascii&#xff0c;我们见到的就是8个bit位&#xff0c;总共存放…

SOP8封装 NV400F的语音芯片在电动车充电桩的应用

充电桩作为电动汽车的配套设施&#xff0c;为其提供充电服务&#xff0c;功能类似加油站里的加油机。一般安装在公共建筑和居民小区内供电动车车主使用。随着国家对节能减排和保护环境越来也重视。在城市中&#xff0c;新能源的电动车得到了空前的发展&#xff0c;电动汽车零污…

二十二、【形状工具组】

文章目录 基础图形多边形直线工具自定义形状工具 形状工具组画的图形是矢量图形&#xff0c;在放大和缩小后像素不变看起来不会模糊&#xff0c;位图和矢量图形的存储方式不一样&#xff0c;位图的存储方式是按各个像素的数据来进行存储的&#xff0c;而矢量图形是根据算法来进…

蓝桥杯——递增序列和货物摆放

文章目录 前言一、递增序列二、货物摆放总结 前言 多多练习 一、递增序列 解题思路&#xff1a; 代码实现&#xff1a; 当然我的这个代码也不是很正确 发这道题就是向大家集思广益&#xff0c;我的就只作为一个参考啦~ #include <stdio.h> #include <stdlib.h>…

【数据结构】排序--插入排序(希尔排序)

目录 一 基本思想 二 直接插入排序 三 希尔排序 一 基本思想 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为 止&#xff0c;得到一个新的有序序列 。 实际中我们玩扑克牌时&#xff0c;就用了插入排序的思想 二…

前端 js导出excel

一、导出效果 二、导出代码 download() {let data [{name: aaaa,age: 10,address: 广东,phone: 1,wechart: 1},{name: bbbb,age: 11,address: 广西,phone: 2,wechart: 2},{name: cccc,age: 12,address: 山东,phone: 3,wechart: 3}]if (!data.length) {this.$Message.warnin…

内存泄漏检测组件的实现

通过宏定义来包装 malloc 和 free 函数&#xff0c;以便在每次内存分配和释放时记录相关信息&#xff0c;如文件名和行号。这使得你能够跟踪哪个函数在哪里分配和释放内存。 #define _GNU_SOURCE #include <dlfcn.h>#include <stdio.h> #include <stdlib.h>…

LaTeX 公式与表格绘制技巧

LaTeX 公式与绘图技巧公式基本可以分为 单一公式单一编号单一公式按行编号单一公式多个子编号单一公式部分子编号分段公式现在给出各自的代码单一公式单一编号 公式1&#xff1a;equationaligned\begin{equation}\begin{aligned}a&bc\\b&a2\\c&b-3\end{aligned}\en…

Windows terminal美化工具Oh-My-Posh

1、前言 windows电脑上的终端工具Window terminal大家应该都不陌生&#xff0c;这里介绍一款美化工具&#xff0c;从此告别windows terminal的黑与白。 2、Oh-My-Posh Oh My Posh 是一个命令行提示工具&#xff0c;通常用于美化和自定义终端提示符。它允许用户创建自定义的终…

Windows:Arduino IDE 开发环境配置【保姆级】

参考官网&#xff1a;Arduino - Home Arduino是一款简单易学且功能丰富的开源平台&#xff0c;包含硬件部分&#xff08;各种型号的Arduino开发板&#xff09;和软件部分&#xff08;Arduino IDE)以及广大爱好者和专业人员共同搭建和维护的互联网社区和资源。 Arduino IDE软件…

【玩机】如何修改iPhone充电提示音!最详细简单保姆级教程~ 学费了可替换任意音频做你的专属充电提示音!——后厂村路灯

其实方法很简单&#xff0c;利用快捷指令&#xff0c;获得base64 位的音频文本&#xff0c;然后再充电时播放即可。 视频教程 【玩机】如何修改iPhone充电提示音&#xff01;最详细简单保姆级教程 具体操作如下&#xff1a; 1.首先&#xff0c;网上找到需要设定的音频&#xf…

深度学习中的一些概念

回归问题 在深度学习中&#xff0c;回归问题是一种机器学习任务&#xff0c;其目标是预测连续数值的输出。与分类问题不同&#xff0c;其中目标是将输入数据分为不同的类别&#xff0c;回归问题的目标是根据输入数据来预测一个连续的数值。回归问题通常涉及到建立一个数学模型…

mysql面试题53:一个6亿的表a,一个3亿的表b,通过外间tid关联,你如何最快的查询出满足条件的第50000到第50200中的这200条数据记录

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:一个6亿的表a,一个3亿的表b,通过外间tid关联,你如何最快的查询出满足条件的第50000到第50200中的这200条数据记录 可以按照以下步骤进行: 确保…