线性回归(Linear Regression)——原理均方损失小批量随机梯度下降PyTorch实现

Posted 开心果壳好硬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性回归(Linear Regression)——原理均方损失小批量随机梯度下降PyTorch实现相关的知识,希望对你有一定的参考价值。

1. 线性回归

  回归(regression)问题指一类为一个或多个自变量与因变量之间关系建模的方法,通常用来表示输入和输出之间的关系。

  机器学习领域中多数问题都与预测相关,当我们想预测一个数值时,就会涉及到回归问题,如预测房价等。(预测不仅包含回归问题,还包含分类问题)

 

  线性回归(Linear Regression),自变量 $\\textbf x$ 与因变量 $y$ 之间的关系是线性的,即 $y$ 可以表示为 $\\textbf x$ 中元素的加权和。

  我们用 $n$ 来表示数据集中的样本数,对索引为 $i$ 的样本,其输入表示为 $\\textbf x^{\\left ( i \\right )}= \\begin{bmatrix} x_{1}^{\\left ( i \\right )} & x_{2}^{\\left ( i \\right )}\\end{bmatrix}^T$ ,其对应的标签为 $y^{\\left ( i \\right )}$ 。(这里的输入 $\\textbf x$ 包含2个特征)

 

2. 线性模型

2.1 一个简化模型

  假设1:影响房屋价格的关键因素是卧室个数、卫生间个数、居住面积,记为 $x_{1}$ ,$x_{2}$ ,$x_{3}$ 。

  假设2:房屋价格 $y$ 是关键因素的加权和,$y=w_{1}x_{1}+w_{2}x_{2}+w_{3}x_{3}+b$ 。

  上式中的 $x_{1}$ ,$x_{2}$ ,$x_{3}$ 称为特征, $w_{1}$ , $w_{2}$ , $w_{3}$ 称为权重(weight),$b$ 称为偏置(bias),或偏移量、截距。权重决定了每个特征对我们预测值的影响。偏置是指所有特征为0时,预测值应为多少。既是现实中不会有房子居住面积为 $0$ ,或者没有卧室,但我们仍需要偏置项,因为它拓展了模型的表达能力。

 

2.2 线性模型

  给定一个数据集,我们的目标是寻找模型的权重 $\\textbf w$ 和偏置 $b$ ,使得根据模型做出的预测大体符合数据里的真实价格。

  当输入包含 $d$ 个特征时,我们将预测结果 $\\hat{y}\\in\\mathbb{R}$ 表示为:

$$\\hat{y}=w_{1}x_{1}+\\cdots+w_{d}x_{d}+b$$

  我们用向量使表示更简洁,特征向量 $\\textbf x\\in\\mathbb{R}^{d}$ ,权重向量 $\\textbf w\\in\\mathbb{R}^{d}$ ,偏置 $b\\in\\mathbb{R}$ ,即:

$$\\textbf x=\\begin{bmatrix}x_{1} & x_{2} & \\cdots & x_{d} \\end{bmatrix}^T , \\textbf w=\\begin{bmatrix}w_{1} & w_{2} & \\cdots & w_{d} \\end{bmatrix}^T , b$$

  该模型可以用点积式表示:

$$\\hat{y}=\\textbf w^{T}\\textbf x+b$$

  

  上式中,向量 $\\textbf x$ 仅对应于单个数据样本的特征,我们使用 $\\textbf X\\in\\mathbb{R}^{n\\times d}$ 来表示整个数据集的 $n$ 个样本。 $\\textbf X$ 的每一行是一个样本,每一列是一种特征。

  对于特征集合 $\\textbf X$ ,预测值向量 $\\hat{\\textbf y}\\in\\mathbb{R}^{n}$ 可以通过矩阵-向量乘法表示为:

$$\\hat{\\textbf y}=\\textbf X\\textbf w+b$$

 

  在开始寻找最优的模型参数 $\\textbf w$ 和 $b$ 之前,我们还需要了解:模型质量的度量方式、更新和优化模型参数的方法。

 

3. 损失函数——平方损失

  损失函数可以量化目标的真实值和预测值之间的差距。通常使用非负数作为损失,数值越小表示损失越小,完美预测时为 $0$ 。回归问题中最常用的损失函数就是平方损失函数。

  当样本 $i$ 的预测值为 $\\hat{y}^{\\left ( i \\right)}$ ,其对应的真实标签为 $y^{\\left ( i \\right)}$ 时,平方损失可以表示为:

