强化学习

简介: 前言机器学习可以大致分为四类:监督学习无监督学习半监督学习强化学习监督学习是利用标记了的样本进行学习,无监督学习则是使用未标记的样本进行学习,这两个是我们最常见的。

前言

机器学习可以大致分为四类:

  • 监督学习
  • 无监督学习
  • 半监督学习
  • 强化学习

监督学习是利用标记了的样本进行学习,无监督学习则是使用未标记的样本进行学习,这两个是我们最常见的。半监督学习则是样本中只有少量带标记的样本,多数样本都未标记,利用这些样本进行学习。强化学习则是很不同的一种学习方式,它没有规则的训练样本和标签,主要通过奖励和惩罚达到学习的目的。

什么是强化学习

《最强大脑》曾经有个挑战项目叫蜂巢迷宫,挑战者不断尝试不断试错。强化学习做法也类似,它主要包含三个概念:状态、动作和回报。同样是以迷宫为例,智能体所在的位置即是状态,从某个位置向某方向走一步则为动作,比如可以向左向右或向上向下,每走一步会产生回报,比如撞到墙就是负回报,好的动作则会带来正回报。而且不仅要关注当前的回报,还要关注长期的回报,通过不断试错学习到一个长期回报的动作序列。

强化学习是机器学习的主要学习方法之一,智能体从环境到行为的学习,也就是如何在环境中采取一些列行为,才能使得奖励信号函数的值最大,即获得的累积回报最大。

强化学习不同于监督学习,监督学习通过正确结果来指导学习,而强化学习通过环境提供的信号对产生的动作的好坏做一种评价,它必须要靠自身经历进行学习。学习后智能体知道在什么状态下该采取什么行为,学习从环境状态到动作的映射,该映射称为策略。

如下图,一个智能体agent通过与环境environment相互交互并以一定的策略改变环境,agent可以从环境中得到状态 St ,然后执行一个动作 At ,接着得到一个即时回报 Rt ,最后转移到下一个状态。

这里写图片描述

所以整个过程就可以总结为根据当前观察状态值找到一个最优的动作使得回报最多。

Markov决策过程

智能体与环境的交互过程会生成一个序列,

H=S0,A0,R1,S1,A1,R2,S2,A2...,St1,At1,Rt1,St,Rt

对应的Markov动态过程为:agent初始状态为 S0 ,然后执行动作 A0 ,得到回报 R1 ,然后转移到下个状态 S1 ,不断重复。

这里写图片描述

这个过程构成Markov决策过程,服从“未来独立于过去”的Markov假设,所以下一时刻的状态只取决于当前时刻状态。即

p(St+1|St)=p(St+1|S1,S2,...,St)

如果定义了一个转换过程后,得到的回报函数累加和为

R(S0)+γR(S1)+γ2R(S2)+...

强化学习目标就是寻找一个最佳的策略,使回报加权和的期望值最大。

E[R(S0)+γR(S1)+γ2R(S2)+...]

而t时刻的累积回报可以表示为

Ct=Rt+1+γRt+2+γ2Rt+3+...=Tk=0γkRt+k+1

可以看到包含了一个阻尼系数r,它的取值为0到1,越靠后的状态对回报的影响越小,逐步衰减。

  • r=0时, Ct=Rt+1 ,这时只考虑当前动作的回报。
  • 0< r<1时, Ct=Rt+1+γRt+2+γ2Rt+3+... ,这时考虑当前回报和未来回报。
  • r=1时, Ct=Rt+1+Rt+2+Rt+3+... ,这时当前回报和未来回报比重一样。

在某个状态s下,价值函数为

vπ(s)=Eπ[Ct|St=s]

vπ(s)=Eπ[Rt+1+γRt+2+γ2Rt+3+...|St=s]
vπ(s)=Eπ[Rt+1+γ(Rt+2+γRt+3+...)|St=s]
vπ(s)=Eπ[Rt+1+γCt+1|St=s]
vπ(s)=Eπ[Rt+1+γvπ(St+1)|St=s]

价值函数可以看成两部分, Rt+1 为即时回报, γvπ(St+1) 为下一状态价值函数值的打折值。上面的价值函数为Bellman Equation形态,即动态规划方程,可用迭代方式求解。

Q学习

前面说到的是状态价值函数,我们还需要动作价值函数,它可以用来根据动作价值的大小而做出动作。Q学习即是学习不同状态下各个动作的质量,它定义为

Qπ(s,a)=Eπ[Ct|St=s,At=a]

它同样可以变换成Bellman Equation形态,

Qπ(s,a)=Eπ[Rt+1+γQπ(St+1,At+1)|St=s,At=a]

最优动作价值函数,

Q(s,a)=MaxπQπ(s,a)

