神经网络

menu icon

神经网络

神经网络反映人类大脑的行为,允许计算机程序识别模式,以及解决人工智能、机器学习和深度学习领域的常见问题。

什么是神经网络?

神经网络,也称为人工神经网络 (ANN) 或模拟神经网络 (SNN),是机器学习的子集,并且是深度学习算法的核心。其名称和结构是受人类大脑的启发,模仿了生物神经元信号相互传递的方式。

人工神经网络 (ANN) 由节点层组成,包含一个输入层、一个或多个隐藏层和一个输出层。 每个节点也称为一个人工神经元,它们连接到另一个节点,具有相关的权重和阈值。 如果任何单个节点的输出高于指定的阈值,那么该节点将被激活,并将数据发送到网络的下一层。 否则,不会将数据传递到网络的下一层。

前馈神经网络的输入层、隐藏层和输出层的可视图

神经网络依赖于训练数据随时间的推移不断学习并提高其准确性。 然而,一旦这些学习算法的准确性经过调优,它们便是计算科学和人工智能中的强大工具,我们可以快速地对数据进行分类。与由人类专家进行的人工识别相比,语音识别或图像识别任务可能仅需要几分钟而不是数小时。 最著名的神经网络之一是 Google 的搜索算法。

神经网络如何运作?

将各个节点想象成其自身的线性回归模型,由输入数据、权重、偏差(或阈值)和输出组成。公式大概是这样的:

用于确定总和的数学公式

∑wixi + bias = w1x1 + w2x2 + w3x3 + bias

用于确定输出的数学公式

output = f(x) = 1 if ∑w1x1 + b> = 0; 0 if ∑w1x1 + b < 0

一旦确定了输入层,就会分配权重。 这些权重有助于确定任何给定变量的重要性,与其他输入相比,较大的权重对输出的贡献更大。 将所有输入乘以其各自的权重,然后求和。 之后,输出通过一个激活函数传递,该函数决定了输出结果。 如果该输出超出给定阈值,那么它将“触发”(或激活)节点,将数据传递到网络中的下一层。 这会导致一个节点的输出变成下一个节点的输入。 这种将数据从一层传递到下一层的过程规定了该神经网络为前馈网络。

让我们使用二进制值来分析单个节点的样子。 我们可以将这个概念应用到更具体的例子,比如您是否应该去冲浪(是为 1,否为 0)。 决定去还是不去是我们预测的结果,或者 y-hat。 假设有三个因素影响您的决策:

  1. 海浪是否合适? (是为 1,否为 0)
  2. 是否不需要排队? (是为 1,否为 0)
  3. 最近是否发生过鲨鱼袭击事件? (是为 0,否为 1)

然后,让我们作出以下假设,提供以下输入:

  • X1 = 1,因为海浪在涌动
  • X2 = 0,因为人很多
  • X3 = 1,因为最近没有发生过鲨鱼攻击事件

现在,我们需要分配一些权重来确定重要性。 较大的权重表示特定变量对决策或结果的重要性更高。

  • W1 = 5,因为巨浪不经常出现
  • W2 = 2,因为您已经习惯了人群
  • W3 = 4,因为您害怕鲨鱼

最后,我们还将假设阈值为 3,也就是偏差值为 –3。 有了所有各种输入,我们可以开始将值代入公式,以得到所需的输出。

Y-hat = (1*5) + (0*2) + (1*4) – 3 = 6

如果我们使用本节开头的激活函数,那么我们可以确定此节点的输出将为 1,因为 6 大于 0。 在这种情况下,您会去冲浪;但如果我们调整权重或阈值,就可以从模型中获得不同的结果。 如果我们观察某个决策,例如在上面的示例中,我们可以看到神经网络如何根据先前决策或层的输出做出越来越复杂的决策。

在上面的例子中,我们利用感知器来说明这里发挥作用的一些数学运算,而神经网络利用 sigmoid 神经元,它们的值介于 0 到 1 之间。 由于神经网络的行为类似于决策树,它将数据从一个节点级联到另一个节点,x 值介于 0 到 1 之间将减少单个变量的任何给定变化对任何给定节点的输出乃至神经网络的输出的影响。

随着我们开始思考更实际的神经网络用例,例如图像识别或分类,我们将利用监督式学习或标签化数据集来训练算法。 当我们训练模型时,我们将使用成本(或损失)函数来评估其准确性。 这通常也称为均方误差 (MSE)。 在下面的等式中,

  • i 表示样本的索引,
  • y-hat 是预测的结果,
  • y 是实际值,而
  • m 是样本的数量。
用于确定成本函数的数学公式

𝐶𝑜𝑠𝑡 𝐹𝑢𝑛𝑐𝑡𝑖𝑜𝑛 = 𝑀𝑆𝐸 =1/2𝑚 ∑129_(𝑖 =1)^𝑚▒(𝑦 ̂^((𝑖) )−𝑦^((𝑖) ) )^2

