Structured Energy Based Models for Anomaly Detection论文阅读

Deep Structured Energy Based Models for Anomaly Detection论文阅读

  • 逻辑
  • 算法理论
    • EBMs
    • RBM算法
    • Denoising Autoencoders and Score Matching算法
    • Deep Structured EBMs算法
      • 全连接EMBs网络
      • 循环EBMs网络
      • 卷积EBMs网络
      • DSEBM-e和DSEBM-r
  • 总结体会

 本文是一篇基于Deep Structured Energy方法来进行异常检测的文章,该模型的主要特点是其可以通用到各种类型的dataset
上面,包括spatial data(音频序列),static data(特定的输入向量),sequential data(图像等)。该模型的训练算法是基于一种score matching算法,其是通过EBM网络连接了一个autoencoder来替代比较繁琐,计算量较大的复杂采样方法。本文提出了两套异常处理的检测准则——energy score和reconstruction error来作为误差评分标准。我们将主要从行文逻辑,算法理论,模型应用三个方面来对这篇文章进行梳理。

逻辑

 异常检测问题的核心是如何找到一个模型分布,比较有效地模拟数据自然产生的过程。从而来分辨我们所需要检测的样本是异常的概率。
 比起基础的PCA等传统算法,学术界更加倾向于使用深度学习的算法来进行异常检测,因为深度神经网络能够抽象出更多的特征。但是深度学习网络在异常检测方面还存在着如下的一些问题:
(1)如何利用一个深度学习模型有效地模拟数据的产生过程。
(2)如何构造一个模型能够比较广泛地应用于各种类型的数据(static data,sequential data,spatial data)
(3)如何构造一个比较高效的训练算法让其能够更好的应用。
(4)如何选择一个统计推理准则应用于异常检测。
 比较早提出的深度学习模型是EMBs模型,该模型应用了一种负对数概率 p ( x ; θ ) = e − E ( x ; θ ) Z ( θ ) p(x;\theta)=\frac{e^{-E(x;\theta)}}{Z(\theta)} p(x;θ)=Z(θ)eE(x;θ)来作为网络的能量来进行概率密度估计,但是EMBs的缺点一方面是 Z ( θ ) = ∫ x e − E ( x ; θ ) Z(\theta)=\int_x e^{-E(x;\theta)} Z(θ)=xeE(x;θ)是很难求的,其只能通过MCMC(蒙特卡洛马尔科夫采样方法,如吉布斯采样法)来进行求解。另一方面,提出的EMBs还不太成熟,对于不同的数据类型其要构造不同的算法和网络,比较复杂。
 后续有许多改进算法的提出,比如score matching算法,简化了用MLE 进行优化的计算部分。还有使用了VAE(变分编码器算法),相对于蒙特卡洛估计方法,VAE模型的计算更加简单一些,其只需要用简单的SGD模型来进行参数优化。

算法理论

EBMs

 EBMs算法已经在上面简单介绍过,其能量表述形式为: p ( x ; θ ) = e − E ( x ; θ ) Z ( θ ) p(x;\theta)=\frac{e^{-E(x;\theta)}}{Z(\theta)} p(x;θ)=Z(θ)eE(x;θ)

