【第十六周】回顾线性回归与逻辑回归以及它们的详细推导过程

目录

  • 摘要
  • Abstract
  • 1.线性回归
    • 1.1.一元线性回归
      • 1.1.1.函数凹凸性判断
    • 1.2.多元线性回归
    • 1.3.进一步理解梯度下降法
  • 2.逻辑回归
    • 2.1.信息论角度推导交叉熵损失函数
    • 2.2.概率论角度推导交叉熵损失函数
  • 3.额外阅读:Label Smoothing
    • 3.1.One-hot 和 Label Smoothing 的优缺点对比
  • 总结

摘要

本周学校的机器学习课程正好讲完了逻辑回归内容,正好趁着这个时间来回顾以下之前所学的知识,手动推导了一下线性回顾与逻辑回归的全过程,顺便进行了一些额外的阅读学习。

Abstract

This week, the machine learning course at school has just finished covering the content on logistic regression. Taking advantage of this time, I reviewed the knowledge I had learned before, manually derived the entire process of linear regression and logistic regression, and took the opportunity to do some additional reading and learning.

1.线性回归

1.1.一元线性回归

在这里插入图片描述

线性回归的本质是寻找到一条直线去最大程度地拟合已有的数据,而对于多维线性回归,就是找到一条直线去拟合高维度下多个自变量和应变量的关系。

假设目前我们已经找到了一条直线 y = w x + b y=wx+b y=wx+b,那么我们如何去评价这条直线对现有数据拟合程度的好坏呢?

很容易想到的一个角度:我们可以拿真实值和预测值做对比,预测值越接近真实值说明拟合程度越高,换句话也就是说真实值和预测值的差距越小说明拟合程度越高。

衡量差距的有以下三种方法:

在这里插入图片描述

对于第一种方法来说,当计算多个样本点时可能会发生正负抵消的情况,导致总体的差距被相互中和。比如a点真实值与预测值的差距是10,b点真实值与预测值的差距是-10,而a点和b点的总体差距却是 10 − 10 = 0 10-10=0 1010=0 了,这显然不能正确地表示真实值和预测值的总体差距大小。

对于第二种方法来说,由于后面我们使差距最小时需要对这个差距进行求导,而绝对值内并不是处处可导的,所以我们也不选择第二个方法。

因此,第三个方法就非常符合我们目前的要求了。

在这里插入图片描述

1.1.1.函数凹凸性判断

参考来源:二元函数凹凸性的判别法、二元函数判断凹凸性-CSDN

f ( x , y ) f(x,y) f(x,y) 在区域 D D D内具有二阶连续偏导数,记 A = f x x ′ ′ ( x , y ) A=f''_{xx}(x,y) A=fxx′′(x,y) B = f x y ′ ′ ( x , y ) B=f''_{xy}(x,y) B=fxy′′(x,y) C = f y y ′ ′ ( x , y ) C=f''_{yy}(x,y) C=fyy′′(x,y),则
(1)在 D D D上恒有 A < 0 A<0 A<0,且 A C − B 2 ≥ 0 AC-B^2≥0 ACB20时, f ( x , y ) f(x,y) f(x,y)在区域 D D D上时凹函数;
(2)在 D D D上恒有 A > 0 A>0 A>0,且 A C − B 2 ≥ 0 AC-B^2≥0 ACB20时, f ( x , y ) f(x,y) f(x,y)在区域 D D D上时凸函数。

:这里的凸函数是指下凸,也就是我们常见的“凹函数”。中国大陆数学界某些机构关于函数凹凸性定义和国外的定义是相反的,但在中国大陆涉及经济学的很多书中,凹凸性的提法和其他国家的提法是一致的,也就是和数学教材是反的。
参考链接:凸函数定义

在这里插入图片描述

在这里插入图片描述
到这里就证明了 L ( w , b ) L(w,b) L(w,b)为凸函数,所有就可以进行凸优化操作了。

