慢特征分析(Slow Feature Analysis,SFA)算法

慢特征分析(Slow Feature Analysis,SFA)

内容较多且枯燥,建议耐心理解,放上冰冰降降温。

点击: 这里有相应的SFA算法的程序 可供参考。

请添加图片描述

1 Introduction

慢特征分析(Slow Feature Analysis,SFA),一种无监督降维方法,被用来学习过程监控的时间相关表示。SFA不仅可以通过监测稳态分布来检测与运行条件的偏差,还可以根据时间分布来识别过程的动态异常。

时变信号的不变特征有助于分析和分类。慢特征分析(SFA)是一种从矢量输入信号中学习不变或缓慢变化特征的新方法。它是基于输入信号的非线性扩展和主成分分析对扩展信号及其时间导数的应用。它可以保证直接在函数族中找到最优解,并且可以学习提取大量的非相关特征,这些特征是根据它们的不变性程度排序的。SFA可分层应用于处理高维输入信号和提取复杂特征。SFA首先应用于基于简单单元输出的复杂单元调谐特性,包括视差和运动。然后通过反复应用SFA来学习更复杂的输入-输出函数。最后,提出了一个层次网络的SFA模块作为一个简单的视觉系统模型。同样的非结构化网络也可以学习一维物体的平移、大小、旋转、对比度或光照不变性,只依赖于训练刺激。令人惊讶的是,只有少数的训练对象足以实现对新对象的良好概括。所生成的表示方法适用于物体识别。如果训练网络同时学习多个不变性,性能会下降。

总体思路如下图1所示。假设三个不同的条纹字母形状的物体以不同的方向和速度在视野中移动,例如,首先是S,然后是F,然后是a。在高水平上,这个激励可以由三个随时间变化的变量来表示。第一个表示对象标识,即当前哪个字母是可见的,假设一次只有一个对象可见。这是什么信息。第二个和第三个变量分别表示物体的垂直和水平位置。这是信息。这种表示法特别方便,因为它紧凑,激励的重要方面可以直接获取。

主要的传感输入——在这个例子中是光感受器的活动——分布在许多传感器上,这些传感器只对物体的简单局部特征做出反应,如局部灰度值、点或边缘。由于传感器对局部特征作出反应,它们的活动变化很快,即使激励移动缓慢。例如,第一个光感受器对F的反应。因为这些条纹,当F仅以两条条纹的宽度穿过感受器时,感受器的活动就会迅速地由低到高再返回。这种初级感觉信号是一种低级的表征,只隐含地包含相关信息,如物体的身份和位置。然而,如果受体覆盖了整个视野,视觉刺激就被主要的感觉信号所反映,并且可能存在一个输入-输出函数,它可以提取相关信息,并从这个低级表征中计算出如上所述的高级表征。

在这里插入图片描述

在这里插入图片描述

图1:缓慢变化的激励和快速变化的传感器活动之间的关系。(上)三个不同的物体,字母S, F和A,一个接一个地穿过视野。三种不同位置的光感受器对这种刺激的反应被记录下来,并与虚线上字母的灰值剖面相对应。(左下)三个(数量不多的)光感受器随时间变化的活动。当一个物体穿过它们的接收区域时,受体会做出强烈的反应,否则就会安静下来。高值表示白色;低值表示黑色。(右下角)这三个图表显示了刺激物随时间的身份和位置的高级表征。

什么可以作为一个总体目标来指导无监督学习,以找到这样的输入-输出函数?高水平表达和主要感觉信号之间的一个主要区别在于它们变化的时间尺度。因此,一个缓慢变化的表示可以被认为比一个快速变化的表示具有更高的抽象级别。这里需要注意的是,输入-输出函数仅根据输入电流计算瞬时输出信号。因此,输出信号的缓慢变化不能通过时域低通滤波实现,但必须基于输入信号固有的低和有用的方面的提取。绝大多数可能的输入-输出函数会产生快速变化的输出信号,只有很小一部分会产生缓慢变化的输出信号。任务是找到这些罕见的函数。

图1中的初级感觉信号与高级表征相比变化迅速,尽管初级感觉信号的成分由于激励背景的空白而有广泛的安静期。例如,x1的传感器只对F做出反应,因为它的接受区位于视野的右下角。然而,这个说明性的例子是一个人工激励,在更自然的条件下,初级感觉信号和高级表征之间的时间变化差异应该更加明显。

