【第一部分】视频学习心得及问题总结
1.视频学习心得
蔺一迪:老师在第一节中首先介绍了深度学习的一些数学基础包括线性代数中矩阵线性变化、秩的概念,以及低秩近似等内容,还讲述了损失函数、误差函数等内容。
第二节中,讲述了卷积网络。新的神经网络的提出必然能够解决一些现有问题,因为传统神经网络权重矩阵的参数过多,会导致过拟合现象,因此提出了卷积神经网络。卷积网络由卷积层、池化层以及全连接层组成。而卷积网络有很多层,层数越深,就越抽象,不同卷积层关注不同的地方。总体感觉是随着深度的增加,成一个从大到小 从整体到部分的趋势。之后讲述了几个典型的卷积网络,这里我想主要理解Alexnet,Alexnet基于之前的网络有以下几个优点:
1 防止过拟合:dropout随机关闭部分神经元
2 解决梯度消失问题:ReLU激活函数收敛速度快,可以解决Sigmoid函数带来的梯度消失问题
3 数据增强:通过平移、翻转、对称等方法将样本倍增,从而拥有更多数据
卢浩:1.卷积是对两个实变函数的一种数学操作;2.卷积不易过拟合;3.分类任务中往往最大值池化比平均值池化效果好。
俞子君:卷积网络神经是图像处理方面的核心算法之一。比起传统神经网络来说,卷积神经网络有更多层组成,不同层之间关注地方不同,提高了学习的精确度,同时也提升了学习的效果。在听的过程中,对于思想有一定了解,但对于具体函数,理解起来还是有些困难。
李剑飞:通过本次视频的学习,我了解到了深度学习是需要通过概率学来得到规律,通过数据结构来优化模型。所以如果想要专研深度学习,需要具备很好的数学基础。第二个视频是关于卷积神经网络的,它不仅解决了我上一次作业中对于卷及神经相关的问题,同时让我了解了CNN的原理和基础结构:由卷积和池化互相交替,最后加上全连接(大部分参数量都在全连接中)。同时让我了解到了典型网络结构的发展史和各个阶段代表结构的原理(从AlexNet到VGG又到GoogleNet再到ResNet),在层数不断增加的情况下仍然能保证不会出现梯度消失的情况,并且将top5的误差率从16.7%下降到最后的3%左右。不得不再一次佩服这些大佬的智慧。
林思源:对神经网络的实现原理有了基本的理解,对卷积神经网络和传统神经网络的异同和优缺点也有了了解。对于卷积神经网络,我的理解是相对于传统的全连接神经网络,卷积神经网络相对于是做了优化,通过池化的操作提取出特征信息的同时还减少了参数,加快了训练速度,而且对于防止过拟合有一定的作用。
2.问题总结
俞子君:过拟合的出现原因。
蔺一迪:1 为什么参数越多,就会过拟合(我的理解是:参数越多,考虑的细节也就越多,比如课程中讲到训练图像是哈士奇,但是测试集放入金毛时就推出不是狗的结果,因为过于细节化,不够泛化)
2 该怎样设置步长stride呢?(是按照往常经验亦或有什么规律)
李剑飞:越深的网络越难训练吗?如果用Resnet的方法来解决梯度消失的问题,是不是可以无限制的加深层数?
林思源:卷积神经网络结构的结构及其作用,结构的变化对最终的训练结果会造成什么差异。
李瑞涛:
AlexNet分层解析这部分有点梳理不清
【第二部分】代码练习
俞子君:
1.卷积神经网络
可以明显看出来在卷积神经网络上的训练要好于在小型全连接网络上的训练。
但是打乱像素顺序后,可以看出卷积神经网络的卷积和池化难以发挥他该有的作用,甚至比小型犬连接网络的训练效果还差。
2.数据分类
有一个识别错误,准确率尚可
3.用VGG16进行分类
用VGG网络后,准确率确实提高了。
李剑飞:
*1.MNIST 数据集分类*
*1.3.在小型全连接网络上训练*
*1.4.在卷积神经网络上训练*
通过上面的测试结果,可以发现:含有相同参数的 CNN 效果要明显优于简单的全连接网络。(卷积和池化)
*1.5.打乱像素顺序再次在两个网络上训练与测试*
在全连接网络上训练与测试:
在卷积神经网络上训练与测试:与上面相比较可以看出,在打乱顺序之后的训练和测试中全连接网络的效果更好。
*2.CIFAR10 数据集分类*
*2.3.测试*
从测试集中取出8张图片:
把图片输入模型,看看CNN对图片的识别结果:
看看网络在整个数据集上的表现:(准确率还可以,通过改进网络结构,性能还可以进一步提升)
3. *使用 VGG16 对 CIFAR10 分类*
*3.3.网络训练*
使用一个简化版的 VGG 网络,就能够显著地将准确率由 63%,提升到 83.94%:
*4.感受和总结:*
通过三个实验,让我们体验到了从最简单的全连接网络到卷积神经网络到VGG16的实施以及效率逐步提升。让我对于之前的视频学习有了一个更具体形象的理解,能大概理解代码的意思和内容,但是靠自己依然无法写出(很多库和函数的调用并不是很会)。希望能够慢慢进步!
卢浩:
- 卷积神经网络
通过卷积和池化,卷积神经网络的效果明显优于简单的全连接网络
打乱后卷积神经网络的性能明显下降,儿全连接网络性能几乎没有变化
-
CIFAR10 数据集分类
考虑到这些图片连我都认不出来,这些识别结果还不错
3.使用 VGG16 对 CIFAR10 分类
太对辣!真的显著提高了准确率
蔺一迪:
*1. MINIST数据集分类*
1 观察CNN网络结构,发现是以下结构:卷积conv1-relu函数-池化pool、卷积conv2-relu函数-池化pool、全连接层-relu、全连接层-softmax
2 transforms.Normalize((0.1307,),(0.3081,))])),batch_size=1000,shuffle=True)
这是标准化的过程,需要将数据加工成:(Data-均值)/标准差,从而加快神经网络训练其中均值为0.1307,方差为0.3081。
3 代码的步骤总结
1)通过train_loader = torch.utils.data.DataLoader下载数据
2)通过class CNN(nn.Module):创建一个CNN网络,将卷积、全连接、池化连接起来
3)训练函数def train(model):以及测试函数def test(model):在训练函数中计算梯度、损失函数;在测试函数中得到正确预测结果的数量
4)分别在小型全连接网络与卷积神经网络中训练函数,最终得到训练效果
5) 加入data = perm_pixel(data, perm)函数打乱数字顺序再进行训练
4 对比小型全连接网络与卷积神经网络,我们可以看出卷积神经网络有明显的优势,loss值更小,训练效果更好。
小型全连接网络loss值
卷积神经网络loss值
*2.CIFAR10数据集分类*
3 训练效果
给出一组图片及其标签
网络得到的结果,仍有一些差距,最终在整个数据集中正确率达64%。
*3.使用 VGG16 对 CIFAR10 分类*
这里代码出现了两个错误
首先是定义self.cfg在函数VGG内部,其实应该在外部
其次报错RuntimeError: mat1 dim 1 must match mat2 dim 0,发现是图像大小不一样的原因
最后解决错误后得到最终结果,正确率为83.49%。
林思源:
1.MNIST数据集分类:
小型全连接网络上训练正确率达到89%
卷积神经网络上训练正确率达到95%,以上说明卷积网络相对于全连接网络的提征和泛化能力更好。
在打乱像素之后,全连接神经网络正确率浮动不大,基本保持一致。
卷积神经网络正确率下降较多,是因为在打乱像素后,训练集相较之前的特征性弱了很多。但全连接网络仍然能最大程度提取像素关系,而卷积网络只能利用较弱的像素局部关系。
2.CIFAR10数据集分类:
经过训练之后,实际上错误率还是比较高,预测的八个选集中错了三个。
最终的正确率是61%。
3.VGG16对CIFAR10分类:
由于连不到GPU,又到了ddl,暂且认为实验结果和预期一样,正确率达到84%左右。
相较于CNN结构的分类,VGG16在正确率上有显著提升,由上所述,对于网络结构对结果的影响还不太明白,所以不知道为什么。
李瑞涛: