点击上方“AI遇见机器学习”,选择“星标”公众号

重磅干货,第一时间送达

十三 发自 凹非寺
量子位 报道 | 公众号 QbitAI

DeepMind今日发布了HaikuRLax两个库,都是基于JAX。

JAX由谷歌提出,是TensorFlow的简化库。结合了针对线性代数的编译器XLA,和自动区分本地 Python 和 Numpy 代码的库Autograd,在高性能的机器学习研究中使用。

而此次发布的两个库,分别针对神经网络强化学习,大幅简化了JAX的使用。

Haiku是基于JAX的神经网络库,允许用户使用熟悉的面向对象程序设计模型,可完全访问 JAX 的纯函数变换。

RLax是JAX顶层的库,它提供了用于实现增强学习代理的有用构件。

有意思的是,Reddit网友惊奇的发现Haiku这个库的名字,竟然不以“ax”结尾。

当然,也有网友对这两个库表示了肯定:

毫无疑问,对JAX起到了推动作用。

那么,我们就来看下Haiku和RLex的庐山真面目吧。

Haiku

Haiku是JAX的神经网络库,它允许用户使用熟悉的面向对象编程模型,同时允许完全访问JAX的纯函数转换。

它提供了两个核心工具:模块抽象hk.Module,和一个简单的函数转换hk.transform。

hk.Module是Python对象,包含对其自身参数、其他模块和对用户输入应用函数方法的引用。

hk.transform允许完全访问JAX的纯函数转换。

其实,在JAX中有许多神经网络库,那么Haiku有什么特别之处呢?有5点。

1、Haiku已经由DeepMind的研究人员进行了大规模测试

DeepMind相对容易地在Haiku和JAX中复制了许多实验。其中包括图像和语言处理的大规模结果、生成模型和强化学习。

2、Haiku是一个库,而不是一个框架

它的设计是为了简化一些具体的事情,包括管理模型参数和其他模型状态。可以与其他库一起编写,并与JAX的其他部分一起工作。

3、Haiku并不是另起炉灶

它建立在Sonnet的编程模型和API之上,Sonnet是DeepMind几乎普遍采用的神经网络库。它保留了Sonnet用于状态管理的基于模块的编程模型,同时保留了对JAX函数转换的访问。

4、过渡到Haiku是比较容易的

通过精心的设计,从TensorFlow和Sonnet,过渡到JAX和Haiku是比较容易的。除了新的函数(如hk.transform),Haiku的目的是Sonnet 2的API。

5、Haiku简化了JAX

它提供了一个处理随机数的简单模型。在转换后的函数中,hk.next_rng_key()返回一个唯一的rng键。

那么,该如何安装Haiku呢?

Haiku是用纯Python编写的,但是通过JAX依赖于c++代码。

首先,按照下方链接中的说明,安装带有相关加速器支持的JAX。
https://github.com/google/jax#installation

然后,只需要一句简单的pip命令就可以完成安装。

$ pip install git+https://github.com/deepmind/haiku

接下来,是一个神经网络和损失函数的例子。

import haiku as hk
import jax.numpy as jnpdef softmax_cross_entropy(logits, labels):one_hot = hk.one_hot(labels, logits.shape[-1])return -jnp.sum(jax.nn.log_softmax(logits) * one_hot, axis=-1)def loss_fn(images, labels):model = hk.Sequential([hk.Linear(1000),jax.nn.relu,hk.Linear(100),jax.nn.relu,hk.Linear(10),])logits = model(images)return jnp.mean(softmax_cross_entropy(logits, labels))loss_obj = hk.transform(loss_fn)

RLax

RLax是JAX顶层的库,它提供了用于实现增强学习代理的有用构件。

它所提供的操作和函数不是完整的算法,而是强化学习特定数学操作的实现。

RLax的安装也非常简单,一个pip命令就可以搞定。

pip install git+git://github.com/deepmind/rlax.git

使用JAX的jax.jit函数,所有的RLax代码可以不同的硬件上编译。

RLax需要注意的是它的命名规则。

许多函数在连续的时间步长中考虑策略、操作、奖励和值,以便计算它们的输出。在这种情况下,后缀_t和tm1通常是为了说明每个输入是在哪个步骤上生成的,例如:

q_tm1:转换的源状态中的操作值。
a_tm1:在源状态下选择的操作。
r_t:在目标状态下收集的结果奖励。
q_t:目标状态下的操作值。

Haiku和RLax都已在GitHub上开源,有兴趣的读者可从“传送门”的链接访问。

传送门

Haiku:
https://github.com/deepmind/haiku

RLax:
https://github.com/deepmind/rlax

—— 完 ——

推荐阅读

干货|学术论文怎么写

资源|NLP书籍及课程推荐(附资料下载)

干货|全面理解N-Gram语言模型

资源|《Machine Learning for OpenCV》书籍推荐

