ArrayZoneYour

自由自在,无忧无虑的小天地

  • 首页
  • 分类
  • 归档
  • 标签

TensorFlow强化学习入门(3)——构建仿真环境来进行强化学习

发表于 2018-02-27   |   分类于 强化学习   |  

在上一篇文章中,我演示了如何设计一个基于策略的强化学习agent来解决CartPole任务。在本文中,我们将从另一个角度重新审视这个问题——如何构建仿真环境来提升agent在当前环境下的性能。

Model Network : 建模网络,本文中称为仿真环境

如果你还没有阅读本系列之前的文章并且还是强化学习的初学者,我推荐你按照顺序来阅读,文末有之前文章的链接。

仿真环境是什么,我们为什么要引入仿真环境?在上图中,仿真环境是一个用于模拟真实世界中的动态问题的神经网络。拿我们之前CartPole的问题来说,我们需要一个可以根据之前的位置和行动来预测木棒下次位置的模型。在学习得到一个精确的模型之后,我们每次就可以直接用模型来训练我们的agent而不是必须放在真实环境中训练。当然如果原始的环境就是仿真得到的(像CartPole就模拟了真实世界中的物理情景),我们就不必再这样做了。

与计算机模拟不同,真实环境的部署需要时间,而且真实世界中的物理法则也使得环境初始化等一系列操作的可行性大幅下降。相反地,通过模型来模拟环境可以节省时间和成本,agent也可以“假想”自己就在真实环境中运动,我们可以直接在这个虚拟的环境中训练决策网络。只要我们的模拟环境足够优秀,agent即使完全在虚拟环境中训练也可以在真实环境中达到很好的性能。

阅读全文 »

TensorFlow强化学习入门(2)——基于策略的Agents

发表于 2018-02-25   |   分类于 强化学习   |  
Arthur JulianiSimple Reinforcement Learning with Tensorflow: Part 2 - Policy-based Agents

在本教程系列的(1)中,我演示了如何构建一个agent来在多个选择中选取最有价值的一个。在本文中,我将讲解如何得到一个从现实世界中获取 观测值 ,并作出 长期收益 最大的 行动 的agent。正如前文所说,本文解决的问题将是一个完备的强化学习问题。

阅读全文 »

TensorFlow强化学习入门(1.5)——上下文赌博机

发表于 2018-02-24   |   分类于 强化学习   |  
Arthur JulianiSimple Reinforcement Learning with Tensorflow Part 1.5: Contextual Bandits

注意:本文为该系类文章中(1)和(2)之间的过渡

在上一篇文章中我们简要介绍了强化学习并构建了一个简单的agent来解决多臂赌博机问题。在多臂赌博机问题中agent不需要考虑所处环境的状态,只要通过学习确定那一个行动是最优的即可。在不考虑环境状态时,任一时间点上的最优决策是所有时刻最优的决策。在本文结束后,我们会建立一个完备的强化学习问题:问题中存在环境状态并且下一时刻的状态取决于上一步的行动,决策的收益也是延迟发放的。

从无状态的场景迁移到完备的强化学习需要解决很多问题,下面我将提供一个实例并展示如何解决它。希望新接触到强化学习的同学可以从这个过程中有所收获。本文中我将着重讲解什么是状态,但本文中的状态不是由之前的状态和行动决定的。延迟收益的问题本文也不做讨论,这两个问题都将留到下篇文章解决。本文这种强化学习问题的简化版本又被称为上下文赌博机问题。

阅读全文 »

TensorFlow强化学习入门(1)——双臂赌博机

发表于 2018-02-22   |   分类于 强化学习   |  
Arthur JulianiSimple Reinforcement Learning in Tensorflow: Part 1 - Two-armed Bandit

简介

强化学习不仅仅赋予了我们教会人工agent如何行动的能力,还使得agent可以通过我们提供的交互式环境进行学习。通过结合深度神经网络习得的复杂表示和RL agent的目标驱动型学习,计算机取得了很多令人惊叹的成绩:在很多中雅达利游戏中击败人类,打败围棋世界冠军等等。

要理解这种agent的构建方式,我们要在监督学习的思维方式上作出一点转变。与监督学习不同,输入信号不能立刻得到响应,因此监督学习中结合激励和响应设计的算法不再适用,取而代之的是强化学习通过 观测(observation),收益(rewards) 和 行动(actions) 的组合来自主学习正确的组合。由于我们不能在任意场景下告诉agent什么才是“真正”正确的行动,所以我们需要一些技巧。在本篇和后面的文章中我会分享强化学习agent创建和训练的整个流程。为了概念的清晰,我们将从简单的agent和任务出发,随后再进行完善使其可以工作在复杂的环境下。

