机器学习入门|梯度下降

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

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

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

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

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

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')
目录
相关文章
|
3月前
|
机器学习/深度学习 开发者 异构计算
机器学习入门-Colab环境
Google Colab(Colaboratory)是一个免费的云端环境,旨在帮助开发者和研究人员轻松进行机器学习和数据科学工作。它提供了许多优势,使得编写、执行和共享代码变得更加简单和高效。Colab在云端提供了预配置的环境,可以直接开始编写代码,并且提供了免费的GPU和TPU资源,这对于训练深度学习模型等计算密集型任务非常有帮助,可以加速模型训练过程。
89 0
|
28天前
|
机器学习/深度学习 人工智能 运维
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(二)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
59 1
|
28天前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(一)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
73 1
|
7天前
|
机器学习/深度学习 数据可视化 数据挖掘
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
19 1
|
17天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【4月更文挑战第9天】本文介绍了使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先,简述了机器学习的基本概念和类型。接着,展示了如何安装Python和Scikit-learn,加载与处理数据,选择模型进行训练,以及评估模型性能。通过本文,读者可了解机器学习入门步骤,并借助Python和Scikit-learn开始实践。
|
1月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习】机器学习简单入门
【机器学习】机器学习简单入门
37 1
|
2月前
|
机器学习/深度学习 数据采集 算法
Python中的机器学习入门:从数据预处理到模型评估
Python中的机器学习入门:从数据预处理到模型评估
195 35
|
2月前
|
机器学习/深度学习 数据挖掘 程序员
深入理解Python协程:提升并发编程效率基于Python的机器学习入门:从理论到实践
本文旨在探讨Python协程(Coroutine)的内部机制及其在并发编程中的应用。区别于传统的线程和进程,协程提供了一种更轻量级、高效的并发编程模式。通过深入分析协程的工作原理,本文将展示如何利用协程优化程序性能,实现高效的异步任务处理。我们将通过实例探讨协程的创建、事件循环的管理、以及与异步IO的集成,为读者提供一套完整的协程应用方案。此外,本文还将对比协程与其他并发模型(如多线程和多进程)的优劣,帮助读者全面理解协程在现代编程中的重要性。 在本文中,我们将深入探讨机器学习的核心概念,并通过Python实现其基础应用。不同于传统的技术文章摘要,我们希望通过一个故事性的引入,让读者感受到
|
3月前
|
机器学习/深度学习 人工智能 算法
机器学习入门知识
机器学习入门知识
150 0
|
3月前
|
机器学习/深度学习 人工智能 算法
【人工智能】<吴恩达-机器学习>批量梯度下降&矩阵和向量运算概述
【1月更文挑战第26天】【人工智能】<吴恩达-机器学习>批量梯度下降&矩阵和向量运算概述

热门文章

最新文章