深度学习基础训练流程
前言
本文只是本人学习笔记记录,文中部分图片来源网络,如有侵权请联系我进行删除
1、深度学习基础
1.1 深度学习
深度学习是机器学习的一个分支,目的是找到一组良好的参数θ,使得θ表示的数学模型能够很好地从训练集中学到映射关系:fθ:x→y, x, y∈D(train),从而利用训练好的fθ(x),x∈D(test)去预测新样本。神经网络属于机器学习的一个研究分支,它特指利用多个神经元参数化映射函数fθ的模型
-
分类
-
非监督学习
-
监督学习
-
分类
-
回归
-
-
1.2 神经网络主要包含两个流程
-
前向传播,计算损失
- 神经网络前向传播从输入层到输出层:前向传播就是从输入层开始(Layer1),经过一层层的Layer,不断计算每一层的神经网路得到的结果 及通过激活函数(一般使用Relu函数)的本层输出结果 ,最后得到输出的过程,流动的数据
- 一般就是搭建网络,将不同层次的网络层(如:全连接层)堆叠在一起,数据从输入层到输出层,搭建一个函数映射关系
-
反向传播,更新参数
- 前向传播计算出了预测值y¯,就可以根据y¯和真实值y的差别来计算损失L(y¯,y),反向传播就是根据损失函数L(y¯,y)来反方向地计算每一层的a、z、w、b的偏导数(梯度),从最后一层逐层向前去改变每一层的权重,也就是更新参数,其核心是损失L对每一层的每一个参数求梯度的链式求导法则。流动的是梯度
- 反向传播(BP)算法, 更新网络的参数,模型优化, SGD
θ = θ − η d ( J ( θ ) ) d ( θ ) \theta = \theta - \eta\frac{d(J(\theta ))}{d(\theta )} θ=θ−ηd(θ)d(J(θ))
- 流程图
1.3 网络层分类
-
全连接层
- fc
-
激活层
- relu
-
卷积层
- cnn
-
BN层
1.4 全连接层
-
输出节点与每个输入节点相连
-
-
问题
- 过多的参数,导致计算缓慢
- 对于图像信息,容易丢失空间信息
1.5 卷积神经网络
-
卷积层
-
局部相关性
- 只与周围的像素有关
-
权值共享性
- 一个卷积核提取一种特征
-
-
卷积计算
-
相关超参数
- 步长 stride
- 填充 padding
- 卷积核大小 kernel
-
输出尺寸计算
- h新=(h+2*ph-k)/ s + 1
- w新=(w+2*pw-k)/ s + 1
-
-
池化层
- 对图像进行降采样,减少图像参数,平移不变性
1.6 图像处理方向
- 图像识别
- 目标检测
- 语义分割
- 实例分割
1.7 什么是深度学习框架
-
tensorlfow
-
一般编程语言 python,易开发,模块多
-
tensorflow框架训练
-
科学计算库,python的一个包
-
为什么使用框架
-
完成反向传播,自动求导
-
提供基础API接口
- 卷积层、全连接层、池化层等
- 优化器
-
-
-
环境
-
cpu
-
gpu
- 并行计算,矩阵运算
-
-
2 训练
2.1 输入数据(需自己处理)
-
数据归一化
- 使得预处理的数据被限定在一定的范围内,从而消除奇异样本数据导致的不良影响。
-
类别编码
- one-hot
2.2 网络层前向传播(使用API搭建网络)
- 数据在层之间流动,计算每一层的输出
2.3 计算损失(API提供,选择类型)
- MAE
- MAE
- 交叉熵损失
2.4 网络层反向梯度更新(框架完成)
- bp算法
- 梯度在层之间流动,先计算最后一层的梯度,然后梯度回传
2.5 更新参数(API提供,须选择优化器即可)
-
模型参数
- 网络学习的参数,即需要优化的参数
-
超参数
- 提前设定好的参数(学习率),不能被训练的参数
-
常用的优化方法
- SGD
- Adam
3 预测
-
输入数据
-
网络层前向传播
-
输出结果