最优化损失函数 L ( w , b ) L(w,b) L(w,b)

因为 L ( w , b ) L(w,b) L(w,b)为凸函数,所以存在最小值点,且这个最小值点就是 L ( w , b ) L(w,b) L(w,b)的驻点。
在这里插入图片描述
在这里插入图片描述

正如上述推导过程,我们求出参数 w w w b b b的解析式,通过解析式我们可以很轻松地对一元线性回归问题进行求解:只需要把给定的数据进行相应的处理再代入解析式求解即可。

1.2.多元线性回归

类比一元线性回归,多元线性回归的本质就是找到一条高维直线最大程度地去拟合高维度下 y y y x ( x 1 , x 2 , . . . , x n ) x(x_1,x_2,...,x_n) x(x1,x2,...,xn) 的关系。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上述推导过程得到了参数 θ ( θ 1 , θ 2 , . . . , θ n ) θ(θ_1,θ_2,...,θ_n) θ(θ1,θ2,...,θn)的解析表达式,我们只需把所给数据代入上式即可。

这种直接求得解析解的方法称为正规方程法

正规方程法(Normal Equation Method)是一种用于求解线性回归问题的解析方法,它通过直接求解最小化损失函数的解析解来找到最优参数。与梯度下降法不同,正规方程法不需要迭代,而是通过矩阵运算一次性求解最优参数。

正规方程法虽然可以直接给出最优解,但是当特征数量很大时整个算法的计算复杂度非常高,达到了 O ( n 3 ) O(n^3) O(n3) ,这在高维数据集上显然是不可行的。并且正规方程法需要存储整个矩阵 X X X 和目标向量 y y y ,还需要计算和存储 X T X X^TX XTX ( X T X ) − 1 (X^TX)^{-1} (XTX)1。当数据集很大的时候,这些矩阵的存储和计算可能会超出内存限制。正规方程法只适用于线性回归模型,而对于其他类型的模型(如逻辑回归、神经网络等)不适用。

和正规方程法相比,梯度下降法的计算复杂度较低,特别是对于大规模数据集。除此之外,梯度下降法只需要存储当前的参数向量和梯度,以及每次迭代的中间结果。对于大规模数据集,可以使用小批量梯度下降(Mini-batch Gradient Descent)或随机梯度下降(Stochastic Gradient Descent)来减少内存需求。梯度下降法还具有很高的灵活性,可以应用于各种类型的模型和损失函数。通过调整损失函数和梯度计算,可以轻松扩展到带正则化的模型和其他非线性模型。此外,梯度下降法可以很容易地并行化,提高计算效率。

1.3.进一步理解梯度下降法

在这里插入图片描述

总结一下就是,对于xOy平面上的一个点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0) 在所有xOy平面上的任一方向都有方向导数,每个不同方向的方向导数揭示了函数 f ( x , y ) f(x,y) f(x,y) 在整个方向上的变化率。而当我们找到一个方向和点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0) 的梯度同向时,此时就是 f ( x , y ) f(x,y) f(x,y) 的函数值增加最快的方向。而当我们找到一个方向和点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0) 的梯度反向时,此时就是 f ( x , y ) f(x,y) f(x,y) 的函数值减少最快的方向。

更新参数

找到方向之后下一步就是更新参数了。那么如何控制参数向损失函数下降最快的方向变化呢?答案就是在梯度的负方向上进行逐步增量,用公式表示就是:
θ n e w = θ o l d − η ▽ L ( θ o l d ) θ_{new} = θ_{old} -η▽L(θ_{old}) θnew=θoldηL(θold)
其中:

(1)负号表示“负方向”;
(2) η η η 为学习率,是控制 θ θ θ 向着 L ( θ ) L(θ) L(θ) 的局部最小值进行变化的步长,学习率 η η η 不宜过大(太大容易跑过局部最小值),也不宜太小(太小前进的速度太缓慢);
(3) ▽ L ( θ ) ▽L(θ) L(θ) 为梯度向量,梯度向量控制变化方向。

