C#中的深度学习(三):理解神经网络结构

  • 2020 年 12 月 23 日
  • 笔记

在这篇文章中,我们将回顾监督机器学习的基础知识,以及训练和验证阶段包括哪些内容。

在这里,我们将为不了解AI的读者介绍机器学习(ML)的基础知识,并且我们将描述在监督机器学习模型中的训练和验证步骤。

ML是AI的一个分支,它试图通过归纳一组示例而不是接收显式指令来让机器找出如何执行任务。ML有三种范式:监督学习、非监督学习和强化学习。在监督学习中,一个模型(我们将在下面讨论)通过一个称为训练的过程进行学习,在这个过程中,它会提供示例输入和正确输出。它了解数据集示例中哪些特性映射到特定输出,然后能够在一个称为预测的阶段预测新的输入数据。在无监督学习中,模型通过分析数据之间的关系来学习数据的结构,而不涉及任何其他过程。在强化学习中,我们建立模型,通过试验和错误技术,随着时间的推移学习和改进。

ML中的模型是什么?模型是一个简单的数学对象或实体,它包含一些关于AI的理论背景,以便能够从数据集学习。在监督学习中流行的模型包括决策树、向量机,当然还有神经网络。

神经网络是按堆栈的形状分层排列的。除了输入层和输出层之外,每一层的节点都接收来自上一层节点的输入,也可以接收来自下一层节点的输入,同样也可以向上一层和下一层节点发送信号或输出。

在一个神经网络中,我们总是存在输入和输出层,可能有一个或多个隐藏层。

最简单的NN是感知器,它是包含的输入层和输出层单个节点。

对于神经网络中的每条边都有一个关联的权重值,这是对于每个节点都有关联的值。例如,输入层中每个节点的值可以来自与数据集中的图像相关联的像素值输入数组。为了计算下一层节点的值,我们计算连接到该节点的输入的加权和。这就是传递函数。一旦计算出这个值,它就被传递给另一个称为激活函数的函数,该函数根据阈值确定该节点是否应该触发到下一层。有些激活函数是二进制的,有些则有多个输出。

通常在神经网络的末尾,我们有一个激活函数,它对传递到输入层的数据进行分类(做出决定)。在硬币识别的情况下,它将决定图像中硬币的类别或类型。神经网络中的学习过程可以仅仅看作是对其权重的调整,以便为每个给定的输入获得预期的输出。一旦对模型进行了训练,得到的权重就可以被保存下来。

当一个神经网络有一个以上的隐藏层时,我们将其称为深度学习(DL)。DL是一套依赖于神经网络且不止一个隐藏层的技术。拥有多个隐藏层的原因是提供比单一隐藏层神经网络更准确的结果。实践证明,深度神经网络比单层神经网络能产生更快更准确的结果。你添加到你的神经网络的每一层都有助于从数据集学习复杂的特征。

神经网络包含许多需要调整以获得更好性能的参数。为了能够检查参数优化的有效性和神经网络本身的性能,我们留出很大一部分的原始数据集(通常大于70%)作为训练集,使用其他验证(测试)组。验证集也帮助我们防止过度拟合,这发生在一个模型学习太好一组非常相似的对象数据集,使它太适合这个数据和不适合新数据。

在下一篇文章中,我们将研究用于硬币识别问题的卷积神经网络,并将在Keras.NET中实现一个卷积神经网络。

欢迎关注我的公众号,如果你有喜欢的外文技术文章,可以通过公众号留言推荐给我。

 

原文链接://www.codeproject.com/Articles/5284227/Deep-Learning-in-Csharp-Understanding-Neural-Netwo