深度学习之梯度下降算法

梯度下降算法

  • 梯度下降算法
    • 数学公式
      • 结果
  • 梯度下降算法存在的问题
  • 随机梯度下降算法

梯度下降算法

数学公式

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

这里案例是用梯度下降算法,来计算 y = w * x
先计算出梯度,再进行梯度的更新

import numpy as np
import matplotlib.pyplot as pltx_data = [1.0, 2.0, 3.0, 4.0]
y_data = [2.0, 4.0, 6.0, 8.0]mse_list= []
w_list = []w = 1.0 #注意:这里设初始权重为1.0
def forward(x):return w*x
def const(xs, ys):const = 0for x, y in zip(xs, ys):y_pred = forward(x)const += (y_pred - y)**2return const/ len(xs)def gradient(xs, ys):grad  = 0for x, y in zip(xs, ys):grad += 2 * x * (w * x - y)return grad / len(xs)print('Predict (befortraining)',4,forward(4))#100轮
for epoch in range(100):const_val = const(x_data, y_data) #损失值,为了绘图,才算他grad_val = gradient(x_data, y_data) # gradient函数求梯度值w = w - 0.01 * grad_val#这里学习率取的 0.01,要尽量小mse_list.append(const_val)print('Epoch:', epoch, 'w=', w, 'cost=', const_val)
print('Predict(after training)', 4, forward(4))#绘图
w_list = np.arange(0, 100, 1)
plt.plot(w_list, mse_list)
plt.xlabel("epoch")
plt.ylabel("mse")
plt.show()

结果

