线性代数|机器学习-P22逐步最小化一个函数

文章目录

  • 1. 概述
  • 2. 泰勒公式
  • 3. 雅可比矩阵
  • 4. 经典牛顿法
    • 4.1 经典牛顿法理论
    • 4.2 牛顿迭代法解求方程根
    • 4.3 牛顿迭代法解求方程根 Python
  • 5. 梯度下降和经典牛顿法
    • 5.1 线搜索方法
    • 5.2 经典牛顿法
  • 6. 凸优化问题
    • 6.1 约束问题
    • 6.1 凸集组合

Mit麻省理工教授视频如下:逐步最小化一个函数

1. 概述

主要讲的是无约束情况下的最小值问题。涉及到如下:

  • 矩阵求导
  • 泰勒公式,函数到向量的转换
  • 梯度下降
  • 牛顿法梯度下降

2. 泰勒公式

我们之前在高等数学中学过关于f(x)的泰勒展开如下:
定义: lim ⁡ x → a h k ( x ) = 0 \lim\limits_{x\to a}h_k(x)=0 xalimhk(x)=0
f ( x ) = f ( a ) + f ′ ( a ) ( x − a ) + f ′ ′ ( a ) 2 ! ( x − a ) 2 + ⋯ + f ( k ) ( a ) k ! ( x − a ) k + h k ( x ) ( x − a ) k \begin{equation} f(x)=f(a)+f'(a)(x-a)+\frac{f''(a)}{2!}(x-a)^2+\cdots+\frac{f^{(k)}(a)}{k!}(x-a)^k+h_k(x)(x-a)^k \end{equation} f(x)=f(a)+f(a)(xa)+2!f′′(a)(xa)2++k!f(k)(a)(xa)k+hk(x)(xa)k

  • 那么我们只提取二次项, x + Δ x → x ; x → a x+\Delta x \rightarrow x;x\rightarrow a x+Δxx;xa 可得如下:
    f ( x + Δ x ) ≈ f ( x ) + f ′ ( x ) Δ x + f ′ ′ ( x ) 2 ! Δ x 2 \begin{equation} f(x+\Delta x)\approx f(x)+f'(x)\Delta x+\frac{f''(x)}{2!}\Delta x^2 \end{equation} f(x+Δx)f(x)+f(x)Δx+2!f′′(x)Δx2
  • 上面的公式中x为标量,现在我们需要用到向量 x
  • a , b a,b a,b均为1维列向量,S为对称矩阵时,我们可得得到如下:
    a T b = c , x T S x = d → c , d 均为标量 \begin{equation} a^Tb=c,x^TSx=d\rightarrow c,d均为标量 \end{equation} aTb=c,xTSx=dc,d均为标量
  • 定义如下:
    x = [ x 1 x 2 ⋯ x n ] T , f = [ f 1 f 2 ⋯ f n ] T \begin{equation} x=\begin{bmatrix}x_1&x_2&\cdots&x_n\end{bmatrix}^T,f=\begin{bmatrix}f_1&f_2&\cdots&f_n\end{bmatrix}^T \end{equation} x=[x1x2xn]T,f=[f1f2fn]T
    f ′ ( x ) = ∇ F = [ ∂ f ∂ x 1 ∂ f ∂ x 1 ⋯ ∂ f ∂ x n ] T → f ′ ( x ) Δ x = ( Δ x ) T ∇ F ( x ) \begin{equation} f'(x)=\nabla F=\begin{bmatrix}\frac{\partial f}{\partial x_1}&\frac{\partial f}{\partial x_1}&\cdots&\frac{\partial f}{\partial x_n}\end{bmatrix}^T \rightarrow f'(x)\Delta x=(\Delta x)^T \nabla F(x) \end{equation} f(x)=F=[x1fx1fxnf]Tf(x)Δx=(Δx)TF(x)
  • H j k H_{jk} Hjkhessian matrix具有对称性
    f ′ ′ ( x ) = H j k = ∂ 2 F ∂ x j ⋅ ∂ x k → f ′ ′ ( x ) 2 ! Δ x 2 = 1 2 ( Δ x ) T H j k ( Δ x ) \begin{equation} f''(x)=H_{jk}=\frac{\partial^2F}{\partial x_j\cdot \partial x_k}\rightarrow \frac{f''(x)}{2!}\Delta x^2=\frac{1}{2}(\Delta x)^T H_{jk}(\Delta x) \end{equation} f′′(x)=Hjk=xjxk2F2!f′′(x)Δx2=21(Δx)THjk(Δx)
  • 整理上述公式可得:
    F ( x + Δ x ) ≈ F ( x ) + ( Δ x ) T ∇ F ( x ) + 1 2 ( Δ x ) T H j k ( Δ x ) \begin{equation} F(x+\Delta x)\approx F(x)+(\Delta x)^T \nabla F(x)+\frac{1}{2}(\Delta x)^T H_{jk}(\Delta x) \end{equation} F(x+Δx)F(x)+(Δx)TF(x)+21(Δx)THjk(Δx)