阅读全文 »

TensorFlow强化学习入门(0)——Q-Learning的查找表实现和神经网络实现

发表于 2018-02-21   |   分类于 强化学习   |  
Arthur JulianiSimple Reinforcement Learning with Tensorflow Part 0: Q-Learning with Tables and Neural Networks

我们将学习如何处理OpenAI FrozenLake问题,当然我们的问题不像图片中那样逼真

在我这系列的强化学习教程中,我们将探索强化学习大家族中的Q-Learning算法,它和我们后面的教程(1-3)中基于策略的算法有一些差异。在本节中,我们先放下复杂而笨重的深度神经网络,首先在一个简单的查找表基础上实现第一个算法版本,随后我们再考虑如何使用TensorFlow将神经网络的形式集成进来。考虑到该节主要是回顾基础知识,所以我把它归为第0部分。对Q-Learning中发生的细节有所了解对于我们后面学习将策略梯度(policy gradient)和Q-Learning结合来构建先进的RL agent大有裨益。(如果你对策略网络更感兴趣或者已经掌握了Q-Learning相关知识,可以等译者后面的翻译或者查阅原文)

与利用函数直接将当前观测转化为行动的策略梯度方法不同,Q-Learning尝试学习给定状态下的对应值并据此在给定状态下作出特定的行动。尽管两者作出行动的手段不同,但是都可以达到在给定场合下作出智能的行动的效果。你之前可能听说过深度Q-网络已经可以玩雅达利游戏了。这其实只是我们下面讨论的Q-Learning算法的更大更复杂的实现而已。

阅读全文 »

A3T:对抗性增强的对抗性训练

发表于 2018-02-19   |  
Yoshua BengioA3T: Adversarially Augmented Adversarial Training

摘要

最近的研究指出深度神经网络对对抗性扰动十分敏感,所谓对抗性扰动就是专门设计用来欺骗神经网络的施加在输入数据上的微小扰动。在这次的研究中,我们从强化表示的不变性出发,探究了一种增强深度神经网络鲁棒性的流程方法。

(先占坑以后再翻吧)

使用TensorFlow实现股票价格预测深度学习模型

发表于 2018-02-17   |   分类于 深度学习   |  
Sebastian HeinzA simple deep learning model for stock price prediction using TensorFlow

在最近的黑客马拉松中,我们在STATWORX上进行协作,团队的一些成员利用Google Finance API抓取了每分钟的标准普尔500指数。除了标准普尔500指数以外,我们还收集了其对应的500家公司的股价。在得到了这些数据之后,我立刻想到了一点子:基于标准普尔指数观察的500家公司的股价,用深度学习模型来预测标准普尔500指数。

把玩这些数据并用TensorFlow在其上建立深度学习模型是很有趣的,所以我决定写下这篇文章:预测标准普尔500指数的简易TensorFlow教程。你将看到的不是一个深入的教程,更多的是从高层次来讲解TensorFlow模型的重要构成组件和概念。我编写的Python代码并没有做专门的性能优化但是可读性还可以。下载我使用的数据集

注意:本文只是基于TensorFlow的一个实战教程。真正预测股价是非常具有挑战性的,尤其在分钟级这样频率较高的预测中,要考虑的因素的量是庞大的。

阅读全文 »

在深度学习模型中使用学习率调度器

发表于 2018-02-17   |   分类于 深度学习   |  

到目前为止,训练神经网络和大型的深度学习网络是一个困难的优化问题。

随机梯度下降在神经网络的训练中是一个很经典的算法。随机梯度下降和学习率一起决定着神经网络中权重的更新,为了同时保证训练速度和收敛范围,目前最常用的方法就是动态衰减神经网络的学习率(可以保持固定的Batch Size,对训练机器显存的利用和规划有利)。

在本文中,我们使用Python的Keras进行实验,尝试两种不同的学习率衰减方法来训练我们的神经网络模型。

阅读全文 »

Hello World

发表于 2018-02-17   |  

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

代码整洁之道——有意义的命名

发表于 2017-01-23   |   分类于 读书笔记——代码整洁之道   |  

谢谢《代码整洁之道》这本书,让我对Clean Code有了更深的理解,下面是我做的一些笔记

有意义的命名

下面是取个好名字的几条简单规则

阅读全文 »
123
ArrayZoneYour

ArrayZoneYour

奇妙的事情每天都在发生

21 日志
6 分类
14 标签
© 2018 ArrayZoneYour
由 Hexo 强力驱动
主题 - NexT.Muse