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)——原理、均方损失、小批量随机梯度下降的更多相关文章

  1. TensorFlow 学习笔记(1)----线性回归(linear regression)的TensorFlow实现

    此系列将会每日持续更新,欢迎关注 线性回归(linear regression)的TensorFlow实现 #这里是基于python 3.7版本的TensorFlow TensorFlow是一个机器学 ...

  2. Ng第二课:单变量线性回归(Linear Regression with One Variable)

    二.单变量线性回归(Linear Regression with One Variable) 2.1  模型表示 2.2  代价函数 2.3  代价函数的直观理解 2.4  梯度下降 2.5  梯度下 ...

  3. 线性回归 Linear regression(1)线性回归的基本算法与求解

    本系列内容大部分来自Standford公开课machine learning中Andrew老师的讲解,附加自己的一些理解,编程实现和学习笔记. 第一章 Linear regression 1.线性回归 ...

  4. 机器学习方法:回归(一):线性回归Linear regression

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 开一个机器学习方法科普系列:做基础回顾之用,学而时习之:也拿出来与大家分享.数学水平有限,只求易懂,学习与工 ...

  5. 斯坦福第二课:单变量线性回归(Linear Regression with One Variable)

    二.单变量线性回归(Linear Regression with One Variable) 2.1  模型表示 2.2  代价函数 2.3  代价函数的直观理解 I 2.4  代价函数的直观理解 I ...

  6. 斯坦福CS229机器学习课程笔记 Part1:线性回归 Linear Regression

    机器学习三要素 机器学习的三要素为:模型.策略.算法. 模型:就是所要学习的条件概率分布或决策函数.线性回归模型 策略:按照什么样的准则学习或选择最优的模型.最小化均方误差,即所谓的 least-sq ...

  7. 机器学习 (一) 单变量线性回归 Linear Regression with One Variable

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang的个人笔 ...

  8. 机器学习 (二) 多变量线性回归 Linear Regression with Multiple Variables

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...

  9. ML 线性回归Linear Regression

    线性回归 Linear Regression MOOC机器学习课程学习笔记 1 单变量线性回归Linear Regression with One Variable 1.1 模型表达Model Rep ...

随机推荐

  1. Centos7 安装 redis4.x

    一.安装redis 第一步:下载redis安装包 wget http://download.redis.io/releases/redis-4.0.6.tar.gz [root@iZwz991stxd ...

  2. jsp中核心标签使用

    <%@ page language="java" import="java.util.*, java.lang.*" pageEncoding=" ...

  3. Faiss使用多线程出现的性能问题

    Faiss使用多线程出现的性能问题 faiss在增加CPU的情况下,反而出现效率低下的问题. 从理论上看,作为一个CPU/GPU计算型的应用,更多的核意味着更大的计算吞吐能力,性能只会越来越好才是. ...

  4. Mysql You can't specify target table 'newsalrecord' for update in FROM clause

    这个问题是不能先select出同一表中的某些值,再update这个表(在同一语句中),即不能依据某字段值做判断再来更新某字段的值.解决办法就是建立个临时的表.

  5. JavaScript 特殊字符

    代码输出\'单引号\"双引号\&和号\\反斜杠\n换行符\r回车符\t制表符\b退格符\f换页符

  6. JS 之 每日一题 之 算法 ( 划分字母区间 )

    题目详解: 字符串 S 由小写字母组成.我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段.返回一个表示每个字符串片段的长度的列表. 例子: 示例 1: 输入:S = &quo ...

  7. 对 RESTful 的理解

    REST 全称 Representation State Transfor (资源表现层状态改变) 实际上是指客户端通过http/https协议手段来改变URI的状态转化,达到请求不同的资源的目的. ...

  8. Mybatis-Plus增强包

    简介 本框架(Gitee地址 )结合公司日常业务场景,对Mybatis-Plus 做了进一步的拓展封装,即保留MP原功能,又添加更多有用便捷的功能.具体拓展体现在数据自动填充(类似JPA中的审计).关 ...

  9. Linux制作根文件系统笔记

    测试平台 宿主机平台:Ubuntu 12.04.4 LTS 目标机:Easy-ARM IMX283 目标机内核:Linux 2.6.35.3 交叉编译器:arm-linux-gcc 4.4.4 Bus ...

  10. Python - 面向对象编程 - 小实战(1)

    题目 设计一个类Person,生成若干实例,在终端输出如下信息 小明,10岁,男,上山去砍柴 小明,10岁,男,开车去东北 小明,10岁,男,最爱大保健 老李,90岁,男,上山去砍柴 老李,90岁,男 ...