线性回归和神经网络的联系

线性回归的表示方法

这节我们解释线性回归与神经网络的联系,以及线性回归的矢量计算表达式。

神经网络图

在深度学习中,我们可以使用神经网络图直观地表现模型结构。为了更清晰地展示线性回归作为神经网络的结构,下图使用神经网络图表示本节中介绍的线性回归模型。神经网络图隐去了模型参数权重和偏差。

在如图所示的神经网络中,输入分别为 x 1 x_1 x1 x 2 x_2 x2,因此输入层的输入个数为2。输入个数也叫特征数或特征向量维度。图中网络的输出为 o o o,输出层的输出个数为1。需要注意的是,我们直接将图中神经网络的输出 o o o作为线性回归的输出,即 y ^ = o \hat{y}=o y^=o。由于输入层并不涉及计算,按照惯例,如图所示的神经网络的层数为1。

所以,线性回归是一个单层神经网络。输出层中负责计算 o o o的单元又叫神经元。在线性回归中, o o o的计算依赖于 x 1 x_1 x1 x 2 x_2 x2。也就是说,输出层中的神经元和输入层中各个输入完全连接。因此,这里的输出层又叫全连接层 (fuly-connected layer) 或稠密层 (dense layer)。

矢量计算表达式

在模型训练或预测时,我们常常会同时处理多个数据样本并用到矢量计算。在介绍线性回归的矢量计算表达式之前,让我们先考虑对两个向量相加的两种方法。

下面先定义两个1000维的向量。

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)

输出:

0.01296544075012207

向量相加的另一种方法是,将这两个向量直接做矢量加法。

start = time()
d = a + b
print(time() - start)

输出:

0.0

结果很明显,后者比前者更省时。因此,我们应该尽可能采用矢量计算,以提升计算效率。

让我们再次回到本节的房价预测问题。如果我们对训练数据集里的3个房屋样本(索引分别为1、2和3逐一预测价格,将得到

y ^ ( 1 ) = x 1 ( 1 ) w 1 + x 2 ( 1 ) w 2 + b , y ^ ( 2 ) = x 1 ( 2 ) w 1 + x 2 ( 2 ) w 2 + b , y ^ ( 3 ) = x 1 ( 3 ) w 1 + x 2 ( 3 ) w 2 + b . \begin{array}{l}\hat{y}^{(1)}=x_1^{(1)}w_1+x_2^{(1)}w_2+b,\\ \hat{y}^{(2)}=x_1^{(2)}w_1+x_2^{(2)}w_2+b,\\ \hat{y}^{(3)}=x_1^{(3)}w_1+x_2^{(3)}w_2+b.\end{array} y^(1)=x1(1)w1+x2(1)w2+b,y^(2)=x1(2)w1+x2(2)w2+b,y^(3)=x1(3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值