3. 雅可比矩阵

假设有一个m维度向量函数 f ( x ) = [ f 1 ( x ) f 2 ( x ) ⋯ f m ( x ) ] T f(x)=\begin{bmatrix}f_1(x)&f_2(x)&\cdots f_m(x)\end{bmatrix}^T f(x)=[f1(x)f2(x)fm(x)]T[列向量],其中
x = [ x 1 x 2 ⋯ x n ] T x=\begin{bmatrix}x_1&x_2&\cdots&x_n\end{bmatrix}^T x=[x1x2xn]T是一个n维输入向量,雅可比矩阵J是一个 m × n m\times n m×n的矩阵,其元素由函数的偏导数组成:雅可比矩阵第i行第j列表示的是 f i ( x ) f_i(x) fi(x) x i x_i xi的偏导
J i j = ∂ f i ( x ) ∂ x j \begin{equation} J_{ij}=\frac{\partial f_i(x)}{\partial x_j} \end{equation} Jij=xjfi(x)

  • 本质上就是函数值 f i ( x ) f_i(x) fi(x) x i x_i xi的每个元素求导:

  • 第一步假设 f i ( x ) f_i(x) fi(x)是常数, ∂ f i ( x ) ∂ X \frac{\partial f_i(x)}{\partial X} Xfi(x)为分子布局,遵循标量不变,向量拉伸原则

  • XY拉伸术,分子布局,X横向拉,Y纵向拉,可得如下:
    ∂ f i ( x ) ∂ X = [ ∂ f i ( x ) ∂ x 1 ∂ f i ( x ) ∂ x 2 ⋯ ∂ f i ( x ) ∂ x n ] \begin{equation} \frac{\partial f_i(x)}{\partial X}= \begin{bmatrix} \frac{\partial f_i(x)}{\partial x_1}& \frac{\partial f_i(x)}{\partial x_2}& \cdots& \frac{\partial f_i(x)}{\partial x_n} \end{bmatrix} \end{equation} Xfi(x)=[x1fi(x)x2fi(x)xnfi(x)]

  • 第二步假设 f ( x ) f(x) f(x)为向量, ∂ f ( x ) ∂ X \frac{\partial f(x)}{\partial X} Xf(x)为分子布局,遵循标量不变,向量拉伸原则

  • XY拉伸术,分子布局,X横向拉,Y 纵向拉,可得如下:
    J = [ ∂ f 1 ( x ) ∂ x 1 ∂ f 1 ( x ) ∂ x 2 ⋯ ∂ f 1 ( x ) ∂ x n ∂ f 2 ( x ) ∂ x 1 ∂ f 2 ( x ) ∂ x 2 ⋯ ∂ f 2 ( x ) ∂ x n ⋮ ⋮ ⋯ ⋮ ∂ f m ( x ) ∂ x 1 ∂ f m ( x ) ∂ x 2 ⋯ ∂ f m ( x ) ∂ x n ] \begin{equation} \mathrm{J}= \begin{bmatrix} \frac{\partial f_1(x)}{\partial x_1}&\frac{\partial f_1(x)}{\partial x_2}&\cdots&\frac{\partial f_1(x)}{\partial x_n}\\\\ \frac{\partial f_2(x)}{\partial x_1}&\frac{\partial f_2(x)}{\partial x_2}&\cdots&\frac{\partial f_2(x)}{\partial x_n} \\\\ \vdots&\vdots&\cdots&\vdots\\\\\ \frac{\partial f_m(x)}{\partial x_1}&\frac{\partial f_m(x)}{\partial x_2}&\cdots& \frac{\partial f_m(x)}{\partial x_n} \end{bmatrix} \end{equation} J= x1f1(x)x1f2(x) x1fm(x)x2f1(x)x2f2(x)x2fm(x)xnf1(x)xnf2(x)xnfm(x)

  • 泰勒公式1阶展开可得:
    f ( x + Δ x ) = f ( x ) + f ′ ( x ) Δ x \begin{equation} f(x+\Delta x)=f(x)+f'(x)\Delta x \end{equation} f(x+Δx)=f(x)+f(x)Δx

  • 转换成雅可比矩阵可得:
    f ( x + Δ x ) = f ( x ) + J j k Δ x ; J j k = ∂ f j ( x ) ∂ x k \begin{equation} f(x+\Delta x)=f(x)+\mathrm{J}_{jk}\Delta x;\mathrm{J}_{jk}=\frac{\partial f_j(x)}{\partial x_k} \end{equation} f(x+Δx)=f(x)+JjkΔx;Jjk=xkfj(x)

