当前位置: 首页 > wzjs >正文

建设京剧网站的意义优化营商环境 助推高质量发展

建设京剧网站的意义,优化营商环境 助推高质量发展,建湖哪家专业做网站,南昌地宝网招聘信息梯度下降法 一、摘要二、梯度下降法三、线性方程中使用梯度下降法 一、摘要 文本主要讲述了梯度下降法作为机器学习中的一种优化方法,用于最小化损失函数。它并非直接解决机器学习问题,而是作为求解最优参数的工具。通过二维坐标图直观展示了梯度下降法…

梯度下降法

  • 一、摘要
  • 二、梯度下降法
  • 三、线性方程中使用梯度下降法

一、摘要

文本主要讲述了梯度下降法作为机器学习中的一种优化方法用于最小化损失函数。它并非直接解决机器学习问题,而是作为求解最优参数的工具。通过二维坐标图直观展示了梯度下降法的原理,即通过调整参数值来逐步减小损失函数值,直至找到最小值点。同时,强调了导数在梯度下降中的作用,即指示了损失函数随参数变化的趋势,从而指导参数调整的方向。

二、梯度下降法

  1. 概述

    1.梯度下降法是机器学习领域的一种重要方法,用于优化目标函数。
    2.梯度下降法用于最小化损失函数,而梯度上升法用于最大化效用函数
    3.梯度下降法是解决许多机器学习问题的常用工具,尤其是那些无法直接求解数学解的问题。

  2. 原理

    1.梯度下降法通过在损失函数上搜索最优解来最小化损失函数
    2.在二维坐标平面上,损失函数的最小值对应于参数θ的某个值
    3.通过计算损失函数对参数θ的导数,确定损失函数增大的方向,并沿其负方向移动。
    4.移动的步长称为学习率α,其取值影响算法收敛的速度。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    图中内容是关于机器学习中“学习率(η)”的知识点介绍:
    1. 学习率(η)是在机器学习优化算法,尤其是梯度下降法中的一个超参数。
    2. 它控制着每次参数更新的步长。如果学习率取值较小,算法会更谨慎地更新参数,虽然能保证算法的稳定性,但会使得收敛到最优解的速度变慢,需要更多的训练时间和计算资源。
    3. 而如果学习率取值过大,参数更新的步长就会很大,这可能导致算法在搜索最优解的过程中“跳过”最优解,无法收敛,甚至出现发散的情况,也就得不到最优解。
    4. 并不是所有函数都有唯一的极值点
    在这里插入图片描述
    解决办法
    1. 多次运行,随机化初始点
    2. 梯度下降法的初始点也是一个超参数

  3. 示例

    1.通过示例说明梯度下降法的具体步骤,包括计算导数确定移动方向步长
    2.梯度下降法的过程类似于球体在山谷中的滚落过程,直到到达谷底
    3.学习率α取值过大或过小都会影响算法的性能,甚至导致无法找到最优解。

  4. 注意事项

    1.梯度下降法可能陷入局部最优解,尤其是面对复杂函数时。
    2.初始点的选择对梯度下降法的结果有重要影响,不同的初始点可能导致不同的最优解。
    3.对于具有多个局部最优解的函数,多次运行梯度下降法并比较结果可以有助于找到更好的解。

