机器学习入门|梯度下降

简介: 在求解机器学习算法的模型参数时,很多情况下会用到梯度下降,这里稍微记一下学习笔记。

在求解机器学习算法的模型参数时,很多情况下会用到梯度下降,这里稍微记一下学习笔记。

梯度:梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。————百度百科

梯度下降算法本质上就是沿着负梯度方向寻找函数最小值的求解方法

梯度下降法是迭代法的一种,以逐渐逼近解为目的求出解的精确值。牛顿方法也是一种迭代法。

1346902296_9917_1_

上图是梯度下降的一个直观图像,从某一点开始,沿着下降最快的方向一步一步逼近最小值。(从上图也可看出,梯度下降根据初始点选择的不同,最终求出的解也可能不同,不一定会收敛到最小值,可能会收敛到某个极小值)

1.批梯度下降(耗时长)

最小二乘法求误差的最小平方和,即$J(\theta)$最小值

$$ J(\theta )=\frac{1}{2}\sum_{i=0}^{n}(x_{i}\theta _{i}-y)^{2} $$

更新$\theta$:

$$ \theta _{i}=\theta _{i}-\alpha \frac{\partial J(\theta )}{\partial \theta _{i}} $$

$$ =\theta _{i}-\alpha\sum_{j=1}^{m}(h_{\theta }(x^{(j)})-y^{(j)})x_{i}^{(j)} $$

其中:α控制更新幅度大小,即训练的步长,m是样本数量,n是特征数量,y是给出的样本值,h是以θ为参数的关于x的函数,也是预测值。

批梯度下降每一次更新都会考虑所有m个样本,所以花时间长。

运用梯度下降法的关键在于控制步长$\alpha$的大小,太大可能会导致更新结果越过的最小值,导致震荡(如下图),太小会导致迭代次数过多,运行时间开销大

111_1_

2.随机梯度下降(速度快,但是不能收敛到最小值)

伪代码如下:
for(j=1;j<=m;j++) $\theta _{i}=\theta _{i}-\alpha(h_{\theta }(x^{(j)})-y^{(j)})x_{i}^{(j)}$

随机梯度下降每次更新只更新 一个样本,对公式做了简化,所以速度快。但是它每次更新都只选取一个样本,所以无法精确逼近最小值。

logistic回归

logistic函数

$$ g(z)=\frac{1}{1+e^{-z}} $$

C5_GU5HWK_C_9N9WCJU_1_

可以看到,当x>=0时,y>=0.5,当x<0时,y<0.5。因此,我们可以以x和0的大小关系做分类器,x>0的,y=1,x<0的,y=0。

令 $h_{\theta}(X)=g(\theta^{T}X)=\frac{1}{1+e^{-\theta ^{T}X}}$

$$ P(y=1|x_{i}\theta)=h_{\theta}(x) P(y=0|x_{i}\theta)=1-h_\theta(x) $$

$$ P(y|x_{i}\theta)=h_{\theta}()x^{y}(1-h_{\theta}()x)^{1-y} $$

有关似然函数和贝叶斯公式的内容可阅读这里。
似然函数:

$$ L(\theta)=P(Y|X_{i}\theta)=\prod_{i=1}^{m}P(y^{(i)}|x_{j}^{(i)}\theta) $$

$$ =\prod_{i=1}^{m}h_{\theta }(x^{(i)})y^{(i)}(1-h_{\theta }(x^{(i)}))^{1-y^(i)} $$

取对数似然:

$$ l(\theta)=logL(\theta) $$

$$ =\sum_{i=1}^{m}y^{(i)}logh_{\theta}(x^{(i)})+(1-y^{(i)})log(1-h_{\theta}(x^{(i)})) $$

用梯度上升更新参数$\theta$以求得最大似然:

$$ \theta=theta+\alpha\bigtriangledown _{\theta}l(\theta)(注意这里是+号) $$

计算得到:

$$ \frac{\partial }{\partial \theta_{j}}l(\theta)=\sum_{i=1}^{m}(y^{(i)}-h_{\theta}(x^{(i)}))x_{j}^{(i)} $$

$$ \theta _{j}=\theta _{j}-\alpha\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{j}^{(i)} $$

可以看到,最终得到的更新公式与之前几乎相同,唯一的区别在于$h(_\theta(x))$函数。

上图的代码实现:

import numpy as np
 import pandas as pd
 import matplotlib.pyplot as plt
 %matplotlib inline
 
def sigmoid(z):#逻辑回归模型
 return 1/(1+np.exp(-z))
 
nums=np.arange(-10,10,step=0.5)
 fig, ax=plt.subplots()
 ax.plot(nums,sigmoid(nums),'#000FFF')
目录
相关文章
|
2月前
|
机器学习/深度学习 数据采集 算法
深入了解机器学习:从入门到应用
【10月更文挑战第6天】深入了解机器学习:从入门到应用
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI的奥秘:机器学习入门指南
【10月更文挑战第30天】本篇文章是一份初学者友好的机器学习入门指南,旨在帮助读者理解并开始实践机器学习。我们将介绍机器学习的基本概念,包括监督学习、无监督学习和强化学习等。我们还将提供一些实用的代码示例,以帮助读者更好地理解和应用这些概念。无论你是编程新手,还是有一定经验的开发者,这篇文章都将为你提供一个清晰的机器学习入门路径。
37 2
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
机器学习基础:使用Python和Scikit-learn入门
33 1
|
2月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第12天】本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型训练和评估等步骤,并提供了代码示例。通过本文,读者可以掌握机器学习的基本流程,并为深入学习打下坚实基础。
24 1
|
2月前
|
机器学习/深度学习 算法 Python
“探秘机器学习的幕后英雄:梯度下降——如何在数据的海洋中寻找那枚失落的钥匙?”
【10月更文挑战第11天】梯度下降是机器学习和深度学习中的核心优化算法,用于最小化损失函数,找到最优参数。通过计算损失函数的梯度,算法沿着负梯度方向更新参数,逐步逼近最小值。常见的变种包括批量梯度下降、随机梯度下降和小批量梯度下降,各有优缺点。示例代码展示了如何用Python和NumPy实现简单的线性回归模型训练。掌握梯度下降有助于深入理解模型优化机制。
30 2
|
2月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型选择与训练、模型评估及交叉验证等关键步骤。通过本文,初学者可以快速上手并掌握机器学习的基本技能。
62 2
|
2月前
|
机器学习/深度学习 人工智能 数据挖掘
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第6天】在人工智能领域,机器学习已成为核心技术。本文指导初学者使用Python与Scikit-learn入门机器学习,涵盖基本概念、环境搭建、数据处理、模型训练及评估等环节。Python因简洁性及其生态系统成为首选语言,而Scikit-learn则提供了丰富工具,简化数据挖掘与分析流程。通过实践示例,帮助读者快速掌握基础知识,为进一步深入研究奠定坚实基础。
30 4
|
2月前
|
机器学习/深度学习 自然语言处理 前端开发
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
549 1
|
2月前
|
机器学习/深度学习 算法 大数据
机器学习入门:梯度下降算法(下)
机器学习入门:梯度下降算法(下)
|
2月前
|
机器学习/深度学习 算法
机器学习入门:梯度下降算法(上)
机器学习入门:梯度下降算法(上)