机器学习笔记之优化算法(二)线搜索方法(方向角度)

news2024/9/29 3:25:33

机器学习笔记之优化算法——线搜索方法[方向角度]

引言

上一节对优化问题进行了简单描述,并从逻辑认知的角度介绍了线搜索方法信赖域方法。本节将关注线搜索方法,并重点关注它的方向部分。

回顾:线搜索方法

线搜索方法是一种通过求解数值解来计算最优解的方法。其特点是:在数值解的迭代求解过程中,分为方向步长分别执行,并且先定方向,后定步长。对应的数学符号表达如下:
x k + 1 = x k + α k ⋅ P k x_{k+1} = x_k + \alpha_k \cdot \mathcal P_k xk+1=xk+αkPk
其中 α k \alpha_k αk表示步长, P k \mathcal P_k Pk表示方向。并且步长的重要程度高于方向

从方向角度观察线搜索方法

我们首先对优化问题(场景)进行一系列的假设以达到简化作用。

场景构建

假设1:目标函数结果的单调性

关于变量 X \mathcal X X目标函数 f ( X ) f(\mathcal X) f(X),我们最终目标是选择一个合适的 X = x \mathcal X = x X=x,使得目标函数达到最值。这里以最小值为例,对应数学符号表示如下:
min ⁡ X ∈ R n f ( X ) \mathop{\min}\limits_{\mathcal X \in \mathbb R^n} f(\mathcal X) XRnminf(X)

迭代之前,我们给定关于 X \mathcal X X初始化信息 x 0 x_0 x0,并在迭代过程中通过策略得到一系列数值解 { x k } k = 1 ∞ \{x_k\}_{k=1}^{\infty} {xk}k=1,它们对应的目标函数结果表示如下:
{ f ( x k ) } k = 0 ∞ \{f(x_k)\}_{k=0}^{\infty} {f(xk)}k=0

上一节介绍过,目标函数结果所描述的数列存在单调性,但这个单调性可能是不严格的

  • 如果数列满足严格的单调性,有:
    f ( x k + 1 ) < f ( x k ) f ( x k ) , f ( x k + 1 ) ∈ { f ( x k ) } k = 0 ∞ f(x_{k+1}) < f(x_k) \quad f(x_k),f(x_{k+1}) \in \{f(x_k)\}_{k=0}^{\infty} f(xk+1)<f(xk)f(xk),f(xk+1){f(xk)}k=0
  • 相反,如果数列的单调性不严格,有:
    f ( x k + 1 ) < f ( x k − m ) f ( x k + 1 ) , f ( x k − m ) ∈ { f ( x k ) } k = 0 ∞ ; m ∈ [ 0 , k ] f(x_{k+1}) < f(x_{k-m}) \quad f(x_{k+1}),f(x_{k-m}) \in \{f(x_k)\}_{k=0}^{\infty};m \in [0,k] f(xk+1)<f(xkm)f(xk+1),f(xkm){f(xk)}k=0;m[0,k]

也就是说,严格的单调性需要数列中的元素按照顺序严格递减;而不严格的单调性仅需要趋势递减即可,局部元素之间的大小关系并不是关注的重点。
在真实情况下,单调性的严格/不严格并不是绝对的。在迭代之前,初始化信息 x 0 x_0 x0一般是随机初始化,从而导致 x 0 x_0 x0到最优解 x ∗ x^* x的距离是随机的。因此在迭代初期,我们通常会采用不严格的递减方式,随着数值解 x k x_k xk逐步逼近最优解 x ∗ x^* x,我们会调整参数 m m m,使其逐步地向严格的递减方式转化。

方向角度观察线搜索方法之前,为简化运算,设定 { f ( x k ) } k = 0 ∞ \{f(x_k)\}_{k=0}^{\infty} {f(xk)}k=0服从严格的单调性
其中 N N N表示非负整数,描述数值解的编号。
∀ k ∈ N ⇒ f ( x k + 1 ) < f ( x k ) \forall k \in N \Rightarrow f(x_{k+1}) < f(x_k) kNf(xk+1)<f(xk)

假设2:屏蔽步长 α k \alpha_k αk对线搜索方法过程的影响

上一节同样介绍了:线搜索方法对于步长的要求比较严格,较大或者较小的步长都会对线搜索方法产生负面影响

