Chapter3 线性神经网络——线性回归

在本节中我们通过介绍线性回归来引入深度学习中几个重要的概念,包括:样本、训练数据集、训练、随机梯度等优化算法、batch批、损失函数、学习率等。实际上,线性回归也可以被视作一个最简单的神经网络,即单层神经网络

1 线性模型

我们通过一个简单的例子来介绍线性回归模型:
我们常常会通过对房屋面积、房龄、房子位置等各方面因素的评估来估算房价。在这里,我们就以房龄、房屋面积这两个因素作为自变量来进行房价的预测。
预测的方法有很多,可以建立起不同的预测模型。在这里,我们提出一个假设:房屋价格可以表示为房龄和面积的加权和,即:
p r i c e = w 1 a r e a + w 2 a g e + b price= w_1area + w_2age + b price=w1area+w2age+b

w 1 和 w 2 w_1和w_2 w1w2是叫做权重,其衡量了输入对输出的影响的程度;b叫做偏置,是输出本身的属性。
所以线性回归模型,就是通过自变量的线性加权来反映目标的值。
x = [ x 1 , x 2 , x 3 , . . . ] , w = [ w 1 , w 2 , w 3 , . . . ] x=[x_1,x_2,x_3,...],w=[w_1,w_2,w_3,...] x=[x1,x2,x3,...],w=[w1,w2,w3,...],则线性回归模型可以表示为:
y = x w + b y=xw+b y=xw+b

上述的表示是一条x数据和一条y数据的对于,这样的一行数据我们把他叫做样本,x叫做特征,y叫做标签。我们可以把所有的样本放在一起,形成一个矩阵,这个矩阵叫做训练数据集,此时y也是一个向量 y = [ y 1 , y 2 , y 3 , . . . ] ⊤ , X = [ x 1 , x 2 , x 3 , . . . ] ⊤ y=[y_1,y_2,y_3,...]^{\top},X=[x1,x2,x3,...]^{\top} y=[y1,y2,y3,...],X=[x1,x2,x3,...]
y = X w + b y=Xw+b y=Xw+b

我们的目标即是找到通过大量数据不断更新权重和偏置,找到一组合适的参数 w 1 , w 2 , b w_1,w_2,b w1,w2,b使得预测值与真实值尽可能接近,这样的寻找权重和偏置的过程我们称之为训练
在开始寻找最好的模型参数(model parameters)之前, 我们还需要两个东西: (1)一种模型质量的度量方式(2)一种能够更新模型以提高模型预测质量的方法

2 损失函数

我们该如何度量我们所找到的参数的好坏呢?最直观的想法就是我们在此参数下做出的预测和真实值之间的差距,比如以下公式:
l o s s ( i ) < w , b > = 1 2 ( y i − y i ^ ) 2 loss^{(i)}<w,b>=\frac{1}{2}(y_i-\hat{y_i})^2 loss(i)<w,b>=21(yiyi^)2

其中 y i ^ = x i w + b \hat{y_i}=x_iw+b yi^=xiw+b是我们的预测值,即我们用真实值和预测值差的平方/2来评估参数的的好坏,其值越小,说明真实值和预测值的偏差越小,模型的效果也就越好。这个函数就叫做损失函数。此处所列出的公式仅仅是针对一个样本的损失函数,我们针对所有数据集的损失函数可以表示为:
l o s s ( w , b ) = 1 2 n ∑ i = 1 n ( y i − y i ^ ) 2 loss(w,b)=\frac{1}{2n}\sum_{i=1}^{n}(y_i-\hat{y_i})^2 loss(w,b)=2n1i=1n(yiyi^)2

我们将每条样本的损失求和取平均值,作为该模型参数下的损失。我们将这个损失函数叫做均方误差(mean squared error)。实际上,还有很多损失函数,在这里我们只以均方差来引入损失函数的概念,其他更多损失函数我们在后面陆续介绍。

3 优化算法

有了评估模型质量的指标以后,我们应该如何根据这个指标来不断更新模型参数呢?
在这里我们介绍一种随机梯度下降的方法。
我们知道,损失函数是关于权重和偏置的函数,那么,想要使得损失函数最小,我们可以通过求解损失函数的梯度来更新权重和偏置。我们可以通过以下公式来更新权重和偏置:
w i + 1 = w i − η ∂ l o s s ∂ w w_{i+1}=w_{i}-\eta\frac{\partial loss}{\partial w} wi+1=wiηwloss

其中, ∂ l o s s ∂ w \frac{\partial loss}{\partial w} wloss是损失函数关于权重的梯度,它指向了损失函数增长最快的方向,“-”就使得 w w w向损失函数减小的方向移动,每次移动的量为 η \eta η η \eta η叫做学习率,它决定了每次更新的步长,如果 η \eta η过大,可能会导致损失函数不收敛,如果 η \eta η过小,可能会导致收敛速度过慢。所以 η \eta η的选择是一个很重要的问题。
通过下面的图形,我们也可以直观的理解梯度下降的过程:
在这里插入图片描述

4 批处理(batch)

在实际的训练过程中,如果采用单条样本来更新参数,可能会受到单个较大偏差样本的影响,使得过拟合或更新不稳定;而在用整个数据集上来计算梯度进而更新参数又是太昂贵的做法(计算梯度是很贵的事!),因此我们通常会将训练数据集分成若干个小的数据集,每个小的数据集叫做batch,我们每次用一个batch的数据来更新参数,这样的方法叫做批处理。这样的方法有两个好处:(1)减少计算量;(2)增加模型的泛化能力。
同样的,batch_size也是一个很重要的超参数,过大过小都会影响模型的效果。

5 小结

在这一节中,我们了解到:

  • 线性回归模型是一个最简单的神经网络模型,它通过线性加权及偏置来反映输入和输出之间的关系;
  • 我们使用平方损失等损失函数来衡量模型参数的好坏
  • 梯度下降算法以一定或变化的步长(学习率)沿着反梯度方向更新模型参数,从而不断减小损失函数的值;
  • 通过批处理的方法,我们可以减少计算量,增加模型的泛化能力。
  • 学习率和batch_size是两个重要的超参数,它们的选择会影响模型的效果。
    在接下来的章节中,我们会介绍线性回归模型的代码实现,分别包含从0开始(不使用任何已有框架)以及简单实现。
  • 34
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值