梯度下降法

梯度下降法可以做什么?

在 测试集上,通过最小化代价函数(成本函数)\(J(w,b)\)来训练的参数\(w\)和\(b\),

如图,在第二行给出和之前一样的逻辑回归算法的代价函数(成本函数)

梯度下降法的形象化说明

在这个图中,横轴表示 的空间参数\(w\)和\(b\),在实践中,\(w\)可以是更高的维度,但是为了更好地绘图, 定义\(w\)和\(b\),都是单一实数,代价函数(成本函数)\(J(w,b)\)是在水平轴\(w\)和\(b\)上的曲面,因此曲面的高度就是\(J(w,b)\)在某一点的函数值。 所做的就是找到使得代价函数(成本函数)\(J(w,b)\)函数值是最小值,对应的参数\(w\)和\(b\)。

如图,代价函数(成本函数)\(J(w,b)\)是一个凸函数(convex function),像一个大碗一样。

如图,这就与刚才的图有些相反,因为它是非凸的并且有很多不同的局部最小值。由于逻辑回归的代价函数(成本函数)\(J(w,b)\)特性, 必须定义代价函数(成本函数)\(J(w,b)\)为凸函数。

初始化\(w\)和\(b\),

可以用如图那个小红点来初始化参数\(w\)和\(b\),也可以采用随机初始化的方法,对于逻辑回归几乎所有的初始化方法都有效,因为函数是凸函数,无论在哪里初始化,应该达到同一点或大致相同的点。

以如图的小红点的坐标来初始化参数\(w\)和\(b\)。

2. 朝最陡的下坡方向走一步,不断地迭代

朝最陡的下坡方向走一步,如图,走到了如图中第二个小红点处。

可能停在这里也有可能继续朝最陡的下坡方向再走一步,如图,经过两次迭代走到第三个小红点处。

3.直到走到全局最优解或者接近全局最优解的地方

通过以上的三个步骤 可以找到全局最优解,也就是代价函数(成本函数)\(J(w,b)\)这个凸函数的最小值点。

梯度下降法的细节化说明(仅有一个参数)

假定代价函数(成本函数)\(J(w)\) 只有一个参数\(w\),即用一维曲线代替多维曲线,这样可以更好画出图像。

迭代就是不断重复做如图的公式:

\(:=\)表示更新参数,

$a $ 表示学习率(learning rate),用来控制步长(step),即向下走一步的长度\(\frac{dJ(w)}{dw}\) 就是函数\(J(w)\)对\(w\) 求导(derivative),在代码中 会使用\(dw\)表示这个结果

对于导数更加形象化的理解就是斜率(slope),如图该点的导数就是这个点相切于 \(J(w)\)的小三角形的高除宽。假设 以如图点为初始化点,该点处的斜率的符号是正的,即\(\frac{dJ(w)}{dw}>0\),所以接下来会向左走一步。

梯度下降

整个梯度下降法的迭代过程就是不断地向左走,直至逼近最小值点。

假设 以如图点为初始化点,该点处的斜率的符号是负的,即\(\frac{dJ(w)}{dw}<0\),所以接下来会向右走一步。

整个梯度下降法的迭代过程就是不断地向右走,即朝着最小值点方向走。

梯度下降法的细节化说明(两个参数)

逻辑回归的代价函数(成本函数)\(J(w,b)\)是含有两个参数的。

$\partial $ 表示求偏导符号,可以读作round

\(\frac{\partial J(w,b)}{\partial w}\) 就是函数\(J(w,b)\) 对\(w\) 求偏导,在代码中 会使用\(dw\) 表示这个结果,

\(\frac{\partial J(w,b)}{\partial b}\) 就是函数\(J(w,b)\)对\(b\) 求偏导,在代码中 会使用\(db\) 表示这个结果,

小写字母\(d\) 用在求导数(derivative),即函数只有一个参数,

偏导数符号$\partial $ 用在求偏导(partial derivative),即函数含有两个以上的参数。

