《动手学深度学习》学习日志2
一、过拟合、欠拟合及其解决方案
- 欠拟合现象:
模型无法达到一个较低的误差 - 过拟合现象:
训练误差较低但是泛化误差依然较高,二者相差较大 - 应对欠拟合的方法
• 换更复杂的模型;
• 增加模型参数 - -应对过拟合的方法:
• -增加训练样本
• 权重衰减:通过为模型损失函数添加惩罚项使学出的模型参数值较小
• 丢弃法:设置丢弃率p,则训练的过程中有p的概率的对参数清零,有1-p的概率的对参数进行拉伸;但丢弃率为1 的时候,返回一个0矩阵 - 错题解析:
• 关于验证数据集的描述错误的是:(A)
A. 测试数据集可以用来调整模型参数
B. 验证数据集可以用来调整模型参数
解析:测试数据集不可以用来调整模型参数,如果使用测试数据集调整模型参数,可能在测试数据集上发生一定程度的过拟合,此时将不能用测试误差来近似泛化误差。
二、机器翻译及其相关技术:
- 数据预处理
• 数据清洗:去除乱码,大小写统一,单词和标点符号之间加空格;
• 分词:字符串->单词组成的列表;
• 建立词典:单词组成的列表->单词id组成的列表,即将所有单词列表连接起来;然后调用Vocab方法转换成id列表;
• 载入数据集:每个句子转换成id列表;;
• 得到数据生成器; - 对于输入输出不等长的情况:
• 介绍Encoder-Decoder结构:
encoder:输入到隐藏状态
decoder:隐藏状态到输出
decoder以结束符eos结束输出;
机器翻译领域常常使用Sequence to Sequence模型:类比Encoder-Decoder结构,其中Decoder结构是一个循环神经网络结构,用于训练和预测;
三、深度卷积神经网络
- LeNet: 在大的真实数据集上的表现并不尽如⼈意。
• 神经网络计算复杂。
• 还没有⼤量深⼊研究参数初始化和⾮凸优化算法等诸多领域。 - 机器学习与神经网络的特征提取:
• 机器学习的特征提取:手工定义的特征提取函数
• 神经网络的特征提取:通过学习得到数据的多级表征,并逐级表⽰越来越抽象的概念或模式。神经网络发展有其限制:数据、硬件 - 一些复杂的卷积神经网络模型
AlexNet模型
• 首次证明了学习到的特征可以超越⼿⼯设计的特征,从而⼀举打破计算机视觉研究的前状。
• Lenet:使用的时sigmol**函数;
• Aexnet:使用的时Reul**函数;引入Dropout稀疏化模型参数;
VGG模型
• VGG:通过重复使⽤简单的基础块来构建深度模型。
• Block:数个相同的填充为1、窗口形状为3×3的卷积层,接上一个步幅为2、窗口形状为2×2的最大池化层。卷积层保持输入的高和宽不变,而池化层则对其减半。
• 每个VGG结构是一样的但是参数可以不一样;多个VGG block组成VGG网络,然后加上两个全连接隐藏层和一个全连接输出层。
NiN模型
• lenet、AlexNet、VGG:卷积层(抽取空间特征)+全连接层(输出分类结果)
• 网络中的网络(NiN):串联多个由卷积层和“全连接”层构成的小⽹络来构建⼀个深层⽹络
• 问题1:卷积层的4维张量如何转化为全连接层的2维向量?
解决方案:使用1×1的卷积核代替全连接计算
• 问题2:NiN去掉了最后的全连接层,用平均池化层代替,如何让得到结果;
解决方案:通过调整最后一个模块的输出的通道数,最后输出等于类别数
• 1×1卷积核作用:
1.放缩通道数:通过控制卷积核的数量达到通道数的放缩。
2.增加非线性。1×1卷积核的卷积过程相当于全连接层的计算过程,并且还加入了非线性**函数,从而可以增加网络的非线性。
3.计算参数少
GoogLeNet模型
• 由Inception基础块组成。Inception块相当于⼀个有4条线路的⼦⽹络。它通过不同窗口形状的卷积层和最⼤池化层来并⾏抽取信息,并使⽤1×1卷积层减少通道数从而降低模型复杂度。可以⾃定义的超参数是每个层的输出通道数,我们以此来控制模型复杂度。
• Inception基础块:
• GoogLeNet模型完整模型结构:
四、总结
- 不足:
• 注意力机制与Seq2Seq模型、Transformer两节没有听懂;需要看书进行理解;
• 没有不求甚解的精神,对于不懂的知识,没有去尽力去弄懂; - 进步:
• 改进了做笔记的方法;之前看视频的时候放小窗,一边看一边记笔记,不能看清视频中的内容,导致老师们讲的多话没有听懂;这次讲视频放全屏,认真听老师的讲解,对我来说这样更好的学习知识,在需要不懂或者有收获的地方暂停视频记笔记,提高了效率;