线性回归逻辑回归以及梯度下降算法讲解

梯度下降算法很久之前就看过了,近来想对这些知识做一个整体的梳理,一来是为了便于对知识的回顾和总结,二来也希望可以帮助到大家更好地掌握到这些知识。

下图是一个算法最基本的流程图,接下来会讲解为什么要使用梯度下降算法,梯度下降算法中步长的理解、分类问题和回归问题的区别、sigmoid和softmax的比较。如果文章有错误的地方,欢迎大家指出。
在这里插入图片描述

1、梯度下降算法

1.1、梯度下降算法

我们先来介绍最基本的训练过程

现在我们假设只有一个输入样本和标签,经过了一个简单的变换,即求一个单变量线性回归
单变量线性回归表示方法:


在这里插入图片描述

单变量的代价函数J表示(均方误差):


在这里插入图片描述

我们现在用数学公式总结一下我们的问题,即


在这里插入图片描述

我们的目的是找到合适的θ0,θ1使得代价函数最小,这时候我们列出所有的θ0,θ1 对应的J值,得到一个三维空间图。


在这里插入图片描述

或者得到这种二维空间图

在这里插入图片描述

在实际的求Loss最小值中,不可能像我们看到的三维图或者二维图那么直观,我的理解是可能有很多的山组合到一起,无法看清楚最低点在哪里,我们能到的最低点只能是局部最低点


在这里插入图片描述

而且实际问题中的维度会很高,所以这里就开始引进了梯度下降算法。
梯度下降算法的思想:开始时随机选择一个参数的组合(θ012,……θn ),计算代价函数,我们寻找到下一个能让代价函数下降最快的参数组合。那么我们持续这样做就会得到一个局部最小值,选择不同的初始参数,可能会得到不同的局部最小值。(这里假设只有θ01
梯度法思想的三要素:出发点、下降方向、下降步长。


在这里插入图片描述

假设我们现在就在山上某一点(出发点),我们环顾360度,我们会发现最佳的下山方向(下降方向),然后我们朝最佳方向走几步,再停下来看看新的最佳的下山方向,我们再朝新的最佳的下山方向继续走,重复以上步骤,直到你接近局部最低的位置。

批量梯度下降算法:


在这里插入图片描述

α就是学习率,步长,它决定我们沿着梯度下降过程中迈开的步子有多大。在批量梯度下降中,我们每一次让所有参数减去学习率乘以代价函数。


在这里插入图片描述

注意:θ01(参数)是求出来之后同时更新的。

那么现在问题就转变成了求偏导


在这里插入图片描述

首先梯度下降算法和线性回归算法的比较如图:


在这里插入图片描述

对我们之前的线性回归问题运用梯度下降算法,关键在于求出代价函数的导数:


在这里插入图片描述

则算法改写成:


在这里插入图片描述

这就是批量梯度下降算法!

1.2、梯度下降算法中的学习率

第二个内容就是梯度下降算法中的学习率啦。


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

学习率在梯度下降过程中还是挺重要的,学习率小就会像蜗牛一样下降得慢,学习率大又会一次又一次越过最低点,如果太大的话,还会导致无法收敛,甚至发散。那么我们在梯度下降中的实际步长=α*斜率,我们来看上图中的ABCD四个点,可以发现从A点到D点斜率在逐渐减少,这时候实际的步长也在减少。那么当到D点时,斜率已经为0,说明已经到达了局部最优,实际步长也为0了。

1.3、 梯度下降法的类型

1、批量梯度下降法(Batch Gradient Descent, BGD)
2、随机梯度下降法(Stochastic Gradient Descent, SGD)
3、小批量梯度下降法(Mini-Batch Gradient Descent, MBGD)

1、批量梯度下降法(Batch Gradient Descent, BGD)
我们上面举例就是用的批量梯度下降算法,这是梯度下降法的基本类型,这种方法使用整个数据集(the complete dataset)去计算代价函数的梯度。每次使用全部数据计算梯度去更新参数,批量梯度下降法会很慢,并且很难处理不能载入内存(don’t fit in memory)的数据集。

2、随机梯度下降法(Stochastic Gradient Descent, SGD)
随机梯度下降法达到更快的计算。随机梯度下降法的第一步是随机化整个数据集。在每次迭代仅选择一个训练样本去计算代价函数的梯度,然后更新参数。即使是大规模数据集,随机梯度下降法也会很快收敛。随机梯度下降法得到结果的准确性可能不会是最好的,但是计算结果的速度很快。

3、小批量梯度下降法(Mini-Batch Gradient Descent, MBGD)
小批量梯度下降法是最广泛使用的一种算法,该算法每次使用m个训练样本(称之为一批)进行训练,能够更快得出准确的答案。小批量梯度下降法不是使用完整数据集,在每次迭代中仅使用m个训练样本去计算代价函数的梯度。一般小批量梯度下降法所选取的样本数量在50到256个之间,视具体应用而定。

2、分类问题和回归问题

不管是在深度学习还是机器学习中,我们一般都面临两个问题,一个就是分类问题,另外一个就是回归问题。

分类问题:主要判断是与否的问题,比如:否垃圾邮件,是否患病等二分类问题,以及手写数字识别,鸢尾花类别等多分类问题。
回归问题:预测某电影的票房,某地的房价

两者联系
分类问题就是回归问题输出的离散化

2.1、线性回归和逻辑回归

线性回归:输出标量wx+b连续值,可以用来处理线性回归问题
逻辑回归:就是把线性回归通过sigmoid或其他函数映射到0~1上,通过划分阈值比如0.5,大于阈值为1类,小于阈值为1类,通常用来处理分类问题。

2.2、逻辑回归中的二分类和多分类问题

二分类问题一般用sigmoid:预测值维度为1,将预测值归一化 [0~1]
多分类问题一般用softmax:预测值维度为K,把 k 维的预测值(a1,a2….ak)映射成一个(b1,b2….bk)
其中 b1,b2….bk=1

sigmoid公式:


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

softmax:


在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章