4. 经典牛顿法

4.1 经典牛顿法理论

我们已经知道了函数的二阶泰勒展开表示如下:
F ( x + Δ x ) ≈ F ( x ) + ( Δ x ) T ∇ F ( x ) + 1 2 ( Δ x ) T H j k ( Δ x ) \begin{equation} F(x+\Delta x)\approx F(x)+(\Delta x)^T \nabla F(x)+\frac{1}{2}(\Delta x)^T H_{jk}(\Delta x) \end{equation} F(x+Δx)F(x)+(Δx)TF(x)+21(Δx)THjk(Δx)

  • 一般如果在 x ∗ x^* x处取得最小值,那么其导数为0;现在我们求导可得:
    d F ( x ) d Δ x = 0 ; ( Δ x ) T ∇ F ( x ) d Δ x = ∇ F ( x ) ; d 1 2 ( Δ x ) T H j k ( Δ x ) d Δ x = H j k Δ x ; \begin{equation} \frac{\mathrm{d}F(x)}{\mathrm{d}\Delta x}=0;\frac{(\Delta x)^T \nabla F(x)}{\mathrm{d}\Delta x}=\nabla F(x);\frac{\mathrm{d}\frac{1}{2}(\Delta x)^T H_{jk}(\Delta x)}{\mathrm{d}\Delta x}=H_{jk}\Delta x; \end{equation} dΔxdF(x)=0;dΔx(Δx)TF(x)=F(x);dΔxd21(Δx)THjk(Δx)=HjkΔx;
    d F ( x + Δ x ) d Δ x = 0 + ∇ F ( x ) + H j k Δ x = 0 \begin{equation} \frac{\mathrm{d}F(x+\Delta x)}{\mathrm{d}\Delta x}=0+\nabla F(x)+H_{jk}\Delta x=0 \end{equation} dΔxdF(x+Δx)=0+F(x)+HjkΔx=0
  • H j k = J j k H_{jk}=\mathrm{J}_{jk} Hjk=Jjk可逆时, Δ x = x k + 1 − x k \Delta x=x_{k+1}-x_k Δx=xk+1xk可得:
    − [ H j k ] − 1 ∇ F ( x ) = x k + 1 − x k → x k + 1 = x k − [ J j k ] − 1 ∇ F ( x ) \begin{equation} -[H_{jk}]^{-1}\nabla F(x)=x_{k+1}-x_k\rightarrow x_{k+1}=x_k-[\mathrm{J}_{jk}]^{-1}\nabla F(x) \end{equation} [Hjk]1F(x)=xk+1xkxk+1=xk[Jjk]1F(x)
  • 我们定义 ∇ F ( x ) = f ( x k ) \nabla F(x)=f(x_k) F(x)=f(xk), J j k = J x k \mathrm{J}_{jk}=\mathrm{J}_{x_k} Jjk=Jxk
    x k + 1 = x k − [ J x k ] − 1 f ( x k ) \begin{equation} x_{k+1}=x_k-[\mathrm{J}_{x_k}]^{-1}f(x_k) \end{equation} xk+1=xk[Jxk]1f(xk)