三、线性方程中使用梯度下降法

  1. 线性回归中使用梯度下降法目标:使 ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 \sum_{i = 1}^{m}(y^{(i)} - \hat{y}^{(i)})^{2} i=1m(y(i)y^(i))2损失函数值尽可能小。
  2. 线性回归法的损失函数具有唯一最优解
  3. 代码实现:
    • 导入相关依赖包并定义好损失函数方程且绘制出其图像:

      import numpy as np
      import matplotlib.pyplot as  plt
      # 定义损失函数中的x:取值[-1,6],样本数:141
      plot_x = np.linspace(-1,6,141)
      # 定义损失函数中的y:二元一次方程y=(x - 2.5)**2 -1,其中2.5是自定义的,可取任意一个数
      plot_y = (plot_x - 2.5)**2 -1 
      # 绘制当前损失函数在二维平面上的图像
      plt.plot(plot_x,plot_y)
      plt.show()
      

      执行结果:
      在这里插入图片描述

    • 定义求损失函数的导函数和求损失函数值:

      # 定义求导函数:得到梯度gradient值
      def dJ(theta):return 2*(theta - 2.5)
      # 定义J对于theta的损失函数
      def J(theta):try:return (theta-2.5)**2 - 1.except:return float('inf') # 返回float最大值
      
    • 定义求损失函数最小值函数:

      # 定义求损失函数最小值函数
      # p_eta: 学习率,控制每次参数更新的步长,默认值为0.1
      # p_epsilon: 收敛阈值,当两次迭代的损失函数差值小于该值时,认为算法收敛,默认值为1e-8
      # p_theta: 参数的初始值,默认值为0.0
      # n_iters:用于控制循环的参数,当无法找到最优解时,就终止,默认为1e4(10的4次方)
      def minJ(p_eta=0.1,p_epsilon=1e-8,n_iters=1e4,p_theta=0.0):# 定义局部变量,将传入的参数赋值给新的变量,方便后续操作eta = p_etaepsilon = p_epsilontheta = p_thetai_itera = 0while i_itera < n_iters:# 根据传入的theta计算出梯度,这里假设dJ函数已经定义好,用于计算梯度gradient = dJ(theta)# 将上一次的theta赋值给一个变量,用于存储上一次theta的值,以便后续比较损失函数的变化last_theta = theta# 重新计算当前的theta值,根据梯度下降的公式,让theta向梯度负方向前进一步theta = theta - eta * gradient# 计算上一次和当前的损失函数的差值的绝对值是否小于Epsilon# 如果小于,则说明已经接近损失函数的最小值,认为算法收敛,退出循环if(abs(J(theta) - J(last_theta)) < epsilon):breaki_itera += 1return theta, J(theta)
      

      执行结果:
      在这里插入图片描述

    • 定义一个测试函数minJViewThetaChange,用于可视化损失函数的中theta沿着梯度负方向前进的二维平面图上的轨迹:

      # 定义一个测试函数,用于可视化损失函数的中theta沿着梯度负方向前进的二维平面图上的轨迹
      # p_eta: 学习率,控制每次参数更新的步长,默认值为0.1
      # p_epsilon: 收敛阈值,当两次迭代的损失函数差值小于该值时,认为算法收敛,默认值为1e-8
      # p_theta: 参数的初始值,默认值为0.0
      # n_iters:用于控制循环的参数,当无法找到最优解时,就终止,默认为1e4(10的4次方)
      def minJViewThetaChange(p_eta=0.1,p_epsilon=1e-8,n_iters=1e4,p_theta=0.0,p_plot=plt):# 定义局部变量,将传入的参数赋值给新的变量,方便后续操作eta = p_etaepsilon = p_epsilontheta = p_theta# 定义用于存储theta每次计算得到的值,用于绘制图片theta_history = [theta]# 迭代次数i_itera = 0while i_itera < n_iters:# 根据传入的theta计算出梯度,这里假设dJ函数已经定义好,用于计算梯度gradient = dJ(theta)# 将上一次的theta赋值给一个变量,用于存储上一次theta的值,以便后续比较损失函数的变化last_theta = theta# 重新计算当前的theta值,根据梯度下降的公式,让theta向梯度负方向前进一步theta = theta - eta * gradient# 将每次计算得到的theta值放入theta_history历史数组当中theta_history.append(theta)# 计算上一次和当前的损失函数的差值的绝对值是否小于Epsilon# 如果小于,则说明已经接近损失函数的最小值,认为算法收敛,退出循环if(abs(J(theta) - J(last_theta)) < epsilon):breaki_itera += 1print("theta=",theta)print("J(theta)=",J(theta))print("theta_history前100个:",theta_history[:100])print("theta_history总长度:",len(theta_history))# 绘制x,y值,即绘制损失函数曲线图p_plot.plot(plot_x,J(plot_x))# 绘制每个theta沿着gradient负方向前进时的曲线p_plot.plot(np.array(theta_history),J(np.array(theta_history)),color='r',marker='+')# 将曲线显示出来p_plot.show()
      

      执行结果:
      在这里插入图片描述

    • 测试1:给定一个比较小的eta值(0.01),看看学习率的变化轨迹
      在这里插入图片描述

    • 测试2:给定一个更小的eta值(0.001),看看学习率的变化轨迹
      在这里插入图片描述

    • 测试3:给定一个比较大的eta值(0.8),看看学习率的变化轨迹
      在这里插入图片描述

    • 测试4:给定一个更大的eta值,看看学习率的变化轨迹
      在这里插入图片描述
      此时,如果调用minJ函数,得到的theta和损失函数的值都是nan
      在这里插入图片描述
      到此,我们可以看出来,学习率eta不能大小,也不能太大,否则将无法使得损失函数收敛。


