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

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

引言

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

回顾:线搜索方法

线搜索方法是一种通过求解数值解来计算最优解的方法。其特点是:在数值解的迭代求解过程中,分为方向步长分别执行,并且先定方向,后定步长。对应的数学符号表达如下:
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.mfbz.cn/a/48436.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Transformer模型简单介绍

Transformer是一个深度学习模型。主要功能通俗的来说就是翻译。输入&#xff0c;处理&#xff0c;输出。 https://zhuanlan.zhihu.com/p/338817680 大牛写的很完整 目录 总框架Encoder输入部分注意力机制前馈神经网络 Decoder 总框架 Encoders: 编码器Decoders: 解码器 Encoder…

【node.js】01-fs读写文件内容

目录 一、fs.readFile() 读取文件内容 二、fs.writeFile() 向指定的文件中写入内容 案例&#xff1a;整理txt 需求&#xff1a; 代码&#xff1a; 一、fs.readFile() 读取文件内容 代码&#xff1a; //导入fs模块&#xff0c;从来操作文件 const fs require(fs)// 2.调…

Vue+ElementUI操作确认框及提示框的使用

在进行数据增删改查操作中为保证用户的使用体验&#xff0c;通常需要显示相关操作的确认信息以及操作结果的通知信息。文章以数据的下载和删除提示为例进行了简要实现&#xff0c;点击下载以及删除按钮&#xff0c;会出现对相关信息的提示&#xff0c;操作结果如下所示。 点击…

第十章:重新审视扩张卷积:一种用于弱监督和半监督语义分割的简单方法

0.摘要 尽管取得了显著的进展&#xff0c;弱监督分割方法仍然不如完全监督方法。我们观察到性能差距主要来自于它们在从图像级别监督中学习生成高质量的密集目标定位图的能力有限。为了缓解这样的差距&#xff0c;我们重新审视了扩张卷积[1]并揭示了它如何以一种新颖的方式被用…

【云原生】Docker容器资源限制(CPU/内存/磁盘)

目录 ​编辑 1.限制容器对内存的使用 2.限制容器对CPU的使用 3.block IO权重 4.实现容器的底层技术 1.cgroup 1.查看容器的ID 2.在文件中查找 2.namespace 1.Mount 2.UTS 3.IPC 4.PID 5.Network 6.User 1.限制容器对内存的使用 ⼀个 docker host 上会运⾏若⼲容…

【Python入门系列】第十八篇:Python自然语言处理和文本挖掘

文章目录 前言一、Python常用的NLP和文本挖掘库二、Python自然语言处理和文本挖掘1、文本预处理和词频统计2、文本分类3、命名实体识别4、情感分析5、词性标注6、文本相似度计算 总结 前言 Python自然语言处理&#xff08;Natural Language Processing&#xff0c;简称NLP&…

PLC学习的步骤与重点:

熟悉基础元器件的原理和使用方法&#xff1a;了解按钮、断路器、继电器、接触器、24V开关电源等基础元器件的原理和使用方法&#xff0c;并能够应用它们来实现简单的逻辑电路&#xff0c;例如电机的正反转和单按钮的启停控制。 掌握PLC的接线方法&#xff1a;了解PLC的输入输出…

【微服务架构设计】微服务不是魔术:处理超时

微服务很重要。它们可以为我们的架构和团队带来一些相当大的胜利&#xff0c;但微服务也有很多成本。随着微服务、无服务器和其他分布式系统架构在行业中变得更加普遍&#xff0c;我们将它们的问题和解决它们的策略内化是至关重要的。在本文中&#xff0c;我们将研究网络边界可…

element-ui form表单的动态rules校验

在vue 项目中&#xff0c;有时候可能会用到element-ui form表单的动态rules校验&#xff0c;比如说选择了哪个选项&#xff0c;然后动态显示或者禁用等等。 我们可以巧妙的运用element-ui form表单里面form-item想的校验规则来处理&#xff08;每一个form-item项都可以单独校验…

uiautomatorViewer无法获取Android8.0手机屏幕截图的解决方案

问题描述&#xff1a; 做APP UI自动化的时候&#xff0c;会碰到用uiautomatorViewer在Android 8.0及以上版本的手机上&#xff0c;无法获取到手机屏幕截图&#xff0c;无法获取元素定位信息的问题&#xff0c;会有以下的报 在低版本的Android手机上&#xff0c;则没有这个问题…

数字化新时代,VR全景拍摄与制作

导语&#xff1a; 随着科技的飞速发展&#xff0c;数字化图片正在引领新的时代潮流。在这个数字化图片的新时代&#xff0c;VR全景拍摄与制作技术正以其独特的特点和无限的优势&#xff0c;成为数字影像领域的一颗璀璨明星。让我们深入了解VR全景拍摄与制作的特点和优势&#…

selenium浏览器驱动下载

Chrome谷歌浏览器 下载地址&#xff1a;http://chromedriver.storage.googleapis.com/index.html 不同的Chrome的版本对应的chromedriver.exe 版本也不一样&#xff0c;下载时不要搞错了。 如果是最新的Chrome, 下载最新的chromedriver.exe 就可以了。 Firefox火狐浏览器 驱…

vue中Cascader 级联选择器实现-修改实现

vue 的cascader研究了好长时间&#xff0c;看了官网给的示例&#xff0c;上网查找了好多信息&#xff0c;才解决修改时回显的问题&#xff0c;现将方法总结如下&#xff1a; vue代码&#xff1a; <el-form-item label"芯片" prop"firmware"> <…

C++-----stack和queue

本期我们来学习stack和queue 目录 stack介绍 栈的使用 栈的模拟实现 queue介绍 队列的使用 队列的模拟实现 deque 优先级队列 模拟实现 仿函数 全部代码 stack介绍 1. stack 是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除…

3D工厂模拟仿真 FACTORY I/O 2.55 Crack

FACTORY I/O 提供超过20个典型的工业应用场景让您如身临其境般地练习控制任务。选择一种场景直接使用或以其作为一个新项目的开端。学生可以利用内嵌的可编辑的典型工业系统模板&#xff0c;也可以自由搭建并编辑工业系统。同时该系统具有全方位3D视觉漫游&#xff0c;可随意放…

在Vue-Element中引入jQuery的方法

一、在终端窗口执行安装命令 npm install jquery --save执行完后&#xff0c;npm会自动在package.json中加上jquery 二、在main.js中引入&#xff08;或者在需要使用的页面中引入即可&#xff09; import $ from jquery三、使用jquery

5、Kubernetes核心技术 - Controller控制器工作负载

目录 一、Deployments - 控制器应用 二、Deployment升级回滚和弹性收缩 2.1、创建一个 1.14 版本的 pod 2.2、应用升级 2.3、查看升级状态 2.4、查看历史版本 2.5、应用回滚 2.6、弹性伸缩 三、StatefulSet - 有状态应用 四、DaemonSet - 守护进程 五、Job - 单次任…

Centos7 安装tomcat9

去官网下载 数据包 ps: wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.78/bin/apache-tomcat-9.0.78.tar.gz检查Java环境 [tomcatlocalhost bin]$ java -version java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java H…

js的变量

目录 变量 var和let 1.for循环中的声明 2.暂时性死区 3.全局声明 4.条件声明 const声明 变量 java是一种强数据类型语言,对数据类型要求高&#xff0c;要声明清楚变量的类型 数据类型 变量名 值 -----> int a 10 而javaScrit是一种弱类型语言&#xff0c;在声明变…

【图像去噪】基于进化算法——自组织迁移算法(SOMA)的图像去噪研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…