神经网络:Playground 练习

首个神经网络

在本练习中,我们将训练您的第一个小神经网络。神经网络将让我们可以在不使用显式特征组合的情况下学习非线性模型。

任务 1:给定模型将两个输入特征合并为一个神经元。此模型会学习任何非线性规律吗?运行应用以确认猜测。

任务 2:尝试将隐藏层中的神经元数量从 1 增加到 2,同时尝试从线性激活更改为非线性激活(例如 ReLU)。您能否创建一个可以学习非线性的模型?它能否有效地对数据进行建模?

任务 3:使用 ReLU 等非线性激活函数,尝试将隐藏层中的神经元数量从 2 增加到 3。它能否有效地对数据进行建模?模型运行期间每次运行的质量有何不同?

任务 4:通过添加或移除隐藏层和每层的神经元,继续进行实验。此外,您还可以随时更改学习速率、正则化和其他学习设置。您可以使用的使测试损失不超过 0.177 的神经元和层的最小数量?

增加模型大小是提高拟合度,还是加快收敛速度?这会改变向良好模型收敛的频率吗?例如,尝试以下架构:

  • 具有 3 个神经元的第一个隐藏层。
  • 包含 3 个神经元的第二个隐藏层。
  • 包含 2 个神经元的第三个隐藏层。

(答案位于练习正下方。)



神经网络初始化

本练习将再次使用 XOR 数据,但会观察神经网络的重复性以及初始化的重要性。

任务 1:运行给定模型四到五次。在每次试验之前,点击 Reset the network 按钮以获取新的随机初始化数据。(重置网络按钮是一个圆形重置箭头,位于“播放”按钮左侧)。让每次试验运行至少 500 步,以确保收敛。每个模型输出会收敛为何种形状?这说明了初始化在非凸优化中的作用?

任务 2:尝试添加一层和几个额外节点,让模型略微复杂一些。重复任务 1 中的试验。这会给结果带来额外的稳定性吗?

(答案位于练习正下方。)



神经网络螺旋

此数据集呈噪音螺旋。显然,线性模型在此处会失败,但即使是手动定义的特征组合,可能也很难构建。

任务 1:仅使用 X1 和 X2 训练可以达到的最佳模型。您可以随意添加或移除层和神经元,还可以更改学习速率、正则化率和批次大小等学习设置。您可以获得的最佳测试损失是多少?模型输出表面的平滑度如何?

任务 2:即使使用神经网络,通常需要一些特征工程才能实现最佳性能。尝试添加其他乘积特征或 sin(X1) 和 sin(X2) 等其他转换。你有更好的模型吗?模型输出是否更流畅?

(答案位于练习正下方。)