使用 Keras 构建多层感知器神经网络的属性?

数据挖掘 神经网络 喀拉斯
2021-09-19 09:32:06

我正在尝试构建和训练一个多层感知器神经网络,该网络可以第一次正确预测总统在哪个县赢得了什么。我有以下有关训练数据的信息。

总人口 年龄中位数 % 学士及以上学历 失业率 人均收入 家庭总数 平均家庭规模 % 自住住房 % 租房者自住住房 % 空置住房 房价中位数 人口增长 房屋持有增长 人均收入增长 获胜者

那是 14 列训练数据,第 15 列是输出应该是什么。

我正在尝试使用 Keras 构建多层感知器神经网络,但我需要一些帮助来理解一些属性以及为这些属性选择不同选项的利弊。

  1. 激活函数

我知道我的第一步是想出一个激活函数。我一直在研究使用 sigmoid 激活函数的神经网络。sigmoid 激活函数是最好的吗?你怎么知道使用哪一个?Keras 还提供了使用 softmax、softplus、relu、tanh、linear 或 hard_sigmoid 激活函数的选项。我可以使用任何东西,但我只想能够理解为什么以及利弊。

  1. 概率初始化

我知道初始化定义了用于设置 Keras 层的初始随机权重的概率分布。Keras 提供的选项有 uniform lecun_uniform、normal、identity、正交、zero、glorot_normal、glorot_uniform、he_normal 和 he_uniform。我在这里的选择如何影响我的最终结果或模型?难道这不重要吗?因为我们正在“训练”我们开始使用的任何随机模型并提出更优化的层权重?

1个回答

1)激活是一种架构选择,归结为超参数选择。您可以为使用任何函数提出理论论证,但确定这一点的最佳方法是尝试几个并在验证集上进行评估。记住你可以混合和匹配不同层的激活也很重要。

2)理论上是的,如果您的数据表现非常好并且您的网络理想,许多随机初始化将是相同的。但在实践中,初始化试图确保梯度开始合理并且信号可以正确地反向传播。在这种情况下,这些初始化中的任何一个都可能会执行类似的操作,但最好的方法是尝试它们,如果得到不希望的结果则切换。