1.前言


  我来自剑桥机器学习小组。我不止一次听到有人称我们为“世界上最大的贝叶斯机器学习小组”。我的意思是,我们每天都会处理概率模型和不确定性。也许这就是为什么在使用这些深度学习模型时感到如此怪异的原因。您会发现,过去的几年中,我主要从事高斯过程的研究,为函数建模概率分布。我已经习惯了不确定性的决策范围,许多生物学家以类似的方式依靠模型的不确定性来分析其数据。单凭点估计工作对我来说很奇怪。我无法判断我正在使用的新模型是在做出明智的预测,还是只是随机猜测。我敢肯定,您自己曾经遇到过这个问题,无论是分析数据还是解决某些任务,都希望您能告诉您模型是否确定其输出,并问自己“也许我需要使用更多不同的数据?或者也许更改模型?”。正如人们所相信的那样,大多数深度学习工具的工作环境与概率模型有很大的不同,概率模型拥有这种宝贵的不确定性信息。我最近花了一些时间试图理解为什么这些深度学习模型如此出色地工作-试图将它们与最近几年的新研究联系起来。看到它们与我心爱的高斯过程有多近,我感到非常惊讶。令我惊讶的是,我们可以从这些深度学习模型中获取不确定性信息,而无需进行任何更改
  我在下面放置了用于示例的模型(github),因此您可以自己使用它们。这些模型将Caffe用于神经网络和卷积神经网络,因此您必须编译一些c++代码才能使用它们。这可能会或可能不会很痛苦,具体取决于您对此类内容的经验。您还可以在下面的交互式演示中找到JavaScript代码-回归的不确定性和在Karpathy框架上扩展的深度强化学习。

2.为什么我应该关注不确定性?

如果您给我几张猫和狗的图片-然后您要求我对一张新的猫照片进行分类-我应该非常有信心地返回预测。 但是,如果您给我一张鸵鸟的照片,并强迫我的手确定它是猫还是狗,那么我最好以低信心返回预测。研究人员一直在生命科学中使用这种信息(例如,看看Krzywinski和Altman,Herzog和Ostwald,Nuzzo出版的《自然》论文,伍尔斯顿的有趣案例以及我的主管Ghahramani最近进行的调查)。在此类领域中,说出您是否对自己的估计充满信心非常重要。例如,如果您的医师根据您对病历的一些分析建议您使用某些药物,他们会更好地了解分析该药的人是否对分析结果有把握。
  此类信息也可建立于人工智能的基础上。想象一个agent(例如,Roomba吸尘器)需要根据其行为(向不同方向滚动)来了解其环境(您的客厅)。它可以决定前进,并可能撞墙。使用正的奖赏鼓励Roomba避免碰到墙壁,随着时间的流逝,它将学会避免它们,以最大化其奖励。此设置称为强化学习。 Roomba必须探索其环境,以寻找这些奖赏,而这正是不确定性发挥作用的地方。Roomba会尽量减少其对不同动作的不确定性-以及在这种探索与利用其已知知识之间进行权衡。下面,我们将根据最近(现在是著名的)关于深度强化学习的DeepMind论文逐步介绍一个具体示例。依靠Karpathy出色的JavaScript实现,我们将使用一些代码演示上述要点,并看到利用不确定性信息的模型收敛得更快
  不确定性信息对于深度学习的使用者也很重要。您可能每天都使用深度学习模型来解决视觉或语言学方面的不同任务。了解模型是否过分自信或错误地过分自信可以帮助您获得更好的性能。在下面,我们将看到一些简化的场景,其中来自于模型的不确定性由于数据差异性而大大增加。认识到测试数据与训练数据有很大差异,因此可以轻松地相应地扩充训练数据。

