梯度下降和反向传播:能改

一、背景

1.问题

通过顶点坐标公式,求解出抛物线最低点的w坐标,得到了让误差代价最小的w。同样的,也通过算数说明了这种一步到位求解的方式固然是好,但是在输入特征过多、样本数量过大的时候,却非常消耗计算资源。

2.思考

抛物线最低点的寻找过程,其实不必一步到位,大可以采用一点点挪动的方式。
通过在代价函数e与神经元的权重w图像上挪动w过程中发现,在最低点左侧,需要不断将w调大,在最低点右边,需要不断把w调小。
具体实施:斜率
开口向上抛物线,左边斜率为负数,右边斜率为正数,最低点斜率为0。
在这里插入图片描述
e=a w 2 w^2 w2+b w w w+c

3.解决

想办法得到代价函数e在当前w取值这个点上的斜率。通过斜率判断当前w的取值是在最低点左边还是右边,然后不断调整w直到到达最低点,这样,就得到一个误差代价最小的权重w

二、问题转化:求一元二次函数的斜率

1. 定义法

在遥远的过去,我们的祖先曾坚定不移地相信“天圆而地方”,但自从麦哲伦完成环球航行,我们开始了解到地球其实是一个球,表面其实是一个曲面,我们之所以觉得大地是平直的,只是因为我们太过渺小,在这个巨大的蓝色星球上,我们的祖先用脚能够丈量的范围,相比于整个地球,实在是微不足道。
在这里插入图片描述
同样的道理,当我们看这个曲线的时候,它显而易见是弯的,我们此刻更像是“上帝视角”看见了它的全部,而当我们盯着一个点不断变小,变小,当我们足够小的时候,同样显而易见的是,曲线是直的,这种“直”是宏观的“弯曲”在微观中的一种近似。

在这里插入图片描述
而一个直线的斜率就十分好求

作为一个极小的生物,降落在曲线一个点计算出来的斜率

既然作为直线的斜率,那就必须保证两点之间的距离足够小,以保证足够近似一个直线。

问题:这个距离得是多小,才算小?是相对于地球表面,两个脚印之间的距离吗?是分子或者原子之间的距离吗?都不是。其实,这种无限小我们很难找到直观得物理表达。它更是一个数学上的概念:极限
只有在曲线上一个点附近,取一个距离无线接近的点的时候,用直线的方法计算的斜率,才能称之为这个点的真实斜率。
我们不必取纠结这个无限小到底是多小,它只是数学上的一个概念和手段,当然,这个概念,也是微积分大厦的重要基石。

通过极限的数学表示: 当 △w 足够小的时候,△w会自然湮灭,所以这个点的斜率为 2aw+b

【数学上导数定义】在曲线中,某处的斜率我们一般会把它称为导数。用纵坐标的差值 / 横坐标的差值,并取极限。这种求导的方式,称为 定义法。用定义法,原则上可以求解任意一个函数任意一点的导数(可导的时候)

2. 求导公式和法则

定义法可以得到一个函数的导数,数学中常用的函数也就那么多,全部求出来做成一张表格形成固定的公式,用到的话直接查询。
在这里插入图片描述

问题:虽然常用的函数就那么多,但他们的组合又是无穷无尽。对于“无穷无尽”组合函数,我们不可能用有限的生命投入到无限的事情中,毕竟传统功夫,点到为止。但我们总是能琢磨出一些新的规律;实际上,不论怎样的函数组合都逃不脱3种基本的形式。

减法是加法的另一种形式,除法是乘法的另一种形式。


这与定义法得到的结果是一样。
在这里插入图片描述

3. 验证

在这里插入图片描述
在直线中斜率(导数)是个常数,因为斜率(导数)一直没什么变化
而在抛物线中斜率(导数)和自变量有关
这样,求得了代价函数每一点的斜率
小蓝的神经元终于可以根据代价函数的斜率是否大于0来调整w的行为了
问题:每次调整多少合适?

  1. 尝试:每次调整0.01 ,会发现调整的过程有点慢,最低点处还反复震荡,无论当前w是多少,调整幅度固定了。
    在这里插入图片描述

  2. 聪明:当w距离最低点比较远的时候,希望调整得快些,逐渐接近最低点的时候,希望它慢一点。这样,能加快下降的速度,又能在最低点的时候,稳如老狗。好比给你一张图片,让你把图片中的圆形切割出来,一开始,我们大刀阔斧的切,而越到后来越精雕细琢的切。这样要比每次呆板的切掉固定的大小,效率高精度高。
    在这里插入图片描述
    距离较远时,斜率的绝对值越大;距离越近时,斜率的绝对值越小,当接近最低点的时候,几乎为0,最低点的斜率就是0,是分界点。斜率在左右的符号又正好不同,在左边,斜率为负数,w在右边,斜率为正数
    方法:通过斜率的值
    在这里插入图片描述
    当w在左边,斜率为 负数,新的w会增大
    当w在右边,斜率为 正数,新的w会变小
    同时,也做到了距离最低点比较远的时候,斜率大(绝对值)调整得多,大刀阔斧
    距离最低点比较近的时候,斜率小(绝对值),调整得少,精雕细琢

