专栏首页拇指笔记【动手学深度学习笔记】之线性回归

【动手学深度学习笔记】之线性回归


第一种模型:线性回归

线性回归适用于回归问题,回归问题主要包括:房屋价格预测,温度等等。

线性回归是单层神经网络,设计的概念和技术适用于大多数深度学习模型;因此,我们以线性回归为例,学习深度学习模型的基本要素和表示方法。

线性回归的基本要素

以预测房屋价格预测为例:目标是预测一栋房屋的售出价格;简单起见,假设之取决于两个因素,即面积(平方米)和房龄(年)

模型定义

设房屋面积X1,房龄X2,售出价格y。建立输入X1和X2来计算输出y的表达式。

线性关系为:

其中 W1和W2是权重,b是偏差,这三个变量都是标量,他们是线性回归模型的参数。模型的输出y是对真实值的预测或估计,与真实值存在一定误差。

模型训练

需要通过数据来寻找特定的模型参数值(W1,W2,b),使模型在数据上的误差尽可能小。这个搜索的过程叫做模型训练。

以下是模型训练所设计的3个要素。

(1)训练数据

通常收集一系列的真实数据(数据集),例如:多栋房屋的真实收储价格和它们对应的面积和房龄。目的是希望在这个数据上面寻找模型参数来使模型的预测价格与真实价格的误差最小

术语中,这套数据集叫做训练数据集训练集,一栋房屋被称作一个样本,其真实售出价格(y)叫做标签(label),用来预测的两个因素叫做特征(feature)。特征用来表征样本的特点(例如:房龄和面积)

假设我们采集的样本数为n,对于索引为i的房屋。线性回归模型的房屋价格预测表达式为

(2)损失函数

深度学习过程中需要衡量价格预测值与真实值之间的误差。通常会选取一个非负数作为误差,且数值越小表示误差越小。一个常用的选择是平方函数。它在索引为i的样本误差的表达式为

这个式子其实很简单,只是看着唬人而已,右边括号中的:通过目前参数(w_1,w_2,b)计算得到的估计值\hat{y}减去真实价格,为了让这个值为正数,对他进行平方是为了使求导后的系数为1,所以乘其中常数1/2使这个表达式对平方项求导后常数系数为1。

这个衡量误差的函数称为损失函数(loss function)。这个使用平方误差函数也称为平方损失。

通常我们用训练数据集中所有样本误差的平均来衡量模型预测的质量,即

这个式子和上面的式子一样,上面的是求一个值的误差,这个式子是一组值的平均误差. 在训练模型中,希望找出一组模型参数满足下式(样本平均损失最小),这组参数就是训练模型的目标解

(3)优化算法

解析解:直接通过模型和损失函数能够得到的解。

数值解:通过优化算法有限次迭代来尽可能降低损失函数的值的解。

优化算法:这本书介绍的是小批量随机梯度下降

  1. 随机选取一组初始值
  2. 多次迭代,使每一次迭代的值都更小一点

迭代过程

假定这一个小批量有B个数,学习率为\eta。(这两个是人为设定的超参数)

每次迭代对三个参数进行分别计算。

  1. 首先是对损失函数进行求导
  2. 然后求小批量对应的损失函数的导数的平均值,最后乘以学习率,得到减小量
  3. 根据减小量得到迭代后的w1、w2、b

模型预测

确定训练完成后,将模型参数再优化算法停止时的值分别记作

这几个参数并不一定是最优解,而是一个最优解的近似,这样就可以使用线性回归模型

来估算数据训练集以外的任意一栋面积为x1和房龄为x2的房子的价格了。

线性回归的表示方法

这节解释线性回归和神经网络的联系以及线性回归的矢量表达式。

神经网络图

深度学习中,我们使用神经网络图直观地表现模型结构。

该图使用神经网络图表示本届中介绍的线性回归网络,倒数隐去了权重和偏差。

输入个数也叫做特征数或特征向量维度。由该图可以看出,线性回归是一个单层神经网络。

输出层中负责计算o的单元叫神经元,这个模型中输出层的神经元和输入层中各个输入完全链接,因此这个输入层又叫全连接层或稠密层。

矢量计算表达式

在训练或使用模型的过程中,需要对多个样本进行操作。操作的方法是矢量计算(向量运算)。

使用矢量计算:

#首先定义两个一千纬的向量import torch from time import time  #导入这个库的目的是比较两种方法哪个更快
a = torch.ones(1000)b = torch.ones(1000)
#相加的第一种方式---标量计算start = time()      #开始计时c = torch.zeros(1000)for i in range(1000):    c[i] = a[i] + b[i]print(time()-start)    #输出运行时间1
#相加的第二种方式---矢量计算start = time()d = a + bprint(time()-start)    #输出运行时间2
#输出结果:#方法一耗时0.02039s#方法二耗时0.0008330s

本文分享自微信公众号 - 拇指笔记(shuzhi990),作者:拇指笔记

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【数学建模】之传染病模型

    树枝990
  • 【动手学深度学习笔记】之模型选择、过拟合与欠拟合

    机器学习过程中,评估候选模型并从中选择模型的过程叫做模型选择。模型选择的对象不仅是不同的模型也可以是有着不同超参数的同一模型。

    树枝990
  • 【数学建模】之Matlab实现BP神经网络

    trainning:用来训练的数据。 validtion:测量网络泛化的数据(泛化停止改善时停止训练) testing:用来测试神经网络的数据。

    树枝990
  • ICLR-17最佳论文作者Nicolas Papernot现场演讲:如何用PATE框架有效保护隐私训练数据?(附视频)

    AI科技评论按:ICLR 2017 总共有三篇最佳论文,其中有一篇是关于如何有效保护机器学习训练中的隐私数据,名为「用半监督知识迁移解决深度学习中训练数据隐私问...

    AI科技评论
  • Openjdk 安装 on centos7

    备注: 安装openjdk,在使用Jhipster-Registry的加解密功能时,会简化一点工作,我在相关文章中会整理说明。

    羽客
  • 提供一个10分钟跑通 AI Challenger 细粒度用户评论情感分析的fastText Baseline

    上一篇《AI Challenger 2018 进行时》文尾我们提到 AI Challenger 官方已经在 GitHub 上提供了多个赛道的 Baseline...

    AINLP
  • torch03:linear_regression

    (2)定义训练数据:或者使用自己的数据集:(可参考:https://blog.csdn.net/u014365862/article/details/80506...

    MachineLP
  • MyBatis框架(一)

    MyBatis介绍:   MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation...

    二十三年蝉
  • 知乎CTO李大海:谢邀,来分享下内容社区的AI架构搭建与应用

    「在信息爆炸的互联网海洋中,有价值的信息仍然是稀缺的」。知乎的诞生源于这样一个非常简单的初心。

    机器之心
  • 当一盆植物在MIT成了精,不,它只是成了机器人

    这些伶俐的反应,被MIT和Parsons设计学院的研究人员地利用起来,才有了机器人 x 植物这样优雅的存在。

    量子位

扫码关注云+社区

领取腾讯云代金券