一个关于SAE的KL求导推导

针对Sparse AutoEncoder模型,尝试将UFLDL的KL约束项用矩阵的方式进行求导。


设数据集为X,映射矩阵为W。激活函数为 \sigma(\cdot) .构建三层SAE网络。

推导KL散度的求导公式

\sum_{j=1}^{s_2}KL(\rho||\hat{\rho}_j)=\sum_{j=1}^{s_2}\rho \log\frac{\rho}{\hat{\rho}_j}+(1-\rho) \log\frac{1-\rho}{1-\hat{\rho}_j}

其中 \rho 是稀疏性参数(视为常数), s_2 是隐藏层节点数,索引 j 依次代表隐藏层中的每一个神经元

每个神经元的平均激活度

\hat{\rho}_j=\frac{1}{m}\sum_{i=1}^{m}{a_j(x^{(i)})}

m为样本数,a为激活值。因此有

\sum_{j=1}^{s_2}KL(\rho||\hat{\rho}_j)=\sum_{j=1}^{s_2}\rho \log\frac{\rho}{\hat{\rho}_j}+(1-\rho) \log\frac{1-\rho}{1-\hat{\rho}_j}

=\sum_{j=1}^{s_2}{\rho \log{\rho}+(1-\rho) \log{(1-\rho)}}-\sum_{j=1}^{s_2}{\rho \log{\hat{\rho}_j}+(1-\rho) \log{(1-\hat{\rho}_j)}}

=C-\rho\sum_{j=1}^{s_2}{\log{\hat{\rho}_j}}-(1-\rho) \sum_{j=1}^{s_2}{\log{(1-\hat{\rho}_j)}}

令输入矩阵 \textbf{X} \in R^{p\times N} ,由于隐藏节点维数 s_2,则权重矩阵 W\in R^{s_2\times p} 。激活函数 \sigma(\cdot) 。每一个样本 \textbf{x}_i, i=1,...,Np 维向量。则

\hat{\rho}_j=\frac{1}{N}\sum_i{\sigma_j(W\textbf{x}_i)}=(\frac{1}{N}\sigma(WX)*\textbf{1}_N)_j

其中 \textbf{1}_N\in R^{N\times 1}

所以

\sum_{j=1}^{s_2}KL(\rho||\hat{\rho}_j)=C-\rho\sum_{j=1}^{s_2}{\log{\hat{\rho}_j}}-(1-\rho) \sum_{j=1}^{s_2}{\log{(1-\hat{\rho}_j)}}

=C-\rho\sum_{j=1}^{s_2}{\log{(\frac{1}{N}\sigma(W\textbf{X})*\textbf{1}_N)_j}}-(1-\rho) \sum_{j=1}^{s_2}{\log{(1-(\frac{1}{N}\sigma(W\textbf{X})*\textbf{1}_N)_j)}}

=C-\rho\textbf{1}_{s_2}\log{(\frac{1}{N}\sigma(W\textbf{X})*\textbf{1}_N)}-(1-\rho) \textbf{1}_{s_2}{\log{(1-(\frac{1}{N}\sigma(W\textbf{X})*\textbf{1}_N))}}

因此KL稀疏项对W的求导。令 \textbf{1}_{s_2}=A,\textbf{1}_N=B 。分两步:

l= ρ\textbf{1}_{s_2}*\log⁡{(\frac{1}{N} σ(W\textbf{X})*\textbf{1}_N)}=ρA*\log⁡{(\frac{1}{N} σ(W\textbf{X})B)}

dl=ρA*\frac{1}{\frac{1}{N} σ(WX)B}\odot(\frac{1}{N}dσ(WX)B)=ρA*\frac{dσ(WX)B}{σ(WX)B}=ρA*\frac{σ' (WX)⊙(dWX)B}{σ(WX)B}

=tr\bigg(ρA*\frac{σ' (WX)⊙(dWX)B}{σ(WX)B}\bigg)

=tr(ρA./(σ(WX)B)*(σ' (WX)⊙(dWX)B))
=tr(((ρA./(σ(WX)B))^T⊙σ' (WX))dWXB)

=tr(XB((ρA./σ(WX)B)^T⊙σ' (WX))dW)

所以

\frac{∂l}{∂W}=(XB((ρA./σ(WX)B)^T⊙σ' (WX)))^T

同理

l=(1-ρ) \textbf{1}_{s_2}*\log⁡{(1-\frac{1}{N}σ(WX)*\textbf{1}_N)}=(1-ρ)A*\log⁡(1-\frac{1}{N} σ(WX)B)

dl=-(1-ρ)A*\frac{1}{1-1/N σ(WX)B}\odot(\frac{1}{N} dσ(WX)B)=-(1-ρ)A*\frac{\frac{1}{N} dσ(WX)B}{(1-1/N σ(WX)B)}

所以

\frac{∂l}{∂W}=-(XB(((1-ρ)A./(N-σ(WX)B))^T⊙σ' (WX)))^T

发布于 2018-11-21 17:06