BP神经网络入门与银行授信额度预测实战

一、生物神经元

如图所示,神经网络中最基本的单元是神经元(neuron)模型。在生物神经网络的原始机制中,每个神经元通常都有多个树突(dendrite),一个轴突(axon)和一个细胞体(cell body),树突短而多分支,轴突长而只有一个;在功能上,树突用于传入其它神经元传递的神经冲动,而轴突用于将神经冲动传出到其它神经元,当树突或细胞体传入的神经冲动使得神经元兴奋时,该神经元就会通过轴突向其它神经元传递兴奋。

 

二、M-P仿生神经元模型

“M-P神经元模型”对这一结构进行了抽象,也称“阈值逻辑单元“,其中树突对应于输入部分,每个神经元收到n个其他神经元传递过来的输入信号,这些信号通过带权重的连接传递给细胞体,这些权重又称为连接权(connection weight)。细胞体分为两部分,前一部分计算总输入值(即输入信号的加权和,或者说累积电平),后一部分先计算总输入值与该神经元阈值的差值,然后通过激活函数(activation function)的处理,产生输出从轴突传送给其它神经元。m-p神经元模型如下图所示:

每个神经元接受n个来自其他神经元或者直接输入的输入信号(图中分别为x1,x2, … , xn),这些输入信号分别与每条 “神经” 的权重(w1, w2, … , wn)相乘,并累加输入给当前神经元(。每个神经元设定有一个阈值θ,累计值需要减去这个阈值,并且将最终结果通过“激活函数”(图中的f)挤压到(0,1)范围内,最后输出。激活函数f将输入映射为输出值“0”或者“1”,显然“1” 对应神经元兴奋,“0”对应神经元抑制。激活函数把可能在较大范围内变化的输入值挤压到(0,1)输出值范围内,故有时称为挤压函数。把许多这样的神经元按一定的层次结构连接起来,就得到了神经网络。

 

三、感知机与多层网络

感知机(Perceptron)是由两层神经元组成的一个简单模型。但只有输出层是M-P神经元,即只有输出层神经元进行激活函数处理,也称为功能神经元(functional neuron);输入层只是接受外界信号(样本属性)并传递给输出层(输入层的神经元个数n等于样本的特征值数目)。

这样一来,感知机与logistic regression的思想基本是一样的,都是通过对属性加权与另一个常数求和,再使用sigmoid函数将这个输出值压缩到0-1之间,从而解决分类问题。不同的是感知机的输出层应该可以有多个神经元,从而可以实现多分类问题,同时两个模型所用的参数估计方法十分不同。

然而我们遇到的大多数分类问题都不是线性可分的,如异或问题(XOR)。为解决为非线性可分问题,我们引入了多层功能神经元。下图这个简单的两层感知机就能解决异或问题,图中,输出层与输入层之间的一层神经元,被称为隐层或隐含层。隐含层和输出层神经元都是拥有激活函数的功能神经元。

更常见的神经网络是下面的为“多层前馈神经网络”(multi-layer feedforward neural network),该结构满足以下几个特点:

  • 每层神经元与下一层神经元之间完全互连
  • 神经元之间不存在同层连接
  • 神经元之间不存在跨层连接

这里的“前馈”指的是网络拓扑结构中不存在环或回路,而不是指该网络只能向前传播而不能向后传播。

神经网络的学习过程就是根据训练数据来调整神经元之间的“连接权”以及每个神经元的阈值,换句话说:神经网络所学习到的东西都蕴含在网络的连接权与阈值中

四、BP神经网络算法(error Back Propagation Neural Network)

随着隐藏层数量的增多,简单感知机的权重和阈值调整规则显然不够用了。误差逆传播算法(error BackPropagation 简称为BP)正是为学习多层前馈神经网络而设计。它是迄今为止最成功的神经网络学习算法。

上图为一个单隐层BP神经网络的拓扑结构,BP神经网络算法也使用梯度下降法(gradient descent),以单个样本的损失函数(loss function,通常使用均方误差)的负梯度方向对权重进行调节。可以看出:BP算法首先将误差反向传播给隐层神经元,调节隐层到输出层的连接权重与输出层神经元的阈值Θ;接着根据隐含层神经元的误差,来调节输入层到隐含层的连接权值与隐含层神经元的阈值γ。BP算法基本的推导过程与感知机的推导过程原理是相同的。

BP神经网络算法的伪代码实现:

学习率η∈(0,1)控制着沿反梯度方向下降的步长,若步长太大则下降太快容易产生震荡,若步长太小则收敛速度太慢,一般地常把η设置为0.1,有时更新权重时会将输出层与隐含层设置为不同的学习率。

五、使用BP神经网络算法预测银行客户授信额度

BP神经网络算法对于预测信用风险具有天然优势:

  1. BP神经网络实质上是输入到输出的映射,数学理论证明三层的神经网络就能够以任意精度逼近任何非线性映射关系。我国的个人信用等级评估起步比较迟,相关信息残缺不全。BP网络逼近任意非线性映射关系的能力对于解决几乎没有规则、多约束条件或数据不完全的问题是非常适合的。
  2. BP神经网络的后天学习能力使之能够随环境的变化而不断学习。在进行信用等级评估与预测时,受到评估数据带有模糊性的特点制约,能够从未知模式的大量复杂数据中发现规律,与传统的评价方法相比,表现出更强的功能。
  3. BP神经网络方法是一种自然的非线性建模过程。它克服了传统分析过程的复杂性及选择适当模型函数形式的困难,无需分清存在何种非线性关系,给建立模型与分析带来了极大的方便。
  4. BP神经网络方法较好地保证了评估与预测结果的客观性。在传统的个人信用风险评估中,大部分的决定因素是信贷员个人主观的判断,而BP神经网络可以再现专家的经验、知识和直觉思维,较好地保证了评估与预测结果的客观性。

接下来我们将使用BP算法进行监督式学习,预测银行客户授信额度。首先将数据集归一化处理消除不同量纲的影响。

然后,构建三层神经网络模拟信用风险评估过程,其中,输入层节点数为3,分别对应信用风险评估选择的3个指标:收入、存款、失信;隐层节点数为4;输出层节点数为1,其输出值为模型预测信用额度。

模型的训练流程包括前向传播和反向传播。即在(0,1)范围内先初始化连接权和阈值,然后训练样本,得到模型输出结果后更新连接权和阈值(链式求导)使得损失函数最小化(均方误差最小)。

(代码略)

训练得到的模型预测能力如下(MSE=0.02451):