Predict (befortraining) 4 4.0
Epoch: 0 w= 1.15 cost= 7.5
Epoch: 1 w= 1.2774999999999999 cost= 5.418750000000001
Epoch: 2 w= 1.385875 cost= 3.9150468750000016
Epoch: 3 w= 1.47799375 cost= 2.828621367187501
Epoch: 4 w= 1.5562946874999999 cost= 2.0436789377929685
Epoch: 5 w= 1.6228504843749998 cost= 1.4765580325554204
Epoch: 6 w= 1.6794229117187498 cost= 1.0668131785212922
Epoch: 7 w= 1.7275094749609374 cost= 0.7707725214816338
Epoch: 8 w= 1.7683830537167968 cost= 0.55688314677048
Epoch: 9 w= 1.8031255956592773 cost= 0.40234807354167157
Epoch: 10 w= 1.8326567563103857 cost= 0.29069648313385765
Epoch: 11 w= 1.857758242863828 cost= 0.21002820906421227
Epoch: 12 w= 1.8790945064342537 cost= 0.15174538104889318
Epoch: 13 w= 1.8972303304691156 cost= 0.10963603780782546
Epoch: 14 w= 1.9126457808987483 cost= 0.07921203731615392
Epoch: 15 w= 1.925748913763936 cost= 0.05723069696092115
Epoch: 16 w= 1.9368865766993457 cost= 0.041349178554265495
Epoch: 17 w= 1.9463535901944438 cost= 0.02987478150545676
Epoch: 18 w= 1.9544005516652772 cost= 0.021584529637692605
Epoch: 19 w= 1.9612404689154856 cost= 0.015594822663232907
Epoch: 20 w= 1.9670543985781628 cost= 0.011267259374185785
Epoch: 21 w= 1.9719962387914383 cost= 0.00814059489784921
Epoch: 22 w= 1.9761968029727226 cost= 0.0058815798136960945
Epoch: 23 w= 1.9797672825268142 cost= 0.004249441415395416
Epoch: 24 w= 1.9828021901477921 cost= 0.0030702214226231784
Epoch: 25 w= 1.9853818616256234 cost= 0.0022182349778452353
Epoch: 26 w= 1.9875745823817799 cost= 0.0016026747714931776
Epoch: 27 w= 1.989438395024513 cost= 0.0011579325224038112
Epoch: 28 w= 1.991022635770836 cost= 0.0008366062474367442
Epoch: 29 w= 1.9923692404052107 cost= 0.0006044480137730437
Epoch: 30 w= 1.993513854344429 cost= 0.0004367136899510165
Epoch: 31 w= 1.9944867761927647 cost= 0.00031552564098961234
Epoch: 32 w= 1.99531375976385 cost= 0.00022796727561499308
Epoch: 33 w= 1.9960166957992724 cost= 0.0001647063566318346
Epoch: 34 w= 1.9966141914293816 cost= 0.00011900034266650408
Epoch: 35 w= 1.9971220627149744 cost= 8.597774757655033e-05
Epoch: 36 w= 1.9975537533077283 cost= 6.211892262405537e-05
Epoch: 37 w= 1.9979206903115692 cost= 4.488092159587483e-05
Epoch: 38 w= 1.9982325867648338 cost= 3.242646585301842e-05
Epoch: 39 w= 1.9984976987501089 cost= 2.3428121578803835e-05
Epoch: 40 w= 1.9987230439375925 cost= 1.692681784068377e-05
Epoch: 41 w= 1.9989145873469536 cost= 1.2229625889894448e-05
Epoch: 42 w= 1.9990773992449105 cost= 8.835904705448865e-06
Epoch: 43 w= 1.999215789358174 cost= 6.383941149688757e-06
Epoch: 44 w= 1.9993334209544478 cost= 4.612397480649774e-06
Epoch: 45 w= 1.9994334078112805 cost= 3.33245717977035e-06
Epoch: 46 w= 1.9995183966395884 cost= 2.4077003123843227e-06
Epoch: 47 w= 1.9995906371436503 cost= 1.7395634756983151e-06
Epoch: 48 w= 1.9996520415721026 cost= 1.2568346111911193e-06
Epoch: 49 w= 1.9997042353362873 cost= 9.080630065859313e-07
Epoch: 50 w= 1.9997486000358442 cost= 6.560755222580743e-07
Epoch: 51 w= 1.9997863100304676 cost= 4.7401456483160105e-07
Epoch: 52 w= 1.9998183635258975 cost= 3.4247552309066444e-07
Epoch: 53 w= 1.999845608997013 cost= 2.4743856543302625e-07
Epoch: 54 w= 1.999868767647461 cost= 1.7877436352529204e-07
Epoch: 55 w= 1.9998884525003418 cost= 1.2916447764716773e-07
Epoch: 56 w= 1.9999051846252904 cost= 9.332133510001552e-08
Epoch: 57 w= 1.999919406931497 cost= 6.742466460983543e-08
Epoch: 58 w= 1.9999314958917724 cost= 4.8714320180508126e-08
Epoch: 59 w= 1.9999417715080066 cost= 3.5196096330379474e-08
Epoch: 60 w= 1.9999505057818057 cost= 2.542917959872535e-08
Epoch: 61 w= 1.999957929914535 cost= 1.8372582260029613e-08
Epoch: 62 w= 1.9999642404273548 cost= 1.327419068279643e-08
Epoch: 63 w= 1.9999696043632516 cost= 9.590602768272778e-09
Epoch: 64 w= 1.9999741637087638 cost= 6.929210500056835e-09
Epoch: 65 w= 1.9999780391524493 cost= 5.006354586314298e-09
Epoch: 66 w= 1.999981333279582 cost= 3.617091188568193e-09
Epoch: 67 w= 1.9999841332876447 cost= 2.6133483837386546e-09
Epoch: 68 w= 1.999986513294498 cost= 1.888144207242458e-09
Epoch: 69 w= 1.9999885363003234 cost= 1.3641841897252644e-09
Epoch: 70 w= 1.999990255855275 cost= 9.856230770713489e-10
Epoch: 71 w= 1.9999917174769837 cost= 7.121126731808042e-10
Epoch: 72 w= 1.9999929598554362 cost= 5.145014063749241e-10
Epoch: 73 w= 1.9999940158771208 cost= 3.7172726609486193e-10
Epoch: 74 w= 1.9999949134955526 cost= 2.6857294975413565e-10
Epoch: 75 w= 1.9999956764712197 cost= 1.9404395619846422e-10
Epoch: 76 w= 1.9999963250005368 cost= 1.4019675835727846e-10
Epoch: 77 w= 1.9999968762504563 cost= 1.0129215790946163e-10
Epoch: 78 w= 1.9999973448128878 cost= 7.318358408922187e-11
Epoch: 79 w= 1.9999977430909546 cost= 5.2875139505922e-11
Epoch: 80 w= 1.9999980816273113 cost= 3.820228829502065e-11
Epoch: 81 w= 1.9999983693832146 cost= 2.7601153294430312e-11
Epoch: 82 w= 1.9999986139757324 cost= 1.994183325506297e-11
Epoch: 83 w= 1.9999988218793725 cost= 1.4407974526944569e-11
Epoch: 84 w= 1.9999989985974667 cost= 1.0409761596639575e-11
Epoch: 85 w= 1.9999991488078466 cost= 7.521052753355296e-12
Epoch: 86 w= 1.9999992764866696 cost= 5.43396061571672e-12
Epoch: 87 w= 1.9999993850136693 cost= 3.926036544289031e-12
Epoch: 88 w= 1.999999477261619 cost= 2.8365614029723025e-12
Epoch: 89 w= 1.9999995556723762 cost= 2.0494156128291866e-12
Epoch: 90 w= 1.9999996223215197 cost= 1.480702779721521e-12
Epoch: 91 w= 1.9999996789732917 cost= 1.0698077583047718e-12
Epoch: 92 w= 1.999999727127298 cost= 7.729361059472377e-13
Epoch: 93 w= 1.9999997680582033 cost= 5.584463360924549e-13
Epoch: 94 w= 1.9999998028494728 cost= 4.034774778538369e-13
Epoch: 95 w= 1.9999998324220518 cost= 2.915124779890719e-13
Epoch: 96 w= 1.999999857558744 cost= 2.1061776543919866e-13
Epoch: 97 w= 1.9999998789249325 cost= 1.521713353234463e-13
Epoch: 98 w= 1.9999998970861925 cost= 1.0994378986595627e-13
Epoch: 99 w= 1.9999999125232637 cost= 7.943438830326513e-14
Predict(after training) 4 7.999999650093055

