动手学深度学习--task1

一、初入深度学习

这是我有幸第一次接触深度学习,在和队友的互相探讨下开启了自己的深度学习之旅,很高兴上交大给予我这次宝贵的学习机会。经过这几天的学习和认识,个人认为深度学习就是神经网络的深化与加强,利用了GPU加速,可以对大型网络(大容量,高复杂度)进行学习。本次学习采用的是Pytorch框架,这里我去官网找了相应的学习文档《入门60分钟》还有本次公益课群里发的《动手深度学习》手册对基本的操作进行了认识与学习。这些代码都是很好理解掌握的,本次学习最重要的目的就是理解每个模型的内在逻辑,程序实现都有现成的包可以调用。这次学习还没有在自己的系统上配置相应的pytorch环境,用的是Kesci平台提供的运行环境。

二、线性回归

1.线性回归数学模型:

动手学深度学习--task1
其中 和 是权重(weight), 是偏差(bias),且均为标量量。它们是线性回归模型的参数(parameter)。
2.损失函数
动手学深度学习--task1
其中
动手学深度学习--task1
3.优化算法
采用小批量梯度下降法:先选取⼀一组模型参数的初始值,如随机选取;接下来对参数进⾏行行多次迭代,使每次迭代都可能降低损失函数的值。在每次迭代中,先随机均匀采样⼀一个由固定数⽬目训练数据样本所组成的⼩小批量量(mini-batch) ,然后求⼩小批量量中数据样本的平均损失有关模型参数的导数(梯度),最后⽤用此结果与预先设定的⼀一个正数的乘积作为模型参数在本次迭代的减⼩小量量。
动手学深度学习--task1

三、softmax回归

softmax回归跟线性回归⼀一样将输⼊入特征与权重做线性叠加。与线性回归的⼀一个主要不不同在于,softmax回归的输出值个数等于标签⾥里里的类别数。
动手学深度学习--task1
动手学深度学习--task1
交叉熵:
动手学深度学习--task1

四、多层感知机

多层感知机在单层神经⽹网络的基础上引⼊入了了⼀一到多个隐藏层(hidden layer)。隐藏层位于输⼊入层和输出层之间。
动手学深度学习--task1
不难发现,即便便再添加更更多的隐藏层,以上设计依然只能与仅含输出层的单层神经⽹网络等价。上述问题的根源在于全连接层只是对数据做仿射变换(affine transformation),⽽而多个仿射变换的叠加仍然是⼀一个仿射变换。解决问题的⼀一个⽅方法是引⼊入⾮非线性变换,例例如对隐藏变量量使⽤用按元素运算的⾮非线性函数进⾏行行变换,然后再作为下⼀一个全连接层的输⼊入。这个⾮非线性函数被称为**函数(activation function)。
常⽤用的**函数包括ReLU函数、sigmoid函数和tanh函数。

五、过拟合、欠拟合

动手学深度学习--task1
欠拟合:训练误差较高,模型复杂度过低。
过拟合:泛化误差较高,模型复杂度过高或数据量较小。