图1中的对象标识和对象位置图在表示对象的线性部分之间有间隙。这些空白需要以某种方式填补。例如,如果用某个常数值来做这件事,然后把图形看作一个整体,那么物体的身份和位置都有相似的时间尺度,至少与变化更快的主要感觉信号相比是这样。这意味着可以基于慢变化的目标来学习目标位置和目标识别,这为学习不变性问题提供了新的思路。通常的观念是,物体的位置变化很快,而物体的身份变化缓慢或很少,识别系统必须学会只表示物体的身份而忽略物体的位置。然而,对这种情况的另一种解释是,物体翻译引起初级感觉信号的快速变化,相比之下,物体身份和物体位置变化缓慢。这两个方面都可以作为慢特征从初级感觉信号中提取。虽然从概念上说,物体身份是激励的什么信息,而物体位置是在哪里的信息,这是方便的,但它们本质上是相似的,与初级感觉信号相比,它们可能在类似的时间尺度上发生变化。

在接下来的两部分中,给出了学习问题的形式化定义,并提出了一种新的求解算法。接下来的部分将描述几个示例应用程序。首先,在视觉皮层中发现的复杂行为可以从简单的细胞输出推断出来。这在第二个例子中扩展到包括视差和运动方向。第三个例子说明,更复杂的输入-输出函数可以通过重复应用学习算法来逼近。第四个和第五个例子展示了一个层次网络如何学习平移和其他不变性。在最后的讨论中,将该算法与之前的不变量学习方法进行了比较。

2 学习问题

第一步是给出不变性学习的数学定义。给定一个矢量输入信号x(t),目标是找到一个输入-输出函数g(x),使输出信号y(t):= g(x(t))变化尽可能慢,同时仍然传递一些关于输入的信息,以避免琐碎的恒定响应。严格的不变性不是目标,而是变化缓慢的近似不变性。这可以正式表述如下:

Learning problem: 给定一个 i 维输入信号 x ( k ) = [ x 1 ( k ) , x 2 ( k ) , ⋯   , x J ( k ) ] T \mathbf{x}(k) = \left[x_{1}(k), x_{2}(k), \cdots, x_{J}(k)\right]^{T} x(k)=[x1(k),x2(k),,xJ(k)]T t ∈ [ t 0 , t 1 ] t \in\left[t_{0}, t_{1}\right] t[t0,t1]表示时间和[…]^T表示的转置[…]。找到一个输入-输出函数 g ( x ) = [ g 1 ( x ) , … , g J ( x ) ] T \mathbf{g}(\mathbf{x})=\left[g_{1}(\mathbf{x}), \ldots, g_{J}(\mathbf{x})\right]^{T} g(x)=[g1(x),,gJ(x)]T产生 j 维输出信号 y ( t ) = [ y 1 ( t ) , … , y J ( t ) ] T \mathbf{y}(t)=\left[y_{1}(t), \ldots, y_{J}(t)\right]^{T} y(t)=[y1(t),,yJ(t)]T y j ( t ) : = g j ( x ( t ) ) y_{j}(t):=g_{j}(\mathbf{x}(t)) yj(t):=gj(x(t)),这样对于每一个 j ∈ {1,…, J}:                
                    Δ j : = Δ ( y j ) : = ⟨ y ˙ j 2 ⟩ \Delta_{j}:=\Delta\left(y_{j}\right):=\left\langle\dot{y}_{j}^{2}\right\rangle Δj:=Δ(yj):=y˙j2 是最小值;   (2.1)
约束条件下:
                       ⟨ y j ⟩ = 0 \left\langle y_{j}\right\rangle=0 yj=0  (零均值),       (2.2)
                       ⟨ y j 2 ⟩ = 1 \left\langle y_{j}^{2}\right\rangle=1 yj2=1 (单位方差),      (2.3)
                       ∀ j ′ < j : ⟨ y j ′ y j ⟩ = 0 \forall j^{\prime}<j: \quad\left\langle y_{j^{\prime}} y_{j}\right\rangle=0 j<j:yjyj=0 (去相关)(2.4)
尖括号表示时间平均,也就是说,
                       ⟨ f ⟩ : = 1 t 1 − t 0 ∫ t 0 t 1 f ( t ) d t \langle f\rangle:=\frac{1}{t_{1}-t_{0}} \int_{t_{0}}^{t_{1}} f(t) d t f:=t1t01t0t1f(t)dt