4.2 牛顿迭代法解求方程根

  • 已知: f ( x ) = x 2 − 9 = 0 f(x)=x^2-9=0 f(x)=x29=0,用牛顿迭代的方法求解方程的根
  • 根据迭代公式可得: f ′ ( x ) = J x k = 2 x , f ( x k ) = x k 2 − 9 f'(x)=\mathrm{J}_{x_k}=2x,f(x_k)=x_k^2-9 f(x)=Jxk=2x,f(xk)=xk29
    x k + 1 = x k − [ J x k ] − 1 f ( x k ) → x k + 1 = x k − f ( x k ) J x k \begin{equation} x_{k+1}=x_k-[\mathrm{J}_{x_k}]^{-1}f(x_k)\rightarrow x_{k+1}=x_k-\frac{f(x_k)}{\mathrm{J}_{x_k}} \end{equation} xk+1=xk[Jxk]1f(xk)xk+1=xkJxkf(xk)
  • 整理可得:
    x k + 1 = x k − x k 2 − 9 2 x k = 1 2 x k + 9 2 x k \begin{equation} x_{k+1}=x_k-\frac{x_k^2-9}{2x_k}=\frac{1}{2}x_k+\frac{9}{2x_k} \end{equation} xk+1=xk2xkxk29=21xk+2xk9
  • 收敛依据:
    判断新的近似值 x k + 1 x_{k+1} xk+1与当前值 x k x_k xk之间的差距是否小于某个值 ϵ = 1 0 − 10 \epsilon=10^{-10} ϵ=1010,如果小于该值则认为收敛,否则继续迭代。
  • 我们先设置初始值 x 0 = 2 x_0=2 x0=2可得 x 1 x_1 x1
    x 1 = 1 2 x 0 + 9 2 x 0 = 3.25 ; \begin{equation} x_{1}=\frac{1}{2}x_0+\frac{9}{2x_0}=3.25; \end{equation} x1=21x0+2x09=3.25;
  • 继续迭代得 x 2 x_2 x2
    x 2 = 1 2 x 1 + 9 2 x 1 = 3.0096153846153846 ; \begin{equation} x_{2}=\frac{1}{2}x_1+\frac{9}{2x_1}=3.0096153846153846; \end{equation} x2=21x1+2x19=3.0096153846153846;
  • 继续迭代得 x 3 x_3 x3
    x 3 = 1 2 x 2 + 9 2 x 2 = 3.000015360039322 ; \begin{equation} x_{3}=\frac{1}{2}x_2+\frac{9}{2x_2}=3.000015360039322; \end{equation} x3=21x2+2x29=3.000015360039322
  • 继续迭代得 x 4 x_4 x4
    x 4 = 1 2 x 3 + 9 2 x 3 = 3.0000000000393214 ; \begin{equation} x_{4}=\frac{1}{2}x_3+\frac{9}{2x_3}=3.0000000000393214; \end{equation} x4=21x3+2x39=3.0000000000393214
  • 可得 x 2 − 9 = 0 x^2-9=0 x29=0的解为 x 1 ∗ = 3 x_1^*=3 x1=3,同理初始化为 x 0 = − 2 x_0=-2 x0=2 可得 x 2 ∗ = − 3 x_2^*=-3 x2=3

4.3 牛顿迭代法解求方程根 Python

  • 代码: Python代码如下:
def newton_raphson(f, f_prime, x0, tol=1e-10, max_iter=100):x = x0for i in range(max_iter):fx = f(x)fpx = f_prime(x)# Newton-Raphson iterationx_new = x - fx / fpxprint(f"Iteration {i + 1}: x = {x_new}")if abs(x_new - x) < tol:return x_newx = x_newraise ValueError("Newton-Raphson method did not converge")# Define the function and its first derivative
f = lambda x: x ** 2 - 9
f_prime = lambda x: 2 * x# Initial guesses
initial_guesses = [2, -2]# Find the roots
for x0 in initial_guesses:root = newton_raphson(f, f_prime, x0)print(f"The root starting from {x0} is: {root}")
  • 运行结果:
