14.1 神经网络算法概述

人的大脑是由无数的神经元组成的复杂网络,见图14-1。神经元是具有长突起的细胞,它由细胞体、轴突和树突组成。

图14-1 人体神经网络图

每个神经元可以有一或多个树突,其结构如图14-2所示,可以接受刺激并将兴奋传入细胞体。每个神经元只有一个轴突,可以把兴奋从胞体传送到另一个神经元或其他组织,如肌肉或腺体。神经元信息处理与传递过程如图14-3所示。

图14-2 神经元结构

图14-3 神经元信息传递处理过程

神经网络算法就是模拟了人体神经元的工作原理,多个输入参数,分别具有各自的权重,经过激励函数的处理后,得到输出,如图14-4所示。输出可以再对接下一级的神经网络的输入,从而组成更加复杂的神经网络。

图14-4 人工神经网络信息传递处理过程

大脑里的生物神经细胞和其他的神经细胞是相互连接在一起的。为了创建一个人工神经网络,人工神经细胞也要以同样方式相互连接在一起。为此可以有许多不同的连接方式,其中最容易理解并且也是最广泛地使用的,就是把神经细胞一层一层地连结在一起。这一种类型的神经网络就叫前馈网络,如图14-5所示。

图14-5 前馈网络神经网络

如果对预测错误的神经元施加惩罚,从输出层开始层层向上查找预测错误的神经元,微调这些神经元对应的权重,可以达到修复错误的目的,这样的算法就叫做反向传播算法。Scikit-Learn中的神经网络实现都是使用反向传播算法。本文重点介绍算法在安全领域的应用,神经网络的公式推导请参考其他机器学习专业书籍。