欢迎关注我们,看通俗干货

DeepMind发布神经网络、强化学习库,网友:推动JAX发展相关推荐

  1. DeepMind开源了强化学习库“松露”,团队自身也严重依赖它

    强化栗 发自 凹非寺  量子位 报道 | 公众号 QbitAI 今天,DeepMind开源了一个基于TensorFlow的强化学习库,名字叫TRFL. 思路是模块化,强调灵活度:如果把造智能体想象成搭 ...

  2. 【Nature重磅】OpenAI科学家提出全新强化学习算法,推动AI向智能体进化

    深度强化学习实验室 官网:http://www.neurondance.com/ 论坛:http://deeprl.neurondance.com/ 编辑:DeepRL 近年来,人工智能(AI)在强化 ...

  3. 【重磅推荐】哥大开源“FinRL”: 一个用于量化金融自动交易的深度强化学习库

    深度强化学习实验室 官网:http://www.neurondance.com/ 论坛:http://deeprl.neurondance.com/ 编辑:DeepRL 一.关于FinRL 目前,深度 ...

  4. DeepMind 的新强化学习系统是迈向通用 AI 的一步吗?

    作者 | Ben Dickson 来源 | 数据实战派 这篇文章是我们对 AI 研究论文评论的一部分,这是一系列探索人工智能最新发现的文章. 对于已经精通围棋.星际争霸 2 和其他游戏的深度强化学习模 ...

  5. DeepMind 的新强化学习系统,是迈向通用人工智能的一步吗?

    作者:Ben Dickson 来源:数据实战派 前言 尽管已经掌握围棋.星际争霸 2 和其他游戏,深度强化学习模型的主要挑战之一是,它们无法将其能力泛化到训练领域之外.这种限制使得将这些系统在现实世界 ...

  6. DeepMind的新强化学习系统是迈向通用AI的下一步吗?

    来源:AI前线 作者:Ben Dickson 译者:马可薇 策划 :凌敏 本文是 TechTalks 在人工智能领域最新研究发现的论文评论系列. 对于精通围棋.星际争霸 2 以及其他游戏的深度强化学习 ...

  7. Life——一个简洁易用的强化学习库,基于pytorch

    简介 Life是一个基于pytorch实现的强化学习库,实现了多种强化学习算法. 项目地址:https://github.com/HanggeAi/Life 目前包含的强化学习算法 Sarsa mul ...

  8. DeepMind的新强化学习系统,是迈向通用人工智能的一步吗?

    尽管已经掌握围棋.星际争霸 2 和其他游戏,深度强化学习模型的主要挑战之一是,它们无法将其能力泛化到训练领域之外.这种限制使得将这些系统在现实世界中的应用变得非常困难,因为现实世界中的情况比训练模型的 ...

  9. 强化学习原理与python实现原理pdf_纯Python实现!Facebook发布PyTorch分布式强化学习库...

    图灵TOPIA来源:Facebook编译:刘静图灵联邦编辑部出品Facebook于近日发布了PyTorch中用于强化学习(RL)研究的平台:TorchBeast.TorchBeast实现了流行的IMP ...

最新文章

  1. 关于在Android中一个XML文件包含另外一个XML的方法
  2. SyntaxHighlighter Evolved高亮插件的编程语言及语言别名对照表
  3. scala函数的定义
  4. 关于Android中Animation的停止
  5. C++Singleton的DCLP(双重锁)实现以及性能测评
  6. zabbix3监控ESXI主机
  7. 串口服务器介绍及产品特点详解
  8. 【狂转】某个N人的访谈记录
  9. 错误:在非结构或联合中请求成员‘next’
  10. 改变css名称,样式命名规则?css
  11. 最近使用mysql遇到的几个问题
  12. Ubuntu中zabbix4.2配置shell脚本邮件报警
  13. yum无法正常使用的解决办法
  14. elementui 遮罩
  15. 关于sublime出现PyV8binary错误
  16. Lorenz系统的吸引子相图
  17. 无法修改默认浏览器的原因
  18. 口渴·冰绿茶心情 -旧文
  19. 【2021版】吐血整理_专升本计算机文化基础—Excel2010
  20. 浅谈游戏数据分析---留存篇一-留存折损

热门文章

  1. 行业新价值 看物联网的那些“后续力量”
  2. Android SearchView介绍及搜索提示实现
  3. Mysql字符串处理
  4. 转:数字集群移动通信系统技术体制综述及优选准则
  5. iOS在label中显示表情
  6. 序列发生器组件 Example 程序
  7. 利用JS将页面指定部分存为HTML页
  8. 惠普鼠标g260_惠普g260鼠标怎么样 惠普鼠标怎么样?
  9. python中平均值函数_python自定义函数ma(x,y)求简单平均值输出结果到列表
  10. pandas 里面对nan的判断