3.我如何得到不确定性信息?


  对于上述某些问题,传统上会使用贝叶斯技术。对于这些问题,研究人员最近转向了深度学习技术。但这必须付出代价。我的意思是,如何从这些深度学习工具中获得模型不确定性(顺便说一句,使用softmax来获取概率实际上不足以获取模型不确定性-我们将在下面的示例中进行回顾)?好吧,众所周知,这些深度工具可以与我上面提到的高斯过程相关。取一个神经网络(加权线性函数然后是非线性函数的递归应用),在每个权重上放置一个概率分布(例如,正态分布),并使​​用无限多个权重去模拟高斯过程(更多细节请参见Neal或Williams)。对于有限数量的权重,您仍然可以通过将分布放在权重上来获得不确定性。这最初是由MacKay在1992年提出的,并在1995年由Neal进行了扩展。最近,Graves在2011年,DeepMind的Kingves等人以及Blundell等人在2015年使用的各种技术以不同的名称复现了这些想法(尽管这些技术使用的是贝叶斯神经网络(如上图),该网络的历史可以追溯到1993年的Hinton和van Camp以及1998年的Barber和Bishop)。但是,这些模型很难使用,通常需要更多参数来进行优化,因此并没有真正流行起来。
  我认为这就是为什么令我惊讶的是,dropout这种已经在深度学习中使用了多年的无处不在的技术,可以为我们提供原则上的不确定性估计了。从某种意义上讲,不确定性估计基本上近似于我们的高斯过程的估计。以您的深度学习模型为例,在该模型中您使用了dropout来避免过拟合,您可以提取模型不确定性而无需更改任何事情。直观地,您可以将有限模型视为高斯过程的近似值。优化目标函数时,可以最大程度地减小模型与高斯过程之间的“距离”(更确切地说是KL散度)。我将在下面更详细地说明这一点。但是在此之前,让我们回想一下什么是dropout,并快速介绍高斯过程,并看一些从dropout网络获得的不确定性的例子。

3.深度模型,Dropout以及高斯过程

如果您对dropout和高斯过程很了解,可以放心地跳到下一部分,我们将在其中学习如何从dropout网络中提取不确定性信息,并处理从神经网络,卷积神经网络和深度强化学习中获得的不确定性 。但是为了使每个人都能够理解,让我们快速研究每个概念。

3.1 Dropout和深度模型


  让我们快速浏览一个具有单隐藏层和用于回归任务的dropout网络模型。我们用W1,W2W_1,W_2W1​,W2​分别表示将第一层连接到隐藏层并将隐藏层连接到输出层的权重矩阵。在应用一些逐元素非线性计算σ(⋅)σ(⋅)σ(⋅)之前,它们会对层的输入进行线性变换。我们用bbb表示非线性输入的偏差。我们假设模型输出DDD维矢量,而其输入是QQQ维矢量,其中KKK个隐藏单元。因此,我们的W1W_1W1​是Q×KQ×KQ×K矩阵,W2W_2W2​是K×DK×DK×D矩阵,bbb是KKK维向量。给定某些输入xxx,标准网络将输出y^=σ(xW1+b)W2\hat y=σ(xW_1 + b)W_2y^​=σ(xW1​+b)W2​。
  Dropout是一种用于避免在这些简单网络中过拟合的技术。在过拟合情况下,模型无法很好地将其训练数据推广到测试数据。它是几年前由Hinton等人介绍的,并在(Srivastava等人)中进行了更广泛的研究。为了使用dropout,我们分别采样了两个维度为QQQ和KKK的二元向量b1,b2b_1,b_2b1​,b2​。对于i=1,2i=1,2i=1,2,向量bib_ibi​的元素以概率0≤pi≤10≤p_i≤10≤pi​≤1取值为111。给定输入xxx,我们将输入元素的1−p11-p_11−p1​比例设置为零:xb1xb_1xb1​(为保持运算的简洁,当我们用diag(⋅)diag(⋅)diag(⋅)运算符表示将向量映射到一个对角矩阵,并且对角上的元素为向量的值时,将b1b_1b1​写为diag(b1)diag(b_1)diag(b1​))。第一层的输出即为σ(xb1W1+b)σ(xb_1W_1 + b)σ(xb1​W1​+b),然后我们将输出元素以1−p21-p_21−p2​比例随机设置为零,然后进行线性变换以得出dropout模型的输出y^=σ(xb1W1+b)b2W2\hat y=σ(xb_1W_1+b)b_2W_2y^​=σ(xb1​W1​+b)b2​W2​。随后,我们将该运算扩展到多层。
  为了使用网络进行回归,我们可以使用均方误差损失:E=12N∑n=1N∣∣yn−y^n∣∣22E=\frac{1}{2N}∑^N_{n=1}||y_n-\hat y_n ||^2_2E=2N1​∑n=1N​∣∣yn​−y^​n​∣∣22​,其中{y1,...,yN}\{y_1,...,y_N\}{y1​,...,yN​}是NNN个观察到的输出值,而{y^1,...,y^N}\{\hat y_1,... ,\hat y_N\}{y^​1​,...,y^​N​}是模型的输出,以及相应的观察到的输入{x1,...,xN}\{x_1,...,x_N\}{x1​,...,xN​}。在优化过程中,经常会添加一个正则项。我们经常使用L2L_2L2​正则化来进行具有权值λλλ(或者,可以对导数进行缩放)的权重衰减,从而实现最小化目标函数(通常称为成本函数):
