Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • Python

  • MLTutorials

    • 机器学习基础

      • 机器学习术语
      • 单变量线性回归
        • 模型表示(Model Representation)
        • 代价函数(Cost Function)
        • 梯度下降(Gradient Descent)
        • 梯度下降直观理解(Gradient Descent Intuition)
        • 线性回归中的梯度下降(Gradient Descent For Linear Regression)
      • 归一化、标准化和正则化
      • 经典网络
      • 多变量线性回归
      • 逻辑回归
      • 调试策略
      • 激活函数
      • Embedding
      • GCN
      • GAT
      • BayesClassifier
      • 距离函数
      • 损失函数
      • 强化学习
      • 线性判别分析LDA
      • Sequence2sequence
      • Network Compression
      • 机器学习算法集锦从贝叶斯到深度学习及各自优缺点
      • 各种机器学习算法的应用场景
      • 数据集
      • HashLearning
      • 正则化
      • 感知机
    • 模型与算法

    • 模型优化

  • 卷积神经网络

  • 循环神经网络

  • Transformer

  • VisionTransformer

  • 扩散模型

  • 计算机视觉

  • PTM

  • MoE

  • LoRAMoE

  • LongTailed

  • 多模态

  • 知识蒸馏

  • PEFT

  • 对比学习

  • 小样本学习

  • 迁移学习

  • 零样本学习

  • 集成学习

  • Mamba

  • PyTorch

  • CL

  • CIL

  • 小样本类增量学习FSCIL

  • UCIL

  • 多模态增量学习MMCL

  • LTCIL

  • DIL

  • 论文阅读与写作

  • 分布外检测

  • GPU

  • 深度学习调参指南

  • AINotes
  • MLTutorials
  • 机器学习基础
Geeks_Z
2022-09-22
目录

单变量线性回归

单变量线性回归(Linear Regression with One Variable)

模型表示(Model Representation)

  1. 房价预测训练集
Size in feet2 (x) Price ($) in 1000's(y)
2104 460
1416 232
1534 315
852 178
... ...

房价预测训练集中,同时给出了输入 x 和输出结果 y,即给出了人为标注的"正确结果",且预测的量是连续的,属于监督学习中的回归问题。

  1. 问题解决模型

其中 h 代表结果函数,也称为假设(hypothesis) 。假设函数根据输入(房屋的面积),给出预测结果输出(房屋的价格),即是一个 X→Y 的映射。

hθ(x)=θ0+θ1x,为解决房价问题的一种可行表达式。

x: 特征/输入变量。

上式中,θ 为参数,θ 的变化才决定了输出结果,不同以往,这里的 x 被我们视作已知(不论是数据集还是预测时的输入),所以怎样解得 θ 以更好地拟合数据,成了求解该问题的最终问题。

单变量,即只有一个特征(如例子中房屋的面积这个特征)。

代价函数(Cost Function)

我们的目的在于求解预测结果 h 最接近于实际结果 y 时 θ 的取值,则问题可表达为求解 ∑i=0m(hθ(x(i))−y(i)) 的最小值。

m: 训练集中的样本总数

y: 目标变量/输出变量

(x,y): 训练集中的实例

(x(i),y(i)): 训练集中的第 i 个样本实例

假设函数(Hypothesis): hθ(x)=θ0+θ1x

参数(Parameters): θ0,θ1

代价函数(Cost Function): J(θ0,θ1)=12m∑i=1m(hθ(x(i))−y(i))2

目标(Goal): minimizeθ0,θ1J(θ0,θ1)

为了直观理解代价函数到底是在做什么,先假设 θ1=0,并假设训练集有三个数据,分别为(1,1),(2,2),(3,3),这样在平面坐标系中绘制出 hθ(x) ,并分析 J(θ0,θ1) 的变化。

