独立成分分析FastICA算法原理

2023-10-27

独立成分分析FastICA算法原理

首先对于d维的随机变量 x ∈ R d × 1 \displaystyle \mathbf{x} \in R^{d\times 1} xRd×1,我们假设他的产生过程是由相互独立的源 s ∈ R d × 1 \displaystyle \mathbf{s} \in R^{d\times 1} sRd×1,通过 A ∈ R d × d \displaystyle A\in R^{d\times d} ARd×d线性组合产生的

x = A s \mathbf{x} =\mathbf{As} x=As

如果s的服从高斯分布的,那么故事结束,我们不能恢复出唯一的s,因为不管哪个方向都是等价的。而如果s是非高斯的,那么我们希望找到w从而 s = w T x \displaystyle s=\mathbf{w}^{T}\mathbf{x} s=wTx,使得 s \displaystyle s s之间的相互独立就可以恢复出s了,我将在后面指出,这等价于最大化每个 s \displaystyle s s的非高斯性。在这之前先说一下为什么ICA可以恢复出原始的源?

这里涉及到一个重要的定理:

Darmois - Skitovitch theorem 假设 S 1 , S 2 , . . . , S n \displaystyle S_{1} ,S_{2} ,...,S_{n} S1,S2,...,Sn是相互独立的源噪声,对于两个随机变量

X = α 1 S 1 + . . . + α n S n Y = β 1 S 1 + . . . + β n S n X=\alpha _{1} S_{1} +...+\alpha _{n} S_{n}\\ Y=\beta _{1} S_{1} +...+\beta _{n} S_{n} X=α1S1+...+αnSnY=β1S1+...+βnSn

若X与Y独立,则一定对于任意的 α i β i ≠ 0 \displaystyle \alpha _{i} \beta _{i} \neq 0 αiβi=0,其 S i \displaystyle S_{i} Si一定是高斯分布。

这个定理揭示了两个事实:

  1. 如果我们知道 S i \displaystyle S_{i} Si不是高斯分布,那么如果X,Y要独立,只能是 α i β i = 0 \displaystyle \alpha _{i} \beta _{i} =0 αiβi=0.

  2. 另一个稍微反直觉的事情是,即使X,Y都由相同的高斯分布组成,那么X,Y也是有可能独立的。举个简单的例子,假设 S \displaystyle S S都是标准高斯分布,并设, X = S 1 + S 2 , Y = S 1 + a S 2 \displaystyle X=S_{1} +S_{2} ,Y=S_{1} +aS_{2} X=S1+S2,Y=S1+aS2,他们的协方差为 cov ( X , Y ) = var ( S 1 ) + a var ( S 2 ) \displaystyle \text{cov}( X,Y) =\text{var}( S_{1}) +a\text{var}( S_{2}) cov(X,Y)=var(S1)+avar(S2),显然当 a = − 1 \displaystyle a=-1 a=1时,他们的协方差等于0,又因为X,Y是高斯分布,因此X,Y是独立的。

根据这个定理,可以推出ICA的有效性。假设n=2,S是非高斯的,于是,在ICA中

X 1 = α 1 S 1 + α 2 S 2 X 2 = β 1 S 1 + β 2 S 2 X_{1} =\alpha _{1} S_{1} +\alpha _{2} S_{2}\\ X_{2} =\beta _{1} S_{1} +\beta _{2} S_{2} X1=α1S1+α2S2X2=β1S1+β2S2

接下来将演示,信号源是怎么被“分离”出来的。我们希望找到一个旋转,使得X经过变换后独立,即 Z 1 = w 1 T X 1 ,   Z 2 = w 2 T X 2 \displaystyle Z_{1} =\mathbf{w}^{T}_{1} X_{1} ,\ Z_{2} =\mathbf{w}^{T}_{2} X_{2} Z1=w1TX1, Z2=w2TX2,且 Z 1 ⊥ Z 2 \displaystyle Z_{1} \bot Z_{2} Z1Z2,于是变换后的结果为

Z 1 = α 1 ′ S 1 + α 2 ′ S 2 Z 2 = β 1 ′ S 1 + β 2 ′ S 2 Z_{1} =\alpha '_{1} S_{1} +\alpha '_{2} S_{2}\\ Z_{2} =\beta '_{1} S_{1} +\beta '_{2} S_{2} Z1=α1S1+α2S2Z2=β1S1+β2S2