遗留的问题

对于上面这个公式,一直有个现在看起来比较 弱智 的问题萦绕着我,那就是为什么一个参数向量可以直接加或者减另一个向量就可以更新参数?

其实答案早就在初中数学告诉我 了,向量除了表示方向之外,还蕴含了关于位移的信息。比如向量 ( 2 , 3 ) (2,3) (2,3) 也可以看作一个点从原点 ( 0 , 0 ) (0,0) (0,0) 移动到点 ( 2 , 3 ) (2,3) (2,3)

对于参数更新的例子,我们不妨假设向函数值增大最快的方向更新,并且去掉学习率来简化公式,例如:
( x 1 , y 1 ) = ( x 0 , y 0 ) + ▽ f ( x 0 , y 0 ) (x_1,y_1) = (x_0,y_0) +▽f(x_0,y_0) (x1,y1)=(x0,y0)+f(x0,y0)

假设 ( x 0 , y 0 ) = ( 1 , 1 ) (x_0,y_0)=(1,1) (x0,y0)=(1,1),而 ▽ f ( x 0 , y 0 ) = ( 2 , 3 ) ▽f(x_0,y_0)=(2,3) f(x0,y0)=(2,3),此时 ( 1 , 1 ) + ( 2 , 3 ) (1,1)+(2,3) (1,1)+(2,3)就相当于点 ( 1 , 1 ) (1,1) (1,1) 先向 x 轴移动两个单位,再向 y y y 轴移动三个单位,最后到达点 ( 3 , 4 ) (3,4) (3,4),这可不就是向 ( 2 , 3 ) (2,3) (2,3) 这个向量的方向移动嘛!

因此再回看这个公式:
θ n e w = θ o l d − η ▽ L ( θ o l d ) θ_{new} = θ_{old} -η▽L(θ_{old}) θnew=θoldηL(θold)

η η η 决定了我们移动步伐的大小,只需要一直循环这个过程就可以一步一步地更新到最小值。

关于梯度下降法就不再赘述,更详细的也可以参考这个链接:梯度下降法

2.逻辑回归

逻辑回归的本质就是将线性回归模型的 y y y 值映射成 0~1 的概率值 p p p ,然后根据这个概率值进行分类。

逻辑回归的损失函数用的是交叉熵损失函数,第一次学习逻辑回归时,对交叉熵损失函数的推导时通过极大似然估计的方式推导的。但是最近在学习信息论的时候对交叉熵损失函数有了新的理解,故从信息论的观点去推导一下交叉熵损失函数。

2.1.信息论角度推导交叉熵损失函数

在这里插入图片描述
在这里插入图片描述

现在新的问题又出现了,明明交叉熵公式中的 y i y_i yi 是一个概率值,为什么交叉熵损失函数中 y i y_i yi 却是个标签呢?

其实可以这样子理解:

对于分类任务来说,我们取得一个数据实际上也只能把它分到在唯一的一个类别中。例如在手写数字识别中(数字为0~9),若样本是数字5,则对应的真实分布应为 [ 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 ] [0,0,0,0,0,1,0,0,0,0] [0,0,0,0,0,1,0,0,0,0],所以在真实分布中的概率应为 P ( 5 ) = 1 P(5)=1 P(5)=1,而其他数字的概率均为0。也就是说, y i y_i yi 其实也可以看作是一个概率,只不过 y i y_i yi 的概率除了1就是0。假设网络输出分布为 [ 0.2 , 0.3 , 0.1 , 0 , 0 , 0.3 , 0.1 , 0 , 0 , 0 ] [0.2,0.3,0.1,0,0,0.3,0.1,0,0,0] [0.2,0.3,0.1,0,0,0.3,0.1,0,0,0],也就是说我们想要网络输出概率 P ( 5 ) P(5) P(5) 越接近1越好,而其他位置的概率越接近0就越好。

我们可以计算一下网络输出分布的loss,发现 L o s s ≈ 1.2040 Loss≈1.2040 Loss1.2040

