来自图像的原始输入维度非常高,造成在强化学习中数据利用率非常低效,而来自伯克利的新论文 CURL: Contrastive Unsupervised Representations for Reinforcement Learning 认为如果智能体能在高维的观测信息中学习到更有用的表征,那么基于这些表征所做的强化学习算法将会更加数据高效。该论文主要通过对比学习的方法对高维原始图像输入做表征,能达到可以比肩直接用向量化状态输入的数据利用率。
树莓派配置记录
换源
编辑 /etc/apt/sources.list
文件,删除原文件所有内容,用以下内容取代:
1 | deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib |
编辑 /etc/apt/sources.list.d/raspi.list
文件,删除原文件所有内容,用以下内容取代:
1 | deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui |
挂载 U 盘
参考:https://www.jianshu.com/p/0ea8e7b7d64d
1 | $ sudo mkdir /mnt/usb |
安装 bt 下载器 transmission
参考:https://shumeipai.nxez.com/2013/09/08/raspberry-pi-bt-download-servers.html
1 | sudo apt-get install transmission-daemon |
配置 settings.json
1 | "download-dir": "/mnt/usb/downloads", |
1 | sudo service transmission-daemon reload |
安装 Adafruit_Python_GPIO
1 | sudo apt-get update |
开启 i2c
1 | sudo raspi-config |
安装 python3 gpio
1 | sudo apt-get install python3-rpi.gpio |
更新 pip
1 | pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple |
Overleaf 服务器配置
首先根据官方教程 https://docs.docker.com/engine/install/ubuntu/ 确保服务器已经安装了 Docker,同时根据 https://docs.docker.com/compose/install/ 安装 Docker Compose。
拉取最新的 overleaf 服务器版本
1
$ docker pull sharelatex/sharelatex
在用户目录
~
下新建文件夹~/sharelatex/, ~/sharelatex/sharelatex_data/, ~/sharelatex/mongo_data/, ~/sharelatex/redis_data/
下载 docker-compose.yml 文件,并存在
~/sharelatex/
文件夹中根据需要修改 docker-compose.yml 文件,可以更改服务器映射的端口号
ports
,修改 sharelatex, mongo 和 redis 的volumes
到步骤3创建的文件夹中。注意SHARELATEX_APP_NAME
中不能有特殊字符,否则可能会解析失败。进入
~sharelatex
启动 docker-compose.yml1
$ docker-compose up
由于默认安装的是最小版本 TeXLive,如果要安装完整包,执行
1
$ docker exec sharelatex tlmgr install scheme-full
或者也可以安装任意的单个包,只需要把
sheme-full
替换为包的名称即可第一次启动镜像后,访问
/launchpad
页面设置管理员账号
tracing in tf.function
1 | import tensorflow as tf |
比较动态图与静态图的执行速度
1 | def test1(a, b): |
1 | a = np.random.randn(1024, 1024).astype(np.float32) |
1 | t = time.time() |
动态图 3.0627214908599854
静态图第一次构造 0.5964057445526123
静态图 0.6522562503814697
Squashing
一般环境的动作空间是有界的,但由于策略是个分布,如高斯分布,是无界的,所以我们需要对动作进行 squashing 挤压。\(\tanh\) 是一个可逆函数,值域在 \((-1,1)\) 之间,非常适合用来达到我们的目的。
换句话说,一个 squashed 后的与状态独立的高斯策略应该是 \(\mathbf{a}=\tanh \left(\mathbf{b}_{\phi}(\mathbf{s})+\mathbf{A}_{\phi}(\mathbf{s}) \epsilon\right)\) ,其中 \(\epsilon \sim \mathcal{N}(0, I)\) , \(\mathbf{b}\) 是可训练的偏差,\(\mathbf{A}\) 是可训练的满秩矩阵,一般来说是对角全为正数的对角矩阵。我们可以将两个函数的转换简写成:\(\mathbf{a}=\left(f_{2} \circ f_{1}\right)(\epsilon)\) ,其中 \(\mathbf{z}=f_{1}(\epsilon) \triangleq b(\mathbf{s})+A(\mathbf{s}) \epsilon\) , \(\mathbf{a}=f_{2}(\mathbf{z}) \triangleq \tanh (\mathbf{z})\) 。
Soft actor-critic 需要我们计算动作的 log-likelihood 值,因为 \(f_1\) 和 \(f_2\) 都是可逆的,所以我们可以应用如下定理:对于任意可逆函数 \(\mathbf{z}^{(i)}=f_{i}\left(\mathbf{z}^{(i-1)}\right)\) ,我们有
\[ \begin{align} \mathrm{z}^{(N)}=\left(f_{N} \circ \cdots \circ f_{1}\right)\left(\mathrm{z}^{0}\right) & \Leftrightarrow \\ \log p\left(\mathrm{z}^{(N)}\right) &= \log p\left(\mathrm{z}^{(0)}\right)-\sum_{i=1}^{N} \log \left|\operatorname{det}\left(\frac{d f_{i}\left(\mathrm{z}^{(i-1)}\right)}{d \mathrm{z}^{(i-1)}}\right)\right| \end{align} \]
其中 \(\frac{d f_{i}(\mathbf{z})}{d \mathbf{z}}\) 是 \(f_i\) 的雅可比矩阵。
在实际开发中,对于 \(\tanh\) ,雅可比矩阵是对角为 \(\frac{d \tanh \left(z_{i}\right)}{d z_{i}}=1-\tanh ^{2}\left(z_{i}\right)\) 的对角矩阵,因此我们有: \[ \log \left|\operatorname{det}\left(\frac{d f_{2}(\mathbf{z})}{d \mathbf{z}}\right)\right|=\sum_{i=1}^{|\mathcal{A}|} \log \left(1-\tanh ^{2}\left(z_{i}\right)\right) \] 即: \[ \pi(\mathbf{a} | \mathbf{s})=\mu(\mathbf{z} | \mathbf{s})\left|\operatorname{det}\left(\frac{\mathrm{da}}{\mathrm{dz}}\right)\right|^{-1} \]
\[ \log \pi(\mathbf{a} | \mathbf{s})=\log \mu(\mathbf{z} | \mathbf{s})-\sum_{i=1}^{|\mathcal{A}|} \log \left(1-\tanh ^{2}\left(z_{i}\right)\right) \]
Natural Gradient Descent
本文翻译自 Natural Gradient Descent, Agustinus Kristiadi.
假设我们现在有一个概率模型 \(p(x|\theta)\) ,我们希望通过最大化似然函数来找到最优的参数 \(\theta\),也就是最小化损失函数 \(\mathcal{L}(\theta)\) ,即负的似然函数。 一般用来解决优化问题的方法是使用梯度下降法,我们根据 \(-\nabla \mathcal{L}(\theta)\) 的方向来使参数向前走一步,这个方向是 \(\theta\) 在参数空间中最陡峭的方向。可以用如下公式表示: \[ \frac{-\nabla_\theta \mathcal{L}(\theta)}{\lVert \nabla_\theta \mathcal{L}(\theta) \rVert} = \lim_{\epsilon \to 0} \frac{1}{\epsilon} \mathop{\text{arg min}}_{\text{ s.t. } \lVert d \rVert \leq \epsilon} \mathcal{L}(\theta + d) \, . \] 意思就是要去选取一个向量 \(d\) ,使得新参数 \(\theta +d\) 在参数 \(\theta\) 的距离为 \(\epsilon\) 的范围内,并能最小化损失。注意我们在描述这个范围的时候用的是欧几里得范数,因此梯度下降取决于参数空间(parameter space)的欧几里得几何。
但如果我们的目标是使损失函数最小(使似然性最大化),那么很自然地,我们会在所有可能的似然性空间中让参数向前走一步。 由于似然函数本身是概率分布,因此我们可以将其称为分布空间(distribution space) 。 因此,在该分布空间而不是参数空间中采用最陡的下降方向是有意义的。
那么我们应该在该空间中使用哪个度量/距离呢?一个流行的选择是 KL 散度。
理解 Variational Autoencoders (VAEs)
本文翻译自 Understanding Variational Autoencoders (VAEs), Joseph Rocca, Sep 24, 2019
这篇文章里,我们主要介绍一种深度生成模型:Variational Autoencoders (VAEs)。概括地说,VAE 就是一个自动编码器(autoencoder),但它编码后的分布在训练阶段需要被正则化,以此让它的隐空间(latent space)有足够好的性质来使我们生成新的数据。另外,用 variational 这个词是因为该方法与正则化和统计学中的变分推断有关。
理解 Variational Lower Bound
本文翻译自 Understanding the Variational Lower Bound, Xitong Yang, September 13, 2017
变分贝叶斯(Variational Bayesian (VB))是一类非常受欢迎的统计类机器学习方法。VB 非常有用的一个特性是推断优化的二元性:我们可以将统计推断问题(从一个随机变量的值推断出另一种随机变量的值)作为优化问题(找到参变量的值来最小化某些目标函数)。另外,variational lower bound ,也被称作 evidence lower bound (ELBO),在 VB 的推导中起了非常重要的作用。在这篇文章中,我们主要介绍有关 variational lower bound 的最基础的知识,有助于理解与 “hard attention” 机制有关的论文。
Recurrent Experience Replay In Distributed Reinforcement Learning
DeepMind 在 Distributed Prioritized Experience Replay 的基础上增加了 RNN 的支持,于是形成了本文要介绍的论文 Recurrent Experience Replay in Distributed Reinforcement Learning 。论文主要讨论了由于使用经验池机制产生参数滞后 (parameter lag) 现象而导致的表征漂移 (representational drift) 和 RNN 隐藏状态滞后 (recurrent state staleness) 问题,这两个问题在分布式学习中更加显著。
IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures
深度强化学习在一系列任务中取得了显着的成功,从机器人的连续控制问题到 Go 和 Atari 等游戏。 但到目前为止,深度强化学习的发展在这些领域中仅局限于单个任务,每个智能体需要对每个任务进行单独的调整和训练。
DeepMind 开发了一套新的训练环境,DMLab-30,在具有相同的动作空间和图像状态环境中进行各种各样的挑战。
而 DeepMind 在 Impala: Scalable distributed deep-rl with importance weighted actor-learner architectures 论文中,只用一个智能体在多个任务上进行学习。为了训练智能体在多任务上获得更好的效果,需要大吞吐量并能有效利用每个数据点。 为此,DeepMind 开发了一种新的,高度可扩展的分布式体系结构,称为 Importance Weighted Actor-Learner Architecture,它使用一种称为 V-trace 的 off-policy 校正算法。