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