式(2.1)表示了使输出信号的时间变化最小的主要目标。约束(2.2)和(2.3)有助于避免简单的解 y j ( t ) = c o n s t y_{j}(t)=\mathrm{const} yj(t)=const。约束2.4保证不同的输出信号分量携带不同的信息,而不是简单地复制彼此。它还引入了一个阶数,使得y1(t)是最优输出信号分量,而y2(t)由于服从附加约束<y1 y2>=0,所以是一个不太优的输出信号分量。因此,如果 j ′ < j j^{\prime}<j j<j,则 Δ ( y j ′ ) ≤ Δ ( y j ) \Delta\left(y_{j^{\prime}}\right) \leq \Delta\left(y_{j}\right) Δ(yj)Δ(yj)。为方便起见,我们加入了零均值约束(2.2)。可以去掉,此时约束(2.3)应该用 ⟨ ( y j − ⟨ y j ⟩ ) 2 ⟩ = 1 \left\langle\left(y_{j}-\left\langle y_{j}\right\rangle\right)^{2}\right\rangle=1 (yjyj)2=代替,以避免y1(t) =±1的通解。我们也可以抛弃单位方差约束(2.3),并将其整合到目标中然后最小化 ⟨ y ˙ j 2 ⟩ / ⟨ ( y j − ⟨ y j ⟩ ) 2 ⟩ \left\langle\dot{y}_{j}^{2}\right\rangle /\left\langle\left(y_{j}-\left\langle y_{j}\right\rangle\right)^{2}\right\rangle y˙j2/(yjyj)2。这是(Becker and Hinton 1992)中使用的公式。然而,将两个约束条件(方程2.2和2.3)积分到目标函数中,解将由yj的任意偏移量和比例因子决定。显式约束使解不那么任意。

这个学习问题是一个变分微积分的优化问题,一般来说比较难解决。然而,当输入输出函数分量 g j g_{j} gj被约束为有限非线性函数集的线性组合时,问题就大大简化了。下节给出求解此约束条件下的优化问题的算法。

3 慢特性分析(SFA)算法

给定一个 i 维输入信号 x ( t ) = [ x 1 ( t ) , … , x I ( t ) ] T \mathbf{x}(t)=\left[x_{1}(t), \ldots, x_{I}(t)\right]^{T} x(t)=[x1(t),,xI(t)]T,考虑一个输入-输出函数 g ( x ) = [ g 1 ( x ) , … , g J ( x ) ] T \mathbf{g}(\mathbf{x})=\left[g_{1}(\mathbf{x}), \ldots, g_{J}(\mathbf{x})\right]^{T} g(x)=[g1(x),,gJ(x)]T,每个分量都是一组K个非线性函数的加权和 h k ( x ) : g j ( x ) : = ∑ k = 1 K w j k h k ( x ) h_{k}(\mathbf{x}): g_{j}(\mathbf{x}):=\sum_{k=1}^{K}w_{j k} h_{k}(\mathbf{x}) hk(x):gj(x):=k=1Kwjkhk(x)。通常K > max(I, J)。应用 h = [ h 1 , … , h K ] T \mathbf{h}=\left[h_{1}, \ldots, h_{K}\right]^{T} h=[h1,,hK]T对输入信号产生非线性扩展信号 z ( t ) : = h ( x ( t ) ) \mathbf{z}(t):=\mathbf{h}(\mathbf{x}(t)) z(t):=h(x(t))。经过这种非线性展开后,可以将该问题在扩展的信号分量 z k ( t ) z_k(t) zk(t)中视为线性问题。这是将非线性问题转化为线性问题的常用方法。一个众所周知的例子是支持向量机(Vapnik, 1995)。权向量 w j = [ w j 1 , … , w j K ] T \mathbf{w}_{j}=\left[w_{j 1}, \ldots, w_{j K}\right]^{T} wj=[wj1,,wjK]T进行学习,第j个输出信号分量由 y j ( t ) = g j ( x ( t ) ) = w j T h ( x ( t ) ) = w j T z ( t ) y_{j}(t)=g_{j}(\mathbf{x}(t))=\mathbf{w}_{j}^{T} \mathbf{h}(\mathbf{x}(t))=\mathbf{w}_{j}^{T} \mathbf{z}(t) yj(t)=gj(x(t))=wjTh(x(t))=wjTz(t)给出。

目标(见方程1)是优化输入-输出函数,从而使权值达到
Δ ( y j ) = ⟨ y ˙ j 2 ⟩ = w j T ⟨ z ˙ z ˙ T ⟩ w j \Delta\left(y_{j}\right)=\left\langle\dot{y}_{j}^{2}\right\rangle=\mathbf{w}_{j}^{T}\left\langle\dot{\mathbf{z}} \dot{\mathbf{z}}^{T}\right\rangle \mathbf{w}_{j} Δ(yj)=y˙j2=wjTz˙z˙Twj (3.1)

