【深度学习】线性回归(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 ...
随机推荐
- FXGL游戏开发-JavaFX游戏框架
FXGL 是一个JavaFX 游戏开发的框架,这个框架有两个版本,其中基于JDK1.8的版本已经不再维护,目前最新的是基于JDK11的版本,也就是Openjfx的版本. FXGL 提供了各种游戏范例: ...
- vscode如何配置ts的lint,如何配置才能让eslint和prettier不冲突一键格式化代码(vue开发使用)
最近在使用ts,发觉tslint在vscode上使用很不方便,不如eslint一键格式化高效,就想着能不能配置下vscode让其像写js一样爽 这篇文章主要解决2个问题,第一个是如何让vscode使用 ...
- 用C++实现的增强Eratosthenes筛法程序
运行示例 PS H:\Read\num\x64\Release> .\eSievePro Eratosthenes sieve: a method to find out all primes ...
- 存储系统管理(二)——Linux系统的swap分区、磁盘加密、磁盘阵列
磁盘驱动器上的空间 , 用作当前未使用部分内存的溢出.这样 , 系统就能在主内存中留出空间用于储存当前正在处理的数据 , 并在系统面临主内存空间不足的风险时提供应急溢出. swap分区的建立: fdi ...
- Java中使用DOM4J来生成xml文件和解析xml文件
一.前言 现在有不少需求,是需要我们解析xml文件中的数据,然后导入到数据库中,当然解析xml文件也有好多种方法,小编觉得还是DOM4J用的最多最广泛也最好理解的吧.小编也是最近需求里遇到了,就来整理 ...
- noip模拟46
A. 数数 排好序从两头贪心即可 B. 数树 首先很容易想到容斥 如果选择的边集的相关点集有点的度数大于 \(1\) 是不合法的 也就是说一定形成若干条长度不一的链 要给这些链上的点安排排列中的数,方 ...
- vue-cli坑比系列
Error loading saved preferences: ~/.vuerc may be corrupted or have syntax errors. Please fix/delete ...
- JS010. 三元运算符扩展运用(多层判断语句 / 多条表达式)
MDN - 三元运算符 语法 Condition ? exprIfTrue : exprIfFalse 用例: function getFee(isMember) { return(isMember ...
- Mybatis-基本学习(上)
目录 Mybatis mybatis开始 -----环境准备 一.简介 1.什么是MyBatis 2.持久化 3.持久层 4.为什么需要Mybatis? 二.第一个Mybatis程序 1.搭建环境 1 ...
- 下载excel(接收文件流)
/** * 文件流转换 主要代码块,可自定义下载文件名称 * @param {} data */ export function download(data, titName) { if ( ...