线性回归
徐徐 抱歉选手

掌握术语

Model training

Training data set/training set = input/output of target function,

Sample

Label = function output

Feature = variant函数变量,输入个数也叫特征数或特征向量维度

Loss function

误差最小化问题的解可以分为解析解(Analytical Solution)和数值解(Numerical Solution)。

Hyperparameter = 超参数是人为设定的参数,并非通过模型训练学出的。

输出层中的神经元和输入层中各个输入完全连接。因此,这里的输出层又叫全连接层(fully-connected layer)或稠密层(dense layer)。

步骤

模型假设

选择框架

模型评估,损失函数

Loss function — Input: function, output: how bad it is

Loss function with one parameter

对该函数在某一初始点(given an initial value)求微分(didderentaite);判断此点的微分正负,决定向哪一个方向更新能够让Loss function更小;决定往那个方向变化,结合一个Learning rate — 来决定步长;更新参数直到微分成为0。

存在一个问题?Local Optinal VS Global Optimal

存在多个参数的情况

对各个参数分别求偏微分,再更新。

模型优化

梯度下降 — Gradient Descent

要求loss function是convex(no local optimal)

存在限制 — very slow at plateau/ stuck at saddle point/ stuck at local minima

过拟合 overfitting

复杂的模型再training data上表现良好,但是再testing data上表现很差。

Overfitting is a phenomenon that occurs when a machine learning or statistics model is tailored to a particular dataset and is unable to generalise to other datasets.

优化

如何选择优化方式需要考虑loss function的误差有哪些来源,依据情况进行选择。以下是针对线性回归的每个步骤可以参考的问题优化思路。

  • 对数据分类,引入0-1函数参数。

  • 引入更多参数/特征/input。

  • 正则化Regularization,目的是为了让函数更加平滑,相对于训练数据输入相近的测试输入,在进入函数之后引起的输出变化会比较小。并不是越平滑越好,bias对于平滑度没有影响。

误差来源

在统计学中涉及到评估随机变量的偏差和方差。涉及到无偏估计.

Bias

Average/ Expectations描述准确性

简单模型 — high bias,复杂模型 — low bias。

模型本质就是一个function set。简单模型的function space较小,难以涵盖target;而复杂模型的function space较大,有更大几率包括target,因此bias更小。

Error from bias越大代表Underfitting,说明模型连最基本训练数据都没有办法适用。解决办法:选择更复杂的模型,增加更多的特征变量。

Variance

描述确定性。

简单模型 — low variance ,复杂模型 — high variance。

因为简单模型更少受样本数据的影响。

Error from variance越大代表Overfitting,说明过于关注某些样本训练数据而忽略了整体,当测试数据输入的时候,会得到较大的误差。解决办法:更多数据,正则化。

模型选择

本质

A trade-off between bias and variance.

Select a modle that balances two kinds of error to minimize total error.

模型选择的误区

假设现在有三个数据集合:Training set — Testing set(public) — Testing set(private)

what NOT do

  • 不应该用训练集训练不同的模型,然后在测试集上比较错误。意思就是不应该用Testing set来选择模型。模型的选择应该在Training set内部进行决定。
  • 不应该在public测试集上得到较大的误差之后再返回训练集调试参数,更应当选择调整模型。

DO cross validation

交叉验证就是将Trainging set分成两组,一部分作为Training set,另一部分作为Validation set。用验证集选出合适模型,再用Public测试集合进行测试。

N-fold cross validation: 将数据集分成N份,每一份都有机会成为训练集/验证集,以此对目前正在考虑的模型进行验证。

Gradient Descent

梯度下降是一种在用损失函数评估模型时,确定特征的参数系数来让损失函数最小的方法。它的目的就是求特征的参数系数。

Gradient descent is a standard tool for optimizing complex functions iteratively within a computer program.

Its goal is: given some arbitrary function, find a minumum. For some small subset of functions - those that are convex - there’s just a single minumum which also happens to be global. For most realistic functions, there may be many minima, so most minima are local.

The main premise of gradient descent is: given some current location x in the search space (the domain of the optimized function) we ought to update x for the next step in the direction opposite to the gradient of the function computed at x.

