我目前正在尝试使用遗传算法进行训练,并使用Sigmoid激活函数来实现我的第一个神经网络。一切进展顺利,但我不太确定权重的范围应该设定在什么区间。我已经搜索了一些相关问题,但没有找到答案。如何选择神经网络中权重的范围?这取决于什么因素?
回答:
权重可以被视为你使用GA/NN方法试图解决的问题的内在属性;这些没有普遍的最佳值,因此你最好在其他参数固定的情况下,研究不同权重范围(相对于训练集)。
例如,研究参数weightSpan的不同设置:
weights \in [-weightSpan/2, weightSpan/2],
让你的初始染色体描述在这个范围内的随机化权重值。你的压缩函数(Sigmoid)用于将神经网络的响应评分到[0, 1]的范围内。
找到合适的权重范围,就像设置隐藏层数量的值一样,是一个问题特定的测试过程。(“没有免费的午餐”)。
编辑:
我想补充一点,研究不同权重范围的最简单方法可能是设定一个固定的权重范围,比如[-1, 1],然后研究你的压缩函数(Sigmoid)中的压缩常数。即,研究Sigmoid中常数c
的不同(非负)值
σ(s) = 1 / (1 + e^(-c*s))