Q(s,a)=Eπ[MaxRt+1+γMaxSt+1Qπ(St+1,At+1)|St=s,At=a]

可以看到最大化当前的动作价值函数就是最大化当前回报和下一时刻状态的最优动作价值函数。

动作价值函数虽然能直接计算出Q值,但实际学习时并没有直接使用该Q值来更新,而是通过渐进的方式来更新。学习的方法可用如下伪代码说明,首先初始化Q学习的状态集和动作集组成的数组,然后观察初始状态,接着不断重复执行:选择一个动作,观察回报并转移到新状态,更新Q学习数组值,涉及迭代方式更新,由于我们不能知道下一刻状态的Q值,所以更新时用之前迭代的Q值来更新此次迭代的Q值,其中α表示学习率。

initialize Q[numstates,numactions] arbitrarily
observe initial state s
repeat
    select and carry out an action a
    observe reward R and new state s'
    Q[s,a] = Q[s,a] + α(R + γmaxa'Q[s',a'] - Q[s,a])
    s = s'
until terminated

强化学习的特点

  • 它是试错学习,因为它没有像监督学习一样的直接指导信息,所以它只能不断去跟环境交互不断试错来获取最佳策略。
  • 它的回报具有延迟性,因为它往往只能在最后一个状态才能给出指导信息,这个问题也让回报的分配更加困难,即在得到正回报或负回报后怎么分配给前面的状态。

强化学习的运用

  • 比如飞行器的飞行控制。
  • 比如控制机器人的行走。
  • 比如学习怎么玩游戏。
  • 比如学习怎么理财投资。
  • 比如学习怎么下棋。

以下是广告

========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================

欢迎关注:

目录
相关文章
|
11月前
|
机器学习/深度学习 人工智能 搜索推荐
PaSa:字节跳动开源学术论文检索智能体,自动调用搜索引擎、浏览相关论文并追踪引文网络
PaSa 是字节跳动推出的基于强化学习的学术论文检索智能体,能够自动调用搜索引擎、阅读论文并追踪引文网络,帮助用户快速获取精准的学术文献。
797 15
|
9月前
|
存储 运维 Kubernetes
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
|
11月前
|
存储 机器学习/深度学习 人工智能
昇腾AI行业案例(六):基于 PraNet 的医疗影像分割
欢迎学习《基于 PraNet 的医疗影像分割》实验。在本实验中,你将深入了解如何运用计算机视觉(CV)领域的 AI 模型,搭建一个高效精准的医疗影像分割系统,专注于息肉分割任务,并利用开源数据集对模型效果加以验证。
295 1
|
传感器 存储 缓存
STM32--MPU6050与I2C外设
STM32--MPU6050与I2C外设
499 1
|
存储 达摩院 调度
「达摩院MindOpt」优化FlowShop流水线作业排班问题
在企业在面临大量多样化的生产任务时,如何合理地安排流水线作业以提高生产效率及确保交货期成为了一个重要的问题。
「达摩院MindOpt」优化FlowShop流水线作业排班问题
|
Prometheus Kubernetes Cloud Native
Flagger(应用自动发布)介绍和原理剖析
## 简介 [Flagger](https://github.com/weaveworks/flagger)是一个能使运行在k8s体系上的应用发布流程全自动(无人参与)的工具, 它能减少发布的人为关注时间, 并且在发布过程中能自动识别一些风险(例如:RT,成功率,自定义metrics)并回滚. ## 主要特性 ![features](https://intranetproxy.ali
4957 0
|
达摩院 算法 API
阿里达摩院MindOpt优化求解器-月刊(2023年7月)
阿里达摩院MindOpt优化求解器-7月刊,新增人员排班、仓库选址优化的案例,包含源代码,新版本MindOpt求解器V1.0的API重大升级,邀请内测。
521 0
阿里达摩院MindOpt优化求解器-月刊(2023年7月)
|
新零售 运维 监控
研发效能的度量| 学习笔记
快速学习研发效能的度量
研发效能的度量| 学习笔记
|
负载均衡 Kubernetes 前端开发
基于 Traefik 的加权灰度发布
众所周知,Traefik 是云原生生态中的一个爆款的反向代理和负载均衡器。我们无论如何定义、赞美它都不为过。毫无疑问,基于传统的反向代理组件而言,真正使 Traefik 与 Nginx,Haproxy 最为关键的不同之处在于其“开箱即用”的功能,即它的自适应和动态可配置性。不仅如此,相比较而言,Traefik 最为核心的部分可能是它做自动服务发现、灰度发布等能力。
683 0
|
缓存 Kubernetes 负载均衡
Kubernetes MetalLB 作为 Load Balancer 上
Kubernetes MetalLB 作为 Load Balancer 上
831 1
Kubernetes MetalLB 作为 Load Balancer 上