Iteration 1: x = 3.25
Iteration 2: x = 3.0096153846153846
Iteration 3: x = 3.000015360039322
Iteration 4: x = 3.0000000000393214
Iteration 5: x = 3.0
The root starting from 2 is: 3.0
Iteration 1: x = -3.25
Iteration 2: x = -3.0096153846153846
Iteration 3: x = -3.000015360039322
Iteration 4: x = -3.0000000000393214
Iteration 5: x = -3.0
The root starting from -2 is: -3.0

5. 梯度下降和经典牛顿法

对于无约束问题的梯度下降,我们一般有两种方法:

5.1 线搜索方法

运用泰勒一阶信息,迭代方向为负梯度方向:

  • 迭代方程:
    x k + 1 = x k + α k p k \begin{equation} x_{k+1}=x_k +\alpha_k p_k \end{equation} xk+1=xk+αkpk
  • 方向 p k p_k pk:负梯度方向 − ∇ F -\nabla F F
  • 步长: α k = s k \alpha_k=s_k αk=sk,深度学习中叫学习率
  • 更新后的方程如下:
    x k + 1 = x k − s k ∇ F \begin{equation} x_{k+1}=x_k -s_k \nabla F \end{equation} xk+1=xkskF

5.2 经典牛顿法

运用泰勒二阶信息,迭代方向为牛顿方向:迭代步长为 α 1 = 1 \alpha_1=1 α1=1

  • 迭代方程为,hessian matrix-> H j k H_{jk} Hjk可逆:
    x k + 1 = x k − [ H j k ] − 1 ∇ F ( x ) \begin{equation} x_{k+1}=x_k-[H_{jk}]^{-1}\nabla F(x) \end{equation} xk+1=xk[Hjk]1F(x)
  • 经典牛顿法为二次性收敛,速度非常快,具体分析请参考如下博客
    [优化算法]经典牛顿法

6. 凸优化问题

6.1 约束问题

我们定义凸函数为 f ( x ) f(x) f(x),凸集为 K \mathrm{K} K,我们的目的是为了求得凸函数 f ( x ) f(x) f(x)的最小值
min ⁡ x ∈ K f ( x ) , K : A x = b \begin{equation} \min\limits_{x\in K} f(x), \mathrm{K}:Ax=b \end{equation} xKminf(x)K:Ax=b

  • f ( x ) f(x) f(x)表示的是所有在碗内部上的和碗内表面上的点
  • 求的是在碗内表面的上的最小值,碗的形状就是约束条件 A x = b Ax=b Ax=b
    在这里插入图片描述

6.1 凸集组合

  • 如果 x 1 , x 2 x_1,x_2 x1,x2均在凸集里面,则由 x 1 , x 2 x_1,x_2 x1,x2组成的直线L在凸集里面
    在这里插入图片描述
  • 如果 x 1 , x 2 x_1,x_2 x1,x2分别在不同的凸集里面,则由 x 1 , x 2 x_1,x_2 x1,x2组成的直线L不在凸集里面
    在这里插入图片描述
  • 小结:合并图集里面组合的直线不在凸集里面。
  • 如果 x 1 , x 2 x_1,x_2 x1,x2都在不同的凸集里面的交集里面,则由 x 1 , x 2 x_1,x_2 x1,x2组成的直线L在凸集中
    在这里插入图片描述
  • 假设我们有两个凸函数 F 1 ( x ) , F 2 ( x ) F_1(x),F_2(x) F1(x),F2(x),我们定义如下:
    min ⁡ ( x ) = min ⁡ [ F 1 ( x ) , F 2 ( x ) ] ; max ⁡ ( x ) = max ⁡ [ F 1 ( x ) , F 2 ( x ) ] ; \begin{equation} \min(x)=\min[F_1(x),F_2(x)];\max(x)=\max[F_1(x),F_2(x)]; \end{equation} min(x)=min[F1(x),F2(x)];max(x)=max[F1(x),F2(x)];
  • 如果两个凸集相交,那么相交的凸集最大值,最小值如下:
    min ⁡ ( x ) = min ⁡ [ F 1 ( x ) , F 2 ( x ) ] − > 非凸; max ⁡ ( x ) = max ⁡ [ F 1 ( x ) , F 2 ( x ) ] − > 凸 ; \begin{equation} \min(x)=\min[F_1(x),F_2(x)]-> 非凸;\max(x)=\max[F_1(x),F_2(x)]->凸; \end{equation} min(x)=min[F1(x),F2(x)]>非凸;max(x)=max[F1(x),F2(x)]>;
  • 凸函数判断
    d 2 f ( x ) d x 2 ≥ 0 \begin{equation} \frac{\mathrm{d}^2f(x)}{\mathrm{d}x^2}\ge 0 \end{equation} dx2d2f(x)0

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

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