再考虑第二个输出分布 [ 0.1 , 0.1 , 0 , 0 , 0 , 0.7 , 0 , 0.1 , 0 , 0 ] [0.1,0.1,0,0,0,0.7,0,0.1,0,0] [0.1,0.1,0,0,0,0.7,0,0.1,0,0],求解一下loss得 L o s s ≈ 0.3567 Loss≈0.3567 Loss0.3567。显然第二个输出分布的loss明显低于第一个分布,从概率分布上也可以轻易看出第二个输出分布更符合真实分布。

而在二分类问题中,不仅需要考虑模型对正类的预测能力,还需要考虑其对负类的预测能力。如果只用 − y l o g ( y ^ ) −ylog(\hat y) ylog(y^),那么损失函数将仅关注正类的预测,而忽略了负类。通过加入 − ( 1 − y ) l o g ( 1 − y ^ ) -(1−y)log(1−\hat y) (1y)log(1y^),我们可以同时评估模型对正类和负类的预测效果。通过同时考虑正类和负类的预测,模型可以更均衡地学习数据中的特征,避免过度关注某一类而忽略另一类,从而提高整体的泛化能力。
在这里插入图片描述
从图像中也可以看出,当y=1时,如果预测类别越接近1损失函数的值就越小,越接近0损失函数的值就越大;当y=0时,如果预测类别越接近0损失函数的值就越小,越接近1损失函数的值就越大。这样我们就定义了一个预测越离谱,损失就越大;预测越靠谱,损失就越小的损失函数。

也正是因为如此,交叉熵损失函数可以用来实现分类任务。

2.2.概率论角度推导交叉熵损失函数

这个部分的推导内容已经在【第二周】李宏毅机器学习笔记02里做过详细的推导,下面就用简单的公式快速复习一遍推导流程。

在这里插入图片描述

3.额外阅读:Label Smoothing

Label Smoothing 是机器学习领域的一种正则化方法,通常用于分类问题,目的是防止模型在训练时过于自信地预测标签,改善泛化能力差的问题。在交叉熵损失CrossEntropy_Loss中,非标签对应位置的预测信息是没有被使用的,也就是上文曾提到由于标签值为0从而交叉熵并未考虑负类的影响。而Label Smoothing使用了这种信息,宏观上讲,也是略微改变了标签的分布,使得标签不在是非0即1了,故而称为标签平滑。

Label Smoothing 使得 one-hot 编码的 hard label 转变为了 soft label,使网络优化更加平滑。

在这里插入图片描述

3.1.One-hot 和 Label Smoothing 的优缺点对比

One-Hot

优点

  • 明确的类别区分:每个类别都有唯一的向量表示,模型可以清楚地知道每个样本属于哪个类别。
  • 易于实现:实现简单,适用于大多数分类任务。
  • 计算效率高:在计算损失函数时,可以直接使用交叉熵损失(Cross-Entropy Loss),计算效率较高。

缺点

  • 过拟合风险:在小数据集上,模型可能会过度拟合训练数据,因为 one-hot 编码没有提供任何关于类别的额外信息。
  • 不考虑类别间的相似性:one-hot 编码将所有类别视为完全独立,忽略了类别之间的潜在相似性或关系。

Label Smoothing

优点

  • 减少过拟合:通过引入标签噪声,模型不容易过拟合训练数据,从而提高泛化能力。
  • 考虑类别间的相似性:Label Smoothing 隐式地考虑了类别之间的相似性,因为每个类别的标签不再是完全独立的。
  • 提升模型鲁棒性:模型对输入数据的变化更加鲁棒,能够在面对噪声或异常值时表现更好。

缺点

  • 增加复杂性:实现 Label Smoothing 相对复杂,需要调整超参数(如平滑因子)。
  • 可能降低性能:在某些情况下,Label Smoothing 可能会导致模型性能下降,尤其是在类别之间确实没有相似性的情况下。
  • 解释性差:相比于 one-hot 编码,Label Smoothing 的标签表示更难解释,因为每个类别的标签不再是简单的 0 或 1。

