本文主要是介绍稀疏自编码器及其实现——如何搞基,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
自编码器是什么?
自编码器本身就是一种BP神经网络。它是一种无监督学习算法。
我们都知道神经网络可以从任意精度逼近任意函数,这里我们让神经网络目标值等于输出值x,也就是模拟一个恒等函数:
太无聊了,是吗?输入等于输出,这网络有什么意义?但是,当我们把自编码神经网络加入某些限制,事情就发生了变化。如图1所示,这就是一个基本的自编码神经网络,可以看到隐含层节点数量要少于输入层节点数量。
图1
举个例子,如果我们输入一张10*10的图像,这样就有100个像素,所以输入层和输出层的节点数量就是100。而我们取隐藏层节点数量为25。注意,这样就会迫使隐藏层节点学习得到输入数据的压缩表示方法,逼得隐藏层要用25维数据重构出100维的数据。这样也就完成了学习过程。
这和我们学习的过程很像,假设一共有100个考点,但是只允许你用25个知识点概括所有这些考点,这就是学习的过程。
稀疏自编码器又是什么?
更一般的,如果隐藏层节点数量很大,甚至比输入层节点数量还要多时,我们仍然可以使用自编码算法,但是这时需要加入稀疏性限制。这就是稀疏自编码器。
什么是稀疏性限制?
简单说就是要保证隐藏神经元在大多数情况下是被抑制的状态。具体表现就是sigmoid函数的输出大多数状态是0,tanh函数的输出大多数状态是-1。这样有什么好处?这样能够迫使隐藏神经元发挥最大的潜力,在很不利的条件下学习到真正的特征。
这篇关于稀疏自编码器及其实现——如何搞基的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!