计算 NN 中的权重

Calculating weights in a NN

所以我目前正在尝试使用用于训练的遗传算法和 sigmoid 激活函数来实现我的第一个神经网络。一切都很好,但我不太确定权重必须在什么范围内。我已经搜索了一些关于这个问题但没有运气。如何选择 NN 中的权重范围?它取决于什么?

可以将权重视为您尝试使用 GA/NN 方法解决的问题的内在 属性;这些没有一般的最佳价值,所以你最好研究不同的重量跨度(w.r.t。训练集),其他参数固定。

例如,研究

中参数 weightSpan 的不同设置
weights \in [-weightSpan/2, weightSpan/2], 

并让你的初始染色体用这个范围内的随机值描述权重。您的挤压函数 (sigmoid) 用于将 NN 响应分级为范围 [0, 1]。

找到合适的权重跨度,就像设置隐藏层数的值一样,是一个针对特定问题测试的过程。 ("There is no free lunch")。


编辑:

我想我要补充一点,研究不同权重跨度的最简单方法可能是设置一个固定的权重跨度,比如 [-1, 1],并研究压缩函数 (sigmoid) 中的压缩常数。即,研究 sigmoid

中常量 c 的不同(非负)值
σ(s) = 1 / (1 + e^(-c*s))