学习笔记ing

动手深度学习tensorflow

Liner Regression

回归(regression)是能为一个或多个自变量与因变量之间关系建模的一类方法。 在自然科学和社会科学领域,回归经常用来表示输入和输出之间的关系。
当我们想预测一个数值时,就会涉及到回归问题。 常见的例子包括:预测价格(房屋、股票等)、预测住院时间(针对住院病人等)、 预测需求(零售销量等)。 但不是所有的预测都是回归问题。 在后面的章节中,我们将介绍分类问题。分类问题的目标是预测数据属于一组类别中的哪一个。

1.线性回归的基本要素

线性回归基于几个简单的假设:

  • 假设自变量 x 和因变量 y 之间的关系是线性的
  • 这里通常允许包含观测值的一些噪声
  • 我们假设任何噪声都比较正常,如噪声遵循正态分布。

举例说明:我们希望根据房屋的面积(平方英尺)和房龄(年)来估算房屋价格(美元)。
我们需要收集一个真实的数据集。
这个数据集包括了房屋的销售价格、面积和房龄。

  • 该数据集称为训练数据集(training data set) 或训练集(training set)。
  • 一次房屋交易相对应的数据,称为样本(sample), 也可以称为数据点(data point)或数据样本(data instance)。
  • 房屋价格称为labeling or target(标签或目标)
  • 预测所依据的自变量(面积和房龄)称为特征(feature)或协变量(covariate)。

2.线性模型

p r i c e = w a r e a ⋅ a r e a + w a g e ⋅ a g e + b . \mathrm{price} = w_{\mathrm{area}} \cdot \mathrm{area} + w_{\mathrm{age}} \cdot \mathrm{age} + b.p r i c e =w a r e a ​⋅a r e a +w a g e ​⋅a g e +b .

  • warea 和wage 称为权重(weight)
  • b 称为偏置(bias)、偏移量(offset)或截距(intercept)可以增强模型表达能力。
  • 仿射变换的特点是通过加权和对特征进行线性变换(linear transformation), 并通过偏置项来进行平移(translation)

由于在机器学习中,我们经常使用高维数据集,所以通常我们用线性代数的方法进行表示:
y ^ = w 1 x 1 + . . . + w d x d + b . \hat{y} = w_1 x_1 + … + w_d x_d + b.y ^​=w 1 ​x 1 ​+…+w d ​x d ​+b .
y ^ = w ⊤ x + b . \hat{y} = \mathbf{w}^\top \mathbf{x} + b.y ^​=w ⊤x +b .
y ^ = X w + b {\hat{\mathbf{y}}} = \mathbf{X} \mathbf{w} + b y ^​=X w +b

3.损失函数

损失函数(loss function)能够量化目标的实际值与预测值之间的差距。
线性回归中,我们通常使用均方差作为我们的loss function。

l ( i ) ( w , b ) = 1 2 ( y ^ ( i ) − y ( i ) ) 2 . l^{(i)}(\mathbf{w}, b) = \frac{1}{2} \left(\hat{y}^{(i)} – y^{(i)}\right)^2.l (i )(w ,b )=2 1 ​(y ^​(i )−y (i ))2 .

在训练模型时,我们希望寻找一组参数(w ∗ , b ∗ \mathbf{w}^, b^w ∗,b ∗),
这组参数能最小化在所有训练样本上的总损失。如下式:

w ∗ , b ∗ = * ⁡ a r g m i n w , b L ( w , b ) . \mathbf{w}^, b^ = \operatorname{argmin}_{\mathbf{w}, b}\ L(\mathbf{w}, b).w ∗,b ∗=a r g m i n w ,b ​L (w ,b ).

解析解

首先,我们将偏置b b b合并到参数w \mathbf{w}w中,合并方法是在包含所有参数的矩阵中附加一列。
我们的预测问题是最小化∥ y − X w ∥ 2 \|\mathbf{y} – \mathbf{X}\mathbf{w}\|^2 ∥y −X w ∥2。
这在损失平面上只有一个临界点,这个临界点对应于整个区域的损失极小点。
将损失关于w \mathbf{w}w的导数设为0,得到解析解:

w ∗ = ( X ⊤ X ) − 1 X ⊤ y . \mathbf{w}^* = (\mathbf X^\top \mathbf X)^{-1}\mathbf X^\top \mathbf{y}.w ∗=(X ⊤X )−1 X ⊤y .

4.随机梯度下降(SGD)

在每一次更新参数之前,我们必须遍历整个数据集。 因此,我们通常会在每次需要计算更新的时候随机抽取一小批样本, 这种变体叫做小批量随机梯度下降(minibatch stochastic gradient descent)。

  • 首先随机抽样一个小批量 B , 它是由固定数量的训练样本组成
  • 我们计算小批量的平均损失关于模型参数的导数(也可以称为梯度)

我们用数学表达式表示该过程:
( w , b ) ← ( w , b ) − η ∣ B ∣ ∑ i ∈ B ∂ ( w , b ) l ( i ) ( w , b ) . (\mathbf{w},b) \leftarrow (\mathbf{w},b) – \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \partial_{(\mathbf{w},b)} l^{(i)}(\mathbf{w},b).(w ,b )←(w ,b )−∣B ∣η​i ∈B ∑​∂(w ,b )​l (i )(w ,b ).

n为学习率

算法步骤如下:

  • 初始化模型参数的值,如随机初始化;
  • 从数据集中随机抽取小批量样本且在负梯度的方向上更新参数,并不断迭代这一步骤。

