机器不学习 01 线性回归与梯度下降

发布于 2021-06-06  151 次阅读


一、基础数学

1.1 泰勒公式

    我们首先简单地回顾一下泰勒公式:

    使用特定点的处的梯度线性逼近附近点处的函数值,我们可以近似使用如下的函数值线性逼近方程:

    现有如下题目:对于sin(-1:0.25:0.5),使用泰勒公式估计sin(0.5005)的值。

%% Section 01
y = sin(-1:0.25:0.5);
yg = gradient(y, 0.25);
y_guess = y(end) + yg(end)*(0.5005 - 0.5);
disp("预测结果:");
disp(y_guess);
disp("实际结果:");
disp(sin(0.5005));

1.2 多元函数条件极值

    对于目标z = f(x, y),我们有条件φ(x, y) = 0。则优化问题可以转换为:

    接下来我们只需要对L中的x,y和φ求偏导即可:

    例1:求表面积为a2的体积最大长方体:
    设长、宽、高分别为x、y、z,则我们有如下条件φ,和目标g:

    接下来我们构造函数L,并求最优解:

二、线性回归模型

    参考标量的f(x)=wx+b,对于线性回归我们有f(X)=WX+B,其中W是权重矩阵,X是训练样本矩阵,B是偏置项:

    下面我们需要解决的问题是如何求解权重矩阵W和偏置项b,于是问题转换为:

2.1 梯度与Hessian矩阵

    对于多元情况的导数g(x),我们有:

    下面我们用Hessian矩阵表示二阶导数:

2.2 二次型

2.2.1 二次型定义

    给定一个n*m的矩阵A,有如下函数:

    则称该函数为二次型。对于给定的矩阵:

    如果对于所有的:

    有:

    则为半正定矩阵,此时特征值λ(A)≥0(正定矩阵则是要求全部大于0)。

2.2.2 二次型求导

    通过对比标量的求导情况,我们可以推导出二次型的一阶导数与二阶导数:

2.3 最小二乘法

2.3.1 最小二乘法简述

    梯度的定义:在标量场f中的一点处存在一个矢量G,该矢量的方向为f在该点处变化率最大的方向,其模也等于这个最大变化率的数值,则矢量G称为该标量场f的梯度。即,梯度是矢量。

    下面我们给出二范数的定义:Euclid范数,即向量元素绝对值的平方和再开方,下面是二范数的平方:

    带入到之前提到的优化问题,于是我们有:

2.3.2 最小二乘法本质

    现在有如下平方误差和S:

    该函数是一个二次函数,其导数为0时取得最小值,于是有:

    即“误差最小的方法是多次测量取算术平均数”。

2.4 泰勒级数与极值

    对于输入为向量的泰勒级数展开:

    g(xk) = 0的点为平稳点(候选点),如果有H(xk)>0,则点xk为严格局部极小点(反之为严格局部最大点),如果H(xk)为不定矩阵,则xk是一个鞍点。

2.5 无约束优化迭代法

    迭代法基本结构(最小化f(x)):
1:选择一个初始点,设置一个convergence tolerance τ,计数k。
2:决定搜索方向dk,使得函数下降。
3:构建xk+1 = xk+1 + αkdk,其中α称为步长或是学习速率。
4:如果||d||2 < τ,则输出解,否则重复直到收敛。

2.5.1 梯度下降法

    方向选取:dk = -g(xk)

    对于以上算法,主要问题在于如何确定dk,对于一阶导数的情况,dk = -g(xk),下面给出证明:

2.5.2 牛顿法

    方向选取:dk = -H-1(xk)g(xk)

下载markdown原文:
Download