使用 Asynchronous Advantage Actor-Critic(A3C)算法,使用多线程,实现每个线程学习100多个回合,然后一个回合20000步杆子不倒。
代码:http://github.com/ccjy88/cartpole_a3c/

CartPole是http://gym.openai.com/envs/CartPole-v0/ 这个网站提供的一个杆子不倒的测试环境。CartPole环境返回一个状态包括位置、加速度、杆子垂直夹角和角加速度。玩家控制左右两个方向使杆子不倒。杆子倒了或超出水平位置限制就结束一个回合。一个回合中杆不倒动作步数越多越好。

基本算法是Policy Gradident Actor-Critic。A3C在多线程上,运行多个独立环境和独立智能体agent并行计算达到缩短训练时间的效果。
只要硬件条件允许,线程数越多,学习越快。

每个状态的V值,损失函数和Actor-Critic一样的

        #tderror 是现实v值和估计v的差tderror = self.target_v - self.v#critic损失是tderror的平方平均,最小二乖c_loss = tf.reduce_mean(tf.pow(tderror,2))

动作的损失函数是最小化的动作和现实误差的交叉熵,加动作的熵。

        #a_prob_log是动作估计值和现实值的交叉熵a_prob_log = -tf.reduce_sum(tf.log(self.a_prob * tf.one_hot(indices=self.a_his,depth=self.n_action)+1e-10),axis=1)#expv 动作交叉熵 * tderrorexpv = a_prob_log * tf.stop_gradient(tderror)#动作概率熵entropy = tf.reduce_sum(-self.a_prob * tf.log(self.a_prob+1e-10),axis=1)#损失函数 动作交叉熵 + 系数 * 动作熵,求这个熵最小a_loss = tf.reduce_mean(expv + 0.01 * entropy)

A3C独特之处有一个全局的参数,每次进行更新theta时是更新全局的参数theta

            #使用线程动作梯度更新全局动作theta参数self.update_a = self.opt_a.apply_gradients(zip(a_grad,self.globalac.a_params))#使用线程评价梯度更新全局评价theta参数self.update_c = self.opt_c.apply_gradients(zip(c_grad,self.globalac.c_params))#多线程更新参数时增加了线程锁locker.acquire()#更新全局theta参数 self.acnet.updateglobal(buffer_s[:memoryindex,:],buffer_a[:memoryindex],buffer_r[:memoryindex,:])locker.release()

从全局参数复制到线程参数

            #全局动作theta参数复制到线程动作参数self.pull_a = [l.assign(g) for (l,g) in zip(self.a_params,self.globalac.a_params)]#全局评价theta参数复制到线程评价参数self.pull_c = [l.assign(g) for (l,g) in zip(self.c_params,self.globalac.c_params)]

因为多个线程多个独立环境独立智能体分别并行计算获得theta梯度,并行更新全局的theta参数,所以学习速度更快。
在硬件支持的情况下, 线程越多,学习越快。

多线程更新全局参数加了locker.acquire()和locker.release(),并不确定是不是必要。多线程更新一般需要加锁。

代码:http://github.com/ccjy88/cartpole_a3c/