根据定理,一定有 α 1 ′ β 1 ′ = α 2 ′ β 2 ′ = 0 \displaystyle \alpha '_{1} \beta '_{1} =\alpha '_{2} \beta '_{2} =0 α1β1=α2β2=0,由于S的顺序无法确定,不妨假设 α 1 ′ = 0 \displaystyle \alpha '_{1} =0 α1=0,于是 β 1 ′ ≠ 0 \displaystyle \beta '_{1} \neq 0 β1=0,而且 α 2 ′ ≠ 0 \displaystyle \alpha '_{2} \neq 0 α2=0(否则Z1就变成0了),于是 β 2 ′ = 0 \displaystyle \beta '_{2} =0 β2=0,事实上只有这两种可能性:

Z 1 = 0 S 1 + α 2 ′ S 2 Z 2 = β 1 ′ S 1 + 0 S 2 Z_{1} =0S_{1} +\alpha '_{2} S_{2}\\ Z_{2} =\beta '_{1} S_{1} +0S_{2} Z1=0S1+α2S2Z2=β1S1+0S2

Z 1 = α 1 ′ S 1 + 0 S 2 Z 2 = 0 S 1 + β 2 ′ S 2 Z_{1} =\alpha '_{1} S_{1} +0S_{2}\\ Z_{2} =0S_{1} +\beta '_{2} S_{2} Z1=α1S1+0S2Z2=0S1+β2S2

从而 S 1 \displaystyle S_{1} S1 S 2 \displaystyle S_{2} S2就被奇迹般分离了!唯一缺点就是不知道分离之后的顺序而已!

事实上,如果出现source大于X的维度的情况,我们也能分离,这也称为overcomplete-ICA,只要对于X=AS,A满足列满秩就可以。比如有4个S,2个X,于是我们可以通过对X旋转构造出4个 Z i = α i 1 ′ S 1 + α i 2 ′ S 2 + α i 3 ′ S 3 + α i 4 ′ S 4 Z_i=\alpha'_{i1}S_1+\alpha'_{i2}S_2+\alpha'_{i3}S_3+\alpha'_{i4}S_4 Zi=αi1S1+αi2S2+αi3S3+αi4S4,于是为了使得这4个Z两两独立,根据DS定理,每个Z都只会出现一个S,从而分离出来。

然而我们实际做的时候其实是去最大化高斯性的,他跟独立性有什么关系?如果要s相互独立,那么首先考虑的是他们的互信息:

I ( s 1 , . . . , s n ) = ∑ i = 1 n H ( s i ) − H ( S ) I( s_{1} ,...,s_{n}) =\sum ^{n}_{i=1} H( s_{i}) -H( S) I(s1,...,sn)=i=1nH(si)H(S)

因为 s i = w T x \displaystyle s_{i} =\mathbf{w}^{T}\mathbf{x} si=wTx,因此 log ⁡ P S = log ⁡ P X − log ⁡ ∣ det ⁡ W ∣ \displaystyle \log P_{S} =\log P_{X} -\log |\det W| logPS=logPXlogdetW。现在,如果W是一个旋转矩阵(其特征值全是1),那么 det ⁡ W = 1 \displaystyle \det W=1 detW=1,于是 log ⁡ ∣ det ⁡ W ∣ = 0 \displaystyle \log |\det W|=0 logdetW=0,因此, H ( S ) H(S) H(S)与W无关,可以看做是常数,因此,最小化互信息将等价于最小化每个方向下的熵 H ( s i ) \displaystyle H( s_{i}) H(si),而这其实本质上就是非高斯性,因为高斯的熵是最大的。

如果接来下有两个问题,1. 如何保证W是旋转矩阵。W是旋转矩阵这个性质很重要,他决定了非高斯的优化方法的正确性。但是如何保证这个W是旋转矩阵?其实我们可以通过的X进行白化,使得这个W变成一个旋转矩阵。2.如何具体算非高斯性?接下来先说下白化操作

白化 (Whitening)

求解ICA的第一步是对x白化得到互不相关的列 x ~ = E D − 1 / 2 E T x \displaystyle \tilde{\mathbf{x}} =\mathbf{ED}^{-1/2}\mathbf{E}^{T}\mathbf{x} x~=ED1/2ETx,这一步一般是用PCA来完成的

x ~ = E D − 1 / 2 E T A s = A ~ s \tilde{\mathbf{x}} =\mathbf{ED}^{-1/2}\mathbf{E}^{T}\mathbf{As} =\tilde{\mathbf{A}}\mathbf{s} x~=ED1/2ETAs=A~s

