【第一周】深度学习基础
深度学习和 pytorch 基础
1. 视频学习
1.1 绪论
- 从专家系统到机器学习
- 从传统机器学习到深度学习
- 深度学习的能与不能
1.2 深度学习概述
- 浅层神经网络:生物神经元到单层感知器,多层感知器,反向传播和梯度消失
- 神经网络到深度学习:逐层预训练,自编码器和受限玻尔兹曼机
附:深度学习相关概念 https://blog.csdn.net/qq_38630100/article/details/81037335
2. 代码练习
代码练习需要使用谷歌的 Colab,它是一个 Jupyter 笔记本环境,已经默认安装好 pytorch,不需要进行任何设置就可以使用,并且完全在云端运行。使用方法可以参考 Rogan 的博客:https://www.cnblogs.com/lfri/p/10471852.html 国内目前无法访问 colab,可以安装 Ghelper: http://googlehelper.net/
实验指导书是新版的 mhtml 文件,用新版的 Micrsoft Edge 可以打开
2.1 pytorch 基础练习
基础练习部分包括 pytorch 基础操作,[实验指导下载链接](https://gaopursuit.oss-cn-beijing.aliyuncs.com/202010/AIexp/02 - PyTorch基础.mhtml)
要求: 把代码输入 colab,在线运行观察效果。
结果:
//前面一直运行没有什么问题
//到这里出现问题
观察报错,发现是由于数据类型不匹配的缘故。
将v的类型转换为float即可:
接着运行代码:
2.2 螺旋数据分类
用神经网络实现简单数据分类,[实验指导下载链接](https://gaopursuit.oss-cn-beijing.aliyuncs.com/202010/AIexp/03 - 螺旋数据分类.mhtml)
要求: 把代码输入 colab,在线运行观察效果
**备注:**详细说明可参考 https://atcold.github.io/pytorch-Deep-Learning/zh/week02/02-3/ 中英文字幕的视频讲解在B站:https://www.bilibili.com/video/BV1gV411o7AD?p=4 有精力的同学可以学习。
运行结果:
3. 问题总结
思考下面的问题:
1、AlexNet有哪些特点?为什么可以比LeNet取得更好的性能?
AlexNet与LeNet相比,具有更深的网络结构,包含5层卷积和3层全连接,同时使用了数据增广、Dropout、ReLU改进模型的训练过程。
2、激活函数有哪些作用?
激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。
3、梯度消失现象是什么?
梯度消失,简单点来说,就是整个曲线太平了,太平意味这求导后的值越来越接近0。
如果梯度更新的慢,那么 w下沉的速度那是特别慢,从而导致收敛速度慢,训练时间无限延长。
4、神经网络是更宽好还是更深好?
更深。
在神经元总数相当的情况下,增加网络深度可以比增加宽度带来更强的网络表示能力:产生更多的线性区域。
深度和宽度对函数复杂度的贡献是不同的,深度的贡献是指数增长的,而宽度的贡献是线性的。
加宽神经网络可以让每一层学习到更加丰富的特征,而加深网络可以获得更好的非线性表达能力,可以学习更加复杂的变换,从而可以拟合更加复杂的特征输入。
5、为什么要使用Softmax?
softmax函数softmax用于多分类过程中,它将多个输出映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类。
6、SGD 和 Adam 哪个更有效?
通常来说,使用Adam效果更好。Adam对于稀疏数据有优势,且收敛速度很快,但在用Adam微调模型时,性能很差。