前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基线估计(二):GP与Model Uncertainty,高斯过程在异常检测中的应用

基线估计(二):GP与Model Uncertainty,高斯过程在异常检测中的应用

作者头像
慎笃
发布2021-09-15 10:37:52
1.2K0
发布2021-09-15 10:37:52
举报
文章被收录于专栏:深度学习进阶深度学习进阶

1 背景

深度学习虽然在许多领域都得到了较好的应用,但是传统深度学习通常采用最大似然估计来训练,导致模型本身难以衡量模型的不确定性(Model Uncertainty)[1]。以如下场景为例,我们想用卷积网络对图像做分类,模型训练好后,在测试样本上计算出的预测概率/softmax很大,我们可以认为预测的置信度(model confidence)很高,测试样本极有可能属于某一类别,但是这一预测的不确定性是无法衡量的。如下图所示,即使我们的模型在生产场景中有很高的softmax,我们也无法确定模型有多大概率会在这次预测上会出现失误。

左图为softmax的输入,灰色部分为输入的uncertainty,即softmax的输入会在灰色部分随机出现;右图是softmax的输出,我们可以看到输出部分缺乏uncertainty,所以在对x*预测时,其预测为类别1的概率为100%,但我们知道输入存在不确定性,x*预测为类别1的概率也是存在不确定性的

贝叶斯概率理论给我们提供了衡量模型不确定性的数学解法。刻画无限维变量分布的手段为高斯过程(Gaussian Process),衡量确定维度的变量关系的手段为贝叶斯网络(Bayessian neural networks)。

2 高斯过程

在介绍高斯过程前,我们先了解下模型预测过程中的贝叶斯概率解释,还是上述任务,假设我们训练了一个非线性模型

[公式]
[公式]

来对图像做分类,

[公式]
[公式]

的参数 为

[公式]
[公式]

,训练数据为

[公式]
[公式]

,其中

[公式]
[公式]

为输入,

[公式]
[公式]

为输出。依据贝叶斯概率解释,我们可以得知

[公式]
[公式]

的后验概率为

[公式]
[公式]

公式右边的三个组成部分,

[公式]
[公式]

与模型

[公式]
[公式]

无关;

[公式]
[公式]

是模型

[公式]
[公式]

[公式]
[公式]

预测为

[公式]
[公式]

的概率;

[公式]
[公式]

是模型假设的先验分布。如果我们想要预测测试集的情况,就需要先假设

[公式]
[公式]

的先验分布。高斯过程模型,就是可以不参数化

[公式]
[公式]

,并实现

[公式]
[公式]

分布估计的手段。

2.1 高斯过程定义

高斯过程是观测值出现在一个连续域上的随机过程,其标准定义为:

[公式]
[公式]

是一个高斯过程,当且仅当对集合

[公式]
[公式]

的任意有限子集

[公式]
[公式]

[公式]
[公式]

是一个多元正态分布,也同等于

[公式]
[公式]

的任意线性组合是一个单变量正态分布,即

[公式]
[公式]

[公式]
[公式]

为平均值函数,

[公式]
[公式]

是协方差函数。

2.2 基于高斯过程的贝叶斯优化

看着高斯过程的定义,感觉像似看了个寂寞。我们通过基于高斯过程的贝叶斯优化,来看高斯过程具体是怎么一回事。

[公式]
[公式]

我们先假定已存在目标函数

[公式]
[公式]

,如上所示,这个函数我们是不知道的,我们只知道采样样本

[公式]
[公式]

,下面我们将通过高斯过程来确定该函数基于采样样本的后验分布,

[公式]
[公式]

[公式]
[公式]

上的数据分布如下所示。

f(x)在[-2, 10]上的数据分布

我们先进行随机采样,采样到了两个点

[公式]
[公式]

,如下图中的上半图所示,其他点的后验分布都是基于

[公式]
[公式]

产生的,后验分布的产生逻辑就是上述高斯过程的定义,

[公式]
[公式]

服从三维高斯分布,当

[公式]
[公式]

确定后计算得到

[公式]
[公式]

的后验分布,我们当前实验选取的协方差函数为Squared exponential。再看下图中的下半图,我们还需要搜索策略(acquisition function),在

[公式]
[公式]

区间内再采一个点,当前实验选取的是Expected Improvement acquisition function,由此我们得到了第三个采样点(下图黑线)。

第一轮迭代

第二轮、第七轮以及第十轮迭代的效果如下图所示,我们基本得到了

[公式]
[公式]

的后验分布。通过高斯过程估计

[公式]
[公式]

分布的流程大体如此,详情可参见实战代码。