cartpole 离散型动作 A3C相关推荐

  1. 人工智能-强化学习-算法:Critic 【用于评价一个 Actor/Policy π】--> Q-Learning【用于训练出来一个最优 Actor/Policy π,擅长处理离散型 actions】

    一.Critic的作用 Critic就是一个神经网络,以状态 s s s 为输入,以期望的Reward为输出. Critic的作用就是衡量一个Actor在某State状态下的优劣.Given an a ...

  2. 案例详解:基于工业大数据和工业互联网的离散型智能工厂

    1.企业简介 深圳市豪恩声学股份有限公司创立于2001年,注册资本总额4168万元,公司在深圳坪山自建工业园区,拥有现代化办公及生产场地3.5万平方米,现有员工2000人,智能机器人近100台,现代化 ...

  3. ML之ME/LF:机器学习中的模型评估指标/损失函数(连续型/离散型)的简介、损失函数/代价函数/目标函数之间区别、案例应用之详细攻略

    ML之ME/LF:机器学习中的模型评估指标/损失函数(连续型/离散型)的简介.损失函数/代价函数/目标函数之间区别.案例应用之详细攻略 目录 损失函数的简介 损失函数/代价函数/目标函数之间区别 损失 ...

  4. 高等数理统计(part2)--常见的离散型分布

    学习笔记,仅供参考,有错必纠 文章目录 常见的离散型分布 常见的离散型分布 单点分布P(x=a)=1P(x = a) = 1P(x=a)=1 离散均匀分布X∼U(m)X \sim U(m)X∼U(m) ...

  5. winform 统计大量数据重复的元素个数_DAY10——推断统计之概率与概率分布:常见的离散型概率分布...

    「数学期望--某件事情大量发生之后的平均结果」 ----------------分割又分割---------------------- 昨天文章排版出了问题,今天重新排版. 数据的三个统计维度:集中程 ...

  6. 多取值离散型特征工程_特征工程(完)

    机器学习入门系列(2)--如何构建一个完整的机器学习项目,第六篇! 这也是特征工程系列最后一篇文章,介绍特征提取.特征选择.特征构建三个工作,通常特征工程被认为分为这三方面的内容,只是我将前面的数据& ...

  7. ggplot2 | 如何对连续型变量使用离散型调色板进行配色

    在7月份,本号推出了一个关于R语言配色方法的系列推文,其中第III节介绍了ggplot2工具包的配色方法--颜色标度函数 在这篇推文中,小编介绍了针对两种变量类型的三种颜色标度函数,即 离散型变量:离 ...

  8. stats | 概率分布与随机数生成(一)——离散型分布

    随机变量的分布模式是统计模型的基础,R的基础包stats提供了许多关于概率分布的函数.本篇主要介绍离散型分布,包括两点分布.二项分布.帕斯卡分布.负二项分布.几何分布.超几何分布和泊松分布. 1 st ...

  9. 离散型概率分布的抽样

    离散型概率分布可通过简单的 0-1 区间上的均匀分布获得,假设某离散型概率分布 P=[p1,p2,-,pn]P=[p_1,p_2, \ldots, p_n](∑pi=1\sum p_i=1,pip_i ...

  10. 系统学习机器学习之特征工程(二)--离散型特征编码方式:LabelEncoder、one-hot与哑变量*

    转自:https://www.cnblogs.com/lianyingteng/p/7792693.html 在机器学习问题中,我们通过训练数据集学习得到的其实就是一组模型的参数,然后通过学习得到的参 ...

最新文章

  1. C#:消息队列应用程序
  2. Python3中__init__.py文件介绍
  3. locate,find
  4. 开源任务调度平台elastic-job-lite源码解析
  5. emq认证mysql后如何使用_EMQ 认证设置和acl访问控制
  6. All in会员经济的知乎,能否实现商业化大跃进?
  7. 修改了/etc/systemd/system.conf以后必须使用daemon-reexec
  8. 前端学习(342):进制只能介于2-36之间Uncaught RangeError: toString() radix argumen
  9. Python3文本读写操作
  10. Map集合转换成实体类对象,实体类对象转换为map集合,互转工具类
  11. 热敏电阻(NTC)的基本参数及其应用
  12. 优雅发送HTTP请求
  13. Error Domain=AVFoundationErrorDomain Code=-11841 (null) timeRange 和 duration 不一致
  14. 学生选课系统功能分析
  15. JVM(1)之JVM的组成详解(字符串常量池+双亲委派机制+JIT即时编译......)
  16. 一文告诉你数据安全平台(DSP)能做什么
  17. 每日分享190210
  18. 喜剧电影《超能一家人》投资全方位分析
  19. matlab循环神经网络,循环神经网络的增强方法:注意力机制以及更多
  20. 图神经网络(Graph neural networks)综述

热门文章

  1. coreldraw快速撤回_CDR X8撤销、重做与重复操作方法介绍
  2. 计算机硬盘存贮量单位,硬盘存储计量单位KB、MB、GB大小换算
  3. nifi 安装 使用案例
  4. h5 字体加粗_html、css文字加粗方法
  5. 逆向分析-010Editor
  6. 计算智能的三个主要分支及其应用
  7. 线性系统理论(不断更新中)
  8. aiem模型matlab,一种基于高分三号数据的植被覆盖区土壤水分反演方法与流程
  9. 2021-08-26 工作记录--YDUI-带确认按钮的弹出框
  10. 地级市交通基础设施数据,省份交通基础设施数据,处理好的面板数据(excel或stata版本)