type
status
date
slug
summary
tags
category
icon
password

神经网络基础结构
- 神经元模型、感知器(Perceptron)

其实便为一次线性变换
- 神经网络模型

- 在每一层隐藏层后有一个激活函数
激活函数
使线性特征空间扭曲,解决非线性问题
多种激活函数
Sigmoid函数

Tanh函数

ReLU(Rectified Linear Unit)函数

ReLU函数的各种变体- SELU
- ELU
- PReLU
- LeaKy ReLU
Softmax函数
- 二分类时与 sigmoid 函数一样
- softmax 单标签多分类
- sigmoid 多标签分类,多个正确答案
如何选择激活函数
- 不要把各种激活函数串联在一个网络使用
- 如果使用
ReLU,小心设置学习率
- 尽量不使用
sigmoid,可以试试tanh
梯度消失与梯度爆炸
- 多层单神经元网络

梯度消失
其中 则可能因为激活函数,如
Sigmoid 的导数取值范围0.2~0.4而直接进行四次方相乘而接近于 0,即梯度消失,导致网络退化梯度爆炸
其中 就可能因为初始化权重数值比较大,则可能导致指数级增大,即梯度爆炸,导致网络不稳定
产生原因
- 神经网络串联式结构
- 反向传播算法
- 激活函数
- 权重初始化值
解决方案
- 更换激活函数,如
ReLU
- 梯度剪切,如直接限制梯度范围
- 权重正则化,抑制参数更新强度
- 改进网络结构,如跳层结构
梯度下降优化
反向传播原理
将损失函数求偏导,一层一层往回求权重的偏导数

- 最小化损失函数
- 偏导数链式法则求各个参数的偏导
梯度下降法

如何选择
- 数据量不大选批量梯度下降法
- 数据量大选小批量梯度下降法
- 标配 Adam ,但具体看效果
- 其他最优化方法:牛顿法、拟牛顿法等等
神经网络简单代码实现
简单二层

正向传播
反向传播
代码实现
- 数据集
- sklearn 中创建神经网络

- 取出权重
- 反向传播更新

代码文件
模型选择
不同机器学习模型,不同超参数的同类型模型
模型选择的原则
- 模型效果
- 运算速度
- 算力要求,尽量选择算力要求低的
- 可解释性,尽量选择能解释的
各模型对比
神经网络的模型选择
可通过修改:
- 网络层数,
hidden_layer_sizes=(100,50,100),更深层的网络可以学习更复杂特征,但也使得浅层学习能力下降了反而准确率可能下降,足够的宽度可以学到足够的特征
- 激活函数,
activation='relu'
- 替换优化器,
solver='sgd'
代码文件
参数调整训练平台
优缺点和适用条件
优势
- 范围广,能有效解决各类问题,能有效接收各类特征数据
- 效果好,泛化能力好,容错能力高
- 性能好,并行计算,能利用 GPU 和 TPU 计算
缺点
- 训练难度大,参数多,层数深,容易出现梯度爆炸消失,难收敛,对数据量要求大
- 训练时间长
- 黑盒不可解释
适用条件
- 数据规模庞大
- 人工提取特征困难
- 无需解释,只要结果
- Author:空格
- URL:https://www.shipangshuo.xyz/article/Neural-Network
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!