其中EDE其实的协方差x的特征值分解,即 x x T = A A T = E D E T \displaystyle \mathbf{xx}^{T} =\mathbf{AA}^{T} =\mathbf{EDE}^{T} xxT=AAT=EDET。白化的一个重要作用就是这个 A ~ \displaystyle \tilde{\mathbf{A}} A~是一个正交矩阵。利用这个正交性,可以证明 E ( x ~ x ~ T ) = I \displaystyle E\left(\mathbf{\tilde{\mathbf{x}}}\tilde{\mathbf{x}}^{T}\right) =I E(x~x~T)=I,也就是每个维度都是线性无关的:

x ~ x ~ T = E D − 1 / 2 E T A s s T A T E D − 1 / 2 E T = E D − 1 / 2 E T E D E T E D − 1 / 2 E T = I \tilde{\mathbf{x}}\tilde{\mathbf{x}}^{T} =\mathbf{ED}^{-1/2}\mathbf{E}^{T}\mathbf{Ass}^{T}\mathbf{A}^{T}\mathbf{ED^{-1/2} E}^{T} =\mathbf{ED}^{-1/2}\mathbf{E}^{T}\mathbf{EDE^{T} ED^{-1/2} E}^{T} =I x~x~T=ED1/2ETAssTATED1/2ET=ED1/2ETEDETED1/2ET=I

这个白化使得我们需要学习的参数减少了一半,为什么呢,因为正交矩阵的自由度是 n ( n − 1 ) 2 \displaystyle \frac{n( n-1)}{2} 2n(n1),而原始的矩阵的自由度是 n 2 \displaystyle n^{2} n2.现假设后面的x都是经过白化处理的数据。

FastICA的迭代算法

经过白化后,那么ICA要做的就是就是要找到一个最优方向 w \displaystyle \mathbf{w} w,使得改方向的非高斯性最大

max ⁡ J   ( w T x ) \max J\ \left(\mathbf{w}^{T}\mathbf{x}\right) maxJ (wTx)

因此,这只是一个优化问题。那么怎么衡量非高斯性呢,我们可以用负熵来衡量:

J ( y ) = H ( y g a u s s ) − H ( y ) J(\mathbf{y} )=H(\mathbf{y}_{gauss}) -H(\mathbf{y} ) J(y)=H(ygauss)H(y)

其中 y g a u s s \displaystyle \mathbf{y}_{gauss} ygauss是高斯分布,其协方差矩阵跟 y \displaystyle y y是一样的,显然当y是高斯分布的时候等于0.所以当J越大非高斯性就越大。然而这个东西不好算,所以有很多不同的近似方法,一个经典的方法是

J ( y ) ≈ 1 12 E { y 3 } 2 + 1 48 kurt ⁡ ( y ) 2 J(y)\approx \frac{1}{12} E\left\{y^{3}\right\}^{2} +\frac{1}{48}\operatorname{kurt} (y)^{2} J(y)121E{y3}2+481kurt(y)2

而在fastICA中,使用的是:

J G ( w ) = [ E { G ( w T x ) } − E { G ( ν ) } ] 2 J_{G} (\mathbf{w} )=\left[ E\left\{G\left(\mathbf{w}^{T}\mathbf{x}\right)\right\} -E\{G(\nu )\}\right]^{2} JG(w)=[E{G(wTx)}E{G(ν)}]2

其中 E ( ( w T x ) 2 ) = E ( w T x x T w ) = E ( w T w ) = ∥ w ∥ 2 = 1 \displaystyle E\left(\left(\mathbf{w}^{T}\mathbf{x}\right)^{2}\right) =E\left(\mathbf{w}^{T}\mathbf{xx}^{T}\mathbf{w}\right) =E\left(\mathbf{w}^{T}\mathbf{w}\right) =\| \mathbf{w} \| ^{2} =1 E((wTx)2)=E(wTxxTw)=E(wTw)=w2=1,这是为了限制目标函数不要到无穷大。那么这个w怎么求呢?我们看看他在约束下的导数:

