神经网络基础
神经网络基础
人工神经网络(ANN: Artificial Neural Network)是由简单神经元经过相互连接形成网状结构,通过调节各连接的权重值改变连接的强度,进而实现感知和判断。反向传播(BP: Back Propagation)算法的提出进一步推动了神经网络的发展。
1.基本分类
1.1 前馈神经网络
前馈神经网络(Feed Forward Neural Network)是一种单向多层的网状结构,即信息是从输入层开始,逐层向一个方向传递,一直到输出层结束。
- 感知器: 结构最简单的前馈神经网络,也称为感知机,主要用于求解分类问题。
- BP神经网络: 由反向传播学习算法调整参数权重值的前馈神经网络。BP神经网络模型拓扑结构包括输入层、隐层、输出层,利用激活函数来实现从输入到输出的任意非线性映射,从而模拟各层神经元之间的交互。
1.2 反馈神经网络
1.3 自组织神经网络
2. 相关概念
2.1 激活函数
激活函数通常有以下性质:
- 非线性
- 可微性
- 单调性
- f(x) ≈ x
- 输出值范围
- 计算简单
- 归一化
激活函数经常使用Sigmod函数、tanh函数、ReLu函数。
- Sigmod函数: 优点在于输出范围有限,数据在传递的过程中不容易发散,其输出范围为(0,1),可以在输出层表示概率值。缺点是梯度下降非常明显,且两头过于平坦,容易出现梯度消失的情况,输出的值域不对称。
- tanh函数: 输出值在-1到1之间,常用于输出层之前
- ReLU函数: f(x) = max(0, x),有助于解决梯度消失问题
- Sofrmax函数: 常用于多分类问题的输出层,将输出转换为概率分布
- Leaky ReLU函数、Softplus函数、Maxout函数、Softmax函数、Mish函数、Swish函数
2.2 损失函数
损失函数评价的是模型对样本拟合度,预测结果与实际值越近,说明模型的拟合能力越强,对应损失函数的结果就越小。当损失函数比较大时,对应的梯度下降比较快。
- 0-1损失(0-1 Loss):
- 交叉熵损失(Cross-Entropy Loss): 分类问题常用,计算输出和真实标签之间的交叉熵。
- 均方误差(Mean Squared Error, MSE): 回归问题常用,计算输出与目标值的平方差。
- 合页损失(Hinge Loss)
- 平均绝对误差(Mean Absolute Error, MAE)
2.3 学习率
学习率控制每次更新参数的幅度,过高或过低的学习率都可能对模型结果带来不良影响。
常见学习率调整方法:
- 基于经验的手动调整
- 固定学习率
- 均分分步降低策略
- 指数级衰减
- 多项式策略
- AdaGrad动态调整
- AdaDelta自动调整
- 动量法动态调整
- RMSProp动态调整
- 随机梯度下降
- Adam自动调整
2.4 过拟合
过拟合是指模型在训练集上预测效果好,但在测试集上预测效果差。
常用的防止过拟合的方法:
- 参数范数惩罚
- 数据增强
- 提前终止
- Bagging等集成方法
- Dropout
- 批正则化
2.5 优化器(Optimizer)
优化器负责在训练过程中更新网络的权重和偏置。
- SGD(随机梯度下降):
- Adam(自适应矩估计):
- RMSprop(均方根传播):
2.6 模型训练中的问题
-
选择恰当的激活函数
-
变量归一化和标准化
-
权重初始化
-
学习率
-
梯度消失和梯度爆炸:
链式法则: 当权重过小或过大(<1或>1),会分别导致梯度消失和梯度爆炸。
防止梯度消失和梯度爆炸的方法:- 重新设计网络模型
- 使用ReLU激活函数
- 使用长期记忆网络
- 使用梯度截断(Gradient Clipping)
- 使用权重正则化(Weight Regularization)
-
Dropout
-
正则化
-
batch normalization
-
周期/训练迭代次数
-
局部极小值
-
小数据和不平衡的数据
3. 常用机器学习框架
- CNTK
- Caffe
- Caffe2
- PyTorch
- TensorFlow
- Keras
- Chainer
- aynet
- mxnet
- GLUON
- theano

浙公网安备 33010602011771号