2024年夏季《深度学习》学习报告——第一周
姓名和学号? | 仲舟,1145141919810 |
---|---|
本实验属于哪门课程? | 中国海洋大学24夏《深度学习》 |
学习内容? | 深度学习基础 |
博客地址? | this |
【第⼀部分:代码练习】
在⾕歌 Colab 上完成 pytorch 代码练习中的 2.1 pytorch基础练习、2.2螺旋数据分类,关键步骤截图,并附⼀些⾃⼰的想法和解读。
实验
想法:
为啥报错了?
解读:
因为下载的plot_lib.py需要读入一个叫“ziegler.png”的图片,如下图所示。
我无法获取到该图片,但无法获取意味着不能进行下一步,所以我随机弄了个图片作为替换。
【第⼆部分:问题总结】
思考下⾯的问题:
1、AlexNet有哪些特点?为什么可以比LeNet取得更好的性能?
(1)AlexNet采用了ReLu激活函数,也就是在卷积,池化后又增加了ReLu激活函数。ReLu在这里代替了Sigmod函数对输入的非线性进行了优化,相比较Sigmod函数,Relu的计算成本更低(Relu基本等于一个If_else的计算逻辑而Sigmod 或者 Tahn等激活函数则需要更庞大的计算陈本),同时,tanh或者sigmod在饱和区域容易产生梯度消失而减慢收敛速度,而ReLu不会。同时由于ReLu函数的构造,可以把不明显的信号替换为0,增加矩阵的稀疏性,从而防止过拟合。
(2)AlexNet在全链接层采用了DropOut的技术,我们在前向传播的时候,让某个神经元的激活值以一定的概率p(0.5)停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。
(3)LRN的首次运用出现于AlexNet,其原理大致为对前后几层相邻的卷积,通过一系列的数学运算,使得各个卷基层的同一个位置的卷积数值,显著的变得更显著,抑制其他信息,减小不同层之间的不相关性。
2、激活函数有哪些作用?
让多层神经网络可以运作,拟合非线性函数,使神经网络可以对非线性数据进行建模。激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。
3、梯度消失现象是什么?
采用了不合适的损失函数, 如果我们使用标准化初始w,那么各个层次的相乘都是0-1之间的小数,而激活函数f的导数也是0-1之间的数,其连乘后,结果会变的很小,导致梯度消失。若我们初始化的w是很大的数,w大到乘以激活函数的导数都大于1,那么连乘后,可能会导致求导的结果很大,形成梯度爆炸。
4、神经网络是更宽好还是更深好?
(1)提升同样效果需要增加的宽度远远超过需要增加的深度。
(2)宽而浅的网络可能比较擅长记忆,却不擅长概括,即泛化能力差
5、为什么要使用Softmax?
softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类
6、SGD 和 Adam 哪个更有效?
Adam: 由于其易用性和快速收敛的特点,Adam非常适合在需要快速得到结果的场景中使用,特别是在计算资源有限或模型较复杂时。
SGD: 如果模型训练时出现过拟合,或者当你有足够的时间和资源来精细调整学习率时,SGD可能是更好的选择。对于大规模分布式训练,SGD的泛化能力可能更优。
总之,选择哪种优化算法取决于具体任务、模型的复杂性、可用的计算资源以及是否需要模型有更好的泛化能力。在实践中,可能需要尝试不同的优化算法,以找到最适合当前任务的选项。