∂ J G ( w ) − β ( ∥ w ∥ 2 − 1 ) ∂ w = 2 E { x G ′ ( w T x ) } − 2 β w = 0 \frac{\partial J_{G} (\mathbf{w} )-\beta \left( \| \mathbf{w} \| ^{2} -1\right)}{\partial \mathbf{w}} =2E\left\{\mathbf{x} G'\left(\mathbf{w}^{T}\mathbf{x}\right)\right\} -2\beta \mathbf{w} =0 wJG(w)β(w21)=2E{xG(wTx)}2βw=0

当这个方程等于0的时候就得到最优的w了。此外 β \displaystyle \beta β的值可以用最优的w反推出来,假设 w 0 \displaystyle w_{0} w0是最优的,一定有 E { x G ′ ( w 0 T x ) } − β w o = 0 ⟹ β = E { w 0 T x G ′ ( w 0 T x ) } \displaystyle E\left\{\mathbf{x} G'\left(\mathbf{w}^{T}_{0}\mathbf{x}\right)\right\} -\beta \mathbf{w}_{o} =0\Longrightarrow \beta =E\left\{\mathbf{w^{T}_{0} x} G'\left(\mathbf{w}^{T}_{0}\mathbf{x}\right)\right\} E{xG(w0Tx)}βwo=0β=E{w0TxG(w0Tx)}。于是这其实是一个方程求根的问题,我们可以用牛顿法解决:

x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1} =x_{n} -\frac{f( x_{n})}{f^{\prime }( x_{n})} xn+1=xnf(xn)f(xn)

简单地介绍一下,我们知道方程的根就是他跟x轴的交点,那如果我们用切线来近似曲线,那么可以“认为“切线与x轴的交点就是根,如果不是的话,我们可以一直重复这个流程直到收敛。