问题:调整的过程,太过震荡
方法:通过学习率alpha
在这里插入图片描述
这种根据曲线不同处“斜率”不断调整权重w的方式,也就是所谓的梯度下降
问题:为什么称之为 “梯度下降”而不是“斜率下降”?
回答:“梯度”是一个比“斜率”更为广泛的概念

在这里插入图片描述

当代价函数为二维的时候,可以称“斜率”
当扩展到三维空间的时候,斜率不太合适了

而当我们多次梯度下降的过程后,w收敛到最低点附近,停止梯度下降的过程,将此时的w作为预测模型中w的值。此时,便能相当准确完成预测了。

问题:为什么Rosenblatt感知器的参数调整方式好用?
在这里插入图片描述
梯度下降 比 “一步求解”的正规方程 的优势和在?

首先,单个样本情况,它的代价函数是一个开口向上的抛物线
接着,多个样本情况,所有样本合在一起时,代价函数仍然是一个开口向上的抛物线
在这里插入图片描述
合成代价函数的最低点,是整个样本的全局最优点
下降的过程是一个明确切顺滑的轨迹,这也就是标准的梯度下降,也称为“批量梯度下降”

如果每次只使用一个样本,这个样本的最低点不一定就是全局最优
如果不断的依次在这些单样本代价函数上进行梯度下降
虽然会有震动和波动,但多次以后,它们的整体趋势仍然会向全局最优点挪动
最后,也可成功,而不像“正规方程”中那样,一次性代入全部的样本进行计算
如果有海量的数据,你的机器,必然GG
在这里插入图片描述
每次取一个样本进行梯度下降,因为其收敛的过程是一个随机震荡的轨迹,所以,也称之为“随机梯度下降”,实际上,最后在最低点附近,这个震荡的轨迹是一个经典的“布朗运动”

批量的好处是可以并行计算,可以更容易像最优点收敛;但其缺点明显,100万个数据要同时算出来,和“正规方程”没啥区别了
随机的好处是海量的数据照样可以慢慢来,每次都更新参数,参数的更新过程变得更快;缺点是无法并行,且不容易向全局最优点收敛
所以,综合二者优缺点,我们向来喜欢“折中”的。人们往往采用调和的方法 mini bath (mini 批量梯度下降)
在这里插入图片描述
每次选择一小批进行梯度下降,“折中调和”真是经久不衰的智慧

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

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

相关文章

echarts - xAxis.type设置time时该如何使用formatter的分级模板

echarts 文档中描述了x轴的多种类型 一、type: ‘value’ ‘value’ 数值轴,适用于连续数据。 此时x轴数据是从零开始,有数据大小的区分。 【注意】 因为xAxis.data是为category服务的,所以xAxis.data里面设置的数据无效。 二、type: ‘ca…

前端适配750px设计稿

