深度学习笔记(2)——神经网络的组成

神经网络由这几部分组成
1、层
2、输入数据和相应的目标
3、损失函数:用于学习的反馈信号
4、优化器:决定学习过程如何进行
深度学习笔记(2)——神经网络的组成_第1张图片

层:神经网络的基本数据结构;图像数据保留在4D张量中,一般用二维卷积层来处理

损失函数和优化器:
损失函数——在训练过程中需要将其最小化,它能衡量当前任务是否成功完成
优化器——决定如何根据损失函数对神经网络的参数进行更新,它执行的是随机梯度下降的某个变体。

神经网络的优化过程:
1)抽取训练样本x和对应的目标y组成数据批量
2)在x上运行网络(这一步被称为前向传播),得到预测值y_pred
3)计算网络在这批数据上的损失,用于衡量y_pred和y之间的距离
4)计算损失相对于网络参数的梯度(一次反向传播)
5)将参数沿着梯度的反方向移动一点(步长),从而使得这批数据上的损失减小一点,这种方法就是小批量随机梯度下降

训练集,验证集和测试集:
在训练集上训练模型,然后的验证集上评估模型,一旦找到了最佳参数,就在测试数据上在最后测试一次。
数据量比较大的时候可以采用简单的留出验证方法深度学习笔记(2)——神经网络的组成_第2张图片
当数据量比较小的时候,需要对数据划分做一些处理,避免数据量不够而无法拟合或者重复数据的训练带来过度拟合。

K折验证:将数据划分为大小相同的K个分区,对于每个分区i,在剩下的K-1个分区上训练,在第i个分区上评估模型,共训练K次,最终的分数等于K个分数的平均值
带有打乱数据的重复K折验证:在每次将数据划分为K个分区之前先将数据打乱,最终分数是每次K折验证分数的平均值,但是要注意到,这种方法一共要训练和评估P*K个模型(P是重复的次数),计算代价会非常大

选择数据的划分方法时需要注意以下几点
1、数据代表性:如果希望训练集和测试集都能够代表当前数据,那么需要在数据划分为训练集和测试集之前,将数据随机打乱
2、时间箭头:如果想要根据过去来预测未来,那么划分数据钱不应该打乱数据,要保证测试集中所有的数据的时间都要晚于训练集的数据
3、数据冗余:如果数据中的某些数据点出现了两次,那么打乱数据并划分为训练集和验证集会导致训练集和验证集之间的数据冗余,这非常糟糕,所以一定要保证训练集和验证集之间没有交集

常见的优化器,可以参考这位大佬的博客:https://www.cnblogs.com/wisteria68/p/10849109.html

你可能感兴趣的:(深度学习笔记,神经网络,深度学习)