∂ E { x G ′ ( w T x ) } − β w ∂ w = E { x x T G ′ ′ ( w T x ) } − β I \frac{\partial E\left\{\mathbf{x} G'\left(\mathbf{w}^{T}\mathbf{x}\right)\right\} -\beta \mathbf{w}}{\partial w} =E\left\{\mathbf{xx}^{T} G''\left(\mathbf{w}^{T}\mathbf{x}\right)\right\} -\beta \mathbf{I} wE{xG(wTx)}βw=E{xxTG(wTx)}βI

其中用一个近似的方法 E { x x T G ′ ′ ( w T x ) } ≈ E { x x T } E { G ′ ′ ( w T x ) } = E { G ′ ′ ( w T x ) } I \displaystyle E\left\{\mathbf{xx}^{T} G''\left(\mathbf{w}^{T}\mathbf{x}\right)\right\} \approx E\left\{\mathbf{xx}^{T}\right\} E\left\{G''\left(\mathbf{w}^{T}\mathbf{x}\right)\right\} =E\left\{G''\left(\mathbf{w}^{T}\mathbf{x}\right)\right\}\mathbf{I} E{xxTG(wTx)}E{xxT}E{G(wTx)}=E{G(wTx)}I,最终用牛顿法的公式

w n + 1 = w n − E { x G ′ ( w n T x ) } − β w n E { G ′ ′ ( w n T x ) } − β I \mathbf{w}_{n+1} =\mathbf{w}_{n} -\frac{E\left\{\mathbf{x} G'\left(\mathbf{w}_{n}^{T}\mathbf{x}\right)\right\} -\beta \mathbf{w}_{n}}{E\left\{G''\left(\mathbf{w}^{T}_{n}\mathbf{x}\right)\right\} -\beta \mathbf{I}} wn+1=wnE{G(wnTx)}βIE{xG(wnTx)}βwn

我们用 w n \displaystyle \mathbf{w}_{n} wn而不是 w 0 \displaystyle \mathbf{w}_{0} w0来近似 β \displaystyle \beta β就得到了递推公式:

w n + 1 = E { G ′ ′ ( w n T x ) } w n − E { x G ′ ( w n T x ) } E { G ′ ′ ( w n T x ) } − β \mathbf{w}_{n+1} =\frac{\mathbf{E\left\{G''\left( w^{T}_{n} x\right)\right\} w_{n}} -E\left\{\mathbf{x} G'\left(\mathbf{w}_{n}^{T}\mathbf{x}\right)\right\}}{E\left\{G''\left(\mathbf{w}^{T}_{n}\mathbf{x}\right)\right\} -\beta } wn+1=E{G(wnTx)}βE{G(wnTx)}wnE{xG(wnTx)}

最后两边同时乘以 β − E { G ′ ′ ( w n T x ) \displaystyle \beta -E\{G''\left(\mathbf{w}^{T}_{n}\mathbf{x}\right) βE{G(wnTx)可以进一步简化?论文里面这一步没看懂,希望看懂的告诉我。。。于是迭代公式就变成

w n + 1 = E { x G ′ ( w n T x ) } − E { G ′ ′ ( w n T x ) } w n w n + 1 = w n / ∥ w n ∥ \mathbf{w}_{n+1} =E\left\{\mathbf{x} G'\left(\mathbf{w}_{n}^{T}\mathbf{x}\right)\right\} -\mathbf{E\left\{G''\left( w^{T}_{n} x\right)\right\} w_{n}}\\ \mathbf{w}_{n+1} =\mathbf{w}_{n} /\| \mathbf{w}_{n} \| wn+1=E{xG(wnTx)}E{G(wnTx)}wnwn+1=wn/wn

这个就是fastICA所使用的迭代公式了。

最后,这个G到底是什么,常用的G:

G 1 ( u ) = 1 a 1 log ⁡ cosh ⁡ ( a 1 u ) G 1 ′ ( u ) = tanh ⁡ ( a 1 u ) G 2 ( u ) = − 1 a 2 exp ⁡ ( − a 2 u 2 / 2 ) G 2 ′ ( u ) = u exp ⁡ ( − a 2 u 2 / 2 ) G 3 ( u ) = 1 4 u 4 G 3 ′ ( u ) = u 3 \begin{aligned} G _ { 1 } ( u ) & = \frac { 1 } { a _ { 1 } } \log \cosh \left( a _ { 1 } u \right) \\ G' _ { 1 } ( u ) & = \tanh \left( a _ { 1 } u \right) \\ G _ { 2 } ( u ) & = - \frac { 1 } { a _ { 2 } } \exp \left( - a _ { 2 } u ^ { 2 } / 2 \right) \\ G' _ { 2 } ( u ) & = u \exp \left( - a _ { 2 } u ^ { 2 } / 2 \right) \\ G _ { 3 } ( u ) & = \frac { 1 } { 4 } u ^ { 4 } \\ G' _ { 3 } ( u ) & = u ^ { 3 } \end{aligned} G1(u)G1(u)G2(u)G2(u)G3(u)G3(u)=a11logcosh(a1u)=tanh(a1u)=a21exp(a2u2/2)=uexp(a2u2/2)=41u4=u3

其中 1 ≥ a 1 ≤ 2 , a 2 ≈ 1 1\ge a_1 \le2,a_2\approx1 1a12,a21,一般来说

  • G 1 G_1 G1是一般选择
  • 如果独立成分s是非常超高斯的,那么用 G 2 G_2 G2会好一点
  • 如果独立成分是sub-gaussian ,且没有异常值,则用 G 3 G_3 G3
  • 如果要减少计算量,那么或许可以用 G 1 G_1 G1 G 2 G_2 G2的线性组合

参考文献

[1] HYVÄRINEN A, OJA E. Independent component analysis: algorithms and applications[J]. Neural networks, Elsevier, 2000, 13(4–5): 411–430.

[2] HYVARINEN A. Fast and robust fixed-point algorithms for independent component analysis[J]. IEEE transactions on Neural Networks, IEEE, 1999, 10(3): 626–634.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

独立成分分析FastICA算法原理 的相关文章

随机推荐

  • 解决Fastjson的下划线与大小写映射问题

    一 问题场景 目前我有一个类如下所示 Data ToString class BTEST Long infoId Long info id 需要执行的方法如下 Test public void jsonToBean Map
  • python3使用pykeyboard和Pyhook的问题及解决

    python3 7无法import pykeyboard的原因 问题1 ModuleNotFoundError No module named windows 问题2 cant import name PyKeyboard from pkk
  • python(列表、元组、字典)详解

    文章目录 什么是列表 列表的定义 in max min sum在列表中的使用 操作列表 初识元组 元组定义 列表与元组的区别 初识字典 字典的结构与创建方法 字典的遍历 字典支持的数据类型 循环 什么是列表 列表就是队列 是各种数据类型的集
  • 关于数论中的互质数的最大不能组合数

    题意 给定A和B A和B互质 求最大不能组合数 和不能组合数的个数 基础知识 Gcd A B 1 Lcm A B AB剩余类 把所有整数划分成m个等价类 每个等价类由相互同余的整数组成任何数分成m个剩余类 分别为 mk mk 1 mk 2
  • 新论文石锤Transformer:别只看注意力,没有残差和MLP,它啥都不是

    作者 青暮 基于注意力的架构在机器学习社区中已经变得无处不在 Transformer最初在机器翻译打出名堂 随着BERT的问世几乎统治了整个NLP领域 RNN LSTM等老前辈瑟瑟发抖 GPT 3的零样本学习能力又令人不禁怀疑其智能本质 还
  • 简单几步,让Mac外接显示器更好用

    光懂得给MacBook连接外置显示器还不行 了解这几点 才能让Mac外接显示器更好用 可以在两个显示器桌面之间任意拖拽移动软件窗口 这也是双 多 显示器一个高效的地方 将外接显示器设置为最佳分辨率 MacBook连接上外接显示器后 打开 系
  • Qt之工程文件

    文章目录 1 注释 2 QT 3 模板变量 TEMPLATE 4 TARGET 5 CONFIG 6 控制输出目录 6 1 UIC DIR 6 2 RCC DIR 6 3 MOC DIR 6 4 OBJECTS DIR 6 5 DESTDI
  • linux下制作动态库

    1 动态库的介绍 动态库 也叫共享库 动态库与用户编写的程序相互独立 不被包含在用户生成的可执行文件当中 2 动态库的创建 第一步 将写好的程序编译 我们事先写好两个程序 bye c hello c 一个输出hello一个输出bye 在终端
  • Spring AOP(一)五种增强(Advice)

    AOP术语都非常抽象 结合某些小例子就会形象 具体一些 连接点 Joinpoint Spring仅支持方法的连接点 即仅能在方法调用前 方法调用后 方法抛出异常时及方法调用前后 这些程序执行点织入增强 黑客攻击系统需要找到突破口 从某种程度
  • 【安卓网络编程】Android Studio导入Volley

    在Android Studio中使用Volley框架 首先要导入Volley到项目中去 点击主界面左上角File 点击Project Structure 在Modules下 点击app 然后点击Dependencies 然后点击右边的那个
  • 企业级音视频会议实战之webrtc服务器janus品尝实战

    1 前言 之前写过单纯用webrtc和springboot实现单人 多人 屏幕分享等功能的一系列文章了 心疼各位giegie 已将例子放在下面 不麻烦你们去找了 webrtc实现视频群聊系列文章 一 之基础入门 webrtc实现视频群聊系列
  • C++ 大话设计之《访问者模式》(优缺点,设计原理,常用场景)

    访问者模式是一种行为型模式 优点 能够在不改变对象结构的情况下增加新的操作 使得操作集合可以相对独立地演化 缺点 增加新的元素类变得困难 因为每个新元素都必须被访问者类所接受 此外 如果对象结构中的元素类经常发生变化 那么使用访问者模式可能
  • 微信公众号订阅通知设置

    1 开通订阅通知 根据api开通 https developers weixin qq com doc offiaccount Subscription Messages intro html 2 设置订阅通知组件 根据api设置服务号订阅
  • linux dts 语法格式,设备树DTS格式解析

    8种机械键盘轴体对比 本人程序员 要买一个写代码的键盘 请问红轴和茶轴怎么选 宿主机 ubuntu16 04 开发板 tq imx6ull 内核版本 linux 4 1 15 用实例讲解下设备树dts语法 dts文档都在内核的arch ar
  • @antv/g2踩坑记录

    自定义tooltip 需要先在绘图时配置自定义tooltip的需要的字段 chart point position value 1 shape pointer tooltip name value date name value date
  • 投资合伙人股份分配_创业者必看的合伙人股权分配细则

    惠学习 创业者必看的合伙人股权分配细则 惠学习 创业者必看的合伙人股权分配细则 2016 08 03 苏州高新区惠创业 苏州高新区惠创业 案例 真功夫 真功夫的纠纷大家应该比较了解 现在对它的生意还不影响 但是很遗憾它还没IPO 最主要的原
  • Linux配置Java环境

    使用jdk压缩包方式配置Java环境 1 上传jdk到linux 在linux中软件一般安装到 usr local目录中 2 将jdk解压 解压命令 tar zxvf jdk 8u301 linux x64 tar gz 将解压后的jdk改
  • git子模块无法下载

    用rt studio添加软件包时会克隆整个仓库 这个时候如果提交代码 就会出现一个警告 如果你强行提交上去 那么这部分代码不会同步 但是你去远程仓库查看时会有一个子模块 如果你clone下来 想去下载子模块时 会提示 No url foun
  • 【Mybatis】maven配置pom.xml时找不到依赖项(已解决)

    我在配置pom xml依赖时 会冒红 解决方法 1 settings gt maven目录 把maven路径改为自己的 具体操作在 Maven Maven安装 入门教程笔记 暮色 年华的博客 CSDN博客 这篇文章里 2 右击pom xml
  • 独立成分分析FastICA算法原理

    独立成分分析FastICA算法原理 首先对于d维的随机变量 x R d 1