梯度下降法求函数的解

news2025/1/13 7:43:00

题目

例如 y = x^ 5 +e^x+3x−3,求解y = 0的解

问题分析

首先要构造y = 0的损失函数,让这个损失函数是凸的,也就是可以有最优解,并且是可到的,比较容易想到的是mse平方误差,我们要让y和0之间绝对误差最小。loss=(y-0)^2

解题方法

求导数

我们有了损失函数,就可以用梯度下降法,求解loss的最优解x。
梯度计算可以有两种方法,一种是链式求导法求梯度:
gradient(loss, x) = 2*(x^ 5 +e^x+3x−3) * (5 * x ^ 4 + e^x + 3)
另一种方法是近似求导:
gradient(loss, x) = (loss(x+delta)-loss(x-delta))/(2*delta)
两种方法都是可以的。

求x近似解

一般是迭代一定的步数,或者loss小于某个值,就认为是已经找到最优解了。

伪代码:
alpha = 0.01 # 步长
delta = 0.000001 #损失函数停止条件
loss = (y - 0) ^ 2
while loss > delta:
	x = x - gradient(loss, x) 
	loss = loss(y(x) )
print('loss: %f, y: %f, x: %f' %(loss, y, x)

代码实现

# 可以求y=任意值的最优解x
class Opm:
    def __init__(self):
        self.e1 = 2.712
        self.delta = 0.0001

    def loss(self, x, y_real):
        y = (x**5 + self.e1 ** x +3*x - 3)
        loss = (y-y_real)**2
        return loss, y

    def gradient(self, x, y_real):
        grad = 2*(x**5 + self.e1**x + 3*x-3-y_real)*(5*(x**4) + self.e1**x +3)
        return grad

    def gradient1(self, x, y_real):
        grad = (self.loss(x+self.delta, y_real)[0]-self.loss(x-self.delta, y_real)[0])/(2*self.delta)
        return grad

    def sgd(self, x, y):
        # x = 0 #起始点,深度模型中相当于初始化的变量
        # y = 1 #要求解的最优质,相当于label
        alpha = 0.01 #步长
        stop_value = 0.0001 #提前终止的阈值
        step = 0
        print('+++++++++start sgd, 步长:%f, 终止值:%f+++++++++++++' % (alpha, stop_value))
        while True:
            loss, y_c = self.loss(x, y)
            print('step: %d, loss: %f, y_c: %f, x: %s' % (step, loss, y_c, x))
            if loss<stop_value:
                break
            # x = x - self.gradient1(x, y) * alpha
            x = x - self.gradient(x, y) * alpha
            step += 1
        print('+++++++++end sgd, 步长:%f, 终止值:%f, loss: %f, x: %f, y:%f+++++++++++++' % (alpha, stop_value, loss, x, y_c))
        return loss, x, y_c
opm = Opm()
opm.sgd(0, 0)

在这里插入图片描述

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

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

相关文章

变压器铜铝材质分析仪技术参数

一、主要技术指标 1.输入特性 有源部分&#xff1a; 电压测量范围&#xff1a;0~10V 电流测量范围&#xff1a;0~10A 无源部分&#xff1a; 电压测量范围&#xff1a;0~750V 宽量限&#xff08;可以外接电压互感器&#xff09;。 电流测量范围&#xff1a;0~100A内部自动…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(6月 28 日论文合集)

文章目录 一、检测相关(6篇)1.1 Detector-Free Structure from Motion1.2 Irregular Change Detection in Sparse Bi-Temporal Point Clouds using Learned Place Recognition Descriptors and Point-to-Voxel Comparison1.3 Transferability Metrics for Object Detection1.4 …

【超全面】Linux嵌入式干货学习系列教程

文章目录 一、前言二、Linux基础篇三、数据结构与算法基础三、Linux应用篇四、Linux网络篇五、ARM篇六、Linux系统移植篇七、Linux驱动篇八、Linux特别篇九、Linux项目篇 一、前言 博主学习Linux也有几个月了&#xff0c;在这里为广大朋友整理出嵌入式linux的学习知识&#xff…

精彩回顾 | 迪捷软件亮相2023飞机航空电子国际论坛

2023年6月29日&#xff0c;2023&#xff08;第十二届&#xff09;飞机航空电子国际论坛&#xff08;以下简称论坛&#xff09;在上海市圆满落幕。论坛由中国航空学会、中国航空研究院、中航机载系统有限公司共同主办&#xff0c;中国航空无线电电子研究所、航空电子系统综合技术…

SpringCloud-Gateway网关全悉

1&#xff09;概述 使用说明文档 其他版本api文档请自由查阅&#xff1a; https://spring.io/projects/spring-cloud-gateway#learn 1.1&#xff09;是什么 Cloud全家桶中有个很重要的组件就是api网关&#xff0c;在1.x版本中都是采用的Zuul网关&#xff0c;但在2.x版本中&a…

【Logback技术专题】「入门到精通系列教程」深入探索Logback日志框架的原理分析和开发实战技术指南(下篇)

深入探索Logback日志框架的原理分析和开发实战技术指南&#xff08;下篇&#xff09; 根节点configuration包含的属性基本参数详解子节点介绍设置上下文名称<contextName>使用案例 设置变量属性值<property>获取时间戳字符串<timestamp>设置loggerroot根节点…

CDH 之 Hive 中文乱码平定通用法则

一、乱象 1.1 中文注释乱码 hive> DESCRIBE test; OK # col_name data_type comment id string ??ID ?? pcs string ????? …

java实现远程执行Linux下的shell脚本

java实现远程执行Linux下的shell脚本 背景导入Jar包第一步&#xff1a;远程连接第二步&#xff1a;开启Session第三步&#xff1a;新建测试脚本文件结果报错 背景 最近有个项目&#xff0c;需要在Linux下的服务器内写了一部分Python脚本&#xff0c;业务处理却是在Java内&…

采用三五555时基电路的简易/自动温度控制器电路设计

采用 555 时基电路的简易温度控制器 本电路是采用555时基集成电路和很少的外围元件组成的一个温度自动控制器。因为电路中各点电压都来自同一-直流电源&#xff0c;所以不需要性能很好的稳压电源&#xff0c;用电容降压法便能可靠地工作。电路元件价格低、体积小、便于在业余条…

喜报!Coremail实力上榜“邮件安全网关”和“反钓鱼”等三大赛道!

6月28日&#xff0c;由国内首家专业聚焦网络安全商业市场研究分析和加速服务的机构斯元商业咨询出品的「网安新兴赛道厂商速查指南|短名单精选」&#xff08;以下简称「短名单精选」&#xff09;正式出炉。 Coremail凭借出色的综合能力&#xff0c;成功上榜“邮件安全网关&…

最新导则下生态环评报告编制要求与规范

根据生态环评内容庞杂、综合性强的特点&#xff0c;依据生态环评最新导则&#xff0c;将内容分为4大篇章(报告篇、制图篇、指数篇、综合篇)、10大专题(生态环评报告编制、土地利用图的制作、植被类型及植被覆盖度图的制作、物种适宜生境分布图的制作、生物多样性测定、生物量及…

Django 的 REST framework 基础知识

系列文章目录 提示&#xff1a;阅读本章之前&#xff0c;请先阅读目录 文章目录 系列文章目录前言1. 创建django项目2. 修改settings.py3. 根目录创建static文件夹4. 启动项目5. 创建数据表6. 创建一个超级管理员7. 登录django的admin后台8. 安装 REST framework9. 配置setting…

Quiz 16_3-2: Databases | Python for Everybody 配套练习_解题记录

文章目录 Python for Everybody课程简介Quiz 16_3-2: Databases单选题&#xff08;1-10&#xff09;操作题Autograder 1: Counting Email in a DatabaseAutograder 2: Multi-Table Database - Tracks Python for Everybody 课程简介 Python for Everybody 零基础程序设计&…

数据库管理-第八十七期 19c OCM之路-第一堂(02)(20230630)

第八十六期 19c OCM之路-第一堂&#xff08;02&#xff09; 本来计划是昨天写的&#xff0c;但是昨天突发膝盖筋膜炎&#xff0c;去骨科医院做了下治疗&#xff0c;前后两夜几乎无眠。本期内容主要是针对第一堂第四个考点&#xff1a;Manage application containers内容去做的…

Spring Boot中的@MessageMapping注解:原理及使用

Spring Boot中的MessageMapping注解&#xff1a;原理及使用 简介 在Web应用程序中&#xff0c;实现实时的双向通信是一项重要的功能。为了实现这种功能&#xff0c;需要使用WebSocket协议。Spring框架提供了Spring WebSocket模块来实现WebSocket通信。Spring Boot是基于Sprin…

《刷题日记03》链表

题目描述力扣https://leetcode.cn/problems/LGjMqU/ 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln-1 → Ln 请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → … 不能只是单纯的改变节点内部的值…

实例003 像开始菜单一样漂亮的菜单

实例说明 Windows的开始菜单非常的独特&#xff0c;在菜单的旁边有一条竖着的彩条&#xff0c;彩条中还写着文字。这种独特的菜单能够使程序的界面看起来更加的漂亮。本例中就实现了这种菜单&#xff0c;运行本例弹出“打开菜单”时&#xff0c;就会看到菜单的左边有一个紫色的…

ChatGPT微调系列一:微调 流程

文章目录 前言一、啥叫微调二、为啥要微调三、不是所有模型都可以微调的四、总述微调的基本流程&#xff0c;以及涉及的主要函数&#xff0c;参数1. 安装2. 准备训练数据3. openai.api_key os.getenv() 进行一个说明4. 通过API 调用模型 常用函数5. 微调模型 常用函数6. OpenA…

【论文阅读】Self-supervised Image-specific Prototype Exploration for WSSS

一篇CVPR2022上的论文&#xff0c;用于弱监督分割 论文标题&#xff1a; Self-supervised Image-specific Prototype Exploration for Weakly Supervised Semantic Segmentation 作者信息&#xff1a; 代码地址&#xff1a; https://github.com/chenqi1126/SIPE 论文链接&…

【doxygen】markdown 表格中插入换行与缩进

文章目录 markdown 表格换行markdown 标准换行doxygen 中 markdown 表格换行 markdown 表格缩进 doxygen 中使用 markdown markdown 表格换行 markdown 表格生成 doxygen 时换行与标准的 markdown 语法稍有差异 markdown 标准换行 markdown 中可以使用 html 的换行标签 <…