是最小的。

假设所选择的非线性函数hkare使扩展信号z(t)具有零均值和单位协方差矩阵。这样一组非线性函数 h k h_k hk可以很容易地通过一个球阶从任意集合 h k ′ h_{k}^{\prime} hk中导出,如下所述。然后我们发现约束条件(见公式2-4)

⟨ y j ⟩ = w j T ⟨ z ⟩ ⏟ = 0 = 0 , ( 3.2 ) ⟨ y j 2 ⟩ = w j T ⟨ z z T ⟩ ⏟ = I w j = w j T w j = 1 ( 3.3 ) , ∀ j ′ < j : ⟨ y j ′ y j ⟩ = w j ′ T ⟨ z z T ⟩ ⏟ = I w j = w j ′ T w j = 0 , ( 3.4 ) \begin{array}{r} \left\langle y_{j}\right\rangle = \mathbf{w}_{j}^{T} \underbrace{\langle\mathbf{z}\rangle}_{ = 0} = 0, (3.2)\\ \left\langle y_{j}^{2}\right\rangle = \mathbf{w}_{j}^{T} \underbrace{\left\langle\mathbf{z z}^{T}\right\rangle}_{ = \mathbf{I}} \mathbf{w}_{j} = \mathbf{w}_{j}^{T} \mathbf{w}_{j} = 1 (3.3), \\ \forall j^{\prime}<j: \quad\left\langle y_{j^{\prime}} y_{j}\right\rangle = \mathbf{w}_{j^{\prime}}^{T} \underbrace{\left\langle\mathbf{z z}^{T}\right\rangle}_{ = \mathbf{I}} \mathbf{w}_{j} = \mathbf{w}_{j^{\prime}}^{T} \mathbf{w}_{j} = 0, (3.4) \end{array} yj=wjT=0 z=0,3.2yj2=wjT=I zzTwj=wjTwj=13.3,j<j:yjyj=wjT=I zzTwj=wjTwj=0,3.4

当且仅当我们约束权重向量为向量的标准正交集时,自动满足。

因此,对于输入输出函数的第一个分量,优化问题简化为寻找使方程(3.1)中的 Δ ( y 1 ) \Delta\left(y_{1}\right) Δ(y1)最小的赋范权向量。解是矩阵 ⟨ z ˙ z ˙ T ⟩ \left\langle\dot{\mathbf{z}} \dot{\mathbf{z}}^{T}\right\rangle z˙z˙T的赋范特征向量,它对应于最小的特征值(cf. Mitchison, 1991)。下一个更高的特征值的特征向量产生输入-输出函数的下一个分量与下一个更高的1个值。这就引出了解决上述优化问题的算法。

明确区分原始信号、来自训练数据的精确归一化信号和来自测试数据的近似归一化信号是有用的。设 x ~ ( t ) \tilde{\mathbf{x}}(t) x~(t)是一个可以有任意均值和方差的原始输入信号。为了计算方便和显示的目的,信号被归一化为零的平均值和单位方差。这种归一化对训练数据x(t)是精确的。用相同的偏移量和因子来校正测试数据,通常会得到一个近似归一化的输入信号 x ′ ( t ) \mathbf{x}^{\prime}(t) x(t),因为每个数据样本的均值和方差略有不同,而归一化总是使用从训练数据中确定的偏移量和因子来完成。在下面,原始信号有一个波浪线,测试数据有一个破折号;没有波浪线或破折号的符号通常(但不总是)指的是规范化训练数据。

该算法现在有如下形式(参见下图):

  1. 输入信号。用于训练,i维输入信号为 x ~ ( t ) \tilde{\mathbf{x}}(t) x~(t)
  2. 输入信号归一化。对输入信号进行归一化得到