不否认的是:较大的步长可能会影响方向,从而使线搜索方法失效;但较小的步长仅会使计算(迭代)代价提升,从而在真实情况中不太可用,但并不会使算法失效,也不会对其收敛性产生太大影响。

  • 较小的步长仅仅使收敛速度慢了,而不是不收敛了。
  • ‘较大步长可能影响方向’示例见文章末尾。

由于这里仅讨论方向角度的线搜索方法,因此这里关于步长的假设是:在线搜索方法的迭代过程中,其步长 α k \alpha_k αk足够小,小到可以忽略不计
由于‘步长’ α k \alpha_k αk的实际意义,因而它一定是一个正值。

假设3:限定向量 P k \mathcal P_k Pk的大小

向量 P k \mathcal P_k Pk既包含大小,也包含方向。而观察方向角度的线搜索方法中, P k \mathcal P_k Pk的大小同样不是我们关注的对象。因此我们需要将 P k \mathcal P_k Pk简化为单位向量。即:
∣ ∣ P k ∣ ∣ = 1 k = 1 , 2 , 3 , ⋯ ||\mathcal P_k|| = 1 \quad k=1,2,3,\cdots ∣∣Pk∣∣=1k=1,2,3,
关于向量大小的约束我们早在支持向量机——模型构建思路中关于约束条件消除等比例缩放对函数间隔 ( Functional Margin ) (\text{Functional Margin}) (Functional Margin)的影响时使用的方法:
y ( i ) ( W T x ( i ) + b ) > 0 ⇒ y ( i ) ( W T x ( i ) + b ) ≥ 1 y^{(i)} \left(\mathcal W^T x^{(i)} + b\right) > 0 \Rightarrow y^{(i)} \left(\mathcal W^T x^{(i)} + b\right) \geq 1 y(i)(WTx(i)+b)>0y(i)(WTx(i)+b)1
实际上,假设 2 2 2与假设 3 3 3可以进行合并。当 P k \mathcal P_k Pk化简为相应的单位向量时,该向量一定与 P k \mathcal P_k Pk线性相关。化简后产生的标量系数可以与步长做乘法,从而被忽略掉

下降方向的推导过程

