C# 激活函数、初始化函数等对人脸检测神经网络的影响

C# 激活函数、初始化函数等对人脸检测神经网络的影响,c#,.net,neural-network,face-detection,C#,.net,Neural Network,Face Detection,有各种各样的激活函数:sigmoid、tanh等,还有一些初始化函数:Nguyen和Widrow、random、normalized、constant、zero等。那么这些函数对专门用于人脸检测的神经网络的结果有多大影响呢?现在我正在使用Tanh激活函数,将所有权重从-0.5随机分配到0.5。我不知道这是否是最好的方法,每次训练网络需要4个小时,我宁愿在这里提问,也不愿尝试 选取几百个数据案例,查看单位激活值的平均值和标准偏差。你想要脱离tanh-sigmoid的饱和状态 我怀疑不同的合理初始化

有各种各样的激活函数:sigmoid、tanh等,还有一些初始化函数:Nguyen和Widrow、random、normalized、constant、zero等。那么这些函数对专门用于人脸检测的神经网络的结果有多大影响呢?现在我正在使用Tanh激活函数,将所有权重从-0.5随机分配到0.5。我不知道这是否是最好的方法,每次训练网络需要4个小时,我宁愿在这里提问,也不愿尝试

选取几百个数据案例,查看单位激活值的平均值和标准偏差。你想要脱离tanh-sigmoid的饱和状态

我怀疑不同的合理初始化方案会对您的解决方案的质量产生多大影响。只要初始化权重,使其在区间[-1/sqrt(N),+1/sqrt(N)]上保持一致就足够了,其中N是传入连接的数量

这就是说,真正起作用的是预先训练网络权重,无论是作为RBM还是作为自动编码器。这甚至对单隐层神经网络也有帮助,尽管它对更深层次的网络更为重要。如果您没有提到您正在使用的体系结构,那么这些信息将为您的问题提供更有用的答案

甚至还有一个新的初始化规则在本文中描述得很好: 本文还提到了我在上面提到的一些初始化错误的症状,您可以很容易地检查这些症状

总而言之,[-1/sqrt(N),+1/sqrt(N)]上的统一不是很糟糕,我链接到的论文中也提到了这一点。如果你使用其中一种,不要太担心。非常重要的是将权重作为自动编码器(或受限Boltzmann机器)进行预训练,即使只有一个隐藏层,也应该查看这些权重


如果您想将权重预训练为RBM,您可以切换到逻辑S形,甚至从一个小的标准偏差高斯值初始化权重,而不会遇到麻烦。

是的,它们对神经网络的结果有很大影响。你可以提供你正在使用的方法和你试图解决的问题的更多细节,以获得有意义的答案。