![深度学习与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=1739452793-PHcafwDR7MiJttcDTI4x03YpWntIXU5E-0-da7f62ce4492658701ac1fd39362049a)
这些给定的数据也叫作数据集(Dataset),把每组数据记作(x(i),y(i)),一共有m组数据。目标就是给出一个模型,根据新给定的x值预测y的值。对于线性回归,使用的模型是一个线性函数,公式如下:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P31_12258.jpg?sign=1739452793-cZNNpyiNdNykdxWWNIlegTkH4CC3qZIN-0-e5f9e40f0b7ecad5957af929f72a1766)
式中,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=1739452793-x1xQOrDKtjXY4nnWo9FJC1OcPhOEfFao-0-0ba6bf410d8919613cdb12b9df8d39fb)
图2.1 线性回归模型
那么如何得到最优的w0和w1呢?将训练的目标转换为最小化下面的函数:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P32_12261.jpg?sign=1739452793-vOzcfCwHURElYsMNFBx3NuzsUAI4aVLk-0-bfb1d9493aceeb1ca6aabf604e8e3bdd)
这个需要被最小化的函数就叫作损失函数(Loss Function),损失函数类型可以有很多种,上面用的这种叫作均方误差(Mean Square Error),常用于解决回归问题,此外交叉熵误差(Cross Entropy Loss)函数常被用于解决分类问题,即:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P32_12263.jpg?sign=1739452793-Tm6HKN4POmsz0iIlJQZZxb9YidD0fQgN-0-64ad90e920aebac2f060f7895dd8c5a5)
可以看到,最终的优化目标就是最小化预测值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=1739452793-IiHGTVALp0r7w93rSWfd3ViboEylEasU-0-46cec18d2263eb628c070e293db6afb8)
(2)参数
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P32_12265.jpg?sign=1739452793-DSKmjOlpJoyBnaoKh3cEHtZ8KY21oaYw-0-c15e74f7e2b4d850af89f1c3d3319cd6)
(3)假设
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P33_12268.jpg?sign=1739452793-RQsjaJZtBYgADIXMXZHJ7ktHrxQF7M8j-0-73fa67593cdee68220548b57c011d817)
(4)损失函数
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P33_12270.jpg?sign=1739452793-F1nMmn8F5zCoxSim1W8KTF3pApZd5FNa-0-ed10672c53c40eb1d64d79e03c1460b1)
为方便表达,把数据集表示为一个m×(n+1)的矩阵X,其中每一行的第一个元素恒为1,其后为x(i)的n个属性,即:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P33_12271.jpg?sign=1739452793-V0HBXirg8toszwnHvVYv3T2Y9sw0WVKQ-0-eb166fa2f6bb6703a9c471169deccb8e)
同时,把目标值也记为向量形式y=(y(1);y(2);…;y(m)),则线性回归问题可以表示为:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P33_12273.jpg?sign=1739452793-tEjE4gBnF48l4ygH9ZNYjF1KbI2QfUk0-0-a3811d837372cbb857bd25b929723e79)
为了求解极值w*,对w求梯度得到:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P33_12275.jpg?sign=1739452793-wpLicm6yK28Xjcp1RY0pNv1rZFitLnKW-0-9b50a0fcba607e341733869b1cf6f8cb)
当XTX为满秩矩阵或正定矩阵时,令梯度,可得:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P33_12277.jpg?sign=1739452793-xpaDBQq4jRXMxvop5c6cYcmZSUTI6xIO-0-11b3234a9a9c5806cb1aa107fc1d48ba)
式中,(XTX)-1——矩阵XTX的逆矩阵。
在解得w*之后,对于任意的样本x,令,则可以预测其回归值为:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P33_12279.jpg?sign=1739452793-nlzKH23ESovD4J0nvWEOCqHJvcYgeA7p-0-c48e52ca0d5f5c6b50eab9c2372fd724)
然而,在现实应用之中,往往很难使XTX满足满秩或者正定矩阵的条件。例如在一些任务中,可能遇到大量的属性,其数目甚至超过样本个数m,即n≥m,导致样本矩阵X的列数明显多于行数,此时XTX将不会满秩。
此外,尽管在线性回归问题中,令可以得到最优参数w*的解析解,但对于更复杂一些的模型或损失函数,通常不存在解析解。2.2节将介绍在机器学习领域中运用更为广泛的梯度下降算法,该算法通过最小化损失函数,训练得到所要求解的参数w*。