Ldropout=E+λ(∣∣W1∣∣22+∣∣W2∣∣22+∣∣b∣∣22).\mathcal L_{dropout}=E+\lambda(||W_1||^2_2+||W_2||^2_2+||b||^2_2).Ldropout​=E+λ(∣∣W1​∣∣22​+∣∣W2​∣∣22​+∣∣b∣∣22​).
  注意,优化此目标函数等同于反向传播时按学习率缩放成本函数的导数,并按权重衰减缩放正则化的导数,这就是这种优化的实现方式。我们对每个输入点和模型的每个前向遍历的二进制向量bib_ibi​的新实现进行采样(评估模型的输出),并在反向遍历中使用相同的值(将导数传播到要优化的参数W1,W2,bW_1,W_2, bW1​,W2​,b)。丢失的权重b1W1b_1W_1b1​W1​和b2W2b_2W_2b2​W2​通常按1pi\frac{1}{p_i}pi​1​缩放以保持恒定的输出幅度。在测试时,我们不对任何变量进行采样,而仅使用权重矩阵W1,W2,bW_1,W_2,bW1​,W2​,b。该模型可以轻松地推广到多个层次和分类模型。有许多实现此模型的开源软件包(例如Pylearn2和Caffe)。

3.2 高斯过程


  高斯过程是统计学方面的强大工具,可让我们对函数的分布进行建模。它已应用于有监督和无监督领域,甚至用于回归和分类任务。高斯过程提供了很好的属性,例如对函数值的不确定性估计,对过度拟合的鲁棒性以及超参数调整的原则方法。给定一个训练数据集,其中包含NNN个输入{x1,...,xN}\{x_1,...,x_N\}{x1​,...,xN​}及其对应的输出{y1,...,yN}\{y_1,...,y_N\}{y1​,...,yN​},我们想估计一个用于生成观测值的函数y=f(x)y=f(x)y=f(x)。 为了保持符号的简洁,我们将输入表示为X∈RN×QX∈R^{N×Q}X∈RN×Q,输出表示为Y∈RN×DY∈R^{N×D}Y∈RN×D。
  能够生成我们数据的函数是什么?遵循贝叶斯方法,我们将对函数p(f)p(f)p(f)空间构建一个些先验分布。这种分布代表了我们先验的信念,即哪些函数更有可能生成哪些数据,哪些函数不太可能生成我们的数据。然后,在给定数据集(X,Y)(X,Y)(X,Y)的情况下,我们寻找函数空间的后验分布:
p(f∣X,Y)∝p(Y∣X,f)p(f).p(f|X,Y)\varpropto p(Y|X,f)p(f).p(f∣X,Y)∝p(Y∣X,f)p(f).
根据我们的观测数据,此分布捕获了最可能的函数。然后,我们可以使用测试点x∗x^*x∗进行预测:
p(y∗∣x∗,X,f)=∫p(y∗∣f∗)p(f∗∣x∗,X,Y)df∗.p(y^*|x^*,X,f)=\int p(y^*|f^*)p(f^*|x^*,X,Y)df^*.p(y∗∣x∗,X,f)=∫p(y∗∣f∗)p(f∗∣x∗,X,Y)df∗.
y∗y^∗y∗的期望值称为模型的预测均值,其方差称为预测不确定性
  通过使用高斯过程对函数空间上的分布进行建模,我们可以分析评估回归任务中其对应的后验,以及估计分类任务中的后验。实际上,这意味着对于回归任务,我们在所有函数值上放置一个联合高斯分布:
F∣X∼N(0,K(X,X))Y∣F∼N(F,τ−1IN)F|X\sim \mathcal N(0,K(X,X))\\ Y|F\sim \mathcal N(F,τ^{-1}I_N)F∣X∼N(0,K(X,X))Y∣F∼N(F,τ−1IN​)
具有一些精度的超参数τττ,其中INI_NIN​是尺寸为N×NN×NN×N的单位矩阵。
  为了对数据建模,我们必须为高斯分布选择协方差函数K(X,X)K(X,X)K(X,X)。 此函数定义每对输入点K(xi,xj)K(x_i,x_j)K(xi​,xj​)之间的相似度。给定大小为NNN的有限数据集,此函数将得出N×NN×NN×N协方差矩阵K:=K(X,X)K:= K(X,X)K:=K(X,X)。 这种协方差代表了我们先前对模型不确定性应该是什么样的信念。例如,我们可以选择一个平稳的平方指数协方差函数,对于该函数,模型的不确定性会远离数据。某些非平稳协方差函数对应于TanHTanHTanH(双曲正切)或ReLUReLUReLU(线性校正)非线性。我们将在下面的示例中看到这些捕获的不确定性。如果您想知道它们与高斯过程的对应关系,则在后面进行解释。

