Task01&Task02. 动手学深度学习——从线性回归出发

最近正在参加一个公益AI课程,学习深度学习,打卡监督自己。由于刚开始学习pytorch和深度学习,进度比较慢,没有时间仔细写笔记,因此先简单列出提纲,以后再进行补充。本文目录如下:

Task01

  • 1.线性回归
  • 2.logistic回归
  • 3.softmax分类模型
  • 4.多层感知机

Task02

  • 1.文本预处理
    1. 语言模型
    1. 循环神经网络基础

1. 线性回归

1.1 线性回归的形式

1.2 平方损失函数

如何衡量线性回归模型拟合得怎么样?一个直观的想法就是预测值和真实值的相差越小越好,但是由于正负会相互抵消,因此不直接进行求和,而是取平方和。

1.3 如何估计系数?

模型中的待估系数包括和,应该如何估计这两个系数呢?
我们的目标是最小化损失函数,也就是

那么就有两种思路,一种是求解析解,另一种是求数值解。

  • 解析解即最小化一阶导数,解出和的表达式。
  • 很多情况下,最小化损失函数无法得到解析解,因此就需要求数值解,这里可以用梯度下降的方法求数值解。

1.4 补充知识点:梯度下降法

2. logistic回归

2.1 sigmoid函数

线性回归可以对y的值是连续值时建模,但我们想象一下,当我们的y值的值域是{0,1}时,用线性回归模型显然不合适,因为等式右边的范围时负无穷到正无穷。

但是,如果我们依然想利用线性回归模型怎么办呢?有一个方法就是想办法将负无穷到正无穷映射到0到1区间。那么怎么映射呢?——sigmoid函数就是一个方法。

2.2 logistic回归的损失函数——交叉熵损失函数

对于样本,我们构造向量 ,使其第(样本类别的离散数值)个元素为1,其余为0。这样我们的训练目标可以设为使预测概率分布尽可能接近真实的标签概率分布。

  • 平方损失估计

然而,想要预测分类结果正确,我们其实并不需要预测概率完全等于标签概率。例如,在图像分类的例子里,如果,那么我们只需要比其他两个预测值和大就行了。即使值为0.6,不管其他两个预测值为多少,类别预测均正确。而平方损失则过于严格,例如比的损失要小很多,虽然两者都有同样正确的分类预测结果。

改善上述问题的一个方法是使用更适合衡量两个概率分布差异的测量函数。其中,交叉熵(cross entropy)是一个常用的衡量方法:

其中带下标的是向量中非0即1的元素,需要注意将它与样本类别的离散数值,即不带下标的区分。在上式中,我们知道向量中只有第个元素为1,其余全为0,于是。也就是说,交叉熵只关心对正确类别的预测概率,因为只要其值足够大,就可以确保分类结果正确。当然,遇到一个样本有多个标签时,例如图像里含有不止一个物体时,我们并不能做这一步简化。但即便对于这种情况,交叉熵同样只关心对图像中出现的物体类别的预测概率。

假设训练数据集的样本数为,交叉熵损失函数定义为

其中代表模型参数。同样地,如果每个样本只有一个标签,那么交叉熵损失可以简写成。从另一个角度来看,我们知道最小化等价于最大化,即最小化交叉熵损失函数等价于最大化训练数据集所有标签类别的联合预测概率。

2.3 估计系数

这里依然使用梯度下降法

2.4 反向传播

3. 多层感知机

3.1 softmax

logistic回归能解决二分类问题,但是当y的取值是多个的情况下,就需要用到softmax进行分类。
softmax运算符(softmax operator)解决了以上两个问题。它通过下式将输出值变换成值为正且和为1的概率分布:

其中

容易看出且,因此是一个合法的概率分布。这时候,如果,不管和的值是多少,我们都知道图像类别为猫的概率是80%。此外,我们注意到

因此softmax运算不改变预测类别输出。

4.多层感知机

其实logistic函数就是一个一层的神经网络模型,但如果想要使网络更加复杂,就可以在其中增加隐藏层。

4.1 不同的激活函数

  • sigmoid
  • tanh
  • ReLu

4.2 反向传播

你可能感兴趣的:(Task01&Task02. 动手学深度学习——从线性回归出发)