请先阅读上两篇文章: [RL系列]马尔可夫决策过程中状态价值函数的一般形式 [RL系列]马尔可夫决策过程与动态编程 状态价值函数,顾名思义,就是用于状态价值评价(SVE)的.典型的问题有“格子世界(GridWorld)”游戏(什么是格子世界?可以参考:Dynamic programming in Python),高尔夫游戏,这类问题的本质还是求解最优路径,共性是在学习过程中每一步都会由一个动作产生一个特定的状态,而到达该状态所获得的奖励是固定的,与如何到达,也就是之前的动作是无关的,并且这类问题…
请先阅读上一篇文章:[RL系列]马尔可夫决策过程与动态编程 在上一篇文章里,主要讨论了马尔可夫决策过程模型的来源和基本思想,并以MAB问题为例简单的介绍了动态编程的基本方法.虽然上一篇文章中的马尔可夫决策过程模型实现起来比较简单,但我认为其存在两个小问题: 数学表达上不够简洁 状态价值评价型问题与动作价值评价型问题是分离的,形式上不够统一 本篇主要来解决第一个问题. 第一个问题是比较直观的,下面给出状态价值函数以作分析: $$ \mathbb{Value}(S_1) = \mathbb{Rewa…
本篇请结合课本Reinforcement Learning: An Introduction学习 Jack's Car Rental是一个经典的应用马尔可夫决策过程的问题,翻译过来,我们就直接叫它“租车问题”吧.租车问题的描述如下: Jack’s Car Rental Jack manages two locations for a nationwide car rental company. Each day, some number of customers arrive at each l…
之前讲了监督学习和无监督学习,今天主要讲“强化学习”. 马尔科夫决策过程:Markov Decision Process(MDP) 价值函数:value function 值迭代:value iteration(算法,解决MDP) 政策迭代:policy iteration(算法,解决MDP) 什么是强化学习? 强化学习(reinforcement learning,又称再励学习,评价学习)是一种重要的机器学习方法,在智能控制机器人及分析预测等领域有许多应用.但在传统的机器学习分类中没有提到过强…
在介绍马尔可夫决策过程之前,我们先介绍下情节性任务和连续性任务以及马尔可夫性. 情节性任务 vs. 连续任务 情节性任务(Episodic Tasks),所有的任务可以被可以分解成一系列情节,可以看作为有限步骤的任务. 连续任务(Continuing Tasks),所有的任务不能分解,可以看作为无限步骤任务. 马尔可夫性 引用维基百科对马尔可夫性的定义: 马尔可夫性:当一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态. 用数学形式表示如下: A state…
1. 前言 前面的强化学习基础知识介绍了强化学习中的一些基本元素和整体概念.今天讲解强化学习里面最最基础的MDP(马尔可夫决策过程). 2. MDP定义 MDP是当前强化学习理论推导的基石,通过这套框架,强化学习的交互流程可以很好地以概率论的形式表示出来,解决强化学习问题的关键定理也可以依此表示出来. MDP(马尔可夫决策过程)包含以下三层含义: "马尔可夫"表示了状态间的依赖性.当前状态的取值只和前一个状态产生依赖,不和更早的状态产生联系.虽然这个条件在有些问题上有些理想,但是由于它…
课件:Lecture 2: Markov Decision Processes 视频:David Silver深度强化学习第2课 - 简介 (中文字幕) 马尔可夫过程 马尔可夫决策过程简介 马尔可夫决策过程(Markov Decision Processes, MDPs)形式上用来描述强化学习中的环境. 其中,环境是完全可观测的(fully observable),即当前状态可以完全表征过程. 几乎所有的强化学习问题都能用MDPs来描述: 最优控制问题可以描述成连续MDPs; 部分观测环境可以转…
1. 马尔可夫模型的几类子模型 大家应该还记得马尔科夫链(Markov Chain),了解机器学习的也都知道隐马尔可夫模型(Hidden Markov Model,HMM).它们具有的一个共同性质就是马尔可夫性(无后效性),也就是指系统的下个状态只与当前状态信息有关,而与更早之前的状态无关. 马尔可夫决策过程(Markov Decision Process, MDP)也具有马尔可夫性,与上面不同的是MDP考虑了动作,即系统下个状态不仅和当前的状态有关,也和当前采取的动作有关.还是举下棋的例子,当…
1. 马尔可夫模型的几类子模型 马尔科夫链(Markov Chain),了解机器学习的也都知道隐马尔可夫模型(Hidden Markov Model,HMM).它们具有的一个共同性质就是马尔可夫性(无后效性),也就是指系统的下个状态只与当前状态信息有关,而与更早之前的状态无关. 马尔可夫决策过程(Markov Decision Process, MDP)也具有马尔可夫性,与上面不同的是MDP考虑了动作,即系统下个状态不仅和当前的状态有关,也和当前采取的动作有关.还是举下棋的例子,当我们在某个局面…
1. 马尔可夫模型的几类子模型 大家应该还记得马尔科夫链(Markov Chain),了解机器学习的也都知道隐马尔可夫模型(Hidden Markov Model,HMM).它们具有的一个共同性质就是马尔可夫性(无后效性),也就是指系统的下个状态只与当前状态信息有关,而与更早之前的状态无关. 马尔可夫决策过程(Markov Decision Process, MDP)也具有马尔可夫性,与上面不同的是MDP考虑了动作,即系统下个状态不仅和当前的状态有关,也和当前采取的动作有关.还是举下 棋的例子,…
作者:YJLAugus 博客: https://www.cnblogs.com/yjlaugus 项目地址:https://github.com/YJLAugus/Reinforcement-Learning-Notes,如果感觉对您有所帮助,烦请点个Star. MDP背景介绍 Random Variable 随机变量(Random Variable),通常用大写字母来表示一个随机事件.比如看下面的例子: \(X\): 河水是咸的 \(Y\): 井水是甜的 很显然,\(X\), \(Y\)两个随…
Gambler's Problem,即“赌徒问题”,是一个经典的动态编程里值迭代应用的问题. 在一个掷硬币游戏中,赌徒先下注,如果硬币为正面,赌徒赢回双倍,若是反面,则输掉赌注.赌徒给自己定了一个目标,本金赢到100块或是输光就结束游戏.找到一个关于本金与赌注之间关系的策略使得赌徒最快赢到100块.状态s = {1, 2, 3...., 99, 100},动作a = {1, 2, 3, ...., min(s, 100 - s)}.奖励设置:只有当赌徒赢到100块时奖励+1,其余状态奖励为0.…
一.MDP  / NFA    :马尔可夫模型和不确定型有限状态机的不同 状态自动机:https://www.cnblogs.com/AndyEvans/p/10240790.html MDP和NFA唯一相似的地方就是它们都有状态转移,抛掉这一点两者就八竿子打不着了. 二.MP  -> MRP -> MDP 三.计算给定策略下的价值函数 / 贝尔曼期望方程 我们用贝尔曼期望方程求解在某个给定策略π和环境ENV下的价值函数: 具体解法是:(下面是对于V(s)的解法) 从而对于每一个特定的π,都能…
推荐阅读顺序: Reinforcement Learning: An Introduction (Drfit)  有限马尔可夫决策过程 动态编程笔记 Dynamic programming in Python 本篇 马尔可夫决策过程 马尔可夫决策(MDP)过程为强化学习(RL)提供了理论基础,而动态编程(DP)为马尔可夫决策过程提供了一种实现的方法.所以将这两个部分结合在一起去学习,我认为是非常合适的. 在之前的Multi-Armed Bandit(MAB)问题中,RL作为一种方法被用来估计一种…
蒙特卡罗方法给我的感觉是和Reinforcement Learning: An Introduction的第二章中Bandit问题的解法比较相似,两者皆是通过大量的实验然后估计每个状态动作的平均收益.不过两者的区别也是显而易见,Bandit问题比较简单,状态1->动作1->状态1,这个状态转移过程始终是自我更新的过程,而且是一一对应的关系.蒙特卡罗方法所解决的问题就要复杂一些,通常来说,其状态转移过程可能为,状态1->动作1->状态2->动作1->状态3.Sutten书…
我们在读写数据库文件时,当文件被读.写或者出现错误时,这些过程活动都会触发一些运行时事件.从一个用户角度来看,有些时候会关注这些事件,特别是我们调试.审核.服务维护.例如,当数据库错误出现.列数据被更新.CPU占用过高等,跟踪这些状态是非常有用地. 本章节覆盖了事件系统的关键区域:触发器.事件通知器.改变跟踪.SQL跟踪.扩展事件等.这些事件都有一个相似目的:响应或者记录发生的事件.但每一中事件的工作方式又不一样. 基础:触发器和事件通知器 触发器非常多,Data Manipulation La…
强化学习大致上可分为两类,一类是Markov Decision Learning,另一类是与之相对的Model Free Learning 分为这两类是站在问题描述的角度上考虑的.同样在解决方案上存在着两种方法对应着这两类问题描述,即Dynamic Programming(DP)和Stochastic Method,其中DP方法可以分为Policy Iteration与Value Iteration,统计方法皆以Monte Carlo为基础,延申后产生Temporal-Difference(TD…
本篇主要是为了记录UCB策略与Gradient策略在解决Multi-Armed Bandit问题时的实现方法,涉及理论部分较少,所以请先阅读Reinforcement Learning: An Introduction (Drfit) 的2.7,2.8的内容.为了更深入一点了解UCB策略,可以随后阅读下面这篇文章: [RL系列]Multi-Armed Bandit笔记补充(二)—— UCB策略 UCB策略需要进行初始化工作,也就是说通常都会在进入训练之前先将每个动作都测试一变,保证每个动作被选择…
Spring Ioc源码分析系列--Bean实例化过程(一) 前言 上一篇文章Spring Ioc源码分析系列--Ioc容器注册BeanPostProcessor后置处理器以及事件消息处理已经完成了对IoC容器启动方法也就是refresh()方法的简单分析.但是之前的分析在对容器实例化Bean的过程的略过了,留到了这后续的文章分析,所以这篇文章会对Bean的实例化过程做一个介绍. 首先来理一下本文的思路:关键词是实例化.由于Spring是利用反射实现的实例化,脑子里先简单想一下Java里利用发射…
Spring Ioc源码分析系列--Bean实例化过程(二) 前言 上篇文章Spring Ioc源码分析系列--Bean实例化过程(一)简单分析了getBean()方法,还记得分析了什么吗?不记得了才是正常的,记住了才是怪人,忘记了可以回去翻翻,翻不翻都没事, 反正最后都会忘了. 这篇文章是给上篇填坑的,上篇分析到真正创建Bean的createBean(beanName, mbd, args)就没有继续深入去分析了,绕得太深,说不清楚.那么这一篇,就续上这个口子,去分析createBean(be…
linux epoll系列5 解除epoll_wait状态 有时候会有解除epoll_wait状态的需求. 实现方法: 1,给执行epoll_wait的程序发signal. 2,使用sockpair. 1,给执行epoll_wait的程序发signal. #include <stdio.h> #include <unistd.h> #include <signal.h> #include <errno.h> #include <sys/epoll.h&…
在此之前,请先阅读上一篇文章:[RL系列]Multi-Armed Bandit笔记 本篇的主题就如标题所示,只是上一篇文章的补充,主要关注两道来自于Reinforcement Learning: An Introduction 的课后习题. 第一题为Exercise 2.5 (programming),主要讨论了Recency-Weighted Average算法相较于Sample Average算法的优点所在.练习内容大致为比较这两种算法在收益分布为非平稳分布的情况下的表现情况,主要的评价指标…
上周因为在处理很多数据源集成的事情一直没有更新系列文章,在这周后开始规律更新.在维度建模中我们已经了解数据仓库中的维度建模方法以及基本要素,在这篇文章中我们将学习了解数据仓库的ETL过程以及实用的ETL工具. 一.什么是ETL? 构建数据仓库的核心是建模,在数据仓库的构建中,ETL贯穿于项目始终,它是整个数据仓库的生命线.从数据源中抽取数据,然后对这些数据进行转化,最终加载到目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程(Extract,Transform,Load). 通常数…
在上一篇文章中,我们总结并模拟了JSX生成真实DOM结点的过程,今天接着来介绍一下无状态组件的生成过程. 先以下面一段简单的代码举例: const Greeting = function ({name}) { return <div>{`hello ${name}`}</div>; }; const App = <Greeting name="scott"/>; console.log(App); ReactDOM.render(App, docum…
这是我学习Reinforcement Learning的一篇记录总结,参考了这本介绍RL比较经典的Reinforcement Learning: An Introduction (Drfit) .这本书的正文部分对理论的分析与解释做的非常详细,并且也给出了对结论详尽的解析,但是把问题的解决和实现都留到到了课后题,所以本篇文章主要侧重与对Multi-Armed Bandit问题解决算法的实现以及对实现中可能遇到的问题进行一个总结与记录.此外,如果困于书中对于理论解释的冗长,可以参考下面这两篇文章(…
SARSA算法严格上来说,是TD(0)关于状态动作函数估计的on-policy形式,所以其基本架构与TD的$v_{\pi}$估计算法(on-policy)并无太大区别,所以这里就不再单独阐述之.本文主要通过两个简单例子来实际应用SARSA算法,并在过程中熟练并总结SARSA算法的流程与基本结构. 强化学习中的统计方法(包括Monte Carlo,TD)在实现episode task时,无不例外存在着两层最基本的循环结构.如果我们将每一个episode task看作是一局游戏,那么这个游戏有开始也…
1. 简介 本文开始介绍如何通过unittest来管理和执行测试用例,这一篇主要是介绍unittest下addTest()方法来加载测试用例到测试套件中去.用addTest()方法来加载我们测试用例到suite中去和利用discover()方法去加载一个路径下所有的测试用例. 2. addTest()方法 这里首先介绍unittest下addTest()方法来加载测试用例到测试套件中去.为了演示效果,我在前面文章的脚本基础上,新建了一个测试脚本,这个测试脚本有一个测试用例,加上前面的测试脚本,一…
http://blog.itpub.net/28916011/viewspace-2215046/ 在应用程序中,可以分为有状态应用和无状态应用. 无状态的应用更关注于群体,任何一个成员都可以被取代. 对有状态的应用是关注个体. 像我们前面用deployment控制器管理的nginx.myapp等都属于无状态应用. 像mysql.redis,zookeeper等都属于有状态应用,他们有的还有主从之分.先后顺序之分. statefulset控制器能实现有状态应用的管理,但实现起来也是非常麻烦的.需…
写在开头 React Hooks在我的上一个项目中得到了充分的使用,对于这个项目来说,我们跳过传统的类组件直接过渡到函数组件,确实是一个不小的挑战.在项目开发过程中也发现项目中的其他小伙伴(包括我自己)有时候会存在使用不当的情况,因此对官方的几个钩子函数做一个较为全面的总结. 函数式组件出现的原因 为什么会出现函数式组件,因为传统的类组件确实有不少缺点: 类组件中的 this 指向有点绕 通过选项去组织代码,在组件比较大的时候会很痛苦,因为类组件天生分离,不符合内聚性原则 组件复用不方便,尤其是…
在上一篇内容我们介绍了如何利用低代码开发套件实现低代码应用与U8+系统的对接集成,本次给大家带来的是如何将用友U8+系统中的数据进行价值扩展和实际应用. 我们以生产物料齐套分析为例来说明如何利用低代码将U8+系统中的系统进行扩展和应用.在开始之前,先来看看什么是生产物料齐套. 生产物料齐套的定义 生产齐套分析在生产计划安排中有重要作用,主要用于企业在生产安排上线前进行物料的齐套分析,其目的是为了更好的安排生产计划,避免上线停工滞料.齐套分析的结果对企业众多部门都有极高价值,例如企业的PMC部门.…