在这里插入图片描述

横坐标表示训练的轮数,纵坐标为损失值,通过图分析,随着训练轮数的增加,损失值逐渐减少,趋于0(可能会不等于0)

梯度下降算法存在的问题

使用梯度下降算法,如果遇到鞍点(总体梯度和为0的点),那么就会导致w = w - 学习率 * w中,w 不会改变就导致w不能够继续更新,为了解决这个问题,就提出了随机梯度下降算法,随机选取一组(x, y)作为梯度下降的依据

随机梯度下降算法

随机梯度下降

#随机梯度算法import numpy as np
import matplotlib.pyplot as pltx_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]w=1.0def forward(x):return w*x#计算MSE
def cost(xs, ys):cost = 0for x, y in zip(xs, ys):y_pred = forward(x)cost += (y_pred - y)**2return cost / len(xs)def gradient(xs, ys):grad = 0for x, y in zip(xs, ys):grad  += 2*w*(w*x-y)return grad/len(xs)mse_list = []for epoch in range(100):cost_val = cost(x_data, y_data) #绘图才绘制grad_val = gradient(x_data, y_data) #计算梯度w -= 0.01*grad_valmse_list.append(cost_val)print('Epoch:', epoch, 'w=', w, 'cost=', cost_val)
print('Predict(after training)', 4, forward(4))w_list = np.arange(0, 100, 1)
plt.plot(w_list, mse_list)
plt.ylabel('cost')
plt.xlabel('times')
plt.show()

在这里插入图片描述

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

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

相关文章

心理辅导|高校心理教育辅导系统|基于Springboot的高校心理教育辅导系统设计与实现(源码+数据库+文档)

高校心理教育辅导系统目录 目录 基于Springboot的高校心理教育辅导系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、学生功能模块的实现 (1)学生登录界面 (2)留言反馈界面 (3)试卷列表界…

2.7日学习打卡----初学RabbitMQ(二)

2.7日学习打卡 目录: 2.7日学习打卡一. RabbitMQ 简单模式![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/42009c68e078440797c3183ffda6955d.png)生产者代码实现消费者代码实现 二. RabbitMQ 工作队列模式生产者代码实现消费者代码实现 三. RabbitMQ 发…

【天衍系列 04】深入理解Flink的ElasticsearchSink组件:实时数据流如何无缝地流向Elasticsearch

文章目录 01 Elasticsearch Sink 基础概念02 Elasticsearch Sink 工作原理03 Elasticsearch Sink 核心组件04 Elasticsearch Sink 配置参数05 Elasticsearch Sink 依赖管理06 Elasticsearch Sink 初阶实战07 Elasticsearch Sink 进阶实战7.1 包结构 & 项目配置项目配置appl…

《杨绛传:生活不易,保持优雅》读书摘录

目录 书简介 作者成就 书中内容摘录 良好的家世背景,书香门第为求学打基础 求学相关 念大学 清华研究生 自费英国留学 法国留学自学文学 战乱时期回国 当校长 当小学老师 创造话剧 支持钱锺书写《围城》 出任震旦女子文理学院的教授 接受清华大学的…

【AIGC】Stable Diffusion的ControlNet参数入门

Stable Diffusion 中的 ControlNet 是一种用于控制图像生成过程的技术,它可以指导模型生成特定风格、内容或属性的图像。下面是关于 ControlNet 的界面参数的详细解释: 低显存模式 是一种在深度学习任务中用于处理显存受限设备的技术。在这种模式下&am…

【AIGC】Stable Diffusion的模型入门

下载好相关模型文件后,直接放入Stable Diffusion相关目录即可使用,Stable Diffusion 模型就是我们日常所说的大模型,下载后放入**\webui\models\Stable-diffusion**目录,界面上就会展示相应的模型选项,如下图所示。作者…