RBM算法

 RBM算法采用了如下的能量表达形式: E ( x ; θ ) = 1 2 ∥ x − b ′ ∥ 2 2 − ∑ j = 1 K g ( W j T x + b j ) (1) E(x;\theta)=\frac{1}{2} \|x-b^{'}\|_2^2-\sum_{j=1}^Kg(W_j^Tx+b_j) \tag{1} E(x;θ)=21xb22j=1Kg(WjTx+bj)(1)
其将W和b作为网络训练参数,利用多个RBM网络的组合可能能够获得比较好的训练效果,但是相比而言,RBM神经网络依然比deterministic neural network更加困难一些。

Denoising Autoencoders and Score Matching算法

 比较典型的Autoencoders优化如下算式:
∑ i = 1 N ∥ x i − f ( x i ; θ ) ∥ 2 2 (2) \sum_{i=1}^N \|x_i-f(x_i;\theta)\|_2^2\tag{2} i=1Nxif(xi;θ)22(2)
其中 f ( ; θ ) f(;\theta) f(;θ)是个reconstruction function
还有一种比较有趣的版本是:
∑ i = 1 N E ϵ ∥ x i − f ( x i + ϵ ; θ ) ∥ 2 2 (3) \sum_{i=1}^NE_{\epsilon}\|x_i-f(x_i+\epsilon;\theta)\|_2^2\tag{3} i=1NEϵxif(xi+ϵ;θ)22(3)
这里给输入样本添加了一个高斯扰动。( ϵ ∼ N ( 0 , σ 2 I ) ) \epsilon\sim N(0,\sigma^2I)) ϵN(0,σ2I))
DAE方法和RBM方法是有联系的,对RBM算法使用score matching算法进行估计,SM算法是MLE算法的一种替代,MLE是直接最大化样本的似然概率,而SM算法则是对如下误差函数进行最小化:
J ( θ ) = 1 2 ∫ x p x ( x ) ∥ ψ ( x ; θ ) − ψ x ( x ) ∥ 2 2 d x (4) J(\theta)=\frac{1}{2}\int_x p_x(x)\| \psi(x;\theta)-\psi_x(x)\|_2^2dx\tag{4} J(θ)=21xpx(x)ψ(x;θ)ψx(x)22dx(4)
其中 p x ( x ) p_x(x) px(x)是x的真实分布,目前是不知道的。 ψ ( x ; θ ) = ▽ x log ⁡ p ( x ; θ ) = − ▽ x E ( X ; θ ) \psi(x;\theta)=\bigtriangledown_x\log p(x;\theta)=-\bigtriangledown_xE(X;\theta) ψ(x;θ)=xlogp(x;θ)=xE(X;θ)
ψ x ( x ) = ▽ x log ⁡ p x ( x ) \psi_x(x)=\bigtriangledown_x \log p_x(x) ψx(x)=xlogpx(x)
总而言之, J ( θ ) J(\theta) J(θ)对我们的模型的概率分布和实际分布之间的差距进行了一个测量和估计,在 p x ( x ) p_x(x) px(x)假设为一个Parzen window density: 1 N ∑ i = 1 N N ( x i ; σ 2 I ) \frac{1}{N}\sum_{i=1}^NN(x_i;\sigma^2I) N1i=1NN(xi;σ2I)时,若将 f ( x ; θ ) f(x;\theta) f(x;θ)定义为 f ( x ; θ ) = x − ▽ x E ( x ; θ ) f(x;\theta)=x-\bigtriangledown_xE(x;\theta) f(x;θ)=xxE(x;θ)那么(3)式和(4)式是等价的。此时若 E ( x ; θ ) E(x;\theta) E(x;θ)的形式如(1)所示,我们可以得到一个 f ( x ; θ ) f(x;\theta) f(x;θ)的具体形式:
f ( x ; θ ) = W σ ( W T x + b ) + b ′ f(x;\theta)=W\sigma(W^Tx+b)+b^{'} f(x;θ)=Wσ(WTx+b)+b

Deep Structured EBMs算法

 Deep Structured EBMs 算法是将EBMs算法扩展到了深度结构上面,同时在底层网络进行了编码,以使其能够适用于多种结构,另外就是作者证明了
f ( x ; θ ) = x − ▽ x E ( x ; θ ) (5) f(x;\theta)=x-\bigtriangledown_xE(x;\theta)\tag{5} f(x;θ)=xxE(x;θ)(5)这个reconstruction error格式下可以比较容易地利用SGD进行训练。

全连接EMBs网络

 第一种介绍地网络格式是全连接格式的EMBs网络,其网络能量定义如下:
E ( x ; θ ) = 1 2 ∥ x − b ′ ∥ 2 2 − ∑ j = 1 K L h L , j (2.1) E(x;\theta)=\frac{1}{2}\|x-b^{'}\|_2^2-\sum_{j=1}^{K_L}h_{L,j}\tag{2.1} E(x;θ)=21xb22j=1KLhL,j(2.1)
h l = g ( W l T h l − 1 + b 1 ) , l ∈ [ 1 , L ] (2.2) h_l=g(W_l^Th_{l-1}+b_1),l\in[1,L]\tag{2.2} hl=g(WlThl1+b1),l[1,L](2.2)
 上述定义之下的reconstruction error如下:
f ( x ; θ ) = x − ▽ x E ( x ; θ ) = h 0 ′ + b ′ (2.3) f(x;\theta)=x-\bigtriangledown_xE(x;\theta)=h_0^{'}+b^{'}\tag{2.3} f(x;θ)=xxE(x;θ)=h0+b(2.3)
h l − 1 ′ = ∂ h l ∂ h l − 1 h l ′ = σ ( W l T h l − 1 + b l ) ( W l h l ′ ) (2.4) h_{l-1}^{'}=\frac{\partial h_l}{\partial h_{l-1}}h_l^{'}=\sigma(W_l^Th_{l-1}+b_l)(W_lh_l^{'})\tag{2.4} hl1=hl1hlhl=σ(WlThl1+bl)(Wlhl)(2.4)
最初始的情况下 h L ′ = 1 h_L^{'}=1 hL=1可以利用上式进行递推求解。
并且L层时,其是对各个向量的一个求和,所以L层的导数 h L ′ = 1 (2.5) h_L^{'}=1\tag{2.5} hL=1(2.5)
(上述内容是论文本部分的叙述,但我认为有几处有点问题,首先是(2.4)式我认为应当写为:
h l ′ = ∂ h l ∂ h l − 1 h l − 1 ′ = σ ( W l T h l − 1 + b l ) ( W l h l − 1 ′ ) h_{l}^{'}=\frac{\partial h_l}{\partial h_{l-1}}h_{l-1}^{'}=\sigma(W_l^Th_{l-1}+b_l)(W_lh_{l-1}^{'}) hl=hl1hlhl1=σ(WlThl1+bl)(Wlhl1)
其次,如果是要得到(2.5)的结论,那么(2.2)式的范围应该是 [ 1 , L − 1 ] [1,L-1] [1,L1]。作为著名论文,应该不可能出现这样的错误,可能是我的理解有误,还望大家指点。)

循环EBMs网络

 循环EBMs网络的输入是一个T长度的序列,每一个序列是一个有d个属性的特征向量。论文当中只是用 W t W^t Wt, b t b^t bt, b ′ t b^{'t} bt来提到(1)式当中的 W W W, b b b, b ′ b^{'} b,在每一步更新过程中,只是更新 b t b^t bt, b ′ t b^{'t} bt
其中:
h t = g ( W h h h t − 1 + W h x x t + b h ) h^t=g(W_{hh}h^{t-1}+W_{hx}x^t+b_h) ht=g(Whhht1+Whxxt+bh)
b t = W b h h t + b b^t=W_{bh}h^t+b bt=Wbhht+b
b ′ t = W b ′ h h t + b ′ b^{'t}=W_{b^{'}h}h^t+b{'} bt=Wbhht+b
整个能量的更新依然可以采用SGD策略进行参数更新。

卷积EBMs网络

 卷积神经网络的输入是一个 d l − 1 ∗ d l − 1 d_{l-1}*d_{l-1} dl1dl1 K l − 1 K_{l-1} Kl1通道的矩阵(模拟图像输入),所以卷积神经网络需要通过卷积层,池化层以及全连接层的配合操作来进行训练。
文章中定义了它的卷积层的输出为:
h i , j = g ( ∑ k = 1 K l − 1 W ~ i , j , k ∗ h l − 1 , k + b l , j ) , j ∈ [ 1 , K l ] h_{i,j}=g(\sum_{k=1}^{K_{l-1}} \tilde{W}_{i,j,k}*h_{l-1,k}+b_{l,j}),j\in[1,K_l] hi,j=g(k=1Kl1W~i,j,khl1,k+bl,j),j[1,Kl]
其中 W ∈ R K l ∗ K l − 1 ∗ d ω , l ∗ d ω , l W\in R^{K_l*K_{l-1}*d_{\omega,l}*d_{\omega,l}} WRKlKl1dω,ldω,l这里的 K l K_l Kl涉及到网络之间的fliter个数的设定,而 d ω , l d_{\omega,l} dω,l则是由卷积层和卷积规则计算而来的。大家可以自己参考论文和卷积的基本运算规则详细理解一下。
 我们同样可以仿照全连接层,得到如下一个递推关系:
h l − 1 , k ′ = ∑ j = 1 K l [ σ ( ∑ k = 1 K l − 1 w ~ i , j , k ∗ h l − 1 , k + b l , j ) ⋅ ( W i , j , k ⊙ h i , j ′ ) ] h_{l-1,k}^{'}=\sum_{j=1}^{K_l}[\sigma(\sum_{k=1}^{K_{l-1}}\tilde{w}_{i,j,k}*h_{l-1,k}+b_{l,j})\cdot(W_{i,j,k}\odot h_{i,j}^{'})] hl1,k=j=1Kl[σ(k=1Kl1w~i,j,khl1,k+bl,j)(Wi,j,khi,j)]
池化层的输出如下:
h l , k , p , q , x l , k , p , q , y l , k , p , q = max ⁡ ( p − 1 ) d p + 1 ≤ i ≤ p d p , ( q − 1 ) d p + 1 ≤ j ≤ q d p h l − 1 , k , j , l h_{l,k,p,q},x_{l,k,p,q},y_{l,k,p,q}=\max_{(p-1)d_p+1\le i\le pd_p,(q-1)d_p+1\le j\le qd_p}h_{l-1,k,j,l} hl,k,p,q,xl,k,p,q,yl,k,p,q=(p1)dp+1ipdp,(q1)dp+1jqdpmaxhl1,k,j,l
可以导出池化层之间的输出关系为:
h l − 1 , k , x l , k , q , p , y l , k , q , p ′ = h l , k , q , p ′ , p , q ∈ [ 1 , d l ] h_{l-1,k,x_{l,k,q,p},y_{l,k,q,p}}^{'}=h_{l,k,q,p}^{'}, p,q\in[1,d_l] hl1,k,xl,k,q,p,yl,k,q,p=hl,k,q,p,p,q[1,dl]

DSEBM-e和DSEBM-r

 这两个这是选取停止迭代的准则有所不同而已,本质上差异不大,停止准则分别是:
∑ t = 1 T = E ( x t ; θ t ) > E t h \sum_{t=1}^T=E(x^t;\theta^t)>E_{th} t=1T=E(xt;θt)>Eth
∑ t − 1 T ∥ ▽ x t E ( x t ; θ t ) ∥ 2 2 > E r r o r t h \sum_{t-1}^T\|\bigtriangledown_{x^t}E(x^t;\theta^t)\|_2^2>Error_{th} t1TxtE(xt;θt)22>Errorth

总结体会

 这篇文章是一篇应用性很强的文章,其主要讲了如何在前人的RBM基础之上去利用能量构造深度学习网络并且进行训练。利用能量作为训练标准也有前人提出过类似的算法,这篇文章的主要工作是把这样的思路套用进了深度学习网络当中,理清了层与层之间如何“定义”能量,如何“传递”能量,从而构造出了基于能量的深度学习网络。
 这篇文章的主要难点之处在于理清网络与网络,各个层之间的能量定义和传递的思路,有一些计算需要再琢磨钻研一下,尤其是后面的循环神经网络和卷积神经网络,我认为大多数地方我已经大致知道作者的计算思路,但是也有些还尚未理清之处,并且不知如何写在博客之中,如果有兴趣可以一起讨论。
 本文还没有找到现成的相关代码,立个小的flag督促自己在2019年结束之前能够自己把这篇文章的代码复现一下,此外就是后面目录有几篇Vincent的论文,在学习过程中仅作仓促参考,感觉后续还应该好好去思考一下那几篇论文的行文逻辑和网络结构。

你可能感兴趣的:(论文阅读)