对于为什么标签平滑可以产生作用可以参考这篇论文:When Does Label Smoothing Help?
损失函数

总结

本周对线性回归和逻辑回归的重新推导加深了我对这些基础知识的印象,特别是对梯度和方向导数的理解中又更深入了一步,解决了很多之前并为注意到的遗留问题。希望往后也能这样继续充满学习热情来解决问题。下周见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/446491.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字媒体技术基础:色度子采样(4:4:4、4:2:2 、4:2:0)

在数字视频处理中&#xff0c;色度子采样 Chroma Subsampling可以用于压缩视频文件的大小&#xff0c;同时在大多数情况下保持较高的视觉质量&#xff0c;它的原理基于人类视觉系统对亮度 Luminance比对色度 Chrominance更加敏感这一特点。 一、 采样格式的表示方法 色度子采样…

人工智能和机器学习之线性代数(一)

人工智能和机器学习之线性代数&#xff08;一&#xff09; 人工智能和机器学习之线性代数一将介绍向量和矩阵的基础知识以及开源的机器学习框架PyTorch。 文章目录 人工智能和机器学习之线性代数&#xff08;一&#xff09;基本定义标量&#xff08;Scalar&#xff09;向量&a…

arcpy总结

arcpy 一、是什么二、为什么三、怎么用1、在哪里打开2、基础术语3、代码组织4、案例&#xff08;1&#xff09;裁剪&#xff08;2&#xff09;土地变化特征分析&#xff08;4&#xff09;文件访问与检测&#xff08;5&#xff09;空间数据的查询、插入与更新&#xff08;6&…

Spring Boot知识管理系统:安全与合规性

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

IP报文格式、IPv6概述

IPv4报文格式 IPv4报文首部长度至少为20字节(没有可选字段和填充的情况下)&#xff0c;下面来逐一介绍首部各个字段的含义 Version版本&#xff1a;表示采用哪一种具体的IP协议&#xff0c;对于IPv4来说该字段就填充4以表示&#xff0c;如果是IPv6就填充6IHL首部长度&#xff…

公开课 | 2024最新清华大模型公开课 第3课 神经网络与大模型基础 Part 2

本文由readlecture.cn转录总结。ReadLecture专注于音、视频转录与总结&#xff0c;2小时视频&#xff0c;5分钟阅读&#xff0c;加速内容学习与传播。 大纲 神经网络概述 神经网络的概念 神经网络的应用方式 序列建模与神经网络架构 循环神经网络&#xff08;RNN&#xff09;…

Python | Leetcode Python题解之第477题汉明距离总和

题目&#xff1a; 题解&#xff1a; class Solution:def totalHammingDistance(self, nums: List[int]) -> int:n len(nums)ans 0for i in range(30):c sum(((val >> i) & 1) for val in nums)ans c * (n - c)return ans

多线程(三):线程等待获取线程引用线程休眠线程状态

目录 1、等待一个线程&#xff1a;join 1.1 join() 1.2 join(long millis)——"超时时间" 1.3 join(long millis&#xff0c;int nanos) 2、获取当前线程的引用&#xff1a;currentThread 3、休眠当前进程&#xff1a;sleep 3.1 实际休眠时间 3.2 sleep的特殊…

电脑查不到IP地址是什么原因?怎么解决

在日常使用电脑的过程中&#xff0c;有时会遇到无法查询到电脑IP地址的情况&#xff0c;这可能会影响到网络的正常使用。本文将探讨电脑查不到IP地址的可能原因&#xff0c;并提供相应的解决方案。 一、原因分析 ‌网络连接问题‌&#xff1a;首先&#xff0c;网络连接不稳定或…

大数据-159 Apache Kylin 构建Cube 准备和测试数据

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

QD1-P26、27、28 CSS 属性 文本