右图 J(θ0,θ1) 随着 θ1 的变化而变化,可见当 θ1=1 时,J(θ0,θ1)=0,取得最小值对应于左图青色直线,即函数 h 拟合程度最好的情况。

参数在 θ0 不恒为 0 时代价函数 J(θ) 关于 θ0,θ1 的**轮廓图(contour plot)**如下图所示,其中相同颜色的一个圈代表着同一高度(同一 J(θ) 值)。

θ0=360,θ1=0 时:

大概在 θ0=250,θ1=0.12 时:

上图中最中心的点(红点),近乎为图像中的最低点,也即代价函数的最小值,此时对应 hθ(x) 对数据的拟合情况如左图所示。

为了求解最小值,引入了代价函数(Cost Function)概念,用于度量建模误差。考虑到要计算最小值,应用二次函数对求和式建模,即应用统计学中的平方损失函数(最小二乘法):

J(θ0,θ1)=12m∑i=1m(y^i−yi)2=12m∑i=1m(hθ(xi)−yi)2

y^: y 的预测值

系数 12 存在与否都不会影响结果,这里是为了在应用梯度下降时便于求解,平方的导数会抵消掉 12 。

讨论到这里,我们的问题就转化成了求解 J(θ0,θ1) 的最小值。

最小二乘法(least square method)就是基于均方误差最小化来进行模型求解的一种方法,寻找可使损失函数值最小的参数 w 和 b 的过程称为最小二乘参数估计(parameter estimation)。

通过对损失函数分别求参数 w 和 b 的偏导,并且令导数为 0,可以得到这两个参数的闭式(closed-form)解(也即解析解):

w=∑i=1myi(xi−x¯)∑i=1mxi2−1m(∑i=1mxi)2b=1m∑i=1m(yi−wxi)

在实际任务中,只要我们把自变量(x, y, m)的值代入就可以求出数值解了。

为什么可以这样求解呢?因为损失函数是一个凸函数(记住是向下凸,类似 U 型曲线),导数为 0 表示该函数曲线最低的一点,此时对应的参数值就是能使均方误差最小的参数值。特别地,要判断一个函数是否凸函数,可以求其二阶导数,若二阶导数在区间上非负则称其为凸函数,若在区间上恒大于零则称其为严格凸函数。

凸函数: f(x1+x22)≤f(x1)+f(x2)2

梯度下降(Gradient Descent)

在特征量很大的情况下,即便是借用计算机来生成图像,人工的方法也很难读出 J(θ) 的最小值,并且大多数情况无法进行可视化,故引入梯度下降(Gradient Descent)方法,让计算机自动找出最小化代价函数时对应的 θ 值。

梯度下降背后的思想是:开始时,我们随机选择一个参数组合(θ0,θ1,......,θn) 起始点,计算代价函数,然后寻找下一个能使得代价函数下降最多的参数组合。不断迭代,直到找到一个局部最小值(local minimum),由于下降的情况只考虑当前参数组合周围的情况,所以无法确定当前的局部最小值是否就是全局最小值(global minimum),不同的初始参数组合,可能会产生不同的局部最小值。

下图根据不同的起始点,产生了两个不同的局部最小值。

视频中举了下山的例子,即我们在山顶上的某个位置,为了下山,就不断地看一下周围下一步往哪走下山比较快,然后就迈出那一步,一直重复,直到我们到达山下的某一处陆地。

梯度下降公式:

Repeat until convergence:{θj:=θj−α∂∂θjJ(θ0,θ1)}

θj: 第 j 个特征参数

”:=“: 赋值操作符

α: 学习速率(learning rate), α>0

∂∂θjJ(θ0,θ1): J(θ0,θ1) 的偏导

公式中,学习速率决定了参数值变化的速率即”走多少距离“,而偏导这部分决定了下降的方向即”下一步往哪里“走(当然实际上的走多少距离是由偏导值给出的,学习速率起到调整后决定的作用),收敛处的局部最小值又叫做极小值,即”陆地“。

