因子分析是一种数据简化技术,是一种数据的降维方法。
因子分子可以从原始高维数据中,挖掘出仍然能表现众多原始变量主要信息的低维数据。此低维数据可以通过高斯分布、线性变换、误差扰动生成原始数据。
因子分析基于一种概率模型,使用EM算法来估计参数。
主成分分析(PCA)也是一种特征降维的方法。
学习理论中,特征选择是要剔除与标签无关的特征,比如“汽车的颜色”与“汽车的速度”无关;
PCA中要处理与标签有关、但是存在噪声或者冗余的特征,比如在一个汽车样本中,“千米/小时”与“英里/小时”中有一个冗余了。
PCA的方法比较直接,只要计算特征向量就可以降维了。
独立成分分析(ICA)是一种主元分解的方法。
其基本思想是从一组混合的观测信号中分离出独立信号。比如在一个大房间里,很多人同时在说话,样本是这个房间里各个位置的一段录音,ICA可以从这些混合的录音中分离出每个人独立的说话的声音。
ICA认为观测信号是若干个统计独立的分量的线性组合,ICA要做的是一个解混过程。
因为因子分析、PCA、ICA都是对数据的处理方法,就放在这同一份总结里了。
1、因子分析(Factor analysis)
1.1、因子分析的直观理解
因子分析认为高维样本点实际上是由低维样本点经过高斯分布、线性变换、误差扰动生成的。让我们来看一个简单例子,对低维数据如何生成高维数据有一个直观理解。
假设我们有m=5个2维原始样本点如下:
那么按照因子分析的做法,原始数据可以由以下过程生成:
①在一个低维空间(此处是1维)中,存在着由高斯分布生成的mmm个点z(i)z^{(i)}z(i),z(i)z^{(i)}z(i)~N(0,I)N(0,I)N(0,I):
另一个等价的假设是,(x,z)(x,z)(x,z)联合分布如下,其中z∈Rkz \in R^kz∈Rk是一个隐藏随机变量:
接下来的课程,是使用高斯模型的矩阵表示法来对模型进行分析。矩阵表示法认为zzz与xxx联合符合多元高斯分布,即:
由zzz~N(0,I)N(0,I)N(0,I)我们可以简单获得E(z)=0E(z)=0E(z)=0。
类似地由ε\varepsilonε~N(0,ψ)N(0,\psi)N(0,ψ),x=μ+Λz+εx=\mu+\Lambda z+\varepsilonx=μ+Λz+ε,μ\muμ是一个常数,我们有:
\begin{align}
E[x]&=E[\mu+\Lambda z+\varepsilon]\
&=E[\mu]+\Lambda E[z]+E[\varepsilon]\
&=\mu+0+0\
&=\mu
\tag{5}
\end{align}
所以:
μzx=[0⃗μ](6)\mu_{zx}=\left[ \begin{matrix}\vec 0\\\mu \end{matrix}\right]\tag{6}μzx=[0μ](6)
求取Σ\SigmaΣ
Σ\SigmaΣ是x,zx,zx,z联合分布的协方差矩阵。
方差,度量随机变量与期望之间的偏离程度,定义如下:
Var(X)=E((X−E(X))2)=E(X2)−(E(X)2)(7)Var(X)=E((X-E(X))^2)=E(X^2)-(E(X)^2)\tag{7}Var(X)=E((X−E(X))2)=E(X2)−(E(X)2)(7)
协方差,两个变量总体误差的期望,定义如下:
Cov(X,Y)=E((X−E(X))(Y−E(Y)))(8)Cov(X,Y)=E((X-E(X))(Y-E(Y)))\tag{8}Cov(X,Y)=E((X−E(X))(Y−E(Y)))(8)
协方差、方差、期望之间的一些相互关系如下:
Cov(X,X)=Cov(X)=Var(X)=E(XXT)=σ2(9)Cov(X,X)=Cov(X)=Var(X)=E(XX^T)=\sigma^2\tag{9}Cov(X,X)=Cov(X)=Var(X)=E(XXT)=σ2(9)
下面开始求取Σ\SigmaΣ。
\begin{align}
\Sigma&=Cov\left[ \begin{matrix}z\x \end{matrix}\right]\
&=\left[ \begin{matrix}\Sigma_{zz}&\Sigma_{zx}\\Sigma_{xz}&\Sigma_{xx} \end{matrix}\right]\
&=E\left[ \begin{matrix}(z-E(z))(z-E(z))^T& (z-E(z))(x-E(x))^T \(x-E(x))(z-E(z))T&(x-E(x))(x-E(x))T \end{matrix}\right]
\tag{10}
\end{align}
由zzz~N(0,I)N(0,I)N(0,I),可以简单得到:
Σzz=Cov(z)=σ2=I(11)\Sigma_{zz}=Cov(z)=\sigma^2=I\tag{11}Σzz=Cov(z)=σ2=I(11)
由ε\varepsilonε~N(0,ψ)N(0,\psi)N(0,ψ),x=μ+Λz+εx=\mu+\Lambda z+\varepsilonx=μ+Λz+ε,E(x)=μE(x)=\muE(x)=μ,并且zzz和ε\varepsilonε是相互独立,有:
\begin{align}
\Sigma_{zx}&=E[ (z-E(z))(x-E(x))^T]\
&=E[(z-0)(\mu+\Lambda z+\varepsilon-\mu)^T]\
&=E[zzT]\LambdaT+E[z\varepsilon^T]\
&=I\Lambda^T+0\
&=\Lambda^T
\tag{12}
\end{align}
类似地,我们可以得到:
\begin{align}
\Sigma_{xx}&=E[ (x-E(x))(x-E(x))^T]\
&=E[(\mu+\Lambda z+\varepsilon-\mu)(\mu+\Lambda z+\varepsilon-\mu)^T]\
&=\Lambda E[zzT]\LambdaT+E[\varepsilon\varepsilon^T]\
&=\Lambda I\Lambda^T + \psi\
&=\Lambda \Lambda^T + \psi
\tag{13}
\end{align}
用最大似然估计法求解参数
经过上面的步骤,我们就把μzx,Σ\mu_{zx},\Sigmaμzx,Σ用我们的参数μ,Λ,ψ\mu,\Lambda,\psiμ,Λ,ψ表示出来了:
在M-step中,我们需要最大化如下公式来求取参数μ,Λ,ψ\mu,\Lambda,\psiμ,Λ,ψ:
∑i=1m∫z(i)Qi(z(i))logp(x(i),z(i);μ,Λ,ψ)Qi(z(i))dz(i)(18)\sum_{i=1}^m \int_{z^{(i)}} Q_i(z^{(i)}) \log \frac{p(x^{(i)},z^{(i)};\mu,\Lambda,\psi)}{Q_i(z^{(i)})}dz^{(i)}\tag{18}i=1∑m∫z(i)Qi(z(i))logQi(z(i))p(x(i),z(i);μ,Λ,ψ)dz(i)(18)
视为期望,打开log
在这里,因为zzz是连续的,所以使用积分;如果是离散的,则使用累加。
并且,积分部分可以当成zzz服从QQQ分布时,函数logp(x(i),z(i);μ,Λ,ψ)Qi(z(i))\log \frac{p(x^{(i)},z^{(i)};\mu,\Lambda,\psi)}{Q_i(z^{(i)})}logQi(z(i))p(x(i),z(i);μ,Λ,ψ)的期望,这里将会用E表示,省略z(i)z^{(i)}z(i)~QiQ_iQi的下标;对于函数中x,zx,zx,z的联合分布,我们可以用贝叶斯公式把它打开p(x,z)=p(x∣x)p(z)p(x,z)=p(x\mid x)p(z)p(x,z)=p(x∣x)p(z);为了方便计算我们还要把log函数打开——经过这些分析,我们有如下推导:
\begin{align}
&\quad\sum_{i=1}^m \int_{z^{(i)}} Q_i(z^{(i)}) \log \frac{p(x{(i)},z{(i)};\mu,\Lambda,\psi)}{Q_i(z{(i)})}dz{(i)}\
&=\sum_{i=1}^m E [\log \frac{p(x{(i)},z{(i)};\mu,\Lambda,\psi)}{Q_i(z^{(i)})}]\
&=\sum_{i=1}^m E [\log \frac{p(x^{(i)}\mid z{(i)};\mu,\Lambda,\psi)p(z{(i)})}{Q_i(z^{(i)})}]\
&=\sum_{i=1}^m E [\log p(x^{(i)}\mid z^{(i)};\mu,\Lambda,\psi)+\log p(z^{(i)})-\log Q_i(z^{(i)})]
\tag{19}
\end{align}
去掉无关项后带入具体分布
这就比较清爽了,然后,记住我们的目标是求得参数μ,Λ,ψ\mu,\Lambda,\psiμ,Λ,ψ,但是它们不能一起求解,所以下面以参数Λ\LambdaΛ为例,对公式进行求解——在式(19)中,对参数Λ\LambdaΛ求偏导。另外式(19)中的p(z(i)p(z^{(i)}p(z(i)与Qi(z(i))Q_i(z^{(i)})Qi(z(i))与Λ\LambdaΛ无关,可以忽略掉,所以实际上就是对下式求偏导:
\begin{align}
\sum_{i=1}^m E [\log p(x^{(i)}\mid z^{(i)};\mu,\Lambda,\psi)]
\tag{20}
\end{align}
在对式(20)求偏导之前,还可以对其进行一些处理——由式(2),并且x∣zx\mid zx∣z服从多元高斯分布,所以有:
\begin{align}
&\quad \sum_{i=1}^m E [\log p(x^{(i)}\mid z^{(i)};\mu,\Lambda,\psi)]\
&=\sum_{i=1}^m E [\log \frac{1}{\sqrt{2\pi^n\left|\psi \right|}}\exp(-\frac{1}{2}(x^{(i)}-(\mu+\Lambda z{(i)}))T\psi{-1}(x{(i)}-(\mu+\Lambda z^{(i)})))]\
&=\sum_{i=1}^m E [-\frac{1}{2}\log\left|\psi \right|-\frac{n}{2}\log(2\pi)-\frac{1}{2}(x^{(i)}-\mu-\Lambda z{(i)})T\psi{-1}(x{(i)}-\mu-\Lambda z^{(i)}))]
\tag{21}
\end{align}
去掉无关项后求偏导
同样地,我们的目标是与Λ\LambdaΛ有关的项,所以忽略掉前面的无关项之后,我们实际上是对下式求偏导并求解:
\begin{align}
&\quad \nabla_\Lambda\sum_{i=1}^m E [-\frac{1}{2}(x^{(i)}-\mu-\Lambda z{(i)})T\psi{-1}(x{(i)}-\mu-\Lambda z^{(i)}))]\
&=\sum_{i=1}^m \nabla_\Lambda-E[\frac{1}{2}(\underbrace{(x{(i)T}-\muT)\psi{-1}}A-\underbrace{z{(i)T}\LambdaT\psi{-1}}B)(\underbrace{(x^{(i)}-\mu)}C-\underbrace{\Lambda z^{(i)}}D)]\
&=\sum{i=1}^m \nabla\Lambda -E[\frac{1}{2}(AC-AD-BC+BD)]
\tag{22}
\end{align}
打开后我们可以发现,ACACAC这一项是与Λ\LambdaΛ无关的,把这一项忽略掉,所以由式(22)继续推导有:
\begin{align}
&\quad\sum{i=1}^m \nabla\Lambda -E[\frac{1}{2}(-AD-BC+BD)]\
&=\sum_{i=1}^m \nabla_\Lambda -E[\frac{1}{2}(-\underbrace{(x{(i)T}-\muT)\psi{-1} \Lambda z{(i)}}_E-\underbrace{z{(i)T}\LambdaT\psi{-1}(x{(i)}-\mu)}F+z{(i)T}\LambdaT\psi{-1}\Lambda z^{(i)})]
\tag{23}
\end{align}
因为期望是一个常数,又因为a=tr(a)a=tr(a)a=tr(a),所以可以直接对上式求迹;
因为trA=trATtrA=trA^TtrA=trAT,可以对E求转置,又因为对角矩阵的转置是它本身——(ψ−1)T=ψ−1(\psi^{-1})^T=\psi^{-1}(ψ−1)T=ψ−1,所以有trE=trET=trFtrE=trE^T=trFtrE=trET=trF,对式(23)继续推导有:
\begin{align}
&\quad\sum{i=1}^m \nabla_\Lambda -E[\frac{1}{2}(-\underbrace{(x{(i)T}-\muT)\psi{-1} \Lambda z{(i)}}_E-\underbrace{z{(i)T}\LambdaT\psi{-1}(x{(i)}-\mu)}F+z{(i)T}\LambdaT\psi{-1}\Lambda z^{(i)})]\
&=\sum{i=1}^m \nabla_\Lambda -E[tr\frac{1}{2}(-\underbrace{z{(i)T}\LambdaT\psi{-1}(x{(i)}-\mu)}_{ET}-\underbrace{z{(i)T}\LambdaT\psi{-1}(x{(i)}-\mu)}_F+z{(i)T}\LambdaT\psi^{-1}\Lambda z^{(i)})]\
&=\sum_{i=1}^m \nabla_\Lambda E[-tr\frac{1}{2}z{(i)T}\LambdaT\psi{-1}\Lambda z^{(i)}+tr z{(i)T}\LambdaT\psi{-1}(x^{(i)}-\mu)]
\tag{24}
\end{align}
然后利用trAB=trBAtrAB=trBAtrAB=trBA,把式(25)中的z(i)Tz^{(i)^T}z(i)T放到它们自己的后面,再把求导切换到期望里面——求导是针对Λ\LambdaΛ,期望是针对z(i)z^{(i)}z(i),所以是可以切换的:
\begin{align}
&\quad\sum_{i=1}^m \nabla_\Lambda E[-tr\frac{1}{2}z{(i)T}\LambdaT\psi{-1}\Lambda z^{(i)}+tr z{(i)T}\LambdaT\psi{-1}(x^{(i)}-\mu)]\
&=\sum_{i=1}^m \nabla_\Lambda E[-tr\frac{1}{2}\LambdaT\psi{-1}\Lambda z{(i)}z{(i)^T}+tr \LambdaT\psi{-1}(x{(i)}-\mu)z{(i)^T}]\
&=\sum_{i=1}^m\left( E[-\nabla_\Lambda tr\frac{1}{2}\LambdaT\psi{-1}\Lambda z{(i)}z{(i)^T}]+E[\nabla_\Lambda tr\LambdaT\psi{-1}(x{(i)}-\mu)z{(i)^T}]\right)
\tag{25}
\end{align}
对于式(25),先用矩阵的迹的性质∇ATf(A)=(∇Af(A))T\nabla_{A^T}f(A)=(\nabla_A f(A))^T∇ATf(A)=(∇Af(A))T处理一下:
∑i=1m(E[−(∇ΛTtr12ΛTψ−1Λz(i)z(i)T)T]+E[(∇ΛTtrΛTψ−1(x(i)−μ)z(i)T)T])(26)\sum_{i=1}^m\left( E\left[-\left(\nabla_{\Lambda^T} tr\frac{1}{2}\Lambda^T\psi^{-1}\Lambda z^{(i)}z^{(i)^T}\right)^T\right]+E\left[\left(\nabla_{\Lambda^T} tr\Lambda^T\psi^{-1}(x^{(i)}-\mu)z^{(i)^T}\right)^T\right]\right)\tag{26}i=1∑m(E[−(∇ΛTtr21ΛTψ−1Λz(i)z(i)T)T]+E[(∇ΛTtrΛTψ−1(x(i)−μ)z(i)T)T])(26)
对式(26)的第一项使用∇AtrABATC=CAB+CTABT\nabla_A trABA^TC=CAB+C^TAB^T∇AtrABATC=CAB+CTABT的性质,对第二项使用∇AtrAB=BT\nabla_A trAB=B^T∇AtrAB=BT 的性质:
\begin{align}
&\quad\sum_{i=1}^m\left( E\left[-\left(\nabla_{\underbrace{\Lambda^T}A} tr\frac{1}{2}\underbrace{\LambdaT}_A\underbrace{\psi{-1}}B\underbrace{\Lambda}{A^T} \underbrace{z{(i)}z{(i)T}}_C\right)T\right]+E\left[\left(\nabla{\underbrace{\Lambda^T}A} tr\underbrace{\LambdaT}_A\underbrace{\psi{-1}(x{(i)}-\mu)z{(i)T}}_B\right)T\right]\right)\
&=\sum{i=1}mE\left(\left(-\frac{1}{2}z{(i)}z{(i)T}\LambdaT\psi{-1}-\frac{1}{2}(z{(i)}z{(i)T})T\LambdaT(\psi{-1})T\right)T+\left((\psi{-1}(x{(i)}-\mu)z{(i)T})T\right)T\right)\
&=\sum_{i=1}mE\left(\left(-z{(i)}z{(i)T}\LambdaT\psi{-1}\right)T+\psi{-1}(x{(i)}-\mu)z{(i)^T}\right)\
&=\sum_{i=1}mE\left(-\psi{-1}\Lambda z{(i)}z{(i)T}+\psi{-1}(x{(i)}-\mu)z{(i)^T}\right)
\tag{27}
\end{align}
令式(27)=0,并化简,就可以求得参数Λ\LambdaΛ:
\begin{align}
& \sum_{i=1}mE\left(-\psi{-1}\Lambda z{(i)}z{(i)T}+\psi{-1}(x{(i)}-\mu)z{(i)^T}\right)=0\
\Longrightarrow &\sum_{i=1}m-\psi{-1}\Lambda E[z{(i)}z{(i)T}]+\sum_{i=1}m -\psi^{-1} (x{(i)}-\mu)E[z{(i)^T}]=0\
\Longrightarrow &\sum_{i=1}^m\Lambda E[z{(i)}z{(i)^T}]= \sum_{i=1}m(x{(i)}-\mu)E[z{(i)T}]\
\Longrightarrow & \Lambda=\left(\sum_{i=1}m(x{(i)}-\mu)E[z{(i)T}]\right)\left(\sum_{i=1}^m E[z{(i)}z{(i)T}]\right){-1}
\tag{28}
\end{align}
我们发现,这里的公式与线性回归中最小二乘法的矩阵形式相似。
相似原因:在因子分析中,xxx是zzz的线性函数,在E-step中给出zzz的QQQ分布之后,在M-tep中寻找xxx与zzz的映射关系Λ\LambdaΛ;在线性回归的最小二乘中,也是寻找xxx与yyy的线性关系。
不同之处:最小二乘只用到了zzz的最优估计,因子分析还用到了z(i)z(i)Tz^{(i)}z^{(i)^T}z(i)z(i)T的估计。
对于参数Λ\LambdaΛ,这里还有未知数E[z(i)T]E[z^{(i)^T}]E[z(i)T]与E[z(i)z(i)T]E[z^{(i)}z^{(i)^T}]E[z(i)z(i)T],并且此处的期望是在z(i)z^{(i)}z(i)服从QiQ_iQi 前提下计算的,所以对于前者,通过式(17)我们有:
E[z(i)T]=μz(i)∣x(i)T(29)E[z^{(i)^T}]=\mu_{z^{(i)}\mid x^{(i)}}^T\tag{29}E[z(i)T]=μz(i)∣x(i)T(29)
对于后者,由式(7)~式(9)方差与协方差的性质,我们有:
\begin{align}
Cov(z)&=E(zzT)-E(z)E(zT)\
\Longrightarrow E[z{(i)}z{(i)T}]&=E(z{(i)})E(z{(i)T})+Cov(z)\
&=\mu_{z^{(i)}\mid x{(i)}}\mu_{z{(i)}\mid x{(i)}}T+\Sigma_{z^{(i)}\mid x^{(i)}}
\tag{30}
\end{align}
注意这里的E[z(i)z(i)T]E[z^{(i)}z^{(i)^T}]E[z(i)z(i)T] 不仅仅等于E(z(i))E(z(i)T)E(z^{(i)})E(z^{(i)^T})E(z(i))E(z(i)T),后面还有加上一个后验概率p(z∣x)p(z\mid x)p(z∣x)协方差,要特别注意。
到这里,我们就可以把参数Λ\LambdaΛ的最终形式给出来了:
Λ=(∑i=1m(x(i)−μ)μz(i)∣x(i)T)(∑i=1mμz(i)∣x(i)μz(i)∣x(i)T+Σz(i)∣x(i))−1(31)\Lambda=\left(\sum_{i=1}^m(x^{(i)}-\mu)\mu_{z^{(i)}\mid x^{(i)}}^T\right)\left(\sum_{i=1}^m \mu_{z^{(i)}\mid x^{(i)}}\mu_{z^{(i)}\mid x^{(i)}}^T+\Sigma_{z^{(i)}\mid x^{(i)}}\right)^{-1}\tag{31}Λ=(i=1∑m(x(i)−μ)μz(i)∣x(i)T)(i=1∑mμz(i)∣x(i)μz(i)∣x(i)T+Σz(i)∣x(i))−1(31)
另外对于其他两个参数Λ,ψ\Lambda,\psiΛ,ψ,使用相同的方法可以求得,这里直接给出结果
:
μ=1m∑i=1mx(i)(32)\mu=\frac{1}{m}\sum_{i=1}^{m}x^{(i)}\tag{32}μ=m1i=1∑mx(i)(32)
ϕ=1m∑i=1mx(i)x(i)T−x(i)μz(i)∣x(i)TΛT−Λμz(i)∣x(i)x(i)T+Λμz(i)∣x(i)μz(i)∣x(i)T+Σz(i)∣x(i)ΛT(33)\phi=\frac{1}{m}\sum_{i=1}{m}x^{(i)}x^{(i)^T}-x^{(i)}\mu_{z^{(i)}\mid x^{(i)}}^T\Lambda^T-\Lambda\mu_{z^{(i)}\mid x^{(i)}}x^{(i)^T}+\Lambda\mu_{z^{(i)}\mid x^{(i)}}\mu_{z^{(i)}\mid x^{(i)}}^T+\Sigma_{z^{(i)}\mid x^{(i)}}\Lambda^T\tag{33}ϕ=m1i=1∑mx(i)x(i)T−x(i)μz(i)∣x(i)TΛT−Λμz(i)∣x(i)x(i)T+Λμz(i)∣x(i)μz(i)∣x(i)T+Σz(i)∣x(i)ΛT(33)
注意这里的参数是ϕ\phiϕ不是ψ\psiψ,得到ϕ\phiϕ之后还需要将ψii=ϕii\psi_{ii}=\phi_{ii}ψii=ϕii,因为ϕ\phiϕ不是对角矩阵,所以只需要取ϕ\phiϕ对角线上的值即可。
2、主成分分析(Principal component analysis,简称PCA
PCA的意义
PCA技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。
PCA将n个特征降维到k个,可以用来进行数据压缩,如果100维的向量最后可以用10维来表示,那么压缩率为90%。同样图像处理领域的KL变换使用PCA做图像压缩。但PCA要保证降维后,还要保证数据的特性损失最小。
预处理
运行PCA算法之前,数据一般要进行预处理。预处理步骤如下:
①令μ=1m∑i=1mx(i)\mu=\frac{1}{m}\sum_{i=1}^{m}x^{(i)}μ=m1∑i=1mx(i)
②用(x(i)−μ)(x^{(i)}-\mu)(x(i)−μ)代替x(i)x^{(i)}x(i)
③令σ2=1m∑i=1m(xj(i))2\sigma^2=\frac{1}{m}\sum_{i=1}^{m}(x^{(i)}_j)^2σ2=m1∑i=1m(xj(i))2
④用xj(i)/σ2x^{(i)}_j/\sigma^2xj(i)/σ2代替xj(i)x^{(i)}_jxj(i)
步骤①与②将数据的均值变为0;
步骤③与④将数据每个维度的方差变为1,使每个维度都在同一个维度下被度量。
如果已知数据均值为0,或者数据已在同样一个维度下,就无需进行上面的步骤。
最大方差理论解释PCA
Ng在课上说,PCA有9到10种解释方法,这里仅用其中的最大方差理论来解释PCA
在信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。如前面的图,样本在横轴上的投影方差较大,在纵轴上的投影方差较小,那么认为纵轴上的投影是由噪声引起的。
因此我们认为,最好的k维特征是将n维样本点转换为k维后,每一维上的样本方差都很大。
下面举例来说明如何寻找主方向。
经典的鸡尾酒宴会问题(cocktail party problem)。假设在party中有n个人,他们可以同时说话,我们也在房间中一些角落里共放置了个声音接收器用来记录声音。宴会过后,我们从nnn个麦克风中得到了一组数据{x(i);i=1,2,⋯ ,m}\begin{Bmatrix} x^{(i)};i=1,2,\cdots,m \end{Bmatrix}{x(i);i=1,2,⋯,m},i表示采样的时间顺序,也就是说共得到了m组采样,每一组采样都是n维的。我们的目标是单单从这m组采样数据中分辨出每个人说话的信号。
同时我们假设nnn个信号源为s=(s1,s2,⋯ ,sn)Ts=(s_1,s_2,\cdots,s_n)^Ts=(s1,s2,⋯,sn)T,s∈Rns\in R^ns∈Rn,每一维都是一个人的声音信号,每个人发出的声音信号独立。A是一个未知的混合矩阵(mixing matrix),用来组合叠加信号s,那么:
x=[∣∣∣x(1)x(2)⋯x(m)∣∣∣]=[∣∣∣As(1)As(2)⋯As(m)∣∣∣]=A[s1(1)s1(2)⋯s1(m)s2(1)s2(2)⋯s2(m)⋮⋮⋱⋮sn(1)sn(2)⋯sn(m)]=As(38)x=\left[ \begin{matrix}|&|&&|\\x^{(1)}&x^{(2)}&\cdots&x^{(m)}\\|&|&&| \end{matrix}\right] =\left[ \begin{matrix}|&|&&|\\As^{(1)}&As^{(2)}&\cdots&As^{(m)}\\|&|&&| \end{matrix}\right]=
A\left[ \begin{matrix}s_1^{(1)}&s_1^{(2)}&\cdots &s_1^{(m)}\\
s_2^{(1)}&s_2^{(2)}&\cdots&s_2^{(m)}\\
\vdots&\vdots&\ddots&\vdots
\\s_n^{(1)}&s_n^{(2)}&\cdots&s_n^{(m)} \end{matrix}\right]=As\tag{38}x=∣x(1)∣∣x(2)∣⋯∣x(m)∣=∣As(1)∣∣As(2)∣⋯∣As(m)∣=As1(1)s2(1)⋮sn(1)s1(2)s2(2)⋮sn(2)⋯⋯⋱⋯s1(m)s2(m)⋮sn(m)=As(38)
xxx不是一个向量,是一个矩阵。其中每个列向量是x(i)x^{(i)}x(i),x(i)=As(i)x^{(i)}=As^{(i)}x(i)=As(i)。AAA和sss都是未知的,xxx是观测收集到的声音信号,是已知的,我们要想办法从xxx推出sss。这个过程也称为盲信号分离。
令W=A−1W=A^{-1}W=A−1,有s(i)=A−1x(i)=Wx(i)s^{(i)}=A^{-1}x^{(i)}=Wx^{(i)}s(i)=A−1x(i)=Wx(i),所以WWW可以表示为:
W=[—W1T——W2T—⋮—WnT—](39)W=\left[ \begin{matrix}
—&W_1^T&—\\
—&W_2^T&—\\
&\vdots&\\
—&W_ n^T&—
\end{matrix}\right] \tag{39}W=———W1TW2T⋮WnT———(39)
其中Wi∈RnW_i\in R^nWi∈Rn,其实就是将WiW_iWi写成行向量形式。那么得到:sj(i)=Wxj(i)s^{(i)}_j=Wx^{(i)}_jsj(i)=Wxj(i)。
ICA不确定性(Ambiguities)
下面是两个原信号不确定性:
第一个,由于www和sss都不确定,那么在没有先验知识的情况下,无法同时确定这两个相关参数。比如上面的公式s=wxs=wxs=wx。当www扩大两倍时,sss只需要同时扩大两倍即可,等式仍然满足,因此无法得到唯一的sss。
第二个,如果将sss的顺序打乱,变成另外一个顺序,那么只需要调换AAA的列向量顺序即可,因此也无法单独确定sss。
另外,还有一种ICA不适用的情况,那就是信号不能是高斯分布的。当源信号是高斯分布的时候,可以由不同的混合矩阵AAA乘上sss,得到相同分布的xxx,一样无法确定源信号。
密度函数和线性变换
假设我们的随机变量sss有概率密度函数ps(s)p_s(s)ps(s)(连续值是概率密度函数,离散值是概率)。为了简单,我们再假设sss是实数,还有一个随机变量x=Asx=Asx=As,AAA和xxx都是实数。令px(x)p_x(x)px(x)是x的概率密度,那么怎么求px(x)p_x(x)px(x)?
求解之前先看一个密度函数与分布函数之间的关系。
设一个概率密度函数(Probability density function,简称pdf)为f(x)f(x)f(x),一个累积分布函数(Cumulative distribution function,简称cdf)为F(x)F(x)F(x),它们之间的关系为:
\begin{align}
F(x)&=\int_xf(x)dx\
f(x)&=F’(x)
\tag{40}
\end{align}
以正态分布为例,它的概率密度函数与累积分布函数的图像如下图:
关于概率密度的直接定义是:
Fx(a)=P(X≤a)=∫−∞af(x)dx(41)F_x(a)=P(X\leq a)=\int_{-\infty}^af(x)dx\tag{41}Fx(a)=P(X≤a)=∫−∞af(x)dx(41)
关于px(x)p_x(x)px(x)的推导如下:
\begin{align}
F_x(x)&=P(X\leq x)=P(As\leq x)=P(s\leq Wx)=F_s(Wx)\
p_x(x)&=F’_x(x)=F’_s(Wx)=p_s(Wx)|W|
\tag{42}
\end{align}
ICA算法
这里使用最大似然估计来解释算法, 我们假定每个sis_isi有概率密度psp_sps,那么给定时刻原信号的联合分布就是:
p(s)=∏i=1nps(si)(43)p(s)=\prod_{i=1}^n p_s(s_i)\tag{43}p(s)=i=1∏nps(si)(43)
这个式子有一个假设前提:每个人发出的声音信号各自独立。由式(42),我们有:
p(x)=ps(Wx)∣W∣=∣W∣∏i=1nps(WiTx)(44)p(x)=p_s(Wx)|W|=|W|\prod_{i=1}^n p_s(W_i^Tx)\tag{44}p(x)=ps(Wx)∣W∣=∣W∣i=1∏nps(WiTx)(44)
前面提到过,如果没有先验知识,我们无法求得W和s。因此我们需要知道ps(sj)p_s(s_j)ps(sj),我们打算选取一个概率密度函数赋给s,但是我们不能选取高斯分布的密度函数。在概率论里我们知道密度函数p(x)p(x)p(x)由累计分布函数(cdf)F(x)F(x)F(x)求导得到。F(x)F(x)F(x)要满足两个性质是:单调递增和在[0,1]。我们发现sigmoid函数很适合,定义域负无穷到正无穷,值域0到1,缓慢递增。我们假定s的累积分布函数符合sigmoid函数:
g(s)=11+e−s(45)g(s)=\frac{1}{1+e^{-s}}\tag{45}g(s)=1+e−s1(45)
求导后有:
ps(s)=g′(s)=es(1+es)2(46)p_s(s)=g'(s)=\frac{e^{s}}{(1+e^{s})^2}\tag{46}ps(s)=g′(s)=(1+es)2es(46)
知道ps(s)p_s(s)ps(s)之后,就剩下参数WWW了,给定训练样本{x(i);i=1,2,⋯ ,m}\begin{Bmatrix} x^{(i)};i=1,2,\cdots,m \end{Bmatrix}{x(i);i=1,2,⋯,m}后,样本对数似然估计如下:
l(W)=log∏i=1mp(x(i))=∑i=1m(∑j=1nlogg′(WiTx(i))+log∣W∣)(47)l(W)=\log\prod_{i=1}^mp(x^{(i)})=\sum_{i=1}^m\left(\sum_{j=1}^n\log g'(W_i^Tx^{(i)})+\log|W|\right)\tag{47}l(W)=logi=1∏mp(x(i))=i=1∑m(j=1∑nlogg′(WiTx(i))+log∣W∣)(47)
接下来就是对W求导了,这里牵涉一个问题是对行列式|W|进行求导的方法,属于矩阵微积分,这里直接给出结果:
∇W∣W∣=∣W∣(W−1)T(48)\nabla_W|W|=|W|(W^{-1})^T\tag{48}∇W∣W∣=∣W∣(W−1)T(48)
WWW最后的迭代公式如下,logg′(s)\log g'(s)logg′(s)的导数为1−2g(s)1-2g(s)1−2g(s),α\alphaα是梯度上升速率,人为指定。:
W:=W+α([1−2g(W1Tx(i))1−2g(W2Tx(i))⋮1−2g(WnTx(i))]x(i)T+(WT)−1)(49)W:=W+\alpha\left(\left[ \begin{matrix}
1-2g(W_1^Tx^{(i)})\\
1-2g(W_2^Tx^{(i)})\\
\vdots\\
1-2g(W_n^Tx^{(i)})
\end{matrix}\right] x^{(i)^T+(W^T)^{-1}}\right)\tag{49}W:=W+α1−2g(W1Tx(i))1−2g(W2Tx(i))⋮1−2g(WnTx(i))x(i)T+(WT)−1(49)
4、后记
从11月初到3月底学习这份课程,再从4月到现在5月初把这6份总结写完,前后也是用了半年时间——这都是在业余时间完成的,鬼知道我经历了什么。最后写到这里,竟然是不知道说什么了。清明三天早10晚11把第一份总结写完,在假期最后一天9点多躺在床上的时候,没有什么快感,只有一种身体和脑子被掏空的感觉,现在也是。而且一直压制着想要直接做项目的冲动,我知道一旦直接去操作了,我应该就没有办法写下这样的东西了。
想要学习决策树,Boosting,神经网络,深度学习,还有这个课程中缺失的最后一部分关于强化学习的完整内容,还有其他的很多很多东西,到时候会边学边写,一个个来,像这次积累了这么多东西然后一次写完真是太难过了。但是回头一看,这些东西也还是太少了。接下来主要是做点项目,没学到又要用到的算法和知识到时候先求会用。
时间是最大的敌人,世界在变好,弱是原罪。
告一段落。