2013-03-22 14 views
3

动机:训练神经网络与约束单位

物体识别的技术算法的状态是通过反向传播,其中主要的问题就是如何让网络中的一个很好的解决培养了深厚的卷积神经网络局部最小值:http://books.nips.cc/papers/files/nips25/NIPS2012_0534.pdf

有可能记录来自支持物体识别的神经元的大脑中的峰值计数,并且声称接近这些神经元的响应的神经网络处于良好的局部最小值是合理的。 http://www.sciencedirect.com/science/article/pii/S089662731200092X

如果您要约束神经网络中的某个单元子集,以重现特定输入的某些值(例如,说明从神经元响应这些图像记录的尖峰计数),然后通过a受限的梯度下降,它可能会迫使网络在一个良好的局部最小值中定居。

确切的问题:

什么是最有效的计算办法改变的方向,最大限度地考虑到网络中的一些神经元必须有一定的预出错的减少神经网络的权重确定的价值?

进展迄今:

这似乎是一个非常困难的拉格朗日乘子问题,并做了一些工作,寻找有关该主题的现有文献后,我想知道是否有人听说过的类似工作。

+0

也许你可以通过标准反向传播训练受限制的神经元来产生所需的值,修正它们的权重,使它们只是一个复杂的特征提取器,然后通过反向传播仅对上层进行训练以进行分类。无论如何,这可能是一个有趣的研究课题。我很好奇看到你的论文。 :) – alfa 2013-03-23 16:11:07

+1

问题在于没有足够的神经数据来避免在您建议的程序的第一步中过度拟合。但是,不要固定权重,然后在步骤1和步骤2之间切换。(步骤1 =列车约束神经元,步骤2 =列车分类) 如果我能以某种方式确保这些步骤之间的交替会收敛到一个稳定点,那将是非常好的,但最好的方法是简单地尝试它! – dardila2 2013-03-26 21:51:40

+0

@ dardila2我知道这不是你的问题的答案,但高斯变异将能够平凡地解决这个问题。你真的需要渐变下降的方法吗? – arman 2013-10-21 07:14:48

回答

1

你最好的选择是Kullback-Liebler Divergence(KL)。它允许你设置你希望你的神经元接近的值。在蟒蛇是,

def _binary_KL_divergence(p, p_hat): 
    """ 
    Computes the a real, KL divergence of two binomial distributions with 
    probabilities p and p_hat respectively. 
    """ 
    return (p * np.log(p/p_hat)) + ((1 - p) * np.log((1 - p)/(1 - p_hat)))     

其中p是约束值,p_hat是你的样品的平均激活值(或神经元值)。这与将术语添加到目标函数一样简单。所以,如果算法最小化方形误差||H(X) - y||^2,新的形式将是||H(X) - y||^2 + KL_divergence_term

作为成本函数的一部分,它会惩罚与p不同的平均激活,无论是更高还是更低(图1)。权重更新的方式取决于新目标函数的部分区分。

enter image description here

     (Figure 1 : KL-Divergence Cost when `p = 0.2) 

其实,我从挖洞稀疏自动编码器,其中更多的细节可以在Lecture Notes on Sparse Autoencoders可以看出这个想法。

祝你好运!

+0

我喜欢为损失添加术语的想法,这实际上是我一直在尝试的,所以我现在将选择这个作为答案。但是,为什么使用KL-Divergence而不是方差或其他一些简单的度量? – dardila2 2014-04-03 19:02:36

+0

KL-Divergence的好处在于它的非对称性和稀疏性控制。从上图我们可以观察到“p = 0.2”以下的值如何比较高的值更少受到惩罚,这意味着比使用更简单的正则化术语更能激发稀疏性。其次,'p'的值决定了我们想要的稀疏程度。对于不同的数据,不同的稀疏值是可取的。 – Curious 2014-04-03 23:14:46