本节&#xff08;P26、27、28 三合一&#xff09;学习&#xff1a;CSS 文本属性。 ‍ 本节视频 https://www.bilibili.com/video/BV1n64y1U7oj?p26 CSS&#xff08;层叠样式表&#xff09;中用于设置文本样式的属性有很多&#xff0c;以下是一些常用的文本属性&#xff1a; …

机器视觉AI场景为什么用Python比C++多?

好多开发者在讨论机在机器视觉人工智能领域的时候&#xff0c;纠结到底是用Python还是C&#xff0c;实际上&#xff0c;Python 和 C 都有广泛的应用&#xff0c;选择 Python而不是 C 可能有以下一些原因&#xff1a; 语言易学性和开发效率 语法简洁&#xff1a; Python 语法简…

Windows 安装Redis(图文详解)

Windows 安装Redis&#xff08;图文详解&#xff09; Redis是什么数据库&#xff1f; Remote Dictionary Server(Redis) 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库&#xff0c;并提供多种语…

【exceljs】纯前端如何实现Excel导出下载和上传解析?

前段时间写过一篇类似的文章&#xff0c;介绍了sheetjs。最近发现了一个更好用的库ExcelJS&#xff0c;它支持高级的样式自定义&#xff0c;并且使用起来也不复杂。实际上sheetjs也支持高级自定义样式&#xff0c;不过需要使用付费版。 下面对比了Exceljs和Sheetjs&#xff1a…

SQLI LABS | SQLI LABS 靶场初识

关注这个靶场的其它相关笔记&#xff1a;SQLI LABS —— 靶场笔记合集-CSDN博客 0x01&#xff1a;SQLI LABS 靶场简介 SQLi-Labs 靶场是一个专门用于学习和测试 SQL 注入漏洞的开源靶场&#xff0c;该靶场提供了多个具有不同漏洞类型和难度级别的 Web 应用程序的环境。这些应用…

LabVIEW开关磁阻电机特性测量系统

基于LabVIEW软件和特定硬件组件的开关磁阻电机&#xff08;SRM&#xff09;特性测量系统&#xff0c;结合多功能数据采集卡&#xff0c;统能够准确地测量并分析SRM的电磁特性&#xff0c;从而支持电机模型的精确建立和性能优化。 项目背景 在工业生产和家用电器领域&#xff0…

树莓派应用--AI项目实战篇来啦-15.SSD Mobilenet V3目标检测

1. Mobilenet 介绍 Mobilenet 是一种专为移动和嵌入式视觉应用而设计的卷积神经网络。它们不使用标准的卷积层&#xff0c;而是基于使用深度可分离卷积的简化架构&#xff0c;使用这种架构&#xff0c;我们可以为移动和嵌入式设备&#xff08;例如&#xff1a;树莓派&#xff0…

chattts一步步的记录,先跑起来。

0.下载git工具 Git - Downloads (git-scm.com)https://git-scm.com/downloads Download – TortoiseGit – Windows Shell Interface to Githttps://tortoisegit.org/download/ 1.安装 随意&#xff0c;可以安汉化&#xff0c;也可不安。无所谓 2.建个目录&#xff0c;我的上…

tkinter库的应用小示例:文本编辑器

tkinter库的应用小示例&#xff1a;文本编辑器 要 求&#xff1a; 创建一个文本编辑器&#xff0c;功能包括&#xff0c;创建、打开、编辑、保存文件。一个Button小组件&#xff0c;命名为btn_open,用于打开要编辑的文件&#xff0c;一个Button小组件&#xff0c;命名为btn_s…

Mysql(3)—数据库相关概念及工作原理

一、数据库相关概念 ​ 数据库&#xff08;Database, DB&#xff09; &#xff1a; 数据库是一个以某种有组织的方式存储的数据集合。它通常包括一个或多个不同的主题领域或用途的数据表。 数据库管理系统&#xff08;Database Management System, DBMS&#xff09; &#xf…