Where is what we call a “learning rate“, and is constant for each given update. It’s the reason why we don’t care much about the magnitude of the derivative at , only its direction.

Reference: 理解梯度下降

数学理论

对于损失函数的一个初始点,需要在其邻域(表现在这里就是在等高图上着一个平面圆圈)找一个新的值使得损失函数更小,该怎么找?

contour graph和gradient是什么关系?如果把等高线图画出来,且标出所有的梯度方向,可以发现等高线和梯度垂直。

对该损失函数在该初始点使用泰勒展开式化简,我们要求的损失函数就从一个很复杂的难以表现的式子变成了线性函数。损失函数本身可以表示成梯度向量和目前待求解的下一次更新的点的点积,表现在图像上就是两个向量方向相反。

为什么可以这么说?梯度向量有什什么?下一次更新的点又是什么?

首先需要明白偏导数,全微分,方向导数与梯度的概念。

偏导数

偏导数是改变坐标系基向量的某一个维度的值,固定其他维度的值,衡量函数值变化的情况。

Graphical Explanation

表现在二元函数的图像上就是用x/y平面切空间上的图像,切出来的那个函数是一个平面函数,求的偏导数就是在固定维度的值的那个点,该平面函数的导数/切线。

梯度向量

梯度向量就是对多元函数的基向量的所有维度求偏微分之后获得的每一个维度都是一个带有所有原变量的函数的向量。

方向导数

方向导数是偏导数的推广,衡量在某个特定的方向上函数值的变化情况。

Graphical Explanation

偏导数中用基向量的平面取切,如果我们要所有方向的平面都能切该怎么做?

首先基向量可以用来表示其他任何向量,由自然基向量构成的一个向量表示在三维空间就是一个平面。求方向导数就是把偏导数投影到该向量所在的平面上,联系到内积。

该任意向量可以有任意长度,但是把它scale到模为1就可以表示用这个向量平面去切空间里的函数,在那个点的切线斜率。

方向导数与偏微分/梯度向量

由内积的定义可知,梯度向量是方向导数最大的地方,就是曲面最陡峭的方向。

全微分

全微分就是改变坐标系基向量的所有维度的值,衡量函数值变化的情况。

参考

知乎专栏

Khan Acadamy Multivariable Calculus

注意这里化简的前提,是基于泰勒展开式对于损失函数在该点的模拟的精确度,因此我们适用的邻域就要足够小,这个邻域的大小表现在数据上就是我们选择的学习率。

如何实现

小心地调整Learning Rate

  • 直接画出损失函数关于要调整的参数的曲线,但是这个可视化只能在参数一维或者二维时进行。

  • 将Learning Rate学习率的改变对损失函数的影响的图像可视化。

  • 自适应学习率,通过添加一些因子来随着次数增加降低学习率。刚开始的时候用大一些的学习率;更新多次参数之后较为高进最低点,减少学习率。

  • 不同的参数需要不同的学习率。

常规梯度下降法 Vanilla Gradient Descent

Adagrad算法

是之前该参数的所有微分的均方根,对于每个参数都是不一样的。

代入化简可得

这个式子中的分式是为了显示how suprise this step is,要求步长前后反差大。

对于单参数问题,梯度越大就代表和最低点的距离越远。对于多参数问题,前面的结论不成立。

不仅要和一次微分成正比,还要和二次微分成反比。但是求二次微分带来的代价过于巨大,所以尝试使用一次微分来estimate二次微分,也就是分式中的分母。

随机梯度下降法 Stochastic Gradient Descent

常规梯度下降法走一步要处理所有数据。而随机梯度下降法的损失函数每次只选取一个数据,对其进行梯度更新,因此速度更快。

特征缩放

由于输入的分布范围很不一样,单位也不一样,一个变量的实际数据很大会导致它对特征参数的变化影响很大。因此要适当选择缩放,make different features having the same scaling。

其中一种常见的缩放方法就是将输入的数据先0-1正规化。make the means of all dimensions 0 and variances 1.

  • 本文标题:线性回归
  • 本文作者:徐徐
  • 创建时间:2020-10-23 22:22:06
  • 本文链接:https://machacroissant.github.io/2020/10/23/dl-math-bacis/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论