4.不确定性的乐趣

让我们来体验一下dropout网络的不确定性。我们将介绍一些不错的回归和图像分类示例,在下一节中,我们将演示深度强化学习。但是现在我们仍然没有谈论如何从我们的dropout网络中获取不确定性信息,这非常简单。
  采用任何使用了dropout进行训练的网络,并给定一些输入x∗x^∗x∗。我们需要根据给定的输入得到期望的模型输出(预测的均值E(y∗)\mathbb E(y^*)E(y∗)),以及模型对其预测具有的信心(预测的方差Var(y∗)Var(y^*)Var(y∗))。正如我们将在下面看到的那样,我们的dropout网络只是一个高斯过程的近似值,因此在回归任务中它将具有一定的模型精度(与我们假设的观察噪声成反比)。我们如何获得这种模型精度?
  1)首先,定义一个先验的缩放长度lll。这捕获了我们对函数频率的信念。短的缩放长度lll对应于高频数据,而长的缩放长度lll对应于低频数据。取缩放长度的平方,然后除以权重衰减。然后,我们将结果缩放为数据点数量上dropout概率的一半。从数学上讲,这导致我们在上面讨论过的高斯过程精度为τ=l2p2Nλτ=\frac{l^2p}{2Nλ}τ=2Nλl2p​(想知道为什么?请翻阅下面的“Why does it even make sense? ”部分)。请注意,这里的ppp是未丢弃的单元的概率,在大多数实现中,pcodep_{code}pcode​定义为要丢弃的单元的概率,因此在计算τττ时应使用p:=1−pcodep:=1-p_{code}p:=1−pcode​。
  2)接下来,用输入x∗x^∗x∗模拟一个网络输出,就像在训练期间那样使用dropout。我的意思是简单地在测试时丢弃网络中的随机单元。重复几次(用TTT重复表示),每次丢弃不同的单元,并收集结果{y^∗t(x∗)}\{\hat y^∗ t(x^∗)\}{y^​∗t(x∗)}。这些是来自我们的近似预测后验的经验样本。对于这些样本的近似后验的预测平均值以及这些样本的预测方差(我们的不确定性),我们可以获得经验估计。我们只需遵循以下两个简单方程式:
E(y∗)≈1T∑t=1Ty^∗(x∗)Var(y∗)≈τID+1T∑t=1Ty^t∗(x∗)Ty^t∗(x∗)−E(y∗)TE(y∗)\mathbb E(y^*)\thickapprox \frac{1}{T}\sum^T_{t=1}\hat y^*(x^*)\\ Var(y^*)\thickapprox τI_D+\frac{1}{T}\sum^T_{t=1}\hat y^*_t(x^*)^T\hat y_t^*(x^*)-\mathbb E(y^*)^T\mathbb E(y^*)E(y∗)≈T1​t=1∑T​y^​∗(x∗)Var(y∗)≈τID​+T1​t=1∑T​y^​t∗​(x∗)Ty^​t∗​(x∗)−E(y∗)TE(y∗)
  (Srivastava et al.)之前给出了第一个方程。在那里介绍它作为模型平均,并解释说在测试时按比例缩放权重而不会出现丢失可以合理地近似此方程。这一说法得到了经验评估的支持。在下一篇博客文章中,我们将看到对于某些网络(例如卷积神经网络),这种近似是不够的,并且可以大大改善。第二个方程只是通过网络的TTT次正向传递的样本方差加上逆模型精度。请注意,上面的向量是行向量,乘积是外积。
  正如您所期望的,实现这两个方程式同样容易。我们可以使用以下几行Python代码来获取预测均值和不确定性:

  接下来,让我们看一下这种简单回归问题的不确定性。

4.1 一个简单的交互Demo

