初识机器学习:神经网络

831 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情

神经网络(Neural Network,NN)或者人工神经网络(Artificial Neural Network,ANN)是一种模仿动物神经网络的结构和功能的计算模型。在机器学习领域属于监督学习的范畴,被用于解决计算视觉和语音识别等领域,神经网络往往被用来解决一些难以通过基于规则的变成来解决的问题。

神经网络的理论雏形在几十年前就出现了,但是由于存储设备、计算芯片和算法的限制,近些年才出现快速的发展。现在,神经网络已经应用于图像处理、自动驾驶等非常多的领域。

神经元

人脑强大的辨识能力,来源于一个拥有超过800亿个神经元的神经网络,这一点启发了人工智能网络的诞生。在人工智能网络中,也包含大量被称为神经元(neurons)的节点,它们彼此相连,组成一个网络。

在一个人工神经网络中,神经元如下所示:

如图,每个神经元节点包含:

  • 输入向量的多个分量及其对应的权重,权重代表了每一个分量的重要性
  • 一个偏置(b)
  • 一个激活函数(f)

一个神经元的作用,可以简单归纳为,计算输入向量与权重的内积,经一个非线性传递函数得到一个标量,将其作为结果传递个下一个神经元。

神经网络

每个神经元都有输入和输出,一个神经元的计算结果可以作为另一个神经元的输入向量的分量,因此,将神经元分层并彼此连接,就组成了一个神经网络。如下图

这里,最左边的一层叫做输入层,中间有若干个隐藏层,最右边是输出层。

输入层直接处理原始的预测数据,通常来说,输入层神经元的个数与参与预测的变量的个数一样多。

隐藏层可以有一层或者多层,这些神经元,将上一层神经元的输出结果作为输入向量的分量,并将计算结果传递给下一层神经元。隐藏层的神经元数目越多,整个网络的非线性越显著,神经网络的强健性也更显著,但是需要消耗的算力也更大。

输出层产生的结果将作为整个神经网络的预测结果,输出层的神经元可以有一个或多个。

激活函数

为了预测结果,神经网络需要从输入层的神经元开始,逐级激活神经元,形成一条到达结果的完整路径。每个神经元是否激活是其激活函数决定的,当激活函数的结果达到某一个阈值的时候,就激活神经元,并将数据传递到下一层,这样,当前激活的节点的结果,就会变成下一个神经元的输入。

有时候,在一个神经网络中,不同的激活路径可以到达相同的结果。

因此,一个合适的激活函数对预测结果的准确性至关重要,因此,权重、偏置和阈值就非常重要。这些都是神经网络训练过程中需要调优的参数,除此之外,隐藏层的层数、每层神经元的数量也很重要。通常都是通过梯度下降法来找到合适的参数。

其他特性

除了上述介绍的原理意外,神经网络还有一些特点值得注意:

  • 神经网络非常依赖数据量,数据量不够大的情况下会容易产生过拟合的问题。
  • 神经网络的计算成本高,由于计算量庞大,需要强大的计算硬件支撑。
  • 神经网络的预测结果不具有可解释性。