注意,在计算时要批量更新 θ 值,即如上图中的左图所示,否则结果上会有所出入,原因不做细究。

梯度下降直观理解(Gradient Descent Intuition)

该节探讨 θ1 的梯度下降更新过程,即 θ1:=θ1−αddθ1J(θ1),此处为了数学定义上的精确性,用的是 ddθ1J(θ1),如果不熟悉微积分学,就把它视作之前的 ∂∂θ 即可。

把红点定为初始点,切于初始点的红色直线的斜率,表示了函数 J(θ) 在初始点处有正斜率,也就是说它有正导数,则根据梯度下降公式 ,θj:=θj−α∂∂θjJ(θ0,θ1) 右边的结果是一个正值,即 θ1 会向左边移动。这样不断重复,直到收敛(达到局部最小值,即斜率为 0)。

初始 θ 值(初始点)是任意的,若初始点恰好就在极小值点处,梯度下降算法将什么也不做(θ1:=θ1−α∗0)。

不熟悉斜率的话,就当斜率的值等于图中三角形的高度除以水平长度好啦,精确地求斜率的方法是求导。

对于学习速率 α,需要选取一个合适的值才能使得梯度下降算法运行良好。

  • 学习速率过小图示:

    收敛的太慢,需要更多次的迭代。

  • 学习速率过大图示:

    可能越过最低点,甚至导致无法收敛。

学习速率只需选定即可,不需要在运行梯度下降算法的时候进行动态改变,随着斜率越来越接近于 0,代价函数的变化幅度会越来越小,直到收敛到局部极小值。

如图,品红色点为初始点,代价函数随着迭代的进行,变化的幅度越来越小。

最后,梯度下降不止可以用于线性回归中的代价函数,还通用于最小化其他的代价函数。

线性回归中的梯度下降(Gradient Descent For Linear Regression)

线性回归模型

  • hθ(x)=θ0+θ1x
  • J(θ0,θ1)=12m∑i=1m(hθ(x(i))−y(i))2

梯度下降算法

Repeat until convergence:{θj:=θj−α∂∂θjJ(θ0,θ1)}

直接将线性回归模型公式代入梯度下降公式可得出公式

当 j=0,j=1 时,线性回归中代价函数求导的推导过程:

∂∂θjJ(θ1,θ2)=∂∂θj(12m∑i=1m(hθ(x(i))−y(i))2)=(12m∗2∑i=1m(hθ(x(i))−y(i)))∗∂∂θj(hθ(x(i))−y(i))=(1m∑i=1m(hθ(x(i))−y(i)))∗∂∂θj(θ0x0(i)+θ1x1(i)−y(i))

所以当 j=0 时:

∂∂θ0J(θ)=1m∑i=1m(hθ(x(i))−y(i))∗x0(i)

所以当 j=1 时:

∂∂θ1J(θ)=1m∑i=1m(hθ(x(i))−y(i))∗x1(i)

上文中所提到的梯度下降,都为批量梯度下降(Batch Gradient Descent),即每次计算都使用所有的数据集 (∑i=1m) 更新。

由于线性回归函数呈现碗状,且只有一个全局的最优值,所以函数一定总会收敛到全局最小值(学习速率不可过大)。同时,函数 J 被称为凸二次函数,而线性回归函数求解最小值问题属于凸函数优化问题。

另外,使用循环求解,代码较为冗余,后面会讲到如何使用**向量化(Vectorization)**来简化代码并优化计算,使梯度下降运行的更快更好。

#机器学习教程
上次更新: 2025/06/25, 11:25:50
机器学习术语
归一化、标准化和正则化

← 机器学习术语 归一化、标准化和正则化→

最近更新
01
帮助信息查看
06-08
02
常用命令
06-08
03
学习资源
06-07
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Geeks_Z | MIT License
京公网安备 11010802040735号 | 京ICP备2022029989号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式