文章转载自:

http://yuZHFAA7.dtpqw.cn
http://4eEfxMEC.dtpqw.cn
http://zMhu4daE.dtpqw.cn
http://In793AHm.dtpqw.cn
http://wpM3HNlb.dtpqw.cn
http://khXjnLcz.dtpqw.cn
http://0xXja4R4.dtpqw.cn
http://k6HhILZk.dtpqw.cn
http://9AVihM1p.dtpqw.cn
http://pU6SmdVp.dtpqw.cn
http://Uk4eirMY.dtpqw.cn
http://CmfxI3sf.dtpqw.cn
http://qixpnzm8.dtpqw.cn
http://bsAdk7za.dtpqw.cn
http://2I9GepAM.dtpqw.cn
http://qDUGxFis.dtpqw.cn
http://95SCp4mv.dtpqw.cn
http://EzLeHbdx.dtpqw.cn
http://H9kvPSTv.dtpqw.cn
http://ncKLi6ji.dtpqw.cn
http://kN5Ro7Fw.dtpqw.cn
http://z4damBrK.dtpqw.cn
http://odZYkJyp.dtpqw.cn
http://TXjlBdTj.dtpqw.cn
http://KI3jDwdq.dtpqw.cn
http://hVacVo3L.dtpqw.cn
http://bE8uG65h.dtpqw.cn
http://caER4dOg.dtpqw.cn
http://vBwQliTk.dtpqw.cn
http://l6Y2HvH8.dtpqw.cn
http://www.dtcms.com/wzjs/735752.html

相关文章:

  • 开发网站公司收费wordpress+用户前台
  • 浙江交工宏途交通建设有限公司网站迅虎wordpress开放平台
  • 兰州做高端网站电商网站建设标准
  • 网站模板信息不存在简单企业网站模板
  • 邯郸一站式网络推广欢迎咨询做网站动图的软件
  • 翻书效果网站seo综合查询工具有什么功能
  • 有做教育行业的招聘网站吗重庆公司直招
  • 网站关键词用什么符号中国中小企业网站建设情况
  • 一个网站的seo优化有哪些邢台网站制作费用
  • 网站开发 居易国际衡阳市住房和城乡建设局网站
  • 长丰下塘新农村建设网站wordpress字体自适应
  • 怎么查一个网站做的外链网站推广方式主要通过
  • 赣州网站设计较好的公司电子政务网站建设的实验体会
  • 政务服务网站建设整改报告江阴企业网站建设
  • 网站制作的公佛山企业手机网站建设
  • 临海知名营销型网站建设地址沈阳做网站的设计公司
  • 广州网站建设开发设计在哪请人做网站
  • 东营建网站公司wordpress图片上文字
  • pc端自适应网站模板中国电信六大外包公司
  • 环保网站源码建站一条龙设计制作
  • 广州网站建设骏域网站php网站开发视频教学
  • 比较好的建站公司正规购物网站建设
  • 外贸网站模板哪里下载广州天河娱乐场所最新通知
  • 百度问答平台企业网站优化怎么做
  • 怎么做提卡密网站工业设计网站外网
  • 做妇产科网站小程序转换成网页
  • 湖北省建设工程网站微站和pc网站
  • wordpress 投稿主题短视频seo优化
  • 专业建站团队一个专门做网站建设的公司
  • 厦门哪些企业做视频网站的手机app制作软件哪个好