相关文章

bert训练的一些技巧(rand() < self.skipgram_prb)

rand() < self.skip_gram_prb) 是一个条件表达式&#xff0c;用来判断是否进行skip-gram掩码操作。这种掩码操作通常用于自然语言处理中的数据增强&#xff0c;通过概率决定是否应用skip-gram掩码。下面是对这个表达式的详细解释&#xff1a; 解释 rand(): rand() 是一个随…

uniapp 初始学习1

uni-app代码基本包括js,vue,css.在app端支持原生渲染nvue&#xff0c;可编译的kotlin和swift 掌握js就可以进行不同应用的开发 页面文件遵循 Vue 单文件组件 (SFC) 规范&#xff0c;即每个页面是一个.vue文件 .vue文件是一个自定义的文件类型&#xff0c;用类HTML语法描述一…

SpringBoot使用RedisTemplate、StringRedisTemplate操作Redis

前言 RedisTemplate 是 Spring Boot 访问 Redis 的核心组件&#xff0c;底层通过 RedisConnectionFactory 对多种 Redis 驱动进行集成&#xff0c;上层通过 XXXOperations 提供丰富的 API &#xff0c;并结合 Spring4 基于泛型的 bean 注入&#xff0c;极大的提供了便利&#x…

深度学习和NLP中的注意力和记忆

深度学习和NLP中的注意力和记忆 文章目录 一、说明二、注意力解决了什么问题&#xff1f;#三、关注的代价#四、机器翻译之外的关注#五、注意力&#xff08;模糊&#xff09;记忆&#xff1f;# 一、说明 深度学习的最新趋势是注意力机制。在一次采访中&#xff0c;现任 OpenAI 研…

使用 python 构建企业级高可用海量爬虫调度系统

一、引言 在大数据时代&#xff0c;信息的获取与分析成为了企业决策的重要依据。对于营销行业而言&#xff0c;实时抓取和分析竞争对手动态、市场趋势以及用户反馈等数据&#xff0c;是制定有效策略的关键。然而&#xff0c;构建一个高可用的、能够处理海量数据的爬虫调度系统…

K8S中部署 Nacos 集群

1. 准备 GitK8Skubectlhelm 咱也没想到 K8S 部署系列能搞这么多次&#xff0c;我一个开发天天干运维的活&#xff0c;前端后端运维测试工程师实至名归。 2. 方案选择 https://github.com/nacos-group/nacos-k8s 我替你们看了一下&#xff0c;有好几种方式能部署&#xff…

华为机考真题 -- 求字符串中所有整数

题目描述&#xff1a; 输入字符串s&#xff0c;输出s中包含所有整数的最小和。 说明&#xff1a;字符串s&#xff0c;只包含 a-z A-Z &#xff1b; 合法的整数包括&#xff1a; 1&#xff09; 正整数 一个或者多个0-9组成&#xff0c;如 0 2 3 002 102 2&#xff09;负整数…

【RHCE】基于用户认证和TLS加密的HTTP服务(HTTPS)

目录 一、创建用户账号 二、TLS加密 三、配置http服务子配置文件 四、创建访问http服务的文件夹以及输入重定向到文件 五、配置Linux本地仓库以及Windows下的本地仓库 六、基础操作 七、测试 一、创建用户账号 用户认证 # 创建两个账户 [rootlocalhost ~]# htpasswd -…

交叉熵损失函数的使用目的(很肤浅的理解)

