第二章:神经网络的数学基础---张量运算、梯度下降
1. 张量(tensor)---神经网络的数据表示
数据类型通常是float32,uint8,float64,极少情况下是char :
2D张量:向量数据(samples,features)
3D张量:是时间序列数据(samples,timesteps,features)
4D张量:图像数据(samples,height,width,channels)
5D张量:视频数据(samples,frame,height,width,channels)
2. 张量运算---神经网络的所有变换
1)张量运算是输入数据的几何变换
2)而深度神经网络学到的所有变换都可以简化为数值数据张量上的一些张量运算
3)神经网络本身就可以解释为高维空间中非常复杂的几何变换
4)这种复杂的变换可以通过许多简单的步骤实现
3. 梯度优化---沿梯度的反方向优化网络权重
训练过程:
1)抽取训练样本x与对应的目标y组成的数据批量(分小批量(1<batch_size<sample_size)、真批量(batch_size=1)、批量(batch_size=sample_size):需合理选择批量的大小)
2)在x上运行网络,得到预测值y_pred
3)计算网络在这批数据上的损失,用于衡量y_pred与y之间的距离
4)计算损失相对于网络参数的梯度
5)将参数沿着梯度的反方向移动一点(移动步距:学习率),从而使这批数据上的损失变小
优化器---梯度下降:
1)BGD(Batch Gradient Descent)---全样本计算梯度---速度慢
2)SGD(Stochastic Gradient Descent)---单个样本计算梯度---震荡严重
3)MBGD(Mini-batch Gradient Descent)---小批量样本计算梯度---收敛稳定、容易困在鞍点、选择学习率困难
4)指数加权平均---数据局部平均---减小数据震荡
5)MomentumSGD---对梯度做加权平均---减少震荡、收敛加速
6)NAG(Nesterov Accelerated Gradient)---沿Momentum 指向的方向计算梯度---5)的改进
7)Adagrad---自动调节学习率---可能会提前停止
8)Adadelta---Adagrad的改进---收敛更稳定
9)RMSprop(Root Mean Squre propogation)---Adadelta的特例
10)adam----Momentum + RMSprop
链式法则---深度学习中的反向传播---计算每个参数对损失值的贡献大小
第三章:神经网络入门---层、网络、损失函数、优化器
1. 层---神经网络的一个运算模块
不同的tensor格式或者不同的数据类型需要用到不同的层
层的类型:
1)全连接(fully connected layer)或dense层:处理二维tensor
2)循环层(recurrent layer):处理序列数据
3)卷积层(2D):处理图像数据
2. 网络---多个层链接在一起,表示一系列特定的张量运算
网络拓扑结构类型:
1)线性堆叠网络
2)双分支网络
3)多头网络
4)Inception模块
3. 损失函数与优化器---寻找张量运算的权重
损失函数:权重更新的优化目标,使得损失函数的值最小化
1)二元交叉熵(binary crossentropy):处理二分类任务
2)分类交叉熵(categorical crossentropy):处理多分类
3)均方误差(RMS):处理回归任务
4)CTC:处理序列学习
优化器:依据损失函数值的变化,来更新权重,进而更新整个网络