【深度学习】线性回归(Linear Regression)——原理、均方损失、小批量随机梯度下降
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)
5.1 梯度下降
大多数深度学习的问题无法得到解析解,这种情况下,我们仍可以有效的训练模型。
梯度下降(gradient descent)算法是深度学习中常用的优化算法,它可以优化几乎所有的深度学习模型,原理是通过不断地在损失函数递减的方向上更新参数来降低损失。
梯度下降最简单的用法是计算损失函数(训练集中所有样本的损失均值)关于模型参数的导数(又称梯度)。
简要过程如下:
首先随机初始化模型参数 $\textbf w_{0}$ ,
然后按照 $\textbf w_{t}=\textbf w_{t-1}-\eta\frac{\partial L\left(\textbf w\right)}{\partial \textbf w_{t-1}}$ 公式来更新参数,$t$ 为迭代参数,$\eta$ 为学习率(步长)。
5.2 小批量随机梯度下降
在实际的训练中,梯度下降的方法可能非常慢,因为每一次更新参数之前,必须遍历整个训练集。所以,我们通常会在每次需要计算更新的时候随机抽取一小批样本,这种变体叫做小批量随机梯度下降(minibatch stochastic gradient descent)。在这种方法中,我们随机采样若干个样本来近似整个训练集的损失。
过程如下:
在每次迭代中,我们首先随机抽样一个小批量 $\Beta$ ,它由固定数量的训练样本组成,
然后我们计算小批量的平均损失关于模型参数的导数(梯度), $\left|\Beta\right|$ 为批量大小(batch size),并乘上一个学习率(learning rate) $\eta$ ,从当前参数值中减去:
$$\textbf w\leftarrow \textbf w - \frac{\eta}{\left|\Beta\right|}\sum_{i\in\Beta}\frac{\partial l^{\left(i\right)}\left(\textbf w\right)}{\partial \textbf w}$$
对于线性回归的参数 $\textbf w$ 和 $b$ ,可以明确地写成如下形式:
$$\textbf w \leftarrow \textbf w - \frac {\eta} {\left|\Beta\right|}\sum_{i\in\Beta}\frac{\partial l^{\left(i\right)}\left(\textbf w,b\right)}{\partial \textbf w} = \textbf w - \frac{\eta}{\left| \Beta \right|} \sum_{i \in \Beta} \textbf x^{\left(i\right)} \left( \textbf w^{T} \textbf x^{\left(i\right)} + b - y^{\left(i\right)} \right)$$
$$b \leftarrow b - \frac {\eta} {\left|\Beta\right|}\sum_{i\in\Beta}\frac{\partial l^{\left(i\right)}\left(\textbf w,b\right)}{\partial b} = b - \frac{\eta}{\left| \Beta \right|} \sum_{i \in \Beta} \left( \textbf w^{T} \textbf x^{\left(i\right)} + b - y^{\left(i\right)} \right)$$
本文为学习笔记,学习内容来自李沐 https://zh-v2.d2l.ai/
【深度学习】线性回归(Linear Regression)——原理、均方损失、小批量随机梯度下降的更多相关文章
- TensorFlow 学习笔记(1)----线性回归(linear regression)的TensorFlow实现
此系列将会每日持续更新,欢迎关注 线性回归(linear regression)的TensorFlow实现 #这里是基于python 3.7版本的TensorFlow TensorFlow是一个机器学 ...
- Ng第二课:单变量线性回归(Linear Regression with One Variable)
二.单变量线性回归(Linear Regression with One Variable) 2.1 模型表示 2.2 代价函数 2.3 代价函数的直观理解 2.4 梯度下降 2.5 梯度下 ...
- 线性回归 Linear regression(1)线性回归的基本算法与求解
本系列内容大部分来自Standford公开课machine learning中Andrew老师的讲解,附加自己的一些理解,编程实现和学习笔记. 第一章 Linear regression 1.线性回归 ...
- 机器学习方法:回归(一):线性回归Linear regression
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 开一个机器学习方法科普系列:做基础回顾之用,学而时习之:也拿出来与大家分享.数学水平有限,只求易懂,学习与工 ...
- 斯坦福第二课:单变量线性回归(Linear Regression with One Variable)
二.单变量线性回归(Linear Regression with One Variable) 2.1 模型表示 2.2 代价函数 2.3 代价函数的直观理解 I 2.4 代价函数的直观理解 I ...
- 斯坦福CS229机器学习课程笔记 Part1:线性回归 Linear Regression
机器学习三要素 机器学习的三要素为:模型.策略.算法. 模型:就是所要学习的条件概率分布或决策函数.线性回归模型 策略:按照什么样的准则学习或选择最优的模型.最小化均方误差,即所谓的 least-sq ...
- 机器学习 (一) 单变量线性回归 Linear Regression with One Variable
文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang的个人笔 ...
- 机器学习 (二) 多变量线性回归 Linear Regression with Multiple Variables
文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...
- ML 线性回归Linear Regression
线性回归 Linear Regression MOOC机器学习课程学习笔记 1 单变量线性回归Linear Regression with One Variable 1.1 模型表达Model Rep ...
随机推荐
- 字节跳动基于Apache Hudi构建EB级数据湖实践
来自字节跳动的管梓越同学一篇关于Apache Hudi在字节跳动推荐系统中EB级数据量实践的分享. 接下来将分为场景需求.设计选型.功能支持.性能调优.未来展望五部分介绍Hudi在字节跳动推荐系统中的 ...
- 轻松搞定webpack5.x
源码地址:https://gitee.com/cyp926/webpack-project.git "webpack": "^5.46.0", "we ...
- Linux命令集锦之·字符截取命令
时间:2018-11-15 记录:byzqy 字符截取命令: cut.printf.awk.sed cut $ cut [选项] 文件名 选项: -f 列号:提取第几列: -d 分隔符:按照指定分隔符 ...
- java对象的引用级别
解释 在java中也有引用的概念,其实就可以认为是变量.标题中的引用级别是指变量与对象之前的引用级别.java中分为4种,按引用强弱关系排序分别是:强引用.软引用.弱引用.虚引用. 强引用(Stron ...
- MySQL-SQL基础-查询1
#子查询-某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候就要用到子查询.用于子查询的关键字主要包括: in.not in.=.!=.exists.not exist ...
- shell循环语句until
until 条件 do 执行命令 done until 循环与 while 循环在处理方式上刚好相反. 当条件成立的时候,停止循环.
- C# Equals方法和==有什么区别
开发工具:VS2019 一.关于这两个比较,需要从值类型和引用类型两方面来说 (A)先说值类型 上图: 因为在对值类型进行比较时候,不管 .Equals() 方法还是 == 方法,都是对值类型变量(图 ...
- vim的配置文件
网上一个比较常见的配置文件设置如下,这个配置还是很棒的,尤其创建脚本或者c文件时 " All system-wide defaults are set in $VIMRUNTIME/debi ...
- Identity用户管理入门一(框架搭建)
理论知识微软官方文档最完整,最详细,这里只一步步的介绍如何使用,地址:https://docs.microsoft.com/zh-cn/aspnet/core/security/authenticat ...
- 原子操作cas
一.概念, 基于处理器指令,把比较和交换合成一个指令完成,保证了原子性: 因为是针对一个内存地址值的,一个内存地址指向一个变量,所以只对一个共享变量能保证原子性: 二.原子操作类 锁只有synchro ...