第一种使用方法 import torch from torch import nn # Example of target with class indices loss nn.CrossEntropyLoss() input torch.randn(3, 5, requires_gradTrue) target torch.empty(3, dtypetorch.long).random_(5) output loss(input, target) output.backward(…

可控学习综述:信息检索中的方法、应用和挑战

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

10. 啤酒和饮料

啤酒和饮料 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 啤酒每罐 2.32.3 元&#xff0c;饮料每罐 1.91.9 元。小明买了若干啤酒和饮料&#xff0c;一共花了 82.382.3 元。 我们还知道他买的啤酒比饮料的数量…

js逆向第24例:FastMoss数据分析网站Fm-Sign加密字段破解

文章目录 一、前言二、定位关键参数三、代码实现一、前言 破解:FastMoss数据分析网站Fm-Sign加密字段 二、定位关键参数 先看一下网站加密字段是长什么样,如下图,老手估计一下子就能发现字段Fm-Sign:的密文类似md5加密后的结果。 直接全局搜索Fm-Sign:看来key也没有做混…

韦尔股份:深蹲起跳?

利润大增7倍&#xff0c;是反转信号还是回光返照&#xff1f; 今天我们聊聊光学半导体龙头——韦尔股份。 上周末&#xff0c;韦尔股份发布半年业绩预告&#xff0c;预计上半年净利润13至14亿&#xff0c;同比增幅高达 754%至 819%。 然而&#xff0c;回首 2023 年它的净利仅 …

Linux--DHCP原理与配置

目录 一、DHCP 1、DHCP 服务是什么 2、DHCP 优点 3、为什么使用DHCP 二、DHCP的模式与分配方式 1、DHCP 模式 2、DHCP 分配方式 3、工作原理 3.1 租约过程(四步) 3.2 更新租约 三、DHCP 服务器的配置 3.1 配置DHCP 3.2 dhcpd.conf 的内容构成 3.3 全局设置,作…

RedisTemplate使用

文章目录 RedisTemplate使用String类型Hash类型List类型Set类型Zset类型 RedisTemplate使用 String类型 Overridepublic void testString() {// t11();String key "k1";String currentNum;// 用法1&#xff1a;key是否存在Boolean value client.hasKey(key);log.i…

持续进化的难题:解析Transformer模型在增量学习中的挑战

持续进化的难题&#xff1a;解析Transformer模型在增量学习中的挑战 Transformer模型自问世以来&#xff0c;以其卓越的性能在自然语言处理&#xff08;NLP&#xff09;领域大放异彩。然而&#xff0c;当应用于增量学习场景时&#xff0c;即便是这一强大的模型也面临着一系列挑…

Qt:15.布局管理器(QVBoxLayout-垂直布局、QHBoxLayout-水平布局、QGridLayout-网格布局、拉伸系数,控制控件显示的大小)

目录 一、QVBoxLayout-垂直布局&#xff1a; 1.1QVBoxLayout介绍&#xff1a; 1.2 属性介绍&#xff1a; 1.3细节理解&#xff1a; 二、QHBoxLayout-水平布局&#xff1a; 三、QGridLayout-网格布局&#xff1a; 3.1QGridLayout介绍&#xff1a; 3.2常用方法&#xff1a…

如何在 Windows 10 上恢复未保存的 Word 文档

您是否整晚都在处理一个重要的 word 文件&#xff0c;但忘记保存它了&#xff1f;本文适合您。在这里&#xff0c;我们将解释如何恢复未保存的 word 文档。除此之外&#xff0c;您还将学习如何恢复已删除的 word 文档。 从专业人士到高中生&#xff0c;每个人都了解丢失重要 W…

three完全开源扩展案例01-三角形渐变

演示地址 import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.jsconst box document.getElementById(box)const scene new THREE.Scene()const camera new THREE.PerspectiveCamera(75, box.clientWidth / box.client…

SQL Server镜像与日志:数据保护的双重保障

SQL Server镜像与日志&#xff1a;数据保护的双重保障 在SQL Server的高可用性解决方案中&#xff0c;数据库镜像和日志传送是两种重要的技术&#xff0c;它们都旨在提供数据的安全性和业务连续性。然而&#xff0c;这两种技术在实现方式和使用场景上有着明显的区别。本文将深…