x ( t ) : = [ x 1 ( t ) , … , x I ( t ) ] T ( 3.5 )  with  x i ( t ) : = x ~ i ( t ) − ⟨ x ~ i ⟩ ⟨ ( x ~ i − ⟨ x ~ i ⟩ ) 2 ⟩ , ( 3.6 )  so that  ⟨ x i ⟩ = 0 ( 3.7 )  and  ⟨ x i 2 ⟩ = 1 ( 3.8 ) \begin{aligned} \mathbf{x}(t) &:=\left[x_{1}(t), \ldots, x_{I}(t)\right]^{T} (3.5)\\ \text { with } \quad x_{i}(t) &:=\frac{\tilde{x}_{i}(t)-\left\langle\tilde{x}_{i}\right\rangle}{\sqrt{\left\langle\left(\tilde{x}_{i}-\left\langle\tilde{x}_{i}\right\rangle\right)^{2}\right\rangle}}, (3.6) \\ \text { so that } \quad\left\langle x_{i}\right\rangle &=0 (3.7)\\ \text { and } \quad\left\langle x_{i}^{2}\right\rangle &=1 (3.8) \end{aligned} x(t) with xi(t) so that xi and xi2:=[x1(t),,xI(t)]T3.5:=(x~ix~i)2 x~i(t)x~i,3.6=03.7=13.8

  1. 非线性扩张。应用一组非线性函数 h ~ ( x ) \tilde{\mathbf{h}}(\mathbf{x}) h~(x),生成扩展信号 z ~ ( t ) \tilde{\mathbf{z}}(t) z~(t)。这里使用了一次的所有单项式(导致线性 S F A SFA SFA有时用 S F A 1 SFA_1 SFA1表示)或一次和两次的单项式,包括混合项,如 x 1 x 2 x_1x_2 x1x2(导致二次SFA有时用 S F A 2 SFA_2 SFA2表示),但也可以使用任何其他的函数集。因此对于二次 S F A SFA SFA

h ~ ( x ) : = [ x 1 , … , x I , x 1 x 1 , x 1 x 2 , … , x I x I ] T ( 3.9 ) z ~ ( t ) : = h ~ ( x ( t ) ) = [ x 1 ( t ) , … , x I ( t ) , x 1 ( t ) x 1 ( t ) , x 1 ( t ) x 2 ( t ) , … , x I ( t ) x I ( t ) ] T ( 3.10 ) \begin{aligned} \tilde{\mathbf{h}}(\mathbf{x}):=&\left[x_{1}, \ldots, x_{I}, x_{1} x_{1}, x_{1} x_{2}, \ldots, x_{I} x_{I}\right]^{T} (3.9) \\ \tilde{\mathbf{z}}(t):=\tilde{\mathbf{h}}(\mathbf{x}(t))=&\left[x_{1}(t), \ldots, x_{I}(t), x_{1}(t) x_{1}(t),\right.\\ &\left.x_{1}(t) x_{2}(t), \ldots, x_{I}(t) x_{I}(t)\right]^{T} (3.10) \end{aligned} h~(x):=z~(t):=h~(x(t))=[x1,,xI,x1x1,x1x2,,xIxI]T3.9[x1(t),,xI(t),x1(t)x1(t),x1(t)x2(t),,xI(t)xI(t)]T3.10

属于 h ~ ( x ) \tilde{\mathbf{h}}(\mathbf{x}) h~(x)和属于 z ~ ( t ) \tilde{\mathbf{z}}(\mathbf{t}) z~(t)的一、二度分量词的维数为 K = I + I ( I + 1 ) / 2 K = I + I(I + 1)/2 K=I+I(I+1)/2

在这里插入图片描述

在这里插入图片描述

  1. 球体。将扩展的信号属于 z ~ ( t ) \tilde{\mathbf{z}}(\mathbf{t}) z~(t)通过仿射变换归一化,以生成具有零均值和单位协方差矩阵 I I I z ( t ) z(t) z(t)

z ( t ) : = S ( z ~ ( t ) − ⟨ z ~ ⟩ ) , ( 3.11 )  with  ⟨ z ⟩ = 0 ( 3.12 )  and  ⟨ z z T ⟩ = I ( 3.13 ) \begin{aligned} \mathbf{z}(t) &:=\mathbf{S}(\tilde{\mathbf{z}}(t)-\langle\tilde{\mathbf{z}}\rangle), (3.11) \\ \text { with } \quad\langle\mathbf{z}\rangle &=\mathbf{0} (3.12) \\ \text { and }\left\langle\mathbf{z} \mathbf{z}^{T}\right\rangle &=\mathbf{I} (3.13) \end{aligned} z(t) with z and zzT:=S(z~(t)z~),3.11=03.12=I3.13

这种归一化称为球面化(或白化)。矩阵 S S S是球面矩阵,可以通过对矩阵的主成分分析(PCA)确定 ( Z ~ ( t ) − ⟨ z ~ ⟩ ) (\tilde{\mathbf{Z}}(t)-\langle\tilde{\mathbf{z}}\rangle) (Z~(t)z~)。因此,它依赖于特定的训练数据集。这也定义了

