Deep Learning4: Building Deep Networks for Classification
Self-taught Learning其实就是无监督学习的一种,对于无标记数据进行特征分析
可应用在有标签数据上,数据信息进行扩展,提高预测精度
1.Self-taught Learning to Deep Networks
利用Self-taught Learning得到的特征进行回归分类,进而用标签微调参数,称之为预训练
2. Deep Networks
关于深层网络的优缺点,参考博客http://www.cnblogs.com/tornadomeet/archive/2013/03/25/2980357.html
Deep networks的优点:
一、比单层神经网络能学习到更复杂的表达。比如说用k层神经网络能学习到的函数(且每层网络节点个数时多项式的)如果要用k-1层神经网络来学习,则这k-1层神经网络节点的个数必须是指数级庞大的数字。
二、不同层的网络学习到的特征是由最底层到最高层慢慢上升的。比如在图像的学习中,第一个隐含层层网络可能学习的是边缘特征,第二隐含层就学习到的是轮廓什么的,后面的就会更高级有可能是图像目标中的一个部位,也就是是底层隐含层学习底层特征,高层隐含层学习高层特征。
三、这种多层神经网络的结构和人体大脑皮层的多层感知结构非常类似,所以说有一定的生物理论基础。
Deep networks的缺点:
一、网络的层次越深,所需的训练样本数越多,如果是用有监督学习的话,那么这些样本就更难获取,因为要进行各种标注。但是如果样本数太少的话,就很容易产生过拟合现象。
二、因为多层神经网络的参数优化问题是一个高阶非凸优化问题,这个问题通常收敛到一个比较差的局部解,普通的优化算法一般都效果不好。也就是说,参数的优化问题是个难点。
三、梯度扩散问题。因为当网络层次比较深时,在计算损失函数的偏导时一般需要使用BP算法,但是这些梯度值随着深度慢慢靠前而显著下降,这样导致前面的网络对最终的损失函数的贡献很小。这样的话前面的权值更新速度就非常非常慢了。一个理论上比较好的解决方法是将后面网络的结构的神经元的个数提高非常多,以至于它不会影响前面网络的结构的学习。但这样岂不是和低深度的网络结构一样了吗?所以不妥。
3. Stacked Autoencoders
Stacked Autoencoders是一种层次贪婪训练方法,用来训练网络的参数,即先训练网络的第一个隐含层,然后接着训练第二个,第三个…最后用这些训练好的网络参数值作为整体网络参数的初始值
数据较好获取且能得到局部最优解
编码公式如下所示:
解码公式如下:
posted on 2016-10-13 17:30 Beginnerpatienceless 阅读(122) 评论(0) 编辑 收藏 举报