使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
首个神经网络
在本练习中,我们将训练第一个小型神经网络。
神经网络为我们学习非线性模型提供了途径,
明确特征组合的使用。
任务 1:给定模型将两个输入特征组合为
单个神经元。此模型是否会学习任何非线性规律?运行该代码以确认
猜测。
任务 2:尝试增加隐藏层中的神经元数量,即从
尝试将激活函数从线性激活更改为非线性激活
例如 ReLU。您能否创建一个可以学习非线性的模型?它能不能根据模型估算
如何有效地对数据进行操作?
任务 3:尝试增加隐藏层中的神经元数量,即从
2 到 3,使用 ReLU 等非线性激活函数。是否可以为数据建模
?模型质量如何随运行的不同而有所不同?
任务 4:通过添加或移除隐藏层继续进行实验
和神经元数量。还可以随意更改学习速率,
以及正则化和其他学习设置。最小
你可以使用的神经元和层的数量,
0.177 或更低?
增加模型大小是否可改善拟合或收敛速度?
这会改变它收敛到良好模型的频率吗?例如,尝试
以下架构:
- 第一个隐藏层包含 3 个神经元。
- 包含 3 个神经元的第二个隐藏层。
- 第三个隐藏层,有 2 个神经元。
(答案位于练习正下方。)
点击加号图标,即可查看任务 1 的答案。
激活设置为线性,因此此模型无法学习
任何非线性关系。损失非常高,我们可以说该模型欠拟合
数据。
点击加号图标,即可查看任务 2 的答案。
非线性激活函数可以学习非线性模型。不过,
包含 2 个神经元的单个隐藏层无法反映
并且即使没有噪声,损失也很大:
欠拟合数据。这些运动具有不确定性,因此有些会跑步
无法学到有效的模型,而其他运行则会很好。
最好的模型可能并不符合您预期的形状!
点击加号图标即可查看任务 3 的答案。
在本练习中,Playground 的不确定性大放异彩。答
包含 3 个神经元的单个隐藏层足以对数据集进行建模(缺少
但并非所有运行都会收敛到优质模型。
3 个神经元就足够了,因为 XOR 函数可以表示为 3 个半平面(ReLU 激活)的组合。通过查看
神经元图像,以显示各个神经元的输出。在良好模型中
有 3 个神经元和 ReLU 激活函数,就会有 1 张图像
表示 X1 为正(或负;符号可能是
),1 张图像具有近水平线,
X2 以及 1 张对角线图像,
互动
但是,并非所有运行都会收敛到优质模型。有些运行
这个模型比具有 2 个神经元的模型要好, 可以看到这些神经元中
案例
点击加号图标即可查看任务 4 的答案。
一个包含 3 个神经元的隐藏层可以对数据进行建模,
所以在许多运行中,它会有效地损失一个神经元,
模型。包含 3 个以上神经元的单个层具有更多的冗余,
更有可能收敛到优质模型。
如我们所见,仅有 2 个神经元的单个隐藏层无法为数据建模
。如果试用一下,就会发现输出层中的所有项
只能是由来自这两个节点的线条组成的形状。在此例中,
与仅靠第一个隐藏层相比,更深层的网络可以更好地为数据集建模:
第二层的各个神经元可以对更复杂的形状进行建模,
通过结合第一层中的神经元来实现。在添加
与第一个隐藏层相比,第二个隐藏层仍然能够更好地为数据集建模
那么向第一层添加更多节点可能更合理,
让更多线条加入套件中,以便第二层构建
形状。
但是,第一个隐藏层中有 1 个神经元的模型无法学习
无论其有多深。这是因为第一个
图层只在一个维度(通常是对角线)上变化,
从而对该数据集进行有效建模。后期的图层无法弥补这种情况,
无论有多复杂输入数据中的信息不可恢复,
。
如果我们没有尝试一个小型网络,而是有许多层
大量神经元,针对这样一个简单的问题呢?正如我们所看到的,第一个
就可以尝试各种不同的线斜率。第二个
层会将它们积聚成许多不同的形状,
在随后的层中沿着大量的形状向下延伸。
通过让模型考虑这么多不同的形状,
您创造了足够的空间供模型开始运行,
在训练集中的噪声上很容易出现过拟合问题,
与训练数据的缺点匹配的复杂形状,而不是
广义标准答案。在这个例子中,较大的模型可能有复杂的
精确匹配数据点。在极端情况下,一个大型模型
可以在单个噪声点周围学习一个岛,
记忆数据。通过让模型变得更大,
会发现它的效果往往比采用如下描述的更简单的模型更差
所需的神经元数量刚好足以解决问题。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-08-22。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2024-08-22。"],[],[]]