![深度学习与MindSpore实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/465/34061465/b_34061465.jpg)
2.1 回归问题算法
回归问题算法通常是利用一系列属性来预测一个值,预测的值是连续的。例如给出一套房子的一些特征数据,如面积、卧室数等来预测房价,利用最近一周的气温变化和卫星云图来预测未来的气温情况等。如果一套房子实际价格为500万元,通过回归分析的预测值为499万元,则认为这是一个比较好的回归分析。在机器学习问题中,常见的回归分析有线性回归(Linear Regression)、多项式回归(Polynomial Regression)、逻辑回归(Logistic Regression)等。本节重点介绍线性回归算法,逻辑回归将在2.3节重点阐述。
线性回归是一个很简单的回归算法,使用它可以快速地了解很多关于深度学习的基础知识。首先看一个只有一个特征值的线性回归问题,给定数据如表2.1所示。
表2.1 给定数据
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-T31_12254.jpg?sign=1739455921-ZEpQimi0PV1vBV57BwVl6GjZSAmvTznl-0-833fcf49b0c1197d49dad1062c57b345)
这些给定的数据也叫作数据集(Dataset),把每组数据记作(x(i),y(i)),一共有m组数据。目标就是给出一个模型,根据新给定的x值预测y的值。对于线性回归,使用的模型是一个线性函数,公式如下:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P31_12258.jpg?sign=1739455921-93wjyThzDQ69R0S1IazxpQCg9Lmil0t4-0-18c72934f988f3ee64f489ceedd7e1f6)
式中,w0,w1——最终需要训练得到的参数。
这个模型也叫作假设(Hypothesis),线性回归的目标就是找到一组最优的w0和w1,使假设贴近表2.1中的数据集。如图2.1所示,希望训练得到的w0和w1能够尽可能拟合所给定的数据集。
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P32_3676.jpg?sign=1739455921-EWYZ7Yhay47ADOTbN0qjr6GcCAoMp6mz-0-ecb210d701e42ab148dc1f037810f59a)
图2.1 线性回归模型
那么如何得到最优的w0和w1呢?将训练的目标转换为最小化下面的函数:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P32_12261.jpg?sign=1739455921-OL6fkAJ5RUtaS51FZ4kzUycXQfrdFG2v-0-10d3c426badb350b286e9ad75fbd5db3)
这个需要被最小化的函数就叫作损失函数(Loss Function),损失函数类型可以有很多种,上面用的这种叫作均方误差(Mean Square Error),常用于解决回归问题,此外交叉熵误差(Cross Entropy Loss)函数常被用于解决分类问题,即:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P32_12263.jpg?sign=1739455921-DutEq0jYTZfzfoexgt44Ecf9x9nbejJo-0-0d6b99aa8ce739c64e17510d9dc644bc)
可以看到,最终的优化目标就是最小化预测值h(x(i))与训练数据中实际的标签y(i)的误差。
在上述情景中,为了便于理解,输入数据x只有一条属性,实际应用中往往会涉及n个属性(n≥1),此时需要训练得到n+1个参数w,w=[w0,w1,…,wn],其中w0为偏置(Bias),wi(i=1,2,…,n)为第i条属性的权重(weight)。综上,可以把回归问题统一表示为以下形式:
(1)数据集
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P32_3694.jpg?sign=1739455921-GtDfPaim6m0Wy9SxrRM5GkEO2ocx060T-0-2f62dada62c58f746a03c7bdab27639c)
(2)参数
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P32_12265.jpg?sign=1739455921-xz6LpIdzCGIHn55UWtdxZ6tDYmtlUSM0-0-7e20d3088629fb3621a32ff4884f462d)
(3)假设
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P33_12268.jpg?sign=1739455921-ART4QQxZJKlD9tOILcvDrPXAqcp3hHUs-0-9154ad8d379abaa87c83d0f62d8b4789)
(4)损失函数
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P33_12270.jpg?sign=1739455921-kQhqSnK1TTocyaYyUJzkDfDAhX997NDH-0-c929ca299647d38352a5de622eee1c44)
为方便表达,把数据集表示为一个m×(n+1)的矩阵X,其中每一行的第一个元素恒为1,其后为x(i)的n个属性,即:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P33_12271.jpg?sign=1739455921-usnt92mcJzwPSI4xAJlZMR533bfd81GI-0-88cb0c36c01d0d6b572ac6556c942bbb)
同时,把目标值也记为向量形式y=(y(1);y(2);…;y(m)),则线性回归问题可以表示为:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P33_12273.jpg?sign=1739455921-GFedlRRV8yor11RHgKYRcqV4pin0TUE1-0-a5e201e2739cb800dbd87cbcedea0fb5)
为了求解极值w*,对w求梯度得到:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P33_12275.jpg?sign=1739455921-HSnWV5AN8Ja2CQGcENZP1eEAOwVYFdto-0-cf72949c764d13507addd53095878a1c)
当XTX为满秩矩阵或正定矩阵时,令梯度,可得:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P33_12277.jpg?sign=1739455921-RqbtseNPMFNq0CHaIdVN8iGZi0jCCZa7-0-e092f87e0d8405e934def14e6b574f21)
式中,(XTX)-1——矩阵XTX的逆矩阵。
在解得w*之后,对于任意的样本x,令,则可以预测其回归值为:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P33_12279.jpg?sign=1739455921-3rZC25yo99IzrbF61JEiwdi5SwRszevo-0-846eecd6af57c91c80536710cf1bd045)
然而,在现实应用之中,往往很难使XTX满足满秩或者正定矩阵的条件。例如在一些任务中,可能遇到大量的属性,其数目甚至超过样本个数m,即n≥m,导致样本矩阵X的列数明显多于行数,此时XTX将不会满秩。
此外,尽管在线性回归问题中,令可以得到最优参数w*的解析解,但对于更复杂一些的模型或损失函数,通常不存在解析解。2.2节将介绍在机器学习领域中运用更为广泛的梯度下降算法,该算法通过最小化损失函数,训练得到所要求解的参数w*。