基于上述假设,我们可以对数值解 x k + 1 x_{k+1} xk+1对应的目标函数结果 f ( x k + 1 ) f(x_{k+1}) f(xk+1)通过泰勒公式进行展开
仅展开至 2 2 2阶。
f ( x k + 1 ) = f ( x k + α k ⋅ P k ) = f ( x k ) + 1 1 ! [ ∇ f ( x k ) ] T ⋅ ( x k + 1 − x k ) + 1 2 ! ( x k + 1 − x k ) T [ ∇ 2 f ( x k ) ] ( x k + 1 − x k ) \begin{aligned} f(x_{k+1}) & = f(x_k + \alpha_k \cdot \mathcal P_k) \\ & = f(x_k) + \frac{1}{1!} \left[\nabla f(x_k)\right]^T \cdot (x_{k+1} - x_k) + \frac{1}{2!} (x_{k+1} - x_k)^T \left[\nabla^2 f(x_k)\right](x_{k+1} - x_k) \end{aligned} f(xk+1)=f(xk+αkPk)=f(xk)+1!1[f(xk)]T(xk+1xk)+2!1(xk+1xk)T[2f(xk)](xk+1xk)
x k + 1 − x k = α k P k x_{k+1} - x_k = \alpha_k \mathcal P_k xk+1xk=αkPk代入,化简有:
f ( x k + 1 ) = f ( x k ) + [ ∇ f ( x k ) ] T ⋅ α k P k + 1 2 ( α k P k ) T [ ∇ 2 f ( x k ) ] α k P k \begin{aligned} f(x_{k+1}) = f(x_k) + \left[\nabla f(x_k)\right]^T \cdot \alpha_k\mathcal P_k + \frac{1}{2} (\alpha_k \mathcal P_k)^T \left[\nabla^2 f(x_k)\right] \alpha_k\mathcal P_k \end{aligned} f(xk+1)=f(xk)+[f(xk)]TαkPk+21(αkPk)T[2f(xk)]αkPk
观察后一项: 1 2 ( α k P k ) T [ ∇ 2 f ( x k ) ] α k P k \begin{aligned}\frac{1}{2} (\alpha_k \mathcal P_k)^T \left[\nabla^2 f(x_k)\right] \alpha_k\mathcal P_k\end{aligned} 21(αkPk)T[2f(xk)]αkPk,其中 α k P k \alpha_k\mathcal P_k αkPk n × 1 n \times 1 n×1的向量,这意味着:该项的结果是一个标量。并且是与 ∣ ∣ α k P k ∣ ∣ ||\alpha_k\mathcal P_k|| ∣∣αkPk∣∣相关的一个标量(这里将 1 2 \begin{aligned}\frac{1}{2}\end{aligned} 21与标量 α k \alpha_k αk合并到一起),我们直接将其记作 O ( ∣ ∣ α k P k ∣ ∣ ) \mathcal O(||\alpha_k\mathcal P_k||) O(∣∣αkPk∣∣)。又因为上述假设 2 2 2与假设 3 3 3的合并,这里直接将 O ( ∣ ∣ α k P k ∣ ∣ ) \mathcal O(||\alpha_k\mathcal P_k||) O(∣∣αkPk∣∣)忽略掉,简化为如下形式:
这里的 O ( ∣ ∣ α k P k ∣ ∣ ) \mathcal O(||\alpha_k\mathcal P_k||) O(∣∣αkPk∣∣)指与 α k P k \alpha_k\mathcal P_k αkPk相关的复杂项。
f ( x k + 1 ) = f ( x k ) + [ ∇ f ( x k ) ] T ⋅ α k P k + O ( ∣ ∣ α k P k ∣ ∣ ) ≈ f ( x k ) + [ ∇ f ( x k ) ] T ⋅ α k P k \begin{aligned} f(x_{k+1}) & = f(x_k) + \left[\nabla f(x_k)\right]^T \cdot \alpha_k\mathcal P_k + \mathcal O(||\alpha_k\mathcal P_k||) \\ & \approx f(x_k) + \left[\nabla f(x_k)\right]^T \cdot \alpha_k\mathcal P_k \end{aligned} f(xk+1)=f(xk)+[f(xk)]TαkPk+O(∣∣αkPk∣∣)f(xk)+[f(xk)]TαkPk
从而有:
f ( x k + 1 ) − f ( x k ) ≈ [ ∇ f ( x k ) ] T ⋅ α k P k f(x_{k+1}) - f(x_k) \approx \left[\nabla f(x_k)\right]^T \cdot \alpha_k\mathcal P_k f(xk+1)f(xk)[f(xk)]TαkPk
又因为假设 1 1 1:严格的单调性,因而有:
∀ k ∈ N ⇒ f ( x k + 1 ) < f ( x k ) ⇒ [ ∇ f ( x k ) ] T ⋅ α k P k < 0 \forall k \in N \Rightarrow f(x_{k+1}) < f(x_k) \Rightarrow \left[\nabla f(x_k)\right]^T \cdot \alpha_k\mathcal P_k < 0 kNf(xk+1)<f(xk)[f(xk)]TαkPk<0
由于 α k \alpha_k αk自身是一个正值,因而可以不等号两侧同时除以 α k \alpha_k αk,不改变不等号的方向。因而有:
[ ∇ f ( x k ) ] T ⋅ P k < 0 \left[\nabla f(x_k)\right]^T \cdot \mathcal P_k < 0 [f(xk)]TPk<0
可以观察: ∇ f ( x k ) \nabla f(x_k) f(xk)数值解 x k x_k xk对应的目标函数的梯度向量;而 P k \mathcal P_k Pk数值解 x k x_k xk在当前迭代步骤中更新的方向向量(单位向量)。根据上式,我们就可以反过来对 P k \mathcal P_k Pk的约束条件进行描述

基于上述假设,如果存在这样的 P k \mathcal P_k Pk,使得 [ ∇ f ( x k ) ] T ⋅ P k < 0 \begin{aligned}\left[\nabla f(x_k)\right]^T \cdot \mathcal P_k < 0\end{aligned} [f(xk)]TPk<0,那么该 P k \mathcal P_k Pk一定满足 f ( x k + 1 ) < f ( x k ) f(x_{k+1}) < f(x_k) f(xk+1)<f(xk)

并满足条件的 P k \mathcal P_k Pk方向称作下降方向 ( Descent Direction ) (\text{Descent Direction}) (Descent Direction)

下降方向的几何意义