第二轮迭代

第七轮迭代

第十轮迭代

3 GP在异常检测中的应用

3.1 基于GP的异常检测

Nannan Li & Xinyu Wu等人[3]采用高斯过程来做视频监控的异常检测。前述已经提到了贝叶斯概率推理,这里我们在重述下分类问题的贝叶斯推理,基于训练数据

[公式]
[公式]

,当给定新的输入

[公式]
[公式]

时,我们可以计算其对应的输出

[公式]
[公式]

的异常概率。 预测概率

[公式]
[公式]

的高斯分布如下,其中

[公式]
[公式]

,

[公式]
[公式]

,

[公式]
[公式]

[公式]
[公式]

同时假定误差项

[公式]
[公式]

,最终我们的输出为预测分布和误差分布的叠加,即均值为

[公式]
[公式]

,方差为

[公式]
[公式]

的正态分布。然后我们通过计算

[公式]
[公式]

的概率,设置合理阈值,便可用来做异常检测。

Nannan Li & Xinyu Wu等人基于高斯过程的异常检测效果,地铁监控内监测到的异常行为

3.2 Mc Dropout as a bayesian approximation

本文主要源于Yarin&Zoubin等人[1]通过Mc Dropout去逼近高斯过程的文献,想了解Mc Dropout是如何衡量深度学习不确定性,才有了本文从GP到Bayes Opt到基于GP的异常检测,再到Mc Dropout的详解。下面我们将详细阐述Mc Dropout是如何工作的。

首先给定一个

[公式]
[公式]

层的神经网络,具有参数

[公式]
[公式]

,其中

[公式]
[公式]

的维度为

[公式]
[公式]

[公式]
[公式]

为第

[公式]
[公式]

层的神经元个数,以及给定数据集

[公式]
[公式]

。贝叶斯推理的目标是给定数据集的条件下,模型参数的先验分布

[公式]
[公式]

。由此对未知样本

[公式]
[公式]

的预测结果

[公式]
[公式]

通过最小化

[公式]
[公式]

,实现对

[公式]
[公式]

的变分近似

[公式]
[公式]

。由此上述预测结果可等价于

[公式]
[公式]

上述公式第一项为

[公式]
[公式]

似然关于估计后验的期望,希望通过

[公式]
[公式]

去解释当前数据,第二项是

[公式]
[公式]

项,希望

[公式]
[公式]

尽可能接近

[公式]
[公式]

,避免过拟合。

Dropout:引入dropout,将参数设为概率为

[公式]
[公式]

的伯努利分布,

[公式]
[公式]

[公式]
[公式]

通过变分学习来近似

[公式]
[公式]

。由此

[公式]
[公式]

再结合参数的伯努利假设,我们最终得到一个有dropout的损失函数,基于MC Dropout的贝叶斯估计,也就等价于训练一个有如下损失函数的传统神经网络

[公式]
[公式]

完成训练后,我们可通过带有dropout的神经网络来评估模型的不确定性,类似于3.1中基于高斯过程的异常检测,我们得到了最终的分布,便可在判断异常同时判断其不确定性。

[公式]
[公式]

Predictive mean and uncertainties on the Mauna Loa CO2 concentrations dataset

4 高斯过程实战

Git地址如上,安装流程如下

代码语言:javascript
复制
$ git clone https://github.com/shendu-ht/gaussian_processes.git
$ cd gaussian_process
$ python setup.py install

实战详情

代码语言:javascript
复制
# 一维数据
# https://github.com/shendu-ht/gaussian_processes/blob/main/example/gp_example_1d.ipynb
#
# 二维数据
# https://github.com/shendu-ht/gaussian_processes/blob/main/example/gp_example_2d.ipynb

协方差函数/优化策略的测试用例

代码语言:javascript
复制
# Acquisition function 测试用例
# https://github.com/shendu-ht/gaussian_processes/blob/main/test/acquisition_test.py
#
# cov function 测试用例
# https://github.com/shendu-ht/gaussian_processes/blob/main/test/cov_func_test.py

参考资料

[1] Dropout as a Bayesian Approximation: Representing Model Uncertainty in Deep Learning.

[2] Introduction to Gaussian process.

[3] Anomaly Detection in Video Surveillance via Gaussian Process.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 背景
  • 2 高斯过程
    • 2.1 高斯过程定义
      • 2.2 基于高斯过程的贝叶斯优化
      • 3 GP在异常检测中的应用
        • 3.1 基于GP的异常检测
          • 3.2 Mc Dropout as a bayesian approximation
          • 4 高斯过程实战
            • 参考资料
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档