$$l^{\\left ( i \\right)}\\left ( \\textbf w,b \\right)=\\frac{1}{2}\\left( \\hat{y}^{\\left ( i \\right)}-y^{\\left ( i \\right)}\\right)^{2}$$

  $\\frac{1}{2}$ 是为了求导方便。

  为了度量模型在整个数据集上的质量,我们计算在训练集上 $n$ 个样本的损失均值:

$$L\\left( \\textbf w,b \\right)=\\frac{1}{n}\\sum_{i=1}^{n}l^{\\left( i \\right )}\\left( \\textbf w,b \\right )=\\frac{1}{n}\\sum_{i=1}^{n}\\frac{1}{2}\\left( \\textbf w^{T}\\textbf x^{\\left( i \\right)}+b-y^{\\left( i \\right)}\\right)^{2}=\\frac{1}{2n}\\Vert \\textbf X\\textbf w+b-\\textbf y\\Vert_2$$

   在训练模型时,我们希望找到一组参数 $\\left(\\textbf w^{*},b^{*}\\right)$ ,能够最小化在训练集上的损失,表示如下:

$$\\textbf w^{*},b^{*}=\\mathop{\\arg\\min}_{\\textbf w,b}L\\left(\\textbf w,b\\right)$$

 

4. 解析解(显式解)

  线性回归是一个非常简单的优化问题,它的解可以用一个公式简单地表达出来,这类解叫做解析解(Analytical solution)。下面进行求解:

  首先将偏置 $b$ 合并到权重 $\\textbf w$ 中,即 $\\textbf X \\leftarrow \\begin{bmatrix} \\textbf X & \\textbf 1 \\end{bmatrix}$ ,$\\textbf w \\leftarrow \\begin{bmatrix}\\textbf w \\\\ b \\end{bmatrix}$ ,此时,$\\textbf X \\in\\mathbb{R}^{n\\times \\left(d+1\\right)}$ ,$\\textbf w \\in\\mathbb{R}^{d+1}$ 。

  我们的目标是,最小化损失(下式):

$$L\\left( \\textbf w \\right)=\\frac{1}{2n}\\Vert \\textbf y-\\textbf X\\textbf w \\Vert_2$$

  损失函数对参数 $\\textbf w$ 求导:

$$\\frac{\\partial L\\left(\\textbf w \\right )}{\\partial \\textbf w}=\\frac{\\partial L}{\\partial \\left(\\textbf y-\\textbf X\\textbf w\\right)}\\frac{\\partial \\left(\\textbf y-\\textbf X\\textbf w\\right)}{\\partial \\textbf X\\textbf w}\\frac{\\partial \\textbf X\\textbf w}{\\partial \\textbf w}$$

$$=\\frac{1}{n}\\left(\\textbf y-\\textbf X\\textbf w\\right)^{T}_{\\left(1,n\\right)}I_{\\left(n,n\\right)}X_{\\left(n,d\\right)}$$

$$=\\frac{1}{n}\\left(\\textbf y-\\textbf X\\textbf w \\right )^{T}\\textbf X$$

  损失函数是凸函数(不知道为什么,搞懂了再来写),所以最小值满足:

$$\\frac{\\partial L\\left(\\textbf w\\right)}{\\textbf w}=0$$

$$\\frac{1}{n}\\left(\\textbf y-\\textbf X\\textbf w \\right )^{T}\\textbf X=0$$

$$\\textbf w^{*}=\\left(\\textbf X^{T}\\textbf X\\right)^{-1}\\textbf X\\textbf y$$

 

5. 小批量随机梯度下降(minibatch stochasitc gradient descent)

 

 

未完待续。。

 

本文为学习笔记,学习内容来自李沐的https://zh-v2.d2l.ai/

以上是关于线性回归(Linear Regression)——原理均方损失小批量随机梯度下降PyTorch实现的主要内容,如果未能解决你的问题,请参考以下文章

线性回归 Linear Regression

线性回归(Linear Regression)

Python - 线性回归(Linear Regression) 的 Python 实现

线性回归(Linear Regression)

机器学习基石:09 Linear Regression

局部加权线性回归(Local Weighted Linear Regression)+局部加权回归+局部线性回归