观察上面的公式:
[ ∇ f ( x k ) ] T ⋅ P k < 0 \begin{aligned}\left[\nabla f(x_k)\right]^T \cdot \mathcal P_k < 0\end{aligned} [f(xk)]TPk<0
不等式左侧的本质上就是向量 ∇ f ( x k ) \nabla f(x_k) f(xk)向量 P k \mathcal P_k Pk之间的内积结果。将其继续展开:
∣ ∣ ∇ f ( x k ) ∣ ∣ ⋅ ∣ ∣ P k ∣ ∣ ⋅ cos ⁡ θ < 0 ||\nabla f(x_k)|| \cdot ||\mathcal P_k|| \cdot \cos \theta <0 ∣∣∇f(xk)∣∣∣∣Pk∣∣cosθ<0
其中 ∣ ∣ ∇ f ( x k ) ∣ ∣ , ∣ ∣ P k ∣ ∣ = 1 ||\nabla f(x_k)||,||\mathcal P_k||=1 ∣∣∇f(xk)∣∣,∣∣Pk∣∣=1分别表示上述两向量的大小,均恒正;这意味着 cos ⁡ θ < 0 \cos \theta < 0 cosθ<0,而 θ \theta θ表示向量 ∇ f ( x k ) \nabla f(x_k) f(xk)与向量 P k \mathcal P_k Pk之间的夹角。这意味着:向量 ∇ f ( x k ) \nabla f(x_k) f(xk)与向量 P k \mathcal P_k Pk的夹角范围在 ( π 2 , 3 π 2 ) \begin{aligned}\left(\frac{\pi}{2},\frac{3 \pi}{2}\right)\end{aligned} (2π,23π)之间
梯度方向与更新方向之间的关系
观察上述图像:

  • 其中蓝色虚线表示 X \mathcal X X变量空间中,过点 x k x_k xk与目标函数等高线的切线
  • 蓝色虚线垂直,并向远离目标函数的黑色箭头梯度方向 ∇ f ( x k ) \nabla f(x_k) f(xk),与其相反的黑色箭头就是梯度的负方向
  • x k x_k xk为圆心, 1 1 1为半径作圆(因为 P k \mathcal P_k Pk单位向量),在蓝色虚线上方并且落在圆上的点(橙色点)与 x k x_k xk相连接构成的向量就是 P k \mathcal P_k Pk可能选择的向量。图中的红色弧线表示夹角。

在优化算法——无约束优化概述中提到线搜索方法方向中的与负梯度方向相关的方向就是与负梯度方向夹角在 ( − π 2 , π 2 ) \begin{aligned}\left(-\frac{\pi}{2},\frac{\pi}{2}\right)\end{aligned} (2π,2π)之间的方向(与梯度方向的情况正好相反)。

  • 继续观察上图,如果方向在蓝色虚线或者是蓝色虚线以下的范围内,那么更新后的梯度目标函数结果必然大于当前等高线的数值结果。
  • 可以想象一下:如果更新的 P k \mathcal P_k Pk方向与切线方向非常接近(例如图中最右侧的橙黄色点),如果稍微控制不好步长从而使步长过大,那么最终同样导致更新后的目标函数结果大于之前的结果,从而导致本次迭代无效。从侧面也能看出合理步长的重要性。

同理,如果 P k \mathcal P_k Pk方向恰好与 ∇ f ( x k ) \nabla f(x_k) f(xk)之间的夹角为 π \pi π(与 ∇ f ( x k ) \nabla f(x_k) f(xk)方向完全相反),那么此时的 cos ⁡ θ = − 1 \cos \theta = -1 cosθ=1,对应更新后的 f ( x k + 1 ) f(x_{k+1}) f(xk+1)相比 f ( x k ) f(x_k) f(xk)减小的程度是最强烈的,也是当前迭代步骤最优的优化方向
f ( x k + 1 ) − f ( x k ) ≈ α k ⋅ ∣ ∣ ∇ f ( x k ) ∣ ∣ ⋅ ∣ ∣ P k ∣ ∣ ⋅ cos ⁡ θ = − α k ⋅ ∣ ∣ ∇ f ( x k ) ∣ ∣ ⋅ 1 ⋅ ( − 1 ) = − α k ⋅ ∣ ∣ ∇ f ( x k ) ∣ ∣ \begin{aligned} f(x_{k+1}) - f(x_k) & \approx \alpha_k \cdot ||\nabla f(x_k)|| \cdot ||\mathcal P_k|| \cdot \cos \theta \\ & = - \alpha_k \cdot ||\nabla f(x_k)|| \cdot 1 \cdot (-1) \\ & = -\alpha_k \cdot ||\nabla f(x_k)|| \end{aligned} f(xk+1)f(xk)αk∣∣∇f(xk)∣∣∣∣Pk∣∣cosθ=αk∣∣∇f(xk)∣∣1(1)=αk∣∣∇f(xk)∣∣