我们的dropout网络不确定性是什么样的?这是一个重要的问题,因为不同的网络结构和不同的非线性将对应于我们对不确定性的期望的不同先验信念。此属性也与高斯过程共享。不同的高斯过程协方差函数将导致不同的不确定性估计。
  下面是一个简单的演示(在Karpathy的深度学习JavaScript框架上扩展),该演示通过一个很小的dropout网络执行回归。 我们使用2个具有20个ReLU单元和20个sigmoid单元的隐藏层,并在每个权重层之前以0.050.050.05(由于网络非常小)的概率执行dropout。每次小批量更新后,我们都会评估整个空间中的网络。我们绘制出通过dropout网络的当前随机正向输出(黑线)以及最近100次随机正向输出的平均值(预测均值,蓝线)。蓝色阴影表示我们估算的预测标准偏差的一半。 您可以在此处找到此演示的代码。

  现在,我们对不确定性是什么样子有了一定的认知,我们可以执行一些简单的回归实验,以检查具有不同网络和不同任务的不确定性估计的属性。在以下各节中,我们将扩展到分类和深度强化学习。

4.2 理解我们的模型

(1)实例1

  为了了解训练数据范围外的不确定性,我们将使用一个简单的一维回归问题以及一部分大气CO2CO_2CO2​浓度数据集。该数据集来自1958年以来在夏威夷莫纳罗亚天文台收集的原位空气样本。该数据集相当小,仅包含约200个数据点。我们将居中并将其标准化。那么我们的数据是什么样的呢?在上图,您将看到原始数据,在下图,您将看到已处理的训练数据(红色,蓝色虚线的左侧),以及蓝色虚线右侧的缺失部分。我已经为神经网络安装了555个隐藏层,每个层中有102410241024个单元,并且对数据使用了ReLUReLUReLU非线性激活。在每个权重层之后,我使用dropout概率为0.10.10.1(因为网络很小)。

  用红色虚线标记的点是远离训练数据的点。我希望您会同意我的看法,当被问及点x∗x^∗x∗时,一个好的模型应该说“如果您强迫进行预测,我会猜XXX,但实际上我不知道发生了什么”。标准dropout自信地预测了该点的明显不合理的值,因为该函数是周期性的。我们无法真正确定我们是否可以信任模型的预测。现在让我们使用上面介绍的不确定性信息方程式。使用完全相同的网络(我们不必重新训练模型,只需以不同的方式执行预测),我们将获得以下揭示信息:

  似乎该模型确实捕获了有关原理测试点的大量不确定性信息!如果我们正在分析某个医生的一些数据,现在我们可以建议该医生不要建议某些治疗方法,因为结果尚不确定。如果我们试图解决某些任务,我们现在知道我们需要扩充数据集并收集更多数据。此不确定性信息非常类似于我们将从具有平方指数的协方差函数的高斯过程中获得的不确定性:

  我们得到了一个不同的不确定性估计,该估计值仍然远离测试数据。不确定性看起来并不奇怪,ReLUReLUReLU非线性激活对应于不同的高斯过程协方差函数。如果我们使用不同的非线性激活函数(即不同的协方差函数)会怎样? 让我们尝试TanHTanHTanH非线性:

  看来不确定性并没有远离测试数据……这可能是因为TanHTanHTanH饱和而ReLUReLUReLU却没有。这种非线性不适用于您希望随着您离测试数据越来越远而不确定性增加的任务。
  那么不同的网络架构或不同的dropout概率呢?
  1)对于TanHTanHTanH模型,我使用dropout概率0.10.10.1和dropout概率0.20.20.2来测试不确定性。最初以丢失概率0.10.10.1初始化的模型确实比以丢失概率0.20.20.2初始化的模型具有较小的不确定性,但是在优化结束时,当模型收敛时,不确定性几乎是无法区分的。
  2)似乎使用较少数量的层不会影响最终的不确定性。使用4个隐藏层而不是5个隐藏层进行实验,结果没有显着差异。
  附带一提,我花了5分钟就能使高斯过程拟合上面的数据集,而dropout网络却花了3天,这很有趣。但这可能只是因为我以前从未使用过这些模型,而且我的高斯过程直觉都没有延续到多层案例中。同样,单个隐藏层网络也可以正常工作,并与浅高斯过程共享许多特征。
  (2)实例2

  我们来看一个插值示例(即预测训练数据间的未知片段)。我们将使用重建的太阳辐照度数据集,该数据集在NASA网站上的一篇不错的文章中进行了介绍。该数据集具有与先前数据集相似的特征,我们以类似的方式对其进行处理。但是这一次,我们将对数据集中的缺失部分进行插值,而不是从远离训练数据中推断。只是为了了解数据的样子,上图是原始数据,下图是带有平方指数协方差函数的高斯过程,该函数适合处理后的数据:

  同样,观察到的函数以红色给出,缺失部分以绿色给出。蓝色是模型对观察到的子集和缺失子集的预测。浅蓝色阴影是具有2个标准偏差的预测不确定性。似乎该模型设法很好地捕获了函数,但缺失部分的不确定性增加了。让我们看看这个数据集上的dropout网络是什么样子。我们将使用与之前相同的网络结构以及5个隐藏层和ReLUReLUReLU非线性激活:

  该模型似乎也很好地拟合了数据,但模型不确定性较小。这实际上是变分近似的众所周知的限制。由于dropout可以看作是高斯过程的变分近似,所以这一点也不奇怪。有可能纠正这种对方差的低估,我将在将来写另一篇文章。

