稀疏编码为无监督学习,用来寻找一组“超完备”基向量来更高效地表示样本数据,将输入向量表示为这些基向量的线性组合。编码储存能力大,有联想记忆能力。
1. 原理
假设有一组基向量 ϕ i \phi_{i} ϕi,将输入向量 X X X表示为这些基向量的线性组合:
x = ∑ i = 1 k a i ϕ i \mathbf{x}=\sum_{i=1}^{k} a_{i} \phi_{i} x=i=1∑kaiϕi
相对于主成分分析(PCA)找到一组“完备”基向量,我们使用稀疏编码能够找到一组“超完备”基向量来表示输入向量 x ∈ R n \mathbf{x} \in \mathbb{R}^{n} x∈Rn( k > n k>n k>n)。
超完备基,能够更有效地找出隐含在输入数据内部的结构与模式。其系数 a i a_{i} ai,不再由输入向量 X X X单独确定,在稀疏编码中,我们用“稀疏性”为评判标准,来解决因超完备导致的退化问题。
“稀疏性”:只有很少的几个非零元素或只有很少的几个远大于零的元素。
系数 a i a_{i} ai稀疏:对于一组输入向量,要尽可能少的几个系数远大于零。
使用稀疏性的分量表示输入数据:绝大多数的感观数据(自然图像)可以被表示成少量基本元素的叠加(面或线)
将 m m m个输入向量的稀疏编码代价函数定义为:
minimize a i i j , ϕ i ∑ j = 1 m ∥ x ( j ) − ∑ i = 1 k a i ( j ) ϕ i ∥ 2 + λ ∑ i = 1 k S ( a i ( j ) ) \operatorname{minimize}_{a_{i}^{i j}, \phi_{i}} \sum_{j=1}^{m}\left\|\mathbf{x}^{(j)}-\sum_{i=1}^{