h ( x ) : = S ( h ~ ( x ) − ⟨ z ~ ⟩ ) \mathbf{h}(\mathbf{x}):=\mathbf{S}(\tilde{\mathbf{h}}(\mathbf{x})-\langle\tilde{\mathbf{z}}\rangle) h(x):=S(h~(x)z~) (3.14)

它是一个标准化函数,而 z ( t ) z(t) z(t)是球化数据。

  1. 主成分分析。将主成分分析法应用于矩阵 ⟨ z ˙ z ˙ T ⟩ \left\langle\dot{\mathbf{z}} \dot{\mathbf{z}}^{T}\right\rangle z˙z˙T。具有最小特征值的 J J J个特征向量 λ j λ_j λj得到归一化权向量

w j : ⟨ z ˙ z ˙ T ⟩ w j = λ j w j ( 3.15 )  with  λ 1 ≤ λ 2 ≤ ⋯ ≤ λ J ( 3.16 ) \begin{array}{ll} \mathbf{w}_{j}: & \left\langle\dot{\mathbf{z}} \dot{\mathbf{z}}^{T}\right\rangle \mathbf{w}_{j}=\lambda_{j} \mathbf{w}_{j} (3.15) \\ \text { with } & \lambda_{1} \leq \lambda_{2} \leq \cdots \leq \lambda_{J} (3.16) \end{array} wj: with z˙z˙Twj=λjwj3.15λ1λ2λJ3.16

提供输入-输出功能

g ( x ) : = [ g 1 ( x ) , … , g J ( x ) ] T ( 3.17 )  with  g j ( x ) : = w j T h ( x ) ( 3.18 ) \begin{aligned} \mathbf{g}(\mathbf{x}) &:=\left[g_{1}(\mathbf{x}), \ldots, g_{J}(\mathbf{x})\right]^{T} (3.17)\\ \text { with } \quad g_{j}(\mathbf{x}) &:=\mathbf{w}_{j}^{T} \mathbf{h}(\mathbf{x}) (3.18) \end{aligned} g(x) with gj(x):=[g1(x),,gJ(x)]T3.17:=wjTh(x)3.18

输出信号

y ( t ) : = g ( x ( t ) ) ( 3.19 )  with  ⟨ y ⟩ = 0 ( 3.20 ) ⟨ y y T ⟩ = I ( 3.21 )  and  Δ ( y j ) = ⟨ y ˙ j 2 ⟩ = λ j . ( 3.22 ) \begin{aligned} \mathbf{y}(t) &:=\mathbf{g}(\mathbf{x}(t)) (3.19)\\ \text { with } &\langle\mathbf{y}\rangle &=\mathbf{0} (3.20)\\ \left\langle\mathbf{y} \mathbf{y}^{T}\right\rangle &=\mathbf{I} (3.21)\\ \text { and } \Delta\left(y_{j}\right)=\left\langle\dot{y}_{j}^{2}\right\rangle &=\lambda_{j} . (3.22) \end{aligned} y(t) with yyT and Δ(yj)=y˙j2:=g(x(t))3.19y=I3.21=λj.3.22=03.20

输出信号的各分量的均值和单位方差都为零,并且是不相关的。

  1. 重复。如果需要,将输出信号 y ( t ) y(t) y(t)(或它的前几个分量或不同输出信号的组合)作为输入信号 x ( t ) x(t) x(t),用于学习算法的下一个应用。继续步骤3。

  2. 测试。为了对测试信号进行系统测试,将步骤2至6中推导的归一化和输入-输出函数应用于新的输入信号(属于x0(T))。注意,这个测试信号需要使用与训练信号相同的偏移量和因子进行归一化,以准确地再现学习的输入-输出关系。因此,训练信号只是近似地归一化降低

x ′ ( t ) : = [ x 1 ′ ( t ) , … , x I ′ ( t ) ] T ( 3.23 )  with  x i ′ ( t ) : = x ~ i ′ ( t ) − ⟨ x ~ i ⟩ ⟨ ( x ~ i − ⟨ x ~ i ⟩ ) 2 ⟩ ( 3.24 )  so that  ⟨ x i ′ ⟩ ≈ 0 ( 3.25 )  and  ⟨ x i ′ 2 ⟩ ≈ 1 ( 3.26 ) \begin{aligned} & \mathbf{x}^{\prime}(t):=\left[x_{1}^{\prime}(t), \ldots, x_{I}^{\prime}(t)\right]^{T} (3.23)\\ \text { with } \quad x_{i}^{\prime}(t) &:=\frac{\tilde{x}_{i}^{\prime}(t)-\left\langle\tilde{x}_{i}\right\rangle}{\sqrt{\left\langle\left(\tilde{x}_{i}-\left\langle\tilde{x}_{i}\right\rangle\right)^{2}\right\rangle}}(3.24) \\ \text { so that } \quad\left\langle x_{i}^{\prime}\right\rangle & \approx 0 (3.25)\\ \text { and }\left\langle x_{i}^{\prime 2}\right\rangle & \approx 1 (3.26) \end{aligned}  with xi(t) so that xi and xi2x(t):=[x1(t),,xI(t)]T3.23:=(x~ix~i)2 x~i(t)x~i3.2403.2513.26