4.3 图像分类

让我们看一个更有趣的示例-图像分类。我们将使用流行的LeNet卷积神经网络对MNIST手写数字进行分类。在此模型中,我们将预测输入到softmax中,从而为我们提供了不同类别(10位数字)的概率。有趣的是,这些概率不足以判断我们的模型在其预测中是否准确。这是因为标准模型将通过softmax而不是整个分布传递预测平均值
  让我们看一个理想的二分类示例。将函数均值的点估计值(为简单起见,TanH函数,下图左侧的实线)通过softmax(下图右侧的实线)传递,可以得出高度可靠的推断,其中x∗x^∗x∗(远离训练数据的点)被分类作为第1类,其概率为1。但是,使分布(左侧阴影区域)通过softmax(右侧阴影区域)可使远离训练数据的分类不确定性更好。取通过softmax的分布平均值,得出概率为0.5的1类-模型的真实预测。

  好的,让我们通过softmax传递整个分布,而不是仅通过均值传递。这实际上非常容易-我们只通过网络模拟样本,然后对softmax输出求平均值。让我们评估通过MNIST训练的convnet,在最后一个inner-product层之后应用dropout(因为网络相当大,因此取概率为0.5)。我们将评估以下图像序列上的模型预测,这些序列与图像空间中的某些投影相对应:

  这些图像对应于上面理想化描述中的XXX轴。让我们通过模拟我们的dropout LeNet网络可视化获得的100个样本的直方图:

  对于最右边的图像,类别7具有较低的不确定性。这是因为这些图像的softmax输入的不确定性’‘包络’'远离所有其他类别的不确定性包络。相比之下,中间图像的类别5的不确定性包络线与其他一些类别的包络线相交(即使平均值更高),导致softmax输出的不确定性较大。值得注意的是,可以通过采用分布均值来总结softmax输出中的模型不确定性。在上面的理想示例中,这将导致点x∗x^∗x∗的softmax输出为0.5(而不是softmax输出1),这将导致较低的softmax输出,从而可能导致不同的图像类别。这种信息可以帮助我们完成分类任务-获得更高的分类精度,这将在下一篇博客文章中进行解释。它还有助于我们分析模型并确定我们是否有足够的数据或是否正确指定了模型。

5.深度强化学习中的不确定性

