所有关于电路
技术文章

Python实现的神经网络体系结构

2020年1月09年,通过罗伯特Keim

这篇文章讨论我们将在神经网络训练和分类实验中使用的感知器配置,我们也将研究与偏置节点相关的主题。

欢迎来到关于所有电路的神经网络系列技术文章。be paly外围在到目前为止的相关系列中,我们已经涵盖了相当多的有关神经网络的理论。

  1. 如何使用神经网络进行分类:感知器是什么?
  2. 如何使用一个简单的感知器神经网络的例子来分类数据
  3. 如何训练一个基本的感知器神经网络
  4. 了解简单的神经网络训练
  5. 神经网络训练理论导论
  6. 了解神经网络的学习速率
  7. 先进的机器学习与多层感知器
  8. Sigmoid激活函数:多层感知器神经网络中的激活
  9. 如何训练一个多层感知器神经网络
  10. 理解多层感知机的训练公式和反向传播
  11. Python实现的神经网络体系结构
  12. 如何在Python中创建一个多层感知器神经网络
  13. 使用神经网络的信号处理:神经网络设计中的验证
  14. 神经网络的训练数据集:如何训练和验证Python神经网络

现在我们准备开始把这些理论知识转化成功能性感知器分类系统。

首先,我想介绍一下我们将用高级编程语言实现的网络的一般特性;我使用的是Python,但是代码的编写方式将便于翻译成其他语言,比如c。下一篇文章将提供Python代码的详细演练,然后我们将探索培训、使用和评估这个网络的不同方法。beplay体育下载不了

Python神经网络体系结构

该软件对应于下图所示的感知器。


以下是网络的基本特点:

  • 输入节点的数量是可变的。如果我们想要一个具有任何显著灵活性的网络,这是至关重要的,因为输入维度必须与我们想要分类的样本的维度相匹配。
  • 该代码不支持多个隐藏层。现在没有必要了——一个隐藏层就足以实现非常强大的分类。
  • 一个隐藏层中的节点数量是可变的。寻找隐藏节点的最佳数量需要反复试验,尽管有一些指导方针可以帮助我们选择一个合理的起点。我们将在以后beplay体育下载不了的文章中探讨隐藏层维度的问题。
  • 输出节点的数量目前固定为1。这个限制将使我们的初始程序稍微简单一些,并且我们可以将变量输出维度合并到改进的版本中。
  • 隐藏节点和输出节点的激活函数都是标准的logistic sigmoid关系:

\ [f (x) = \压裂{1}{1 + e ^ {x}} \]

什么是偏置节点?(如果你是感知器,偏见是好的)

在讨论网络架构时,我应该指出,神经网络经常包含所谓的偏见节点(或者你可以只称它为“偏见”,不含“节点”)。与偏置节点相关的数值是设计者选择的常数。例如:

偏置节点可以合并到输入层或隐藏层,或两者兼而有之。它们的权值与任何其他权值一样,并使用相同的backpropagation过程进行更新。

偏见节点的使用是一个重要的理由编写神经网络代码,使您可以轻松地更改输入节点的数量或隐藏节点—如果你有兴趣在一个特定的分类任务,输入变量和隐层维度可以确保你可以方便实验使用偏见节点。

在第10部分中,我指出节点的预激活信号是通过执行点积来计算的。,您将两个数组(或向量,如果您喜欢的话)的相应元素相乘,然后将所有单独的乘积相加。第一个数组保存来自前一层的postactivation值,第二个数组保存连接前一层到当前层的权值。因此,如果用x表示前一层postactivation数组,用w表示权值,则计算预激活值如下:

\ [S_ {preA} = w \ cdot x =总和(w_1x_1 + w_2x_2 + \ cdots + w_nx_n) \]

你可能想知道这到底和偏置节点有什么关系。好的,偏差(用b表示)将这个过程修改为:

\ [S_ {preA} = (w \ cdot x) + b =总和(w_1x_1 + w_2x_2 + \ cdots + w_nx_n) + b \]

偏置对激活函数处理的信号进行移位,从而使网络更加灵活和鲁棒。用字母b来表示偏置值让人想起直线的标准方程y = mx +中的“y轴截距”b。这不是偶然的巧合。偏差确实像y轴截距,你可能也注意到,权重数组等同于斜率:

\[S_{preA} =(w \cdot x)+b\]

\[y = mx + b]

重量,偏差和激活

如果我们考虑在训练过程中交付给节点的激活函数的数值,权重会增加或减少输入数据的斜率,而偏差会垂直移动输入数据。但是这如何影响节点的输出呢?我们假设我们用标准的logistic函数来进行激活

f的跃迁一个从x = 0到f一个(x) = 1以输入值x = 0为中心。因此,通过使用偏置来增加或减少预激活信号,我们可以影响过渡的发生,从而将激活函数向左或向右移动。另一方面,权重决定了输入值通过x = 0的“速度”,这影响了激活函数中过渡的陡峭程度。

结论

我们已经讨论了偏置节点和我们将在软件中实现的第一个神经网络的显著特征。现在我们已经准备好查看实际的代码了,这正是我们在下一篇文章中要做的。

1评论