只有在测试信号对训练信号具有代表性的情况下,归一化才是准确的。输出信号也是如此

y ′ ( t ) : = g ( x ′ ( t ) ) ( 3.27 )  with  ⟨ y ′ ⟩ ≈ 0 , ( 3.28 )  and  ⟨ y ′ y ′ T ⟩ ≈ I . ( 3.29 ) \begin{aligned} \mathbf{y}^{\prime}(t) &:=\mathbf{g}\left(\mathbf{x}^{\prime}(t)\right)(3.27) \\ \text { with } \quad\left\langle\mathbf{y}^{\prime}\right\rangle & \approx \mathbf{0}, (3.28)\\ \text { and }\left\langle\mathbf{y}^{\prime} \mathbf{y}^{\prime T}\right\rangle & \approx \mathbf{I} . (3.29) \end{aligned} y(t) with y and yyT:=g(x(t))3.270,3.28I.3.29

由于实际原因,在步骤4和步骤5中使用了奇异值分解而不是PCA。对于一些特征值非常接近于零的退化数据,奇异值分解是一种较好的分析方法,然后在步骤4中丢弃这些特征值。非线性展开有时会导致退化数据,因为它产生高度冗余的表示,其中一些成分可能具有线性关系。一般来说,特征值接近于零的信号分量通常包含噪声,如舍入误差,在归一化后会非常迅速地波动和在任何情况下,SFA都不会在步骤5中选择。因此,决定哪些小组件应该被丢弃并不重要。

在这里插入图片描述

在这里插入图片描述

【图3】执行SFA的两种可能的网络结构。(上)用一组单位来解释,在树(粗线)上进行复杂的计算,如sigma-pi单位。(下)解释为简单单元与隐含层中固定的非线性单元的分层网络,如径向基函数网络具有不可适应的隐含单元。在这两种情况下,输入-输出函数分量由 g j ( x ) = w j T h ( x ) = w ~ j 0 + w ~ j T h ~ ( x ) g_{j}(\mathbf{x})=\mathbf{w}_{j}^{T} \mathbf{h}(\mathbf{x})=\tilde{w}_{j 0}+\tilde{\mathbf{w}}_{j}^{T} \tilde{\mathbf{h}}(\mathbf{x}) gj(x)=wjTh(x)=w~j0+w~jTh~(x)给出,并带有适当的原始 w ~ ( J ) \tilde{\mathbf{w}}(\mathbf{J}) w~(J)权重向量。这里假设输入信号分量是标准化的。

不是直接用 Δ \Delta Δ的值,而是用一种更直观的解释来测量信号的不变性是有用的。

可以是定义为的指标η

g j ( x ) = w j T h ( x ) = w ~ j 0 + w ~ j T h ~ ( x ) η ( y ) : = T 2 π Δ ( y ) g_{j}(\mathbf{x})=\mathbf{w}_{j}^{T} \mathbf{h}(\mathbf{x})=\tilde{w}_{j 0}+\tilde{\mathbf{w}}_{j}^{T} \tilde{\mathbf{h}}(\mathbf{x})\eta(y):=\frac{T}{2 \pi} \sqrt{\Delta(y)} gj(x)=wjTh(x)=w~j0+w~jTh~(x)η(y):=2πTΔ(y) (3.30)

t ∈ [ t 0 , t 0 + T ] t ∈ [t_0,t_0+T] t[t0,t0+T], 对于一个纯正弦波 y ( t ) : = 2 sin ⁡ ( n 2 π t / T ) y(t):=\sqrt{2} \sin (n 2 \pi t / T) y(t):=2 sin(n2πt/T)整数数目的振荡,η(y)就是振荡的数目,即η(y) = n。因此,任意信号的指数η表示相同值的纯正弦波的振荡次数,至少对η的整数值是这样的。低η值表示信号慢。由于从测试数据导出的输出信号只是近似归一化, η ( y 0 ) η(y_0) η(y0)意味着包含 y 0 y_0 y0到零的平均值和单位方差的精确归一化,以使η指标独立于一个偶然的比例因子。

