人工神经网络(Artificial Neural Network, ANN)没有一个严格的正式定义。它的基本特点,是试图模仿大脑的神经元之间传递,处理信息的模式。
一个计算模型,要被称为为神经网络,通常需要大量彼此连接的节点 (也称 ‘神经元’),并且具备两个特性:
**总结:**神经网络算法的核心就是:计算、连接、评估、纠错、学习
ANN类型的划分主要考虑网络连接的拓扑结构、神经元的特征、学习规则等。目前,已有近40种神经网络模型,其中有反传网络、感知器、自组织映射、Hopfield网络、波耳兹曼机、适应谐振理论等。根据连接的拓扑结构,神经网络模型可以分为:
前向网络
网络中各个神经元接受前一级的输入,并输出到下一级,网络中没有反馈,可以用一个有向无环路图表示。这种网络实现信号从输入空间到输出空间的变换,它的信息处理能力来自于简单非线性函数的多次复合。网络结构简单,易于实现。反传网络是一种典型的前向网络。
反馈网络
网络内神经元间有反馈,可以用一个无向的完备图表示。这种神经网络的信息处理是状态的变换,可以用动力学系统理论处理。系统的稳定性与联想记忆功能有密切关系。Hopfield网络、波耳兹曼机均属于这种类型。
单层感知机是最简单的ANN模型
二类分类的线性分类模型,其输入为样本的特征向量,输出为样本的类别,取1和0二值,即通过某样本的特征,就可以准确判断该样本属于哪一类
用于处理复杂的非线性分类情况。比线性回归、logistic回归灵活。训练的时候注意过拟合。
非线性激活函数
?(?)=1/(1+exp(−?))
特点:
t a n h ( ? ) = ( ? ? − ? ( − ? ) ) / ( ? ? + ? ( − ? ) ) tanh(?)=(?^?−?^(−?))/(?^?+?^(−?) ) tanh(x)=(ex−e(−x))/(ex+e(−x))
特点:
? ( ? ) = m a x ( 0 , ? ) ?(?)=max(0,?) f(x)=max(0,x)
特点:
? ( ? ) = l o g ( 1 + ? ? ) ?(?)=log(1+?^? ) f(x)=log(1+ex)
特点:
Sigmoid & Tanh
Softplus & Relu
常见的损失函数
用于回归中的均方损失:
KaTeX parse error: Expected 'EOF', got '̂' at position 15: ?=1/2 (?−? ̲̂ )^2
用于分类中的交叉熵损失函数:
k=1,2,…,m表示m种类别。在违约预测中m=2
关于交叉熵的简单说明
前向神经网络的计算是前向传播,即信息沿着输入层->隐藏层1->隐藏层2->… ->输出层的路线由前往后。一次传播后,输出层的结果与真实标签存在在一定的误差。此时可以根据误差的结果对每一层的权值进行调整,调整的原则是使得在当前结构下,调优后最终的输出与标签的误差“最小化”。
由于神经网络的层级的特点,每一层节点的权值都会对最后的误差产生影响;反之,得到误差后每一层节点的权值都要进行修正。和之前介绍的逻辑回归模型一样,权值修正的方法也是梯度法,即
更新的权值=当前权值-误差梯度*学习速率
下面以带一个隐藏层的神经网络结构为例介绍权值调整的方法。多隐藏层的调整方法类似。
方案1: 梯度剪切、正则
这个方案主要是针对梯度爆炸提出的,其思想是设置一个梯度剪切阈值,然后更新梯度的时候,如果梯度超过这个阈值,那么就将其强制限制在这个范围之内这可以防止梯度爆炸。
方案2: ReLU等激活函数
ReLU激活函数的导数为1,因此不存在梯度消失爆炸的问题了,每层的网络都可以得到相同的更新速度
方案3: batchnorm
全名是batch normalization,简称BN,即批规范化,通过规范化操作将输出信号x规范化保证网络的稳定性。 BN就是通过对每一层的输出规范为均值和方差一致的方法,消除了带来的放大缩小的影响,进而解决梯度消失和爆炸的问题,或者可以理解为BN将输出从饱和区拉倒了非饱和区。
More:其他一些复杂的结构:残差结构、LSTM等