动手学深度学习-学习笔记(一)

写在前面

 动手学习深度学习的学习笔记是在新冠疫情期间参加了深度学习公益训练营的打卡笔记合集,虽然是训练营的基本要求,但是作为对所学内容的总结与提炼还是很有帮助的。

本文主要内容:线性回归,softmax分类模型与多层感知机

一、线性回归

       线性回归输出是一个连续值,因此适用于回归问题。回归问题在实际中很常见,如预测房屋价格、气温、销售额等连续值的问题。回归问题解决的是连续函数的分类问题。线性回归的例子以房价预测为例,考虑通过房屋的面积Area与房龄Age来预测房价Price。

线性回归的基本要素有:

1. 模型:假设房价与面积和房龄的关系为如下线性关系,其中w与b均为未知的模型参数,需要通过数据集来计算得到:   

2. 数据集:一组历史经验真实数据,称为训练集(training set)。训练集中的一组数据为一个样本(sample), 每个样本由不同的特征(feature)及标签(label)组成。对预测房价的数据集中的一个样本(即房屋i),其形式为:(i-area,  i-age,  i-price),前两项为特征,最后一项为标签。

3. 损失函数:用来衡量模型预测的预测值和真实值间的误差,基本的损失函数为平方函数,它是模型计算其迭代计算方向的指标。单个样本与训练集的平方误差函数为:

4. 优化算法:采用小批量随机梯度下降(mini-batch stochastic gradient descent)

(1)选取一组模型参数的初始值,如随机选取;

(2)迭代计算,在每次迭代中,先随机均匀采样一个由固定数目训练数据样本所组成的小批量(mini-batch)B,然后求小批量中数据样本的平均损失有关模型参数的导数(梯度),最后用此结果与预先设定的一个正数的乘积作为模型参数在本次迭代的减小量,即

动手学深度学习-学习笔记(一)_第1张图片

 二、softmax分类模型

         softmax用于解决离散值的分类问题,如图像中字母,物体的识别。softmax的分类问题以图像分类为例,设输入图像的高宽均为2像素,色彩为灰度,图像中的4像素值分别为x1,x2,x3,x4。真实标签为y1,y2,y3分别表示不同类别如狗,猫,鸡。用不同的数值来表示其类别。

         建立全连接网络后的关系如下:

         由于直接使用输出层结果有两个问题:

        (1)数值大小不统一、不方便比较

        (2)真实值标签为离散值,离散值与输出间的误差难以衡量

          故采用softmax运算符,通过下式将输出值变换成值为正且和为1的概率分布:

动手学深度学习-学习笔记(一)_第2张图片

        为提高计算效率采用多维矩阵进行运算,参数权重与偏差参数为: 

动手学深度学习-学习笔记(一)_第3张图片

         矢量运算的计算表达式为:

 交叉熵损失函数

        平方损失估计由于过于严格,采用交叉熵损失函数(cross entropy),其计算形式为:

          计算时,采用如下形式的交叉熵损失函数:

动手学深度学习-学习笔记(一)_第4张图片

三、多层感知机

         神经网络中隐藏层

动手学深度学习-学习笔记(一)_第5张图片

         加入隐藏层后,输入输出的维数对应关系为:

        将隐藏层的中间过程代入得到输入输出关系如下式,可发现引入隐藏层后的神经网络与单层神经网络等价。 

激活函数 

        上述问题的根源在于全连接层只是对数据做仿射变换(affine transformation),而多个仿射变换的叠加仍然是一个仿射变换。解决问题的一个方法是引入非线性变换,例如对隐藏变量使用按元素运算的非线性函数进行变换,然后再作为下一个全连接层的输入。这个非线性函数被称为激活函数(activation function)。

常用的激活函数有:

(1)ReLU函数 

ReLU(rectified linear unit)函数是一个非线性变换。给定元素x,该函数定义为

可以看出,ReLU函数只保留正数元素,并将负数元素清零。ReLU函数曲线及导数曲线分别为:

(2)sigmoid函数

sigmoid函数可以将元素的值变换到0和1之间:

 sigmoid函数的导数:

sigmoid函数曲线及导数曲线分别为:

 

(3)tanh函数

tanh(双曲正切)函数可以将元素的值变换到-1和1之间:

 依据链式法则,tanh函数的导数为:

tanh函数及其导函数曲线分别为:

 

 激活函数选择考虑:

 ReLu函数是一个通用的激活函数,目前在大多数情况下使用。但是,ReLU函数只能在隐藏层中使用。

用于分类器时,sigmoid函数及其组合通常效果更好。由于梯度消失问题,有时要避免使用sigmoid和tanh函数。

在神经网络层数较多的时候,最好使用ReLu函数,ReLu函数比较简单计算量少,而sigmoid和tanh函数计算量大很多。

在选择激活函数的时候可以先选用ReLu函数如果效果不理想可以尝试其他激活函数。

多层感知机:

含有至少一个隐藏层的由全连接层组成的神经网络,且每个隐藏层的输出通过激活函数进行变换。多层感知机的层数和各隐藏层中隐藏单元个数都是超参数。考虑激活函数后的多层感知机为: 

你可能感兴趣的:(动手学习深度学习,机器学习)