1-1 动手学深度学习v2-线性回归-笔记
简化核心模型
- 假设1: 影响房价的关键因素是卧室个数,卫生间个数和居住面积,记为 x 1 x_{1} x1, x 2 x_{2} x2, x 3 x_{3} x3
- 假设2: 成交价是关键因素的加权和
y = w 1 x 1 + w 2 x 2 + w 3 x 3 + b y=w_{1}x_{1}+w_{2}x_{2}+w_{3}x_{3}+b y=w1x1+w2x2+w3x3+b权重和偏差的实际值在后面决定
线性一般模型
- 给定
n
n
n维输入
x
=
[
x
1
,
x
2
,
.
.
.
,
x
n
]
T
\pmb{x}=[x_{1},x_{2},...,x_{n}]^{T}
x=[x1,x2,...,xn]T
(这里 x 1 , x 2 , . . . , x n x_{1},x_{2},...,x_{n} x1,x2,...,xn是实数/标量, [ x 1 , x 2 , . . . , x n ] [x_{1},x_{2},...,x_{n}] [x1,x2,...,xn]是行向量,再一转置就是一个列向量 x = [ x 1 , x 2 , . . . , x n ] T \pmb{x}=[x_{1},x_{2},...,x_{n}]^{T} x=[x1,x2,...,xn]T) - 线性模型有一个
n
n
n维权重和一个标量偏差
w = [ w 1 , w 2 , . . . , w n ] T , b \pmb{w}=[w_{1},w_{2},...,w_{n}]^{T},b w=[w1,w2,...,wn]T,b( w \pmb{w} w同 x \pmb{x} x理,b是实数/标量) - 输出是输入的加权和
y = w 1 x 1 + w 2 x 2 + . . . + w n x n + b y=w_{1}x_{1}+w_{2}x_{2}+...+w_{n}x_{n}+b y=w1x1+w2x2+...+wnxn+b向量版本: y = ⟨ w , x ⟩ + b y=\langle\pmb{w},\pmb{x}\rangle+b y=⟨w,x⟩+b
( ⟨ w , x ⟩ \langle\pmb{w},\pmb{x}\rangle ⟨w,x⟩表示内积,这里即两个列向量按位相乘。内积算出来的是一个实数标量。)
衡量预测质量
- 比较真实值和预估值,例如房屋售价和估价
- 假设
y
y
y是真实值,
y
^
\hat{y}
y^是估计值,我们可以比较
ℓ ( y , y ^ ) = 1 2 ( y − y ^ ) 2 \ell(y,\hat{y})=\frac{1}{2}(y-\hat{y})^{2} ℓ(y,y^)=21(y−y^)2这个叫做平方损失,这里之所以有个 1 2 \frac{1}{2} 21,是因为我们可以在后面的求导过程中很方便地消除掉。
训练数据
- 收集一些数据点来决定参数值(权重和偏差),例如过去6个月卖的房子
- 这被称之为训练数据
- 通常越多越好
- 假设我们有
n
n
n个样本,记
X = [ x 1 , x 2 , . . . , x n ] T \pmb{X}=[\pmb{x_{1}},\pmb{x_{2}},...,\pmb{x_{n}}]^{T} X=[x1,x2,...,xn]T(假设每个 x i \pmb{x_{i}} xi都是按照上面模型定义的列向量(一个列向量就是一个样本),我们把样本一列列的排好,再经过一个转置,最后的效果就是原先的每一列现在到了每一行, X \pmb{X} X的每一行都是一个样本。)
y = [ y 1 , y 2 , . . . , y n ] T \pmb{y}=[y_{1},y_{2},...,y_{n}]^{T} y=[y1,y2,...,yn]T
(每一个 y i y_{i} yi都是一个实数的数值,也即一个样本,那么 y \pmb{y} y就是一个列向量。)
参数学习
-
训练损失
关于数据 X \pmb{X} X, y \pmb{y} y,权重 w \pmb{w} w,偏差 b b b的损失函数(真实值-估计值):(这里算出来的是个标量)
ℓ ( X , y , w , b ) = 1 2 n ∑ i = 1 n ( y i − ⟨ x i , w ⟩ − b ) 2 = 1 2 n ∣ ∣ y − X w − b ∣ ∣ 2 \ell(\pmb{X},\pmb{y},\pmb{w},b)=\frac{1}{2n}\sum_{i=1}^{n}(y_{i}-\langle\pmb{x_{i},w}\rangle-b)^{2}=\frac{1}{2n}||\pmb{y}-\pmb{Xw}-b||^{2} ℓ(X,y,w,b)=2n1i=1∑n(yi−⟨xi,w⟩−b)2=2n1∣∣y−Xw−b∣∣2在数学中,双竖线 ∣∣⋅∣∣ 通常表示向量的范数(norm),是衡量向量大小的一种方法。在计算线性回归模型的训练损失时,这个符号用来表示预测误差向量的欧几里得范数(Euclidean norm),也就是通常所说的 L2 范数。
L2范数(L2 norm),是向量元素的平方和的平方根。它在数学和机器学习中经常被用作一种正则化项、距离度量或误差度量。
∣ ∣ x ∣ ∣ 2 = ( x 1 2 + x 2 2 + . . . + x n 2 ) 1 2 ||x||_{2} = (x_{1}^{2} + x_{2}^{2} + ... + x_{n}^{2})^{\frac{1}{2}} ∣∣x∣∣2=(x12+x22+...+xn2)21这里的 ∣ ∣ y − X w − b ∣ ∣ 2 ||\pmb{y}-\pmb{Xw}-b||^{2} ∣∣y−Xw−b∣∣2 表示的是预测误差向量 y − X w − b \pmb{y}-\pmb{Xw}-b y−Xw−b 的 L2 范数的平方,其中 y \pmb{y} y 是实际值的向量, X \pmb{X} X 是特征矩阵, w \pmb{w} w 是权重向量, b b b 是偏差项。
计算L2范数的平方是将每个样本的损失值平方后求和,再除以 2 n 2n 2n,这样做的目的是平均损失,并且在后续的优化过程中,平方项可以帮助计算梯度。
两个等号,后一个是用向量的形式来表示,但是意义都是一样的,也即都是在先计算样本损失值的平方和,再除以样本数,得到一个对于所有样本来说的平均损失。
对于向量的形式,更易于并行化。 -
最小化损失来学习参数 w ∗ , b ∗ = a r g min w , b ℓ ( X , y , w , b ) \pmb{w^{*},b^{*}}=arg\;\min_{\pmb{w},b}\ell(\pmb{X},\pmb{y},\pmb{w},b) w∗,b∗=argw,bminℓ(X,y,w,b)
这个公式的意思是说:要找到 w \pmb{w} w和 b b b的那个具体值 或者 值的组合 w ∗ , b ∗ \pmb{w^{*},b^{*}} w∗,b∗,使得 ℓ ( X , y , w , b ) \ell(\pmb{X},\pmb{y},\pmb{w},b) ℓ(X,y,w,b)达到最小值。
这里的 “arg min” 是 “argument of the minimum” 的缩写。
显示解
- 将偏差加入权重
X ← [ X , 1 ] w ← [ w b ] \pmb{X}\leftarrow [\pmb{X},\pmb{1}] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \pmb{w}\leftarrow\left [ \begin{matrix} \pmb{w} \\ b \\ \end{matrix} \right ] X←[X,1] w←[wb] 给 X \pmb{X} X加一列全 1 1 1的特征,也就是在末尾加一个全 1 1 1的列向量 1 \pmb{1} 1,相当于是给所有样本新增一个为1的实数项,然后把偏差放到权重的最后一行。相当于是把偏差融进数据 X \pmb{X} X和权重 w \pmb{w} w。
损失函数变为:
ℓ ( X , y , w ) = 1 2 n ∣ ∣ y − X w ∣ ∣ 2 ∂ ∂ w ℓ ( X , y , w ) = 1 n ( y − X w ) T X \ell(\pmb{X},\pmb{y},\pmb{w})=\frac{1}{2n}||\pmb{y}-\pmb{Xw}||^{2}\ \ \ \ \ \ \ \ \ \ \frac{\partial }{\partial \pmb{w}}\ell(\pmb{X},\pmb{y},\pmb{w})=\frac{1}{n}(\pmb{y}-\pmb{Xw})^{T}\pmb{X} ℓ(X,y,w)=2n1∣∣y−Xw∣∣2 ∂w∂ℓ(X,y,w)=n1(y−Xw)TX - 线性模型的损失是凸函数,所以最优解满足
∂ ∂ w ℓ ( X , y , w ) = 0 \frac{\partial }{\partial \pmb{w}}\ell(\pmb{X},\pmb{y},\pmb{w})=0 ∂w∂ℓ(X,y,w)=0 ⇔ 1 n ( y − X w ) T X = 0 \Leftrightarrow \frac{1}{n}(\pmb{y}-\pmb{Xw})^{T}\pmb{X}=0 ⇔n1(y−Xw)TX=0 ⇔ w ∗ = ( X T X ) − 1 X y \Leftrightarrow \pmb{w^{*}}=(\pmb{X}^{T}\pmb{X})^{-1}\pmb{X}\pmb{y} ⇔w∗=(XTX)−1Xy凸函数(Convex function)是指从函数图形上来看,任意两点连成的线段,皆位于图形的上方的实值函数。
凸函数的最优解是满足使得它的梯度等于0的地方。
总结
- 线性回归是对 n n n维输入的加权,外加偏差( y ^ = X w + b \hat{y}=\pmb{Xw}+b y^=Xw+b)
- 使用平方损失来衡量预测值和真实值的差异
- 线性回归有显示解
- 线性回归可以看作单层神经网络,是最简单的神经网络
QA补充
-
为啥使用平方损失而不是绝对差值?
绝对差值在零点处的导数比较难求,并不是一个处处可导的函数 -
为啥损失要求平均?
求平均和不求平均区别不大,但是不求的话,会导致梯度比较大,如果不除以 n n n的话,就把学习率除以 n n n吧。
除以 n n n的好处是:不管你的样本多大,批量多大,我的梯度都差不多,使得我调学习率比较容易,比较好调。