让我们对不确定性信息做一些更令人兴奋的事情。我们可以使用此信息进行深度强化学习,其中我们可以使用网络来学习一个独立agent(例如Roomba或人形机器人)应采取哪些动作来解决给定的任务(例如打扫公寓或消灭人类)。在强化学习中,我们会针对不同的动作获得奖赏,例如,碰到墙壁时获得−5奖励,而收集食物时获得+10奖励(如果您是Roomba,则为灰尘)。但是,我们的环境可能是随机的,并且会不断变化。我们希望随着时间的推移最大化期望的回报,从根本上了解在不同情况下适合采取哪些措施。例如,如果我看到前方有食物,我应该向前走而不是向左走。我们通过探索环境来做到这一点,最好是将我们对因不同状态而采取的行动所产生的报酬的不确定性降至最低。
  DeepMind(一家几年前被Google收购的蓝天研究公司)的最新研究通过大量的工程工作,成功地演示了各种Atari游戏的人类级玩法。他们使用神经网络来控制agent在不同状态下应采取的行动。某些人认为这种方法是解决AI的起点。DeepMind的这项工作扩展了该领域中现有的几种方法(例如,参见Riedmiller的神经拟合Q-learning)。但是,没有使用这种方法对agent不确定性进行建模,而是使用了ϵ−greedy\epsilon-greedyϵ−greedy的动作策略(采取概率为ϵ\epsilonϵ的随机动作,否则采取最佳动作)。过去曾使用高斯过程来表示agent的不确定性,但并不能很好地解决简单的玩具问题(例如,参见PILCO,Deisenroth和Rasmussen)。将我们的dropout网络视为高斯过程近似值,我们可以将其不确定性估计用于同一任务,而无需任何额外费用。
  让我们看一个更具体的例子。我们将使用Karpathy的JavaScript实现作为运行示例。Karpathy实施了Mnih等人的主要思想。可以直接在浏览器中运行而无需安装任何内容的简单设置。为了代替Atari游戏,我们在2D世界中模拟一个agent,其中使用9个眼睛指向前方不同的角度(如下图所示)。每只眼睛可以感知3种颜色的单个像素强度。该agent通过使用控制其基础上的两个电动机的5个动作之一进行导航。每个动作都会使电动机以不同的角度和速度旋转。该环境由红色圆圈和黄色圆圈组成,其中红色圆圈为agent提供+5的正奖赏,而黄色圆圈则为-6的负奖赏。agent因不看(白)墙和沿直线走而得到奖励。我不得不稍微更改奖赏函数,因为似乎我正在玩的agent设法利用了其中的一个bug(当使用4个眼睛看到墙壁时仍然能获得正的奖赏)。

  在每个时刻,agent都会评估其在当前状态下可以采取的所有可能动作的质量(表示为QQQ函数)的信念,然后继续采取具有最高价值的动作。此Q函数捕获agent对给定状态sss的价值的主观信念。该价值定义为在状态sss采取行动aaa后产生的随着时间的推移所获得的预期奖赏,期望值是针对agent当前对世界运作方式的理解(您可以在Szepesvári的这本非常不错的书中阅读有关强化学习的更多信息 )。我们使用“经验回放”来训练我们的网络,在其中,我们收集状态,动作,结果状态和结果奖赏的元组作为网络的训练数据。然后,我们使用由元组集合的随机子集组成的小批量数据执行一个梯度下降步骤。
  Mnih等人使用以及Karpathy实现的动作策略的方式是ϵ−greedy\epsilon-greedyϵ−greedy,而且时间的推移ϵ\epsilonϵ越来越小。在此策略中,agent首先执行随机动作以收集一些数据,然后降低执行随机动作的可能性。agent将执行当前状态下的网络输出并选择具有最高值的操作,而不是执行随机操作。现在,相反,我们可以尝试最小化网络的不确定性。 这实际上非常简单:我们只使用汤普森采样(Thompson)。汤普森采样是一种行为策略,通过从我们目前对世界的信念中获取知识并选择遵循该信念的最高价值的行为,来鼓励agent探索周围的环境。在我们的案例中,这是通过模拟dropout网络的随机前向传播并选择具有最高价值的动作来完成的。
  如果您无法在下面运行JavaScript(需要花费一些时间才能收敛…),这是随时间推移的ϵ−greedy\epsilon-greedyϵ−greedy和Thompson采样(按对数缩放)的平均回报:

  在下面,您将看到agent随着时间的推移学习到适当的策略。对于ϵ−greedy\epsilon-greedyϵ−greedy,我使用与Karpathy完全相同的实现,对于dropout,我添加了一个单个dropout层,其概率为0.2(因为网络很小)。该图的顶部是一个图形,显示了对数缩放的平均奖励。两种agent的前3000次移动都是随机的,用于在训练之前收集初始数据。这在图中以红色阴影显示。 该算法是随机的,因此如果蓝色曲线(汤普森采样)有时低于绿色曲线(ϵ−greedy\epsilon-greedyϵ−greedy),请不要感到惊讶。请注意,图形的X轴显示的是批数除以100。您可以在此处找到此演示的代码。

  值得一提的是,除了收敛速度更快之外,使用dropout功能还可以避免网络的过拟合。但是由于网络非常小,我们无法真正在每层之后都正确使用dropout,因为方差太大。我们将在下面的推导中更详细地讨论这一点。值得一提的是汤普森采样的一些困难:
  (1)当我们基于模型不确定性进行采样时,我们可能会由于对不确定性的低估而得出奇怪的结果。不过,此问题可以很容易地解决,并将在以后的文章中进行解释。
  (2)另一个困难是该算法无法区分关于世界的不确定性(这是我们所关心的)和由于网络规范错误导致的不确定性。因此,如果我们的网络不适合其数据,而无法适当降低其不确定性,则模型将受到影响。

6.为什么这具有很大意义?