最终的目标是,使我们的成本函数最小化,以确保对任何给定观测的拟合的正确性。 当模型调整其权重和偏差时,它使用成本函数和强化学习来达到收敛点或局部最小值。 算法通过梯度下降调整权重,这使模型可以确定减少错误(或使成本函数最小化)的方向。 通过每个训练示例,模型的参数不断调整,逐渐收敛到最小值。

显示收敛点的曲线图

请参阅以下有关神经网络中涉及定量概念的深度说明的 IBM Developer 文章

大多数深度神经网络都是前馈网络,意味着它们仅以从输入到输出这一个方向流动。 但是,您也可以通过反向传播来训练模型;即,以从输出到输入的相反方向移动。 反向传播使我们可以计算和确定与每个神经元相关的误差,从而允许我们适当地调整和拟合模型的参数。

神经网络的类型

神经网络可以分类为不同的类型,分别用于不同的目的。 虽然不是完整的类型列表,但下面代表了您将在其常见用例中遇到的最常见的神经网络类型:

感知器是最古老的神经网络,由 Frank Rosenblatt 于 1958 年创建。 它有一个神经元,是神经网络最简单的形式:

使用线条和蓝色圆圈的简单感知器图示

前馈神经网络或多层感知器 (MLP) 是我们在本文中主要关注的内容。 它们由输入层、一个或多个隐藏层以及输出层组成。 虽然这些神经网络通常也被称为 MLP,但值得注意的是,它们实际上由 sigmoid 神经元而不是感知器组成,因为大多数现实问题是非线性的。 数据通常会馈送到这些模块中以进行训练,它们是计算机视觉、自然语言处理和其他神经网络的基础。

卷积神经网络 (CNN) 类似于前馈网络,但通常用于图像识别、模式识别和/或计算机视觉。 这些网络利用线性代数的原理(特别是矩阵乘法)来识别图像中的模式。

循环神经网络 (RNN) 由其反馈环路来识别。这些学习算法主要用在使用时间序列数据来预测未来结果(如股票市场预测或销售预测)的情况中。

神经网络与深度学习

深度学习和神经网络在对话中往往可以互换使用,这可能会让人感到困惑。 因此,值得注意的是,深度学习中的“深度”只是指神经网络中层的深度。 由三个以上的层组成的神经网络(包含输入和输出)即可视为深度学习算法。 只有两层或三层的神经网络只是基本神经网络。

要了解神经网络和其他形式的人工智能(如机器学习)的不同之处的更多信息,请阅读博客帖子“AI vs. 机器学习 vs. 深度学习 vs. 神经网络:有何不同?

神经网络的历史

神经网络的历史比大多数人想象得要长。 虽然“一种会思考的机器”理念可以追溯到古希腊,但我们将重点关注导致对神经网络的思考发生演变的关键事件,因为多年来,神经网络的受欢迎程度忽高忽低:

1943:Warren S.McCulloch 和 Walter Pitts 发布了“A logical calculus of the ideas immanent in nervous activity (PDF, 1 MB)(链接位于 IBM 外部)”,此研究致力于了解人类大脑如何通过连接的大脑细胞或神经元产生复杂的模式。这篇文章的一项主要思想是将使用二进制阈值的神经元与布尔逻辑进行比较(即 0/1 或 true/false 语句)。

1958:Frank Rosenblatt 认证并开发了感知器,将其记录在其研究中“The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain” (PDF, 1.6 MB)(链接位于 IBM 外部)。他通过在方程中引入权重,进一步巩固了 McCulloch 和 Pitt 的研究成果。 利用 IBM 704,Rosenblatt 能够让计算机学习如何区分左侧和右侧标记的卡片。

1974:当大量的研究人员贡献着反向传播的各种构想,Paul Werbos 在美国首先在其博士论文的文章(链接位于 IBM 外部)中提出其在神经网络中的应用。

1989:Yann LeCun 发布了论文(PDF, 5.7 MB) (链接位于 IBM 外部),说明了如何利用反向传播及其与神经网络架构集成中的限制以用于训练算法。这项研究成功地利用神经网络识别了美国邮政局提供的手写 邮政编码数字。

神经网络和 IBM Cloud

近数十年来,IBM 是 AI 技术和神经网络开发的先行者,高光时刻是 IBM Watson 的开发和演进。Watson 现在是可靠的企业解决方案,使用经过验证的分层方法以采用和实施 AI,不断寻求对系统应用高级的自然语言处理流程以及深度学习技术。

Watson 使用 Apache 非结构化信息管理架构 (UIMA) 框架和 IBM 的 DeepQA 软件,为应用程序提供强大的深度学习功能。 利用诸如 IBM Watson Studio 这类工具,贵公司可以在任意云端部署和运行模型的同时将开源的 AI 项目无缝引入生产。

有关如何开始深度学习技术的更多信息,请探索 IBM Watson Studio深度学习服务

注册一个 IBMid 并创建 IBM Cloud 帐户。