具体应用

可参考下面几篇文献资料:

[1] Zhang S , Zhao C . Slow-Feature-Analysis-Based Batch Process Monitoring With Comprehensive Interpretation of Operation Condition Deviation and Dynamic Anomaly[J]. IEEE Transactions on Industrial Electronics, 2018, PP(5):1-1.

[2] Wu C , Du B , Zhang L . Slow Feature Analysis for Change Detection in Multispectral Imagery[J]. IEEE Transactions on Geoscience & Remote Sensing, 2014, 52(5):2858-2874.

[3] Zhang L , Wu C , Du B . Automatic Radiometric Normalization for Multitemporal Remote Sensing Imagery With Iterative Slow Feature Analysis[J]. IEEE Transactions on Geoscience and Remote Sensing, 2014, 52(10):6141-6155.

[4] Celik T . Unsupervised Change Detection in Satellite Images Using Principal Component Analysis and k-Means Clustering[J]. IEEE Geoscience & Remote Sensing Letters, 2009, 6(4):772-776.

[5] Zhang, Tao, Dacheng. Slow Feature Analysis for Human Action Recognition[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2012.

这几篇在工程上的应用算的上很好的了。

ღ( ´・ᴗ・` )


世界上最令人激动的一件事就是:你原本以为没有机会靠近的人,竟然爱上了你…

特征分析Slow Feature AnalysisSFA)是一种非监督学习方法,用于提取数据中的变量,即在时间上变化缓的特征。SFA可以应用于时间序列数据、图像序列数据等。下面是一个Python实现SFA的示例代码: 首先,需要安装NumPy和SciPy库,可以使用以下命令进行安装: ``` pip install numpy pip install scipy ``` 然后,可以使用以下代码实现SFA: ```python import numpy as np from scipy.signal import butter, lfilter class SFA: def __init__(self, n_components, tau): self.n_components = n_components self.tau = tau def fit_transform(self, X): X = np.asarray(X) X = self._preprocess(X) W = np.random.randn(X.shape[1], self.n_components) for i in range(100): Y = X.dot(W) Y = self._normalize(Y) dW = X.T.dot(Y) - np.diag(np.diag(Y.T.dot(Y))).dot(W) W += 0.1 * dW return X.dot(W) def _preprocess(self, X): X = self._normalize(X) X = self._highpass(X) X = self._delay(X) return X def _normalize(self, X): X = X - X.mean(axis=0) X = X / X.std(axis=0) return X def _highpass(self, X): nyq = 0.5 * X.shape[0] / self.tau b, a = butter(2, 0.1 / nyq, btype='highpass') X = lfilter(b, a, X, axis=0) return X def _delay(self, X): X_delayed = np.zeros_like(X) for i in range(self.n_components): X_delayed[:, i] = np.roll(X[:, 0], i) return X_delayed ``` 在上面的代码中,SFA类有两个参数:n_components和tau。n_components是要提取的变量的数量,tau是采样时间的间隔。fit_transform方法接受一个数据矩阵X,并返回提取的变量矩阵。 _preprocess方法对数据进行预处理,包括标准化、高通滤波和延迟。_normalize方法将数据标准化,_highpass方法使用巴特沃斯高通滤波器滤波数据,_delay方法将数据延迟,以便提取变量。 fit_transform方法使用随机权重矩阵W进行特征分析,通过反复迭代来更新W。在每次迭代中,算法将数据矩阵X乘以权重矩阵W,然后将结果标准化为Y。算法计算梯度dW,并将其添加到权重矩阵W。最后,算法将数据矩阵X乘以更新后的权重矩阵W,并返回结果矩阵。 以下是使用示例: ```python import matplotlib.pyplot as plt from sklearn.datasets import make_swiss_roll X, _ = make_swiss_roll(n_samples=1000) sfa = SFA(n_components=2, tau=0.1) Y = sfa.fit_transform(X) plt.scatter(Y[:, 0], Y[:, 1], c=X[:, 2]) plt.colorbar() plt.show() ``` 在这个示例中,我们使用make_swiss_roll函数生成一个三维数据集X,然后使用SFA提取其变量,并在二维平面上绘制结果。结果显示,SFA成功地提取了数据集的变量,并将它们映射到二维平面上。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

府学路18号车神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值