全局引入 (function(doc, win) {const docEl doc.documentElement,resizeEvt orientationchange in window ? orientationchange : resizeconst setFont function() {let clientWidth docEl.clientWidth;if (!clientWidth) return;if (clientWidth > 750) {docEl.styl…

【自学笔记】01Java基础-07面向对象基础-03常量、枚举类、抽象类、多态详解

记录java基础学习中有关常量、枚举类、抽象类和多态的内容。 1 常量 什么是常量? 常量是使用了public static final修饰的成员变量,必须有初始化值,而且执行的过程中其值不能被改变。 常量名的命名规范:英文单词全部大写&#x…

【JAVA】throw 和 throws 的区别?

🍎个人博客:个人主页 🏆个人专栏: JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 throw: throws: 区别: 作用: 使用位置: 个数: 应…

软件测试|Python对JSON的解析和创建详解

简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,已经成为当今互联网应用中广泛使用的数据格式之一。Python提供了内置的模块来解析和创建JSON数据,使得在Python中处理JSON变得非常简单。本文将详细介绍Python…

【题解】—— LeetCode一周小结

1.经营摩天轮的最大利润 题目链接: 1599. 经营摩天轮的最大利润 你正在经营一座摩天轮,该摩天轮共有 4 个座舱 ,每个座舱 最多可以容纳 4 位游客 。你可以 逆时针 轮转座舱,但每次轮转都需要支付一定的运行成本 runningCost 。摩…

Docker简介、基本概念和安装

Docker简介、基本概念和安装 1.docker简介 1.1 什么是docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes (opens new window)在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2…

Objective-C中使用STL标准库Queue队列

1.修改.m文件为mm 2.导入queue头 #include<queue> 3.使用&#xff1a; #import <Foundation/Foundation.h> #include <cmath> #include <queue> using namespace std;int main(int argc, const char * argv[]) {autoreleasepool {NSLog("C标准…

云计算任务调度仿真01

云计算任务调度的研究大多数以来仿真研究&#xff0c;现梳理一些做过的代码研究 结果无数次的排错&#xff0c;终于finish with code 0 了 这个代码以来的是比较老的TensorFlow版本&#xff0c;我们都知道TensorFlow1.x和TensorFlow2.x之间有很大差别&#xff0c;但其实&#…

Realm Management Extension领域管理扩展之安全状态

RME基于Arm TrustZone技术。TrustZone技术在Armv6中引入,提供以下两个安全状态: 安全状态(Secure state)非安全状态(Non-secure state)以下图表显示了在AArch64中的这两个安全状态以及通常在每个安全状态中找到的软件组件: 该架构将在安全状态运行的软件与在非安全状态运…

openGauss学习笔记-190 openGauss 数据库运维-常见故障定位案例-服务启动失败

文章目录 openGauss学习笔记-190 openGauss 数据库运维-常见故障定位案例-服务启动失败190.1 服务启动失败190.1.1 问题现象190.1.2 原因分析190.1.3 处理办法 openGauss学习笔记-190 openGauss 数据库运维-常见故障定位案例-服务启动失败 190.1 服务启动失败 190.1.1 问题现…

Copilot 插件的使用介绍:如何快速上手

GitHub Copilot 本文主要介绍如何通过脚本工具激活 GitHub Copilot 插件&#xff0c;提供安装及激活图文教程&#xff0c;大家按下面操作即可激活GitHub Copilot插件&#xff0c;免费使用Ai编码工具 一、GitHub Copilot 介绍 GitHub Copilot 是由 GitHub 和 OpenAI 共同开发的…

告别冗余空白,批量删除空白行

你是否遇到过这样的尴尬情况&#xff1a;花费了大量时间整理的文档&#xff0c;却在最后发现其中充斥着无用的空白行&#xff0c;这些多余的空行不仅影响美观&#xff0c;还让整个文档显得杂乱无章。今天&#xff0c;我要给大家介绍一款强大且实用的工具——首助编辑高手&#…

移动端对大批量图片加载的优化方法(三)

移动端对大批量图片加载的优化方法&#xff08;三&#xff09;Flutter 本篇主要从Flutter开发中可以使用到的对大批量图片加载的优化方法进行整理。 1.合适的图片格式 详情请参考移动端对大批量图片加载的优化方法&#xff08;一&#xff09;。 2.缓存机制 在Flutter中&am…

浅谈对Promise的理解。

一、Promise定义 JS中用于处理异步操作的编程模式。一个Promise是一个代理&#xff0c;它代表一个创建Promise时不一定已知的值。它允许我们将处理的程序与异步操作的最终成功值或失败值原因想关联起来。这使得异步方法可以像同步方法一样返回值&#xff1a;异步方法不会立即返…

uniapp最简单的底部兼容安全区域显示

效果图&#xff1a; 1.html写上动态padding-bottom <view class"button-wrap" :style"padding-bottom:bottomPaddingrpx"><view class"com-btn cencel-btn">取消</view><view class"com-btn confirm-btn " cl…

【PostgreSQL创建索引的锁分析和使用注意】

1.1 创建普通B-tree索引的整体流程 如下是梳理的创建普通B-tree索引的大概流程&#xff0c;可供参考。 1.校验新索引的Catalog元数据|语法解析 ---将创建索引的sql解析成IndexStmt结构&#xff5c;校验B-Tree的handler -----校验内核是否支持该类型的索引,在pg_am中查找&q…

java 体育明星管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web 体育明星管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysq…

Clojure 实战(4):编写 Hadoop MapReduce 脚本

Hadoop简介 众所周知&#xff0c;我们已经进入了大数据时代&#xff0c;每天都有PB级的数据需要处理、分析&#xff0c;从中提取出有用的信息。Hadoop就是这一时代背景下的产物。它是Apache基金会下的开源项目&#xff0c;受Google两篇论文的启发&#xff0c;采用分布式的文件…