神经网络基础篇:梯度下降法(Gradient Descent)的更多相关文章

  1. <反向传播(backprop)>梯度下降法gradient descent的发展历史与各版本

    梯度下降法作为一种反向传播算法最早在上世纪由geoffrey hinton等人提出并被广泛接受.最早GD由很多研究团队各自发表,可他们大多无人问津,而hinton做的研究完整表述了GD方法,同时hin ...

  2. (3)梯度下降法Gradient Descent

    梯度下降法 不是一个机器学习算法 是一种基于搜索的最优化方法 作用:最小化一个损失函数 梯度上升法:最大化一个效用函数 举个栗子 直线方程:导数代表斜率 曲线方程:导数代表切线斜率 导数可以代表方向, ...

  3. 梯度下降法Gradient descent(最速下降法Steepest Descent)

    最陡下降法(steepest descent method)又称梯度下降法(英语:Gradient descent)是一个一阶最优化算法. 函数值下降最快的方向是什么?沿负梯度方向  d=−gk

  4. matlab实现梯度下降法(Gradient Descent)的一个例子

    在此记录使用matlab作梯度下降法(GD)求函数极值的一个例子: 问题设定: 1. 我们有一个$n$个数据点,每个数据点是一个$d$维的向量,向量组成一个data矩阵$\mathbf{X}\in \ ...

  5. 梯度下降(gradient descent)算法简介

    梯度下降法是一个最优化算法,通常也称为最速下降法.最速下降法是求解无约束优化问题最简单和最古老的方法之一,虽然现在已经不具有实用性,但是许多有效算法都是以它为基础进行改进和修正而得到的.最速下降法是用 ...

  6. 【原创 深度学习与TensorFlow 动手实践系列 - 3】第三课:卷积神经网络 - 基础篇

    [原创 深度学习与TensorFlow 动手实践系列 - 3]第三课:卷积神经网络 - 基础篇 提纲: 1. 链式反向梯度传到 2. 卷积神经网络 - 卷积层 3. 卷积神经网络 - 功能层 4. 实 ...

  7. 机器学习(1)之梯度下降(gradient descent)

    机器学习(1)之梯度下降(gradient descent) 题记:最近零碎的时间都在学习Andrew Ng的machine learning,因此就有了这些笔记. 梯度下降是线性回归的一种(Line ...

  8. 理解梯度下降法(Gradient Decent)

    1. 什么是梯度下降法?   梯度下降法(Gradient Decent)是一种常用的最优化方法,是求解无约束问题最古老也是最常用的方法之一.也被称之为最速下降法.梯度下降法在机器学习中十分常见,多用 ...

  9. 梯度下降(Gradient Descent)小结 -2017.7.20

    在求解算法的模型函数时,常用到梯度下降(Gradient Descent)和最小二乘法,下面讨论梯度下降的线性模型(linear model). 1.问题引入 给定一组训练集合(training se ...

  10. 梯度下降算法 Gradient Descent

    梯度下降算法 Gradient Descent 梯度下降算法是一种被广泛使用的优化算法.在读论文的时候碰到了一种参数优化问题: 在函数\(F\)中有若干参数是不确定的,已知\(n\)组训练数据,期望找 ...

随机推荐

  1. 关于Android Stuido2.3和Eclipse4.4

    近3年没有做Android开发了,当时用是ECLISPE电脑配置2g,用的还可以. 现在又重新开始做安卓程序,发现大家都用AS了,作为技术人员,也就开始用了. (几年前AS已经发布,不过是0.x版本, ...

  2. cv2 数学基础---矩阵微分

    矩阵微分基础知识 定义 重要结论 应用 定义 (1) 向量对标量求导 矩阵对标量求导 我们可以看到上述求导过程实际上就是不同函数对变量求导,然后按照向量或者矩阵的形式排列,注意这里结果的结构应该与函数 ...

  3. MAC版本vmware无法识别虚拟机网卡适配器

    一.问题 莫名其妙的突然mac上的vmware无法识别网络适配器了 二.解决过程 1.重装vmware-无效 2.降级安装vmware-无效 3.安装pd虚拟机,并使用sudo命令启动-偶尔有效 4. ...

  4. 对于goland相对较新一些版本新建项目时没有go mod模式选项的坑

    前言 对于一些小白在网上看很早的一些go视频,使用goland2020.3.x版本或者其之前版本创建新项目,里面会有GO Modules(vgo)这个选项,也就是gomod模式创建新项目,然而对于现在 ...

  5. 巅峰对决:英伟达 V100、A100/800、H100/800 GPU 对比

    近期,不论是国外的 ChatGPT,还是国内诸多的大模型,让 AIGC 的市场一片爆火.而在 AIGC 的种种智能表现背后,均来自于堪称天文数字的算力支持.以 ChatGPT 为例,据微软高管透露,为 ...

  6. [NOIP 考前备战] 线段树刷题

    备战线段树 T1 AcWing .1275. 最大数 查询最大值 + 单点修改 #include <bits/stdc++.h> #define int long long using n ...

  7. Leetcode旋转图像

    上C语言代码,矩阵先转置再左右对称就是旋转图像的答案啦 void rotate(int** matrix, int matrixSize, int* matrixColSize){ int i,j,n ...

  8. Google Colab 现已支持直接使用 🤗 transformers 库

    Google Colab,全称 Colaboratory,是 Google Research 团队开发的一款产品.在 Colab 中,任何人都可以通过浏览器编写和执行任意 Python 代码.它尤其适 ...

  9. 探索 Web API:SpeechSynthesis 与文本语言转换技术

    一.引言 随着科技的不断发展,人机交互的方式也在不断演变.语音识别和合成技术在人工智能领域中具有重要地位,它们为残障人士和日常生活中的各种场景提供了便利.Web API 是 Web 应用程序接口的一种 ...

  10. 不会这5个Excel函数,别说你会做数据分析?

    当涉及数据分析时,Excel是一个非常有用的工具,而掌握一些核心函数将大大提高你在数据处理和分析方面的能力.以下是我对五个重要的Excel函数的详细介绍: 1. VLOOKUP 函数 VLOOKUP ...