实际上,梯度下降法 ( Gradient Descent,GD ) (\text{Gradient Descent,GD}) (Gradient Descent,GD),它每一次迭代(更新步骤)中总会选择最优的优化方向(与梯度方向相反的方向)作为下降方向,因为在当前迭代步骤中,该方向目标函数下降的效果最明显。因此梯度下降法也被称作最速下降法

相关参考:
【优化算法】线搜索方法-方向

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

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

相关文章

9. Spring MVC

目录 1. Spring MVC 介绍 1.1 MVC 定义 1.2 MVC 和 Spring MVC 的关系 1.3 Spring、Spring Boot 和 Spring MVC 的关系 2. Spring MVC 的创建和连接 2.1 Spring MVC 项目返回视图 2.2 Spring MVC 项目返回数据 2.3 RequestMapping 是 post 还是 get 请求 3. 获取参数…

PX4固件报错“Accel 0 clipping, not safe to fly!“

最近在使用PX4固件时&#xff0c;遇到了报错&#xff1a; “Accel 0 clipping, not safe to fly!” 这个报错我以前是从没遇到过的&#xff0c;可见是新版固件才会有的。 正常来说&#xff0c;只有山寨乞丐版飞控才会经常出现这类传感器的报错。 但是我手里的是5000多的X7 pro&…

使用多数据源dynamic-datasource-spring-boot-starter遇到的问题记录

记录使用多数据源dynamic-datasource-spring-boot-starter遇到的问题&#xff1a; 1、工程启动失败 缺少clickhouse连接驱动&#xff0c;引入对应的maven依赖 <!--ck连接驱动--><dependency><groupId>ru.yandex.clickhouse</groupId><artifactId>…

没有颜值插件的编辑器是没有灵魂的--【idea-theme插件】

文章目录 本系列校训idea安装程序员常用软件工具推荐1.JetBrains全家桶2.Microsoft Visual Studio3.eclise 系列 先看一下VS Code 的特色idea 系列 的颜值插件idea插件安装Material_ThemeMaterail 家自己的themes主题免费的版本在前面 本系列校训 颜值即正义&#xff01;你漂亮…

浅谈性能测试中的基准测试

在性能测试中有一种测试类型叫做基准测试。这篇文章&#xff0c;就聊聊关于基准测试的一些事儿。 1、定义 通过设计合理的测试方法&#xff0c;选用合适的测试工具和被测系统&#xff0c;实现对某个特定目标场景的某项性能指标进行定量的和可对比的测试。 2、特质 ①、可重…

SUI供应量等问题的说明以及终止与MovEX的合作声明

原生加密token是区块链经济系统的基石&#xff0c;对网络的安全、运作和增长至关重要。Sui的原生token SUI有如下四个关键用途&#xff1a; 质押给验证节点&#xff0c;以确保网络的安全&#xff0c;并赚取质押奖励用于支付gas费&#xff0c;以执行交易和其他操作作为原生资产&…

用python怎么输出个人信息,python怎么输出个人信息

大家好&#xff0c;给大家分享一下python输入自己的姓名,输出hello,某某某同学&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; 1、python要求用户输入姓名并输出 name input("请输入姓名:") print("你好,"&#xff…

MSFCS互相联动

MSF&CS互相联动 1. 前言2. CS联动MSF2.1. 案例测试2.1.1. CS设置联动监听器2.1.2. CS设置联动MSF会话2.1.3. MSF设置监听 3. MSF联动CS3.1. 案例测试3.1.1. MSF生成木马3.1.2. 设置监听3.1.3. CS设置监听3.1.4. MSF转移会话3.1.5. 查看上线 4. 其它 1. 前言 在日常渗透测试…

【单片机】温控系统参数辨识及单片机PID控制

温控系统参数辨识及单片机PID控制 1. 温控系统组成2. matlab辨识系统参数2.1 采集阶跃响应信号导入matlab系统辨识模块 PID控制 1. 温控系统组成 半导体制冷片正向通电制冷&#xff0c;反向通电制热。系统采用半导体制冷片&#xff08;帕尔贴&#xff09;作为执行单元&#xf…

使用adb通过电脑给安卓设备安装apk文件

