动手学深度学习笔记01

安装

https://blog.csdn.net/qq_18620653/article/details/105329219

配置显卡驱动、CUDA、cuDNN以及说明三者之间的关系

https://blog.csdn.net/qq_18620653/article/details/105329219

配置anaconda

https://blog.csdn.net/qq_18620653/article/details/105335481

数据操作和数据预处理

N维数组是机器学习和神经网络的主要数据结构
创建数组需要:

  1. 形状:例如3x4矩阵
  2. 每个元素的数据类型
  3. 每个元素的值,例如全是0,或者随机数

    注:括号左闭右开。第二个意思为每个三个取一个

多层感知机

感知机存在的问题


感知机是一个二分类的模型
它的求解算法等价于使用批量大小为1的梯度下降
它不能拟合XOR函数,导致第一次的AI寒冬

多层感知机总结

  1. 多层感知机使用隐藏层和激活函数来得到非线性模型
  2. 常用激活函数是Sigmoid,Tanh,ReLU
  3. 使用Softmax来处理多类分类
  4. 超参数为隐藏层数,和各个隐藏层的大小

模型选择+过拟合和欠拟合

训练误差和泛化误差

  1. 训练误差:模型在训练数据集上的误差
  2. 泛化误差:模型在新数据集上的误差

验证数据集:一个用来评估模型好坏的数据集(选择模型超参数)

  1. 例如拿出50%的训练数据
  2. 不要和训练数据混在一块(常见错误)

测试数据集:只用一次的数据集
验证数据集(validation dataset), 也叫验证集(validation set)
书中每次实验报告的准确度都是验证集准确度,而不是测试集准确度。
写的test_data其实是验证数据集
K折交叉验证:当训练数据稀缺时,我们甚至可能无法提供足够的数据来构成一个合适的验证集。

过拟合和欠拟合

模型容量:
拟合各种函数的能力
低容量的模型难以拟合训练数据
高容量的模型可以记住所有的训练数据

第二根曲线过于拟合,导致噪音都被拟合住了。二次曲线比较完美



VC维


总结

  1. 模型容量需要匹配数据复杂度,否则会导致欠拟合和过拟合。
  2. 统计机器学习提供数学工具来衡量模型复杂度。
  3. 实际中一般靠观察训练误差和验证误差

权重衰退

权重衰减(weight decay)是最广泛使用的正则化的技术之一, 它通常也被称为L2正则化。

限制w,不让去拟合很复杂的曲线


总结

  1. 权重衰退通过L2正则项使得模型参数不会过大,从而控制模型复杂度
  2. 正则项权重是控制模型复杂度的超参数

丢弃法

一个好的模型需要对输入数据的扰动鲁棒
在数据里加入噪音,等价于一个正则
丢弃法:在层之间加入噪音(隐含丢弃法也是一个正则方法)


总结

  1. 丢弃法将一些输出项随机置0来控制模型的复杂度
  2. 常作用在多层感知机的隐藏层输出上
  3. 丢弃概率是控制模型复杂度的超参数

数据稳定性+模型初始化

产生原因:进行了太多次矩阵乘法


梯度爆炸的问题

  1. 值超出值域(infinity):对于16位浮点数尤其严重(数值区间6e-5 - 6e4)
  2. 对学习率敏感
    如果学习率太大-》大参数值-》更大的梯度
    如果学习率太小-》训练无进展
    我们可能需要在训练过程中不断调整学习率


梯度消失的问题

  1. 梯度值变为0:对16位浮点数尤为严重
  2. 训练没有进展:不管如何选择学习率
  3. 对于底部层尤为严重
    仅仅顶部层训练的较好
    无法让神经网络更深

总结

  1. 当数值过大或者过小时会导致数值问题
    2.常发生在深度模型中,因为其会对n个数累乘。

模型初始化和激活函数

将每层的输出和梯度都看做随机变量,让它们的均值和方差都保持一致。




总结

合理的权重初始值和激活函数的选取可以提升数据稳定性

posted @ 2023-11-14 16:18  沐羽KIKO  阅读(20)  评论(0编辑  收藏  举报