让我们看看为什么dropout神经网络与高斯过程中的变分推理相同。我们将看到上面所做的网络前向传播的平均等效于通过高斯过程的后验近似进行的蒙特卡罗积分。该推导使用了一些长方程式,详细信息请查看原文。

What My Deep Model Doesn't Know...翻译相关推荐

  1. Paper:《ELMO:Deep contextualized word representations》翻译与解读

    Paper:<ELMO:Deep contextualized word representations>翻译与解读 目录 <ELMO:Deep contextualized wor ...

  2. WideDeep Model、Wide Model(LR)、Deep Model、DeepFm Model、NFM Model复现笔记

    声明:本模型复现笔记记录自己学习过程,如果有错误请各位老师批评指正. 本周复现了Wide&Deep Model.Wide Model.Deep Model.DeepFm Model.NFM M ...

  3. A Survey of Deep Learning-based Object Detection论文翻译 + 阅读笔记

    A Survey of Deep Learning-based Object Detection论文翻译 + 阅读笔记 //2022.1.7 日下午16:00开始阅读 双阶段检测器示意图 单阶段检测器 ...

  4. 论文笔记:SESF-Fuse: an unsupervised deep model for multi-focus image fusion (2021)

    SESF-Fuse: an unsupervised deep model for multi-focus image fusion [引用格式]:Boyuan Ma et al. "SES ...

  5. ImageNet Classification with Deep Convolutional Neural Networks论文翻译——中英文对照

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 翻译论文汇总:https://github.com/SnailTyan/deep-learning-papers- ...

  6. ImageNet Classification with Deep Convolutional Neural Networks论文翻译——中文版

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 翻译论文汇总:https://github.com/SnailTyan/deep-learning-papers- ...

  7. Structural Deep Clustering Network阅读与翻译

    文章作者信息: Structural Deep Clustering Network 结构化深度聚类网络 深度聚类算法SDCN,首次将GNN用到聚类上,由北邮.腾讯和清华联合发表在WWW2020上. ...

  8. Deep Learning with Differential Privacy翻译

    正在读CCS上的"Deep Learning with Differential Privacy",人工翻译了一下: Abstract 基于神经网络的机器学习技术已经在多个领域取得 ...

  9. 3D ShapeNets: A Deep Representation for Volumetric Shapes翻译

    3D ShapeNets:体积形状的深度表示 摘要   在当今的计算机视觉系统中,3D 形状是一个关键但未充分利用的线索,主要是由于缺乏良好的通用形状表示.随着最近廉价 2.5D 深度传感器(例如 M ...

最新文章

  1. apply方法和call方法的详解2
  2. RobHess的SIFT源码分析:imgfeatures.h和imgfeatures.c文件
  3. java三目表达式_史上最强《Java 开发手册》泰山版王者归来
  4. F - 数据结构实验之栈与队列六:下一较大值(二)
  5. mysql 外键设置
  6. 将Banner美观的放置于博客首页上
  7. linux驱动开发(一):一个最简单的内核驱动程序
  8. android layoutinflater 高度,android layoutinflater 参数
  9. ubuntu QT 编译报错cannot find -lGL 的解决方法
  10. AI 教你画油画:任意画风都可驾驭
  11. android wms布局过程,深入理解WMS
  12. 电子与计算机工程陈晟老师,陈晟老师课堂:数学成绩好,这七个大学专业适合报考!...
  13. JAVA 关于图片上传的代码
  14. 2008服务器文件夹镜像,【玩转腾讯云】导入镜像-Windows 2008 R2 Datacenter
  15. AKG K420 耳机线的维修
  16. 802.11n关键技术
  17. P1185 绘制二叉树——蒟蒻的暴力模拟
  18. Esper学习之五:EPL语法(一)
  19. day11函数进阶作业
  20. 高频电子电路——直接调频法中振荡器和调制器合二为一,这种方法的优点是在实现线性调频的要求

热门文章

  1. 汉文SEO大牛教你如何创建网站地图-seo必修课
  2. 电力煤矿跑冒滴漏监测
  3. Opencv颜色空间转换---BGR和HSV详解
  4. 告软件测试初学者:入门需掌握的知识点
  5. java+mysql基于SSM共享型汽车租赁系统
  6. 2020-02-26-如何学习近红外技术
  7. 推荐一些好的学习网站
  8. ABB机器人维修常见故障问题及解答
  9. QPushButton setIcon 图片不显示
  10. Laya2.0 集成 Protobuf