最近碰到要在开发板上安装软件的问题&#xff0c;由于是开发板上的安卓系统没有解析apk文件的工具&#xff0c;所以无法通过直接打开apk文件来安装软件。因此查询各种资料后发现可以使用adb工具&#xff0c;这样一来可以在电脑上给安卓设备安装软件。 ADB 就是连接 Android 手…

C++中对 this 指针的理解

引出 我们首先了解this指针&#xff0c;要先了解class&#xff08;类&#xff09;&#xff0c;类其实就相当于C语言中的结构体一样&#xff0c;也是创建了一个自定义类型。对于类而言该类型下面可以存放成员函数&#xff0c;成员变量。类可以声明一个变量&#xff0c;对该变量…

数据结构---LRU CACHE

什么是LRU 通过之前的学习我们知道计算机在处理任务的时候是先将数据从硬盘中提取出来加载进内存&#xff0c;然后再将内存中的数据加载进入cpu进行计算&#xff0c;但是这里存在一个问题cpu的计算速度非常快&#xff0c;而内存中加载数据的速度又很慢&#xff0c;所以为了提供…

Mysql-事务、视图和索引

目录 事务 操作 步骤 特性 并发事务问题 事务隔离级别 索引 作用 分类 主键索引&#xff08;PRIMARY KEY&#xff09; 唯一索引&#xff08;UNIQUE&#xff09; 常规索引&#xff08;INDEX&#xff09; 全文索引&#xff08;FULLTEXT&#xff09; 管理索引 数据…

2023-07-28 LeetCode每日一题(并行课程 III)

2023-07-28每日一题 一、题目编号 2050. 并行课程 III二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数 n &#xff0c;表示有 n 节课&#xff0c;课程编号从 1 到 n 。同时给你一个二维整数数组 relations &#xff0c;其中 relations[j] [prevCoursej, next…

CS5212/CS5202|国产DP转VGA芯片|DP转VGA单转方案芯片

CS5212/CS5202是集睿致远推出的一款国产DP转VGA方案芯片&#xff0c;可替代替代RTD2166&#xff0c;替代IT6516芯片方案&#xff0c;相比之下CS5212/CS5202外围器件少&#xff0c;设计版框尺寸小。 CS5212/CS5202 DP转VGA方案原理图 CS5202特性 支持2通道数字输入&#xff0c…

一封来自Java学姐的信

黑马JavaEE学科学姐想对学弟学妹们说&#xff1a;勤学如春起之苗&#xff0c;不见其增&#xff0c;日有所长。 辍学如磨刀之石&#xff0c;不见其损&#xff0c;日有所亏。 学科 | JavaEE 校区 | 太原 亲爱的学弟学妹们&#xff0c;在学校“混日子”的时间很快就过去了&…

虚拟演播室:Aximmetry Broadcast DE 2023 Crack

Aximmetry 的基于节点的编辑器可以根据您的特定项目进行塑造&#xff0c;从而在实现项目时提供更大的灵活性&#xff1b;无论是广播制作、虚拟活动、预可视化、基于 LED 墙的虚拟制作还是您可以想象的任何其他 3D 图形任务。有关 XR 的更多信息。Aximmetry 还拥有自己的先进色度…

matlab BP神经网络对iris数据集进行分类

iris数据集 本文所用数据集&#x1f449;&#x1f449;&#x1f449;iris分类数据集 1.数据预处理 %% 1.数据预处理 oridatareadtable(Iris.xls,Sheet,Sheet1); Xtable2array(oridata(:,(1:4))); % X转化为array类型 Ytable2array(oridata(:,5)); % Y因为包含中文字符&…

如何彻底卸载VMware

目录 第一章、停止并卸载VMware程序1.1&#xff09;停止VMware有关的服务1.2&#xff09;打开任务管理器停止进程1.3&#xff09;卸载VMware程序 第二章、残留文件删除2.1&#xff09;打开注册表2.2&#xff09;删除注册表残留文件2.3&#xff09;C盘文件删除 友情提醒&#xf…

单机环境下定时任务的基本原理和常见解决方案(二)之时间轮原理分析

单机环境下定时任务的基本原理和常见解决方案之时间轮原理分析 时间轮Netty时间轮使用Netty 时间轮 HashedWheelTimer 源码分析向时间轮里添加taskWorkerThread线程执行时间轮任务 多层时间轮总结 时间轮 生活中的时钟想必大家都不陌生&#xff0c;而时间轮的设计思想就是来源…