如何使用神经网络进行分类:什么是感知器?
本文探讨了著名神经网络拓扑的基本理论和结构。
这是一系列文章中的第一篇,详细介绍了神经网络的设计、训练和评估。目标是使用 Python 计算机程序执行复杂的分类,该程序实现了称为多层感知器的神经网络架构。
为方便起见,您可以在此处找到感知器系列的其余部分:
- 如何使用神经网络进行分类:什么是感知器?
- 如何使用简单的感知器神经网络示例对数据进行分类
- 如何训练基本的感知器神经网络
- 了解简单的神经网络训练
- 神经网络训练理论简介
- 了解神经网络中的学习率
- 使用多层感知器进行高级机器学习
- Sigmoid 激活函数:多层感知器神经网络中的激活
- 如何训练多层感知器神经网络
- 了解多层感知器的训练公式和反向传播
- Python 实现的神经网络架构
- 如何在 Python 中创建多层感知器神经网络
- 使用神经网络进行信号处理:神经网络设计中的验证
- 训练神经网络数据集:如何训练和验证 Python 神经网络
什么是神经网络?
神经网络是松散地基于人脑结构的信号处理工具。它们通常与人工智能 (AI) 相关。我不喜欢“人工智能”这个词,因为它是不精确和简化的。如果将“智能”定义为快速进行数值计算的能力,那么中性网络绝对是人工智能。但在我看来,智能远不止于此——它是设计的东西 一个快速进行数值计算的系统,然后写一篇关于它的文章,然后思考“智能”这个词的含义,然后想知道人类为什么要创造神经网络并写关于它们的文章。
此外,人工智能不是人工的。非常真实 智能,因为它是一个数学系统,根据设计它的人类的智能运行。
神经网络是可以从现有数据中“学习”并有效解决复杂信号处理问题的软件例程。研究和试验它们很有趣,在某些情况下,它们远远超过“正常”算法的能力。然而,他们不会消除世界饥饿,他们不会写出好诗,我怀疑他们是否会像一个既清醒又不会写短信的人一样安全地驾驶汽车。
什么是感知器?
一个基本的感知器神经网络在概念上很简单。它只能由两个输入节点和一个输出节点组成,通过加权连接连接:
输入数据的维度必须与输入层的维度匹配。术语“维度”在这里可能有点混乱,因为大多数人无法想象具有三个以上维度的事物。这一切真正意味着您的输入数据(例如,您要分类的模式)是一个具有给定长度的向量,并且您的输入层必须为向量中的每个元素都有一个节点。因此,如果您尝试对由一系列 20 个数据点表示的模式进行分类,则您有一个包含 20 个元素的向量并需要 20 个输入节点。
输出节点生成设计者感兴趣的数据。输出节点的数量取决于应用程序。如果要做出是/否分类决策,即使有数百个输入节点,也只需要一个输出节点。另一方面,如果目标是将输入向量放入几个可能的类别中的一个,您将有多个输出节点。
从一个节点移动到另一个节点的数据乘以权重。这些普通的标量值实际上是感知器功能的关键:在训练过程中修改权重,并通过根据训练数据中包含的模式自动调整其权重,网络获得了产生有用输出的能力。
节点内部发生了什么? (又名神经网络如何工作?)
输入层的节点只是连接点;他们不修改输入数据。输出层以及输入和输出之间的任何附加层都包含网络的计算节点。当数值数据到达计算节点时,首先对它们求和,然后对其进行“激活”函数:
激活的概念可以追溯到(生物)神经元的行为,它们通过活动或不活动的动作电位进行交流;它更像是一个开/关数字系统而不是模拟系统。在(人工)神经网络的上下文中,节点(也称为(人工)神经元)可以通过应用阈值函数来模仿神经元行为,该函数在输入大于阈值时输出 1,否则输出 0。
下图传达了基本“单位步长”激活函数的输入-输出关系。
通过将这种阈值变换插入到数据从节点到节点的传播中,我们将非线性引入到系统中,如果没有这种非线性,神经网络的功能将非常有限。这里的理论很复杂,但总体思路(我认为)是线性变换的组合,即使这些线性变换发生多次,也永远无法近似表征复杂自然现象和复杂信号处理任务的关系。
尽管真实神经元根据某种开/关模型运行,但(人工)神经网络激活的阈值方法并不是最佳的。我们将在以后的文章中重新讨论这个话题。
结论
我们已经介绍了感知器的最基本元素,在下一篇文章中,我们将把这些部分放在一起,看看一个基本系统是如何工作的。
神经网络是一个广泛的话题,我要给你一个公平的警告,这可能是一个很长的系列。但我认为它会是一个很好的。
嵌入式