深度学习算法--自动编码器

深度学习最常见的一种算法,就是自动编码器算法了。

这种算法的大致思想是:将神经网络的隐含层看成是一个编码器和解码器,输入数据经过隐含层的编码和解码,到达输出层时,确保输出的结果尽量与输入数据保持一致。也就是说,隐含层是尽量保证输出数据等于输入数据的。  这样做的一个好处是,隐含层能够抓住输入数据的特点,使其特征保持不变。例如,假设输入层有100个神经元,隐含层只有50个神经元,输出层有100个神经元,通过自动编码器算法,我们只用隐含层的50个神经元就找到了100个输入层数据的特点,能够保证输出数据和输入数据大致一致,就大大降低了隐含层的维度。


既然隐含层的任务是尽量找输入数据的特征,也就是说,尽量用最少的维度来代表输入数据,因此,我们可以想象,隐含层各层之间的参数构成的参数矩阵,应该尽量是个稀疏矩阵,即各层之间有越多的参数为0就越好。 


假设隐含层每个神经元的平均激活值为:

\begin{align}\hat\rho_j = \frac{1}{m} \sum_{i=1}^m \left[ a^{(2)}_j(x^{(i)}) \right]\end{align}   ,其中 \textstyle a^{(2)}_j(x) 表示在给定输入为\textstyle x情况下,自编码神经网络隐藏神经元\textstyle j的激活值,由各层参数\textstyle W^{(l)}_{ij}和偏置项\textstyle b^{(l)}_{i},以及输入数据构成。

我们的目标是,让尽可能多的神经元处于抑制状态,即 \textstyle \hat\rho_j 越小越好,于是令:

\begin{align}\hat\rho_j = \rho,\end{align}

其中\textstyle \rho是稀疏性参数,通常是接近0的最小值。

为了使\textstyle \hat\rho_j尽可能地接近\textstyle \rho,我们采用 相对熵  类似的概念来刻画\textstyle \hat\rho_j\textstyle \rho的接近程度(相对熵用来描述两个随机分布的差异程度,两个分布差异越大,其对应的相对熵也越大,如果两个分布相同,则它们的相对熵为0。设两个分布的概率密度函数分别为p(x)和q(x),则他们的信息熵为:)。因此,我们构造函数(也成惩罚因子):


\begin{align}\sum_{j=1}^{s_2} \rho \log \frac{\rho}{\hat\rho_j} + (1-\rho) \log \frac{1-\rho}{1-\hat\rho_j}.\end{align}

\textstyle {\rm KL}(\rho || \hat\rho_j) = \rho \log \frac{\rho}{\hat\rho_j} + (1-\rho) \log \frac{1-\rho}{1-\hat\rho_j},则上式也可表示为:

\begin{align}\sum_{j=1}^{s_2} {\rm KL}(\rho || \hat\rho_j),\end{align}


最后,把我们自动编码器模型的目标函数设为:

\begin{align}J_{\rm sparse}(W,b) = J(W,b) + \beta \sum_{j=1}^{s_2} {\rm KL}(\rho || \hat\rho_j),\end{align}

其中,

 \begin{align}J(W,b)&= \left[ \frac{1}{m} \sum_{i=1}^m J(W,b;x^{(i)},y^{(i)}) \right]                       + \frac{\lambda}{2} \sum_{l=1}^{n_l-1} \; \sum_{i=1}^{s_l} \; \sum_{j=1}^{s_{l+1}} \left( W^{(l)}_{ji} \right)^2 \\&= \left[ \frac{1}{m} \sum_{i=1}^m \left( \frac{1}{2} \left\| h_{W,b}(x^{(i)}) - y^{(i)} \right\|^2 \right) \right]                       + \frac{\lambda}{2} \sum_{l=1}^{n_l-1} \; \sum_{i=1}^{s_l} \; \sum_{j=1}^{s_{l+1}} \left( W^{(l)}_{ji} \right)^2\end{align}

称为全局代价函数,\textstyle \beta 为惩罚因子的权重。这个全局目标函数,是关于参数\textstyle W^{(l)}_{ij}\textstyle b^{(l)}_{i}的函数。通过类似反向梯度求导算法,求得 min\textstyle J_{\rm sparse}(W,b) 时各参数的值,即可得到局部最优解。






  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度聚类算法是一种利用神经网络模型来实现聚类的方法,它结合了自动编码器和聚类算法的优点,能够有效地解决高维数据聚类的问题。 基于自动编码器的深度聚类算法主要分为以下几个步骤: 1. 数据预处理:将原始数据进行标准化、降维等预处理操作,以便于神经网络模型的训练和聚类。 2. 自动编码器训练:使用神经网络模型自动编码器对预处理后的数据进行训练,得到一个较好的特征表示。自动编码器是一种无监督学习方法,其目的是通过编码和解码过程,将输入数据映射到一个低维空间中,并尽可能地保留原始数据的重要特征。 3. 特征表示提取:将训练好的自动编码器作为特征提取器,对原始数据进行特征表示提取,得到一个低维特征向量。 4. 聚类模型训练:使用聚类算法对特征向量进行聚类模型训练。常用的聚类算法包括K-Means、DBSCAN、层次聚类等。 5. 聚类结果评估:针对不同的聚类算法,可以使用不同的评估指标来评估聚类结果的质量,如轮廓系数、Calinski-Harabasz指数、Davies-Bouldin指数等。 基于自动编码器的深度聚类算法具有以下优点: 1. 能够自动从数据中学习特征表示,不需要手动提取特征。 2. 能够处理高维数据,并对数据进行降维处理,提高聚类效果。 3. 能够适应不同的数据类型,如文本、图像、音频等。 4. 能够处理大规模数据,并具有较高的可扩展性。 基于自动编码器的深度聚类算法在图像识别、文本分类、音频聚类等方面具有广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值