深度学习入门(2)
深度学习入门(1):
深度学习入门(1)
https://blog.csdn.net/whdehcy/article/details/149645636?fromshare=blogdetail&sharetype=blogdetail&sharerId=149645636&sharerefer=PC&sharesource=whdehcy&sharefrom=from_link
计算梯度
-
数值微分 -->计算耗费时间
-
误差反向传播法 -->快速高效
-
链式法则 反向传播
每从后向前传播一步,求一步的偏导
-
-
梯度确认
用数值微分来确认误差反向传播法求出的梯度结果是否相同
神经网络训练相关技巧
-
更新参数 --最优化
-
随机梯度下降SGD
-
Momentum
α:动量momentum
-
AdaGrad
学习率衰减learning rate decay:随着训练次数增加 学习率逐渐减小
AdaGrad为参数的每个元素适当的调整学习率,同时进行训练
-
Adam
融合了Momentum和AdaGrad,进行超参数的偏置校正
-
-
权重初始值
-
将权重初始值设置为0可以吗?
不可以,那就没有反向更新的意义 那神经网络的不同节点就没有什么意义了
-
Xavier初始值
为了使各层的激活值呈现出具有相同广度的分布,推导了合适的权重尺度
与前一层有n个节点连接时,初始值使用标准差为1/sqrt(n)的分布
-
ReLU的权重初始值
使用He初始值
与前一层有n个节点连接时,初始值使用标准差为sqrt(2/n)的高斯分布
-
-
Batch Normalization BN
BN:调整各层的激活值分布使其拥有适当的广度,以mini_batch为单位,按mini_batch进行归一化
- 可以快速训练,增大学习率
- 不太依赖初始值
- 抑制过拟合 降低Dropout必要性
-
正则化
正则化应对问题:
-
过拟合:
模型参数多,训练数据少
权值衰减:在训练过程中对大的权重进行惩罚,来抑制过拟合
Dropout:在训练过程中随机删除隐藏层的神经元
-
-
超参数
事前需要认为设定的参数
-
超参数的验证:
验证集:验证集用来隔一段epoch计算一下当前模型的一些评价指标,监控训练过程,调整超参数
-
超参数的优化:
设定范围,随机采样,根据评估结果,缩小设定范围,不断重复,缩小到一定程度的时候,选定一个值
贝叶斯最优化
-
卷积神经网络 CNN
-
卷积层
卷积操作:相当于图像处理中的 滤波器运算
卷积核:相当于前面提到的 权重 几个卷积核就有几个输出特征图
偏置 依旧存在
填充 padding:可以实现输出特征图和输入特征图的尺寸相同 填充为了调整输出特征图的尺寸
步幅 stride:卷积核移动的距离
code: 省略
但是现在一般都用pytorch、tensorflow
卷积层一般都直接调用这个函数
Conv2d()
-
池化层
池化:缩小高、长方向上的空间运算
池化:下采样(减少特征数)
最大池化:选取最大的特征保留
平均池化:选取池化计算区域的平均值
池化 对微小的位置变化具有鲁棒性
鲁棒性:模型抗干扰的能力,当输入数据存在噪声、缺失、异常值,或者运行环境发生变化时,鲁棒性强的模型不会轻易失效,仍能给出合理的结果;鲁棒性强的模型能识别被部分遮挡、模糊或光照不均的图像
code:省略
但是现在一般都用pytorch、tensorflow
池化层一般都直接调用这个函数
#pytorch MaxPool2d() #tensorflow MaxPooling2D()
-
CNN
-
卷积层 Conv2d
-
批标准化层 BatchNormalization
-
激活层 Activation
-
池化层 MaxPooling2D / MaxPool2d
-
舍弃层 Dropout
-
拉直层 Flatten
-
全连接层 Dense / Linear
全连接:nn中,相邻层的所有神经元之间都有连接,称为全连接
-
-
可视化
tensorboard:
from torch.utils.tensorboard import SummaryWriter writer = SummaryWriter('../logs') ... ... writer.add_image('totensor',img_tensor,dataformats='CHW') writer.close()
-
代表性CNN
- LeNet
- AlexNet
深度学习
深度学习:加深了层的神经网络 通过隐藏层 就可以创建深度网络
-
经典深度学习网络
-
VGG
由卷积层和池化层构成的基础CNN,特点在于将有权重的层(卷积层/全连接层)叠加至16层(或19层),具备了深度。VGG16 / VGG19
-
GoogLeNet
特点在于网络不仅在纵向上有深度,在横向上也有宽度(Inception结构:并行多路径)
-
ResNet
更深,特点在于引入了横跨层的快捷结构,间隔跳跃式地连接来加深层
-
-
迁移学习
使用ImageNet这个数据集学习到的权重数据,称为迁移学习
将训练完的权重(的一部分)复制到其他神经网络,进行再学习(fine tuning)
适用于数据集较少的时候、
-
应用案例
-
目标检测
从图像中确定目标的位置,并进行分类
R-CNN 区域-卷积神经网络
-
图像分割
在像素水平上对图像进行分类,对输入图像的所有像素进行分类
FCN
-
图像标题的生成
NIC 由深层的CNN和处理自然语言的RNN构成
多模态处理
-
图像风格的变换
-
图像生成
GAN 生成对抗网络
无监督学习
-
自动驾驶
SegNet
-
Deep Q-Network 强化学习
-
迁移学习
将训练完的权重(的一部分)复制到其他神经网络,进行再学习(fine tuning)
适用于数据集较少的时候、
-
应用案例
-
目标检测
从图像中确定目标的位置,并进行分类
R-CNN 区域-卷积神经网络
-
图像分割
在像素水平上对图像进行分类,对输入图像的所有像素进行分类
FCN
-
图像标题的生成
NIC 由深层的CNN和处理自然语言的RNN构成
多模态处理
-
图像风格的变换
-
图像生成
GAN 生成对抗网络
无监督学习
-
自动驾驶
SegNet
-
Deep Q-Network 强化学习
让计算机在摸索试验的过程中自主学习
-