【深度学习】线性回归(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 ...
随机推荐
- Centos7 安装 redis4.x
一.安装redis 第一步:下载redis安装包 wget http://download.redis.io/releases/redis-4.0.6.tar.gz [root@iZwz991stxd ...
- jsp中核心标签使用
<%@ page language="java" import="java.util.*, java.lang.*" pageEncoding=" ...
- Faiss使用多线程出现的性能问题
Faiss使用多线程出现的性能问题 faiss在增加CPU的情况下,反而出现效率低下的问题. 从理论上看,作为一个CPU/GPU计算型的应用,更多的核意味着更大的计算吞吐能力,性能只会越来越好才是. ...
- Mysql You can't specify target table 'newsalrecord' for update in FROM clause
这个问题是不能先select出同一表中的某些值,再update这个表(在同一语句中),即不能依据某字段值做判断再来更新某字段的值.解决办法就是建立个临时的表.
- JavaScript 特殊字符
代码输出\'单引号\"双引号\&和号\\反斜杠\n换行符\r回车符\t制表符\b退格符\f换页符
- JS 之 每日一题 之 算法 ( 划分字母区间 )
题目详解: 字符串 S 由小写字母组成.我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段.返回一个表示每个字符串片段的长度的列表. 例子: 示例 1: 输入:S = &quo ...
- 对 RESTful 的理解
REST 全称 Representation State Transfor (资源表现层状态改变) 实际上是指客户端通过http/https协议手段来改变URI的状态转化,达到请求不同的资源的目的. ...
- Mybatis-Plus增强包
简介 本框架(Gitee地址 )结合公司日常业务场景,对Mybatis-Plus 做了进一步的拓展封装,即保留MP原功能,又添加更多有用便捷的功能.具体拓展体现在数据自动填充(类似JPA中的审计).关 ...
- Linux制作根文件系统笔记
测试平台 宿主机平台:Ubuntu 12.04.4 LTS 目标机:Easy-ARM IMX283 目标机内核:Linux 2.6.35.3 交叉编译器:arm-linux-gcc 4.4.4 Bus ...
- Python - 面向对象编程 - 小实战(1)
题目 设计一个类Person,生成若干实例,在终端输出如下信息 小明,10岁,男,上山去砍柴 小明,10岁,男,开车去东北 小明,10岁,男,最爱大保健 老李,90岁,男,上山去砍柴 老李,90岁,男 ...