【C++】 为什么多继承子类重写的父类的虚函数地址不同?『 多态调用汇编剖析』

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 前言 本篇文章主要是为了解答有…

Pytest测试技巧之Fixture:模块化管理测试数据

在 Pytest 测试中,有效管理测试数据是提高测试质量和可维护性的关键。本文将深入探讨 Pytest 中的 Fixture,特别是如何利用 Fixture 实现测试数据的模块化管理,以提高测试用例的清晰度和可复用性。 什么是Fixture? 在 Pytest 中&a…

华为问界M9:领跑未来智能交通的自动驾驶黑科技

华为问界M9是一款高端电动汽车,其自动驾驶技术是该车型的重要卖点之一。华为在问界M9上采用了多种传感器和高级算法,实现了在不同场景下的自动驾驶功能,包括自动泊车、自适应巡航、车道保持、自动变道等。 华为问界M9的自动驾驶技术惊艳之处…

Linux之多线程

目录 一、进程与线程 1.1 进程的概念 1.2 线程的概念 1.3 线程的优点 1.4 线程的缺点 1.5 线程异常 1.6 线程用途 二、线程控制 2.1 POSIX线程库 2.2 创建一个新的线程 2.3 线程ID及进程地址空间布局 2.4 线程终止 2.5 线程等待 2.6 线程分离 一、进程与线程 在…

构造题记录

思路&#xff1a;本题要求构造一个a和b数组相加为不递减序列&#xff0c;并且b数组的极差为最小的b数组。 可以通过遍历a数组并且每次更新最大值&#xff0c;并使得b数组为这个最大值和当前a值的差。 #include <bits/stdc.h> using namespace std; #define int long lon…

优化策略模式,提高账薄显示的灵活性和扩展性

接着上一篇文章&#xff0c;账薄显示出来之后&#xff0c;为了提高软件的可扩展性和灵活性&#xff0c;我们应用策略设计模式。这不仅仅是为了提高代码的维护性&#xff0c;而是因为明细分类账账薄显示的后面有金额分析这个功能&#xff0c;从数据库后台分析及结合Java语言特性…

小程序或者浏览器chrome访问的时候出现307 interval redicrect内部http自动跳转到https产生的原理分析及解决方案

#小李子9479# 出现的情况如下&#xff0c;即我们访问http的时候&#xff0c;它会自动307重定向到https,产生的原因是&#xff0c; 当你通过https访问过一个没有配置证书的http的网站之后&#xff0c;你再访问http的时候&#xff0c;它就会自动跳转到https&#xff0c;导致访问…

奔跑吧小恐龙(Java)

前言 Google浏览器内含了一个小彩蛋当没有网络连接时&#xff0c;浏览器会弹出一个小恐龙&#xff0c;当我们点击它时游戏就会开始进行&#xff0c;大家也可以玩一下试试&#xff0c;网址&#xff1a;恐龙快跑 - 霸王龙游戏. (ur1.fun) 今天我们也可以用Java来简单的实现一下这…

黄金交易策略(Nerve Nnife.mql4):移动止盈的设计

完整EA&#xff1a;Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客 相较mt4的止盈止损&#xff0c;在ea上实现移动止盈&#xff0c;可以尽最大可能去获得更高收益。移动止盈的大体逻辑是&#xff1a;到达止盈点就开始追踪止盈&#xff0c;直到在最高盈利点回撤指定点数即平…

【Python】通过conda安装Python的IDE

背景 系统&#xff1a;win11 软件&#xff1a;anaconda Navigator 问题现象&#xff1a;①使用Navigator安装jupyter notebook以及Spyder IDE 一直转圈。②然后进入anaconda prompt执行conda install jupyter notebook一直卡在Solving environment/-\。 类似问题&#xff1a; …

Stable Diffusion 模型下载:DreamShaper XL(梦想塑造者 XL)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 DreamShaper 是一个分格多样的大模型&#xff0c;可以生成写实、原画、2.5D 等…

第80讲订单管理功能实现

后端 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace"com.java1234.mapper.OrderM…

第9章 网络编程

9.1 网络通信协议 通过计算机网络可以实现多台计算机连接&#xff0c;但是不同计算机的操作系统和硬件体系结构不同&#xff0c;为了提供通信支持&#xff0c;位于同一个网络中的计算机在进行连接和通信时必须要遵守一定的规则&#xff0c;这就好比在道路中行驶的汽车一定要遵…

Redisson分布式锁 原理 + 运用 记录

Redisson 分布式锁 简单入门 pom <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.13.6</version></dependency>配置类 package com.hmdp.config;import org.redisson.Redisson;…