对于平方损失和仿射变换,我们可以明确地写成如下形式:
w ← w − η ∣ B ∣ ∑ i ∈ B ∂ w l ( i ) ( w , b ) = w − η ∣ B ∣ ∑ i ∈ B x ( i ) ( w ⊤ x ( i ) + b − y ( i ) ) , b ← b − η ∣ B ∣ ∑ i ∈ B ∂ b l ( i ) ( w , b ) = b − η ∣ B ∣ ∑ i ∈ B ( w ⊤ x ( i ) + b − y ( i ) ) . \begin{aligned} \mathbf{w} &\leftarrow \mathbf{w} – \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \partial_{\mathbf{w}} l^{(i)}(\mathbf{w}, b) = \mathbf{w} – \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \mathbf{x}^{(i)} \left(\mathbf{w}^\top \mathbf{x}^{(i)} + b – y^{(i)}\right),\ b &\leftarrow b – \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \partial_b l^{(i)}(\mathbf{w}, b) = b – \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \left(\mathbf{w}^\top \mathbf{x}^{(i)} + b – y^{(i)}\right). \end{aligned}w b ​←w −∣B ∣η​i ∈B ∑​∂w ​l (i )(w ,b )=w −∣B ∣η​i ∈B ∑​x (i )(w ⊤x (i )+b −y (i )),←b −∣B ∣η​i ∈B ∑​∂b ​l (i )(w ,b )=b −∣B ∣η​i ∈B ∑​(w ⊤x (i )+b −y (i )).​

用模型进行预测

给定”已学习”的线性回归模型w ^ ⊤ x + b ^ \hat{\mathbf{w}}^\top \mathbf{x} + \hat{b}w ^⊤x +b ^,
现在我们可以通过房屋面积x 1 x_1 x 1 ​和房龄x 2 x_2 x 2 ​来估计一个(未包含在训练数据中的)新房屋价格。
给定特征估计目标的过程通常称为 预测(prediction)

5.矢量化加速

在训练我们的模型时,我们经常希望能够同时处理整个小批量的样本。
为了实现这一点,需要(我们对计算进行矢量化,
从而利用线性代数库,而不是在Python中编写开销高昂的for循环
)。

正态分布与平方损失

%matplotlib inline
import math
import time
import numpy as np
import tensorflow as tf
from d2l import tensorflow as d2l
def normal(x, mu, sigma):
    p = 1 / math.sqrt(2 * math.pi * sigma**2)
    return p * np.exp(-0.5 / sigma**2 * (x - mu)**2)

x = np.arange(-7, 7, 0.01)

params = [(0, 1), (0, 2), (3, 1)]
d2l.plot(x, [normal(x, mu, sigma) for mu, sigma in params], xlabel='x',
         ylabel='p(x)', figsize=(4.5, 2.5),
         legend=[f'mean {mu}, std {sigma}' for mu, sigma in params])

学习笔记ing
y = w ⊤ x + b + ϵ , y = \mathbf{w}^\top \mathbf{x} + b + \epsilon,y =w ⊤x +b +ϵ,
其中,ϵ ∼ N ( 0 , σ 2 ) \epsilon \sim \mathcal{N}(0, \sigma^2)ϵ∼N (0 ,σ2 )。
因此,我们现在可以写出通过给定的x \mathbf{x}x观测到特定y y y的 似然(likelihood):

P ( y ∣ x ) = 1 2 π σ 2 exp ⁡ ( − 1 2 σ 2 ( y − w ⊤ x − b ) 2 ) . P(y \mid \mathbf{x}) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp\left(-\frac{1}{2 \sigma^2} (y – \mathbf{w}^\top \mathbf{x} – b)^2\right).P (y ∣x )=2 πσ2 ​1 ​exp (−2 σ2 1 ​(y −w ⊤x −b )2 ).

P ( y ∣ X ) = ∏ i = 1 n p ( y ( i ) ∣ x ( i ) ) . P(\mathbf y \mid \mathbf X) = \prod_{i=1}^{n} p(y^{(i)}|\mathbf{x}^{(i)}).P (y ∣X )=i =1 ∏n ​p (y (i )∣x (i )).

− log ⁡ P ( y ∣ X ) = ∑ i = 1 n 1 2 log ⁡ ( 2 π σ 2 ) + 1 2 σ 2 ( y ( i ) − w ⊤ x ( i ) − b ) 2 . -\log P(\mathbf y \mid \mathbf X) = \sum_{i=1}^n \frac{1}{2} \log(2 \pi \sigma^2) + \frac{1}{2 \sigma^2} \left(y^{(i)} – \mathbf{w}^\top \mathbf{x}^{(i)} – b\right)^2.−lo g P (y ∣X )=i =1 ∑n ​2 1 ​lo g (2 πσ2 )+2 σ2 1 ​(y (i )−w ⊤x (i )−b )2 .
现在我们只需要假设σ \sigma σ是某个固定常数就可以忽略第一项,
因为第一项不依赖于w \mathbf{w}w和b b b。
现在第二项除了常数1 σ 2 \frac{1}{\sigma^2}σ2 1 ​外,其余部分和前面介绍的均方误差是一样的。
幸运的是,上面式子的解并不依赖于σ \sigma σ。
因此,在高斯噪声的假设下,最小化均方误差等价于对线性模型的极大似然估计。

小结

  • 机器学习模型中的关键要素是训练数据、损失函数、优化算法,还有模型本身。
  • 矢量化使数学表达上更简洁,同时运行的更快。
  • 最小化目标函数和执行极大似然估计等价。
  • 线性回归模型也是一个简单的神经网络。

Original: https://blog.csdn.net/YUNFanZ/article/details/122767931
Author: 林觉棉
Title: 学习笔记ing

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/520789/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球