【强化学习的数学原理】课程笔记--1(基本概念,贝尔曼公式)

目录

  • 基本概念
    • State, Action, State transition
    • Policy, Reward, Trajectory, Discount Return
    • Episode
    • Markov decision process
  • 贝尔曼公式
    • 推导确定形式的贝尔曼公式
    • 推导一般形式的贝尔曼公式
      • State Value
      • Action Value
    • 一些例子
    • 贝尔曼公式的 Matric-vector form
    • 贝尔曼公式的解析解和迭代解
      • Gershgorin 圆盘定理

基本概念

State, Action, State transition

  • State: 用于描述agent目前所处的状态,以grid-world为例,即location: s 1 , s 2 , . . . s_1, s_2, ... s1,s2,...

  • Action: 在某个State时,可以做的动作的集合,以grid-world为例,即:

  • State transition:State转移矩阵(确定情形)or State转移分布(概率情形),以grid-world为例,eg:

Policy, Reward, Trajectory, Discount Return

  • Policy:即策略,告诉agent在每个State时,应该做什么Action,也有(确定形式)和(概率形式):

Policy在实际使用时,一般是存为表格(数组)形式,eg:

  • Reward:一个实值(标量),eg:正数用于reward,负数用于punishment,数学表达,eg :
    { P ( r = 1 ∣ 当前 s t a t e ,当前选择的 a i ) = 0.8 P ( r = 0 ∣ 当前 s t a t e ,当前选择的 a i ) = 0.2 \begin{cases} P(r=1|当前state,当前选择的a_i) = 0.8\\ \\ P(r=0|当前state,当前选择的a_i) = 0.2 \end{cases} P(r=1∣当前state,当前选择的ai)=0.8P(r=0∣当前state,当前选择的ai)=0.2

  • Trajectory:即 state-action-reward 链,eg:

  • Return:即一个Trajectory上所有reward之和,eg:上图中第一个return是2,第二个return是1,所以第一个policy更好(没有进到forbidden block)

    由于在到达target s 9 s_9 s9之后, s 9 s_9 s9的action会维持在 s 9 s_9 s9,即action一直是 a 5 a_5 a5(维持不动),因此reward会一直+1(那为什么不设置到达target之后停止/退出?),引入 discount rate γ ∈ ( 0 , 1 ) \gamma \in (0,1) γ(0,1)
    discount return = 0 + 0 γ + 0 γ 2 + 1 γ 3 + 1 γ 4 + 1 γ 5 + . . . = γ 3 ( 1 + γ + γ 2 + . . . ) = γ 3 1 1 − γ \begin{aligned} \text{discount return} &= 0 + 0\gamma + 0\gamma^2 + 1\gamma^3 + 1\gamma^4 + 1\gamma^5 + ... \\ &= \gamma^3 (1 + \gamma + \gamma^2 + ...) = \gamma^3 \frac{1}{1-\gamma} \end{aligned} discount return=0+0γ+0γ2+1γ3+1γ4+1γ5+...=γ3(1+γ+γ2+...)=γ31γ1
    作用是:当 γ \gamma γ更趋于0时,return更受早期的action影响,而当 γ \gamma γ更趋于1时,return更受后期的action的影响

Episode

  • Episode:当有terminal state时,即到这个state就停止,称为 episodic task(有限步);反之称为 continuing task(无限步,现实不存在,但当步数非常多时,近似认为是continuing task)。可以通过以下两种方法将 episodic task 看作特殊的 continuing task,这样后面就只需要对continuing task做理解:
    1. 将terminal state看作特殊的absorbing state(即进到这个stage再也不会离开),且需要将这个state的action的reward都设为0
    2. 将terminal state看作普通的state,可以离开,且每次进入该state时 r = + 1 r = +1 r=+1 (后面采用该种,因为更一般化)

Markov decision process

需要以上几个分布:

  1. π ( a ∣ s ) \pi(a|s) π(as),在当前状态s,所做的action的分布 (即Policy
  2. P ( s ′ ∣ s , a ) P(s' | s,a) P(ss,a),在当前状态s,选定了动作a之后,下一个可能到的状态的分布(eg:往下时,即可能往下一格,也可能往下两格)
  3. P ( r ∣ s , a ) P(r | s,a) P(rs,a),在当前状态s,选定了动作a之后,可能的reward ( P ( s ′ ∣ s , a ) P(s' | s,a) P(ss,a)属同一分布,即 s ′ s' s 定了reward 就定了;还是说即使 s ′ s' s 定了,reward也仍然不是确定值?
  4. 以及Markov假设:
    P ( s t + 1 ∣ a t + 1 , s t , . . . , a 1 , s 0 ) = P ( s t + 1 ∣ a t + 1 , s t ) P ( r t + 1 ∣ a t + 1 , s t , . . . , a 1 , s 0 ) = P ( r t + 1 ∣ a t + 1 , s t ) \begin{aligned} P(s_{t+1}|a_{t+1},s_t, ..., a_1,s_0) &= P(s_{t+1}|a_{t+1},s_t) \\ P(r_{t+1}|a_{t+1},s_t, ..., a_1,s_0) &= P(r_{t+1}|a_{t+1},s_t) \end{aligned} P(st+1at+1,st,...,a1,s0)P(rt+1at+1,st,...,a1,s0)=P(st+1at+1,st)=P(rt+1at+1,st)

贝尔曼公式

推导确定形式的贝尔曼公式

定义 v i v_i vi 为从 s i s_i si 出发的Trajectory的return, eg:

则有 Bootstrapping 推导式:

⇒ v = r + γ P v \Rightarrow v = r + \gamma P v v=r+γPv

⇒ \Rightarrow 解析解 : v = ( I − γ P ) − 1 r v=(I-\gamma P)^{-1} r v=(IγP)1r

推导一般形式的贝尔曼公式

State Value

首先给出 State Value 的定义,对于一个multi-step trajectory,其步骤可以表示为:
S t → A t S t + 1 , R t + 1 → A t + 1 S t + 2 , R t + 2 → A t + 2 S t + 3 , R t + 3 , . . . S_t \overset{A_t} \rightarrow S_{t+1}, R_{t+1} \overset{A_{t+1}} \rightarrow S_{t+2}, R_{t+2} \overset{A_{t+2}} \rightarrow S_{t+3}, R_{t+3},... StAtSt+1,Rt+1At+1St+2,Rt+2At+2St+3,Rt+3,...

该条从 S t S_t St 出发的 trajectory 的 discounted return 则为:
G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3} + ... Gt=Rt+1+γRt+2+γ2Rt+3+...

由于 R t + 1 , R t + 2 , . . . R_{t+1}, R_{t+2}, ... Rt+1,Rt+2,... 均为随机变量,因此 G t G_t Gt 也是随机变量。

  • State Value:即当前状态为 s 时,discounted return G t G_t Gt 的期望值
    v π ( s ) = E [ G t ∣ S t = s ] v_{\pi}(s) = E[G_t|S_t=s] vπ(s)=E[GtSt=s]

更具象的理解是 :

  1. 给定Policy π \pi π ,当从状态 s 出发时,discounted return的期望值(从一个state出发,可能有多条路径到达terminal/或称多条trajectory,对所有可能的trajectory的discounted return求期望)
  2. 某个状态的 v π ( s ) v_{\pi}(s) vπ(s) 越高,说明它越有价值/越值得去(见以下例子)

Action Value

State Value 是指从一个 state 出发的 average return,而 Action Value 是指从一个 state 出发,并且 take 某个 action 的 average return。
q π ( s , a ) = E [ G t ∣ S t = s , A t = a ] q_{\pi}(s,a) = E[G_t|S_t=s, A_t =a ] qπ(s,a)=E[GtSt=s,At=a]

state value 用于选择哪个 Policy 更好,而 action value 用于选择哪个 action 更好

Action Value 和 State value 的关系:
E [ G t ∣ S t = s ] = ∑ a E [ G t ∣ S t = s , A t = a ] π ( a ∣ s ) E[G_t|S_t=s] = \sum_a E[G_t|S_t=s, A_t =a ] \pi(a|s) E[GtSt=s]=aE[GtSt=s,At=a]π(as)
即: v π ( s ) = ∑ a π ( a ∣ s ) q π ( s , a ) v_{\pi}(s) = \sum_a \pi(a|s) q_{\pi}(s,a) vπ(s)=aπ(as)qπ(s,a)
⇒ \Rightarrow State Value 实际是所有 Action Value 的 “平均”

下面开始推导贝尔曼公式

由于
G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . = R t + 1 + γ ( R t + 2 + γ R t + 3 + . . . ) = R t + 1 + γ G t + 1 \begin{aligned} G_t &= R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + ...\\ &= R_{t+1} + \gamma (R_{t+2} + \gamma R_{t+3} + ...) \\ & = R_{t+1} + \gamma G_{t+1} \end{aligned} Gt=Rt+1+γRt+2+γ2Rt+3+...=Rt+1+γ(Rt+2+γRt+3+...)=Rt+1+γGt+1

⇒ v π ( s ) = E [ G t ∣ S t = s ] = E [ R t + 1 + γ G t + 1 ∣ S t = s ] = E [ R t + 1 ∣ S t = s ] + γ E [ G t + 1 ∣ S t = s ] \begin{aligned} \Rightarrow v_{\pi}(s) &= E[G_t|S_t=s]\\ &= E[R_{t+1} + \gamma G_{t+1}|S_t=s] \\ &= E[R_{t+1}|S_t=s] + \gamma E[G_{t+1}|S_t=s] \end{aligned} vπ(s)=E[GtSt=s]=E[Rt+1+γGt+1St=s]=E[Rt+1St=s]+γE[Gt+1St=s]

其中第一项为 下一步的reward的期望,可以分解为:
E [ R t + 1 ∣ S t = s ] = ∑ a E [ R t + 1 ∣ S t = s , A t = a ] π ( a ∣ s ) = ∑ a π ( a ∣ s ) ∑ r P ( r ∣ s , a ) r \begin{aligned} E[R_{t+1}|S_t=s] &= \sum_{a} E[R_{t+1}|S_t=s, A_t=a] \pi(a|s)\\ &= \sum_{a} \pi(a|s) \sum_{r} P(r|s,a)r \end{aligned} E[Rt+1St=s]=aE[Rt+1St=s,At=a]π(as)=aπ(as)rP(rs,a)r

第二项为 从下一时刻的状态为起点的 trajectory 的 discounted return,可以分解为:
E [ G t + 1 ∣ S t = s ] = ∑ s ′ E [ G t + 1 ∣ S t = s , S t + 1 = s ′ ] P ( s ′ ∣ s ) = ∑ s ′ E [ G t + 1 ∣ S t + 1 = s ′ ] P ( s ′ ∣ s ) = ∑ s ′ v π ( s ′ ) P ( s ′ ∣ s ) = ∑ s ′ v π ( s ′ ) ∑ a P ( s ′ ∣ s , a ) π ( a ∣ s ) \begin{aligned} E[G_{t+1}|S_t=s] &= \sum_{s'} E[G_{t+1}|S_t=s, S_{t+1}=s'] P(s'|s)\\ &= \sum_{s'} E[G_{t+1}|S_{t+1}=s'] P(s'|s)\\ &= \sum_{s'} v_{\pi}(s') P(s'|s)\\ &= \sum_{s'} v_{\pi}(s') \sum_{a} P(s'|s,a) \pi(a|s) \end{aligned} E[Gt+1St=s]=sE[Gt+1St=s,St+1=s]P(ss)=sE[Gt+1St+1=s]P(ss)=svπ(s)P(ss)=svπ(s)aP(ss,a)π(as)

由上得贝尔曼公式一般形式:
v π ( s ) = ∑ a π ( a ∣ s ) [ ∑ r P ( r ∣ s , a ) r + γ ∑ s ′ P ( s ′ ∣ s , a ) v π ( s ′ ) ] , ∀ s \begin{aligned} v_{\pi}(s) = \sum_{a} \pi(a|s) [\sum_{r} P(r|s,a)r + \gamma \sum_{s'} P(s'|s,a) v_{\pi}(s')], \quad \forall s \end{aligned} vπ(s)=aπ(as)[rP(rs,a)r+γsP(ss,a)vπ(s)],s
贝尔曼公式描述了 两个 state value v π ( s ) v_{\pi}(s) vπ(s) v π ( s ′ ) v_{\pi}(s') vπ(s) 的关系

同时由 state value 和 action value 的关系: v π ( s ) = ∑ a π ( a ∣ s ) q π ( s , a ) v_{\pi}(s) = \sum_a \pi(a|s) q_{\pi}(s,a) vπ(s)=aπ(as)qπ(s,a)
可得 q π ( s , a ) = ∑ r P ( r ∣ s , a ) r + γ ∑ s ′ P ( s ′ ∣ s , a ) v π ( s ′ ) q_{\pi}(s,a) = \sum_{r} P(r|s,a)r + \gamma \sum_{s'} P(s'|s,a) v_{\pi}(s') qπ(s,a)=rP(rs,a)r+γsP(ss,a)vπ(s)
即如果知道所有的State Value,反过来也可以求 Action Value

一些例子

  1. 对于policy:
    在这里插入图片描述
    由于
    π ( a = a 3 ∣ s 1 ) = 1 , π ( a ≠ a 3 ∣ s 1 ) = 0 P ( s ′ = s 3 ∣ s 1 , a 3 ) = 1 , P ( s ′ ≠ s 3 ∣ s 1 , a 3 ) = 0 P ( r = 0 ∣ s 1 , a 3 ) = 1 , P ( r ≠ 0 ∣ s 1 , a 3 ) = 0 \begin{aligned} &\pi(a = a_3|s_1) = 1, \pi(a \neq a_3|s_1) = 0 \\ &P(s'=s_3|s_1, a_3) =1, P(s'\neq s_3|s_1, a_3) =0 \\ &P(r=0|s_1, a_3) = 1, P(r \neq 0|s_1, a_3) = 0 \end{aligned} π(a=a3s1)=1,π(a=a3s1)=0P(s=s3s1,a3)=1,P(s=s3s1,a3)=0P(r=0∣s1,a3)=1,P(r=0∣s1,a3)=0

⇒ v π ( s 1 ) = ∑ a π ( a ∣ s 1 ) [ ∑ r P ( r ∣ s 1 , a ) r + γ ∑ s ′ P ( s ′ ∣ s 1 , a ) v π ( s ′ ) ] = 1 ∗ [ ∑ r P ( r ∣ s 1 , a 3 ) r + γ ∑ s ′ P ( s ′ ∣ s 1 , a 3 ) v π ( s ′ ) ] = 1 ∗ [ 1 ∗ 0 + 0 + γ ∗ 1 ∗ v π ( s 3 ) ] = 0 + γ v π ( s 3 ) \begin{aligned} \Rightarrow v_{\pi}(s_1) &= \sum_{a} \pi(a|s_1) [\sum_{r} P(r|s_1,a)r + \gamma \sum_{s'} P(s'|s_1,a) v_{\pi}(s')]\\ &= 1* [\sum_{r} P(r|s_1,a_3)r + \gamma \sum_{s'} P(s'|s_1,a_3) v_{\pi}(s')] \\ &= 1* [1*0 + 0 + \gamma * 1*v_{\pi}(s_3)]\\ &= 0 + \gamma v_{\pi}(s_3) \end{aligned} vπ(s1)=aπ(as1)[rP(rs1,a)r+γsP(ss1,a)vπ(s)]=1[rP(rs1,a3)r+γsP(ss1,a3)vπ(s)]=1[10+0+γ1vπ(s3)]=0+γvπ(s3)

同理有:
v π ( s 2 ) = 1 + γ v π ( s 4 ) v π ( s 3 ) = 1 + γ v π ( s 4 ) v π ( s 4 ) = 1 + γ v π ( s 4 ) \begin{aligned} v_{\pi}(s_2) &= 1 + \gamma v_{\pi}(s_4) \\ v_{\pi}(s_3) &= 1 + \gamma v_{\pi}(s_4) \\ v_{\pi}(s_4) &= 1 + \gamma v_{\pi}(s_4) \end{aligned} vπ(s2)vπ(s3)vπ(s4)=1+γvπ(s4)=1+γvπ(s4)=1+γvπ(s4)

解得:
v π ( s 1 ) = γ 1 − γ v π ( s 2 ) = 1 1 − γ v π ( s 3 ) = 1 1 − γ v π ( s 4 ) = 1 1 − γ \begin{aligned} v_{\pi}(s_1) &= \frac{\gamma}{1-\gamma}\\ v_{\pi}(s_2) &= \frac{1}{1-\gamma}\\ v_{\pi}(s_3) &= \frac{1}{1-\gamma}\\ v_{\pi}(s_4) &= \frac{1}{1-\gamma} \end{aligned} vπ(s1)vπ(s2)vπ(s3)vπ(s4)=1γγ=1γ1=1γ1=1γ1

⇒ v π ( s 1 ) < v π ( s 2 ) = v π ( s 3 ) = v π ( s 4 ) \Rightarrow v_{\pi}(s_1) < v_{\pi}(s_2) = v_{\pi}(s_3) =v_{\pi}(s_4) vπ(s1)<vπ(s2)=vπ(s3)=vπ(s4)
解释: s 1 s_1 s1 距离 target state 比其他 state 都要远,因此其 价值 低于其他的 state,(直观上也可以看到 s 1 s_1 s1 距离 target state,比其他的 state 都要远)


  1. 更复杂的例子
    两种好的 Policy,及其各个 state 的 state value:

两种不好的 Policy:一个全向右的 Policy 和 一个随机生成的 Policy:

可以看到

  1. 好的 Policy 的 state value,基本都为正;而不好的 Policy 的 state value 中,会有很多负数
  2. 两个不完全相同的 Policy,也可能有完全一样的 state value (因为在其出现 diff 的部分路径上,reward总和相同)

贝尔曼公式的 Matric-vector form


r π ( s i ) = ∑ a π ( a ∣ s i ) ∑ r P ( r ∣ s i , a ) r = E [ R t + 1 ∣ S t = s i ] \begin{aligned} r_{\pi}(s_i) &= \sum_{a} \pi(a|s_i) \sum_{r} P(r|s_i,a)r = E[R_{t+1}|S_t=s_i] \end{aligned} rπ(si)=aπ(asi)rP(rsi,a)r=E[Rt+1St=si]

又有: P π ( s j ∣ s i ) = ∑ a P ( s j ∣ s i , a ) π ( a ∣ s i ) P_{\pi}(s_j|s_i) = \sum_{a} P(s_j|s_i,a) \pi(a|s_i) Pπ(sjsi)=aP(sjsi,a)π(asi)

因此 v π ( s i ) = r π ( s i ) + γ ∑ s j P π ( s j ∣ s i ) v π ( s j ) v_{\pi}(s_i) = r_{\pi}(s_i) + \gamma \sum_{s_j} P_{\pi}(s_j|s_i) v_{\pi}(s_j) vπ(si)=rπ(si)+γsjPπ(sjsi)vπ(sj)
Matric-vector form: v π = r π + γ P π v π v_{\pi} = r_{\pi} + \gamma P_{\pi} v_{\pi} vπ=rπ+γPπvπ

例如:

上式可展开为:

贝尔曼公式的解析解和迭代解

贝尔曼公式: v π = r π + γ P π v π v_{\pi} = r_{\pi} + \gamma P_{\pi} v_{\pi} vπ=rπ+γPπvπ
⇒ 解析解: v π = ( I − γ P π ) − 1 r π \Rightarrow 解析解:v_{\pi} = (I - \gamma P_{\pi})^{-1} r_{\pi} 解析解:vπ=(IγPπ)1rπ
一些理论可得的结论:

  1. ( I − γ P π ) (I - \gamma P_{\pi}) (IγPπ) 是可逆的

Gershgorin 圆盘定理

A A A 是一个 n × n n \times n n×n 复矩阵,矩阵的元素为 a i j a_{ij} aij。对于每个 i i i,定义 Gershgorin 圆盘 D i D_i Di 为以 a i i a_{ii} aii 为中心,半径为矩阵第 i i i 行上非对角元素绝对值之和的圆盘。即:

D i = { z ∈ C : ∣ z − a i i ∣ ≤ R i } D_i = \{ z \in \mathbb{C} : |z - a_{ii}| \leq R_i \} Di={zC:zaiiRi}

其中 R i = ∑ j ≠ i ∣ a i j ∣ R_i = \sum_{j \neq i} |a_{ij}| Ri=j=iaij

Gershgorin 圆盘定理的结论是:矩阵 A A A 的所有特征值都位于至少一个 Gershgorin 圆盘内。

换句话说,如果我们把矩阵 A A A 看成是由复数元素构成的,矩阵 A A A 的特征值在复平面上一定位于这些 Gershgorin 圆盘的并集内。


那么根据Gershgorin 圆盘定理, ( I − γ P π ) (I - \gamma P_{\pi}) (IγPπ) 的每个特征值都至少在一个
圆心为 : [ ( I − γ P π ) ] i i = 1 − γ P π ( s i ∣ s i ) 半径为 : ∑ j ≠ i ∣ [ I − γ P π ] i j ∣ = ∑ j ≠ i γ P π ( s j ∣ s i ) (因为 j ≠ i 时, I i j = 0 ) \begin{aligned} 圆心为&: [(I - \gamma P_{\pi})]_{ii} = 1-\gamma P_{\pi}(s_i | s_i)\\ 半径为&:\sum_{j \neq i} |[I-\gamma P_{\pi}]_{ij}| = \sum_{j \neq i} \gamma P_{\pi}(s_j|s_i) (因为 j \neq i 时,I_{ij} =0) \end{aligned} 圆心为半径为[(IγPπ)]ii=1γPπ(sisi)j=i[IγPπ]ij=j=iγPπ(sjsi)(因为j=i时,Iij=0
的圆当中,又有:

∑ j ≠ i γ P π ( s j ∣ s i ) + γ P π ( s i ∣ s i ) = γ < 1 \sum_{j \neq i} \gamma P_{\pi}(s_j|s_i) + \gamma P_{\pi}(s_i | s_i) = \gamma < 1 j=iγPπ(sjsi)+γPπ(sisi)=γ<1
因此:
∑ j ≠ i γ P π ( s j ∣ s i ) < 1 − γ P π ( s i ∣ s i ) \sum_{j \neq i} \gamma P_{\pi}(s_j|s_i) < 1 - \gamma P_{\pi}(s_i | s_i) j=iγPπ(sjsi)<1γPπ(sisi)
半径 < |圆心|,说明 ( I − γ P π ) (I - \gamma P_{\pi}) (IγPπ) 的 Gershgorin 圆盘都不包含原点,因此其特征值都不为零。


  1. ( I − γ P π ) − 1 > I (I - \gamma P_{\pi})^{-1} > I (IγPπ)1>I

由泰勒级数展开: 1 1 − x = 1 + x + x 2 + x 3 + . . . \frac{1}{1-x} = 1 + x + x^2 + x^3 + ... 1x1=1+x+x2+x3+...
⇒ ( I − γ P π ) − 1 = I + γ P π + γ 2 P π 2 + . . . ≥ I , ( γ > 0 ,而 P π 的值是概率,也总大于 0 ) \Rightarrow (I - \gamma P_{\pi})^{-1} = I + \gamma P_{\pi} + \gamma^2 P_{\pi}^2 + ... \geq I , (\gamma > 0, 而 P_{\pi} 的值是概率,也总大于0) (IγPπ)1=I+γPπ+γ2Pπ2+...I,(γ>0,而Pπ的值是概率,也总大于0)


不过实际中, ( I − γ P π ) (I - \gamma P_{\pi}) (IγPπ) 是一个很大的矩阵,求逆计算量太大,因此实际一般使用迭代式:
v k + 1 = r π + γ P π v k v_{k+1} = r_{\pi} + \gamma P_{\pi} v_{k} vk+1=rπ+γPπvk

以上迭代式成立的原因是:
v k → v π = ( I − γ P π ) − 1 r π , as  k → ∞ . v_k \to v_\pi = (I - \gamma P_\pi)^{-1} r_\pi, \text{ as } k \to \infty. vkvπ=(IγPπ)1rπ, as k∞.
证明如下:


Reference:
1.强化学习的数学原理

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

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

相关文章

Elasticsearch 索引与文档操作实践指南

上节我们部署了elasticsearch8.4.1和kibana8.4.1以及ik分词器&#xff0c;本节我们来学习下elasticsearch的相关索引&#xff0c;文档操作。 首先我们kinana的主界面找到开发者工具在里面我们来编写相关操作。 标题查看集群情况 GET /_cluster/health详细解释&#xff1a; …

云计算【第一阶段(18)】磁盘管理与文件系统 分区格式挂载(一)

目录 一、磁盘基础 二、磁盘结构 2.1、机械硬盘 2.2、固态硬盘 2.3、扩展移动硬盘 2.4、机械磁盘的一些计算&#xff08;了解&#xff09; 2.5、磁盘接口类型 二、Linux 中使用的文件系统类型 2.1、磁盘分区的表示 2.1.1、主引导记录(MBR) 2.1.2、Linux中将硬盘、分…

【十二】图解 Spring 核心数据结构:BeanDefinition

图解 Spring 核心数据结构&#xff1a;BeanDefinition 简介 使用spring框架的技术人员都知道spring两个大核心技术IOC和AOP&#xff0c;随着投入更多的时间去学习spring生态&#xff0c;越发觉得spring的发展不可思议&#xff0c;一直都是引领着Java EE的技术变革&#xff0c;这…

麒麟信安系统关闭core文件操作

在使用麒麟信安系统时&#xff0c;如果应用程序运行过程中崩溃了&#xff0c;此时并不会导致内核崩溃&#xff0c;只会在tmp目录下产生崩溃数据&#xff0c;如下图 不过tmp目录下的分区容量有限&#xff0c;当崩溃的应用core文件过大时将会占用tmp空间&#xff0c;导致tmpfs分区…

Msql----表的约束

提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、表的约束 表的约束&#xff1a;表中一定要有约束&#xff0c;通过约束让插入表中的数据是符合预期的。它的本质是通过技术手段&#xff0c;让程序员插入正确的数据&#xff0c;约束的最终目标是保证…

NAPI篇【4】——NAPI应用点亮一个LED

OpenHarmony的NAPI功能为开发者提供了JS与C/C不同语言模块之间的相互访问&#xff0c;交互的能力&#xff0c;使得开发者使用C或者C语言实现应用的关键功能。如操作开发板中某个GPIO节点的状态&#xff08;OpenHarmony并没有提供直接操作GPIO口状态的API&#xff09;&#xff0…

【Flink metric(3)】chunjun是如何实现脏数据管理的

文章目录 一. 基础逻辑二. DirtyManager1. 初始化2. 收集脏数据并check3. 关闭资源 三. DirtyDataCollector1. 初始化2. 收集脏数据并check3. run&#xff1a;消费脏数据4. 释放资源 四. LogDirtyDataCollector 一. 基础逻辑 脏数据管理模块的基本逻辑是&#xff1a; 当数据消…

猫咪也怕油腻?选对猫粮是关键!福派斯鲜肉猫粮守护猫咪健康

亲爱的猫友们&#xff0c;我们都知道&#xff0c;猫咪的饮食健康是每一个铲屎官都非常关心的问题。最近&#xff0c;有些猫友向我反映&#xff0c;他们给猫主子喂食的猫粮油脂比较大&#xff0c;不禁让人担心这对猫咪是否真的好。 1️⃣ 首先&#xff0c;让我们来聊聊油脂在猫粮…

Spring Boot + Vue 全栈开发,都需要哪些前端知识?

Node.js默认安装的npm包和工具的位置&#xff1a;Node.js目录\node_modules 在这个目录下你可以看见 npm目录&#xff0c;npm本身就是被NPM包管理器管理的一个工具&#xff0c;说明 Node.js已经集成了npm工具 #在命令提示符输入 npm -v 可查看当前npm版本 npm -v 二、使用n…

代理IP超时是什么原因?

很多用户在使用代理IP进行网络访问时&#xff0c;可能会遇到代理IP超时的情况&#xff0c;也就是代理IP的延迟过高。代理IP延迟过高会影响用户的网络体验和数据获取效率。因此&#xff0c;了解代理IP延迟过高的原因很重要。以下是导致代理IP延迟过高的一些常见原因&#xff1a;…

FL Studio 21.2.3官方中文版重磅发布,手把手教你图文安装

FL Studio 21.2.3官方中文版重磅发布纯正简体中文支持&#xff0c;更快捷的音频剪辑及素材管理器&#xff0c;多样主题随心换&#xff01; 在数字音乐制作领域&#xff0c;FL Studio一直以其强大的功能和用户友好的界面而备受赞誉。随着技术的不断进步和音乐制作需求的日益增长…

Python高压电容导电体和水文椭圆微分

&#x1f3af;要点 &#x1f3af;二维热传导二阶偏微分方程 | &#x1f3af;调和函数和几何图曲率 | &#x1f3af;解潮汐波动方程 | &#x1f3af;解静止基态旋转球体流体运动函数 | &#x1f3af;水文空间插值 | &#x1f3af;流体流动模拟求解器 | &#x1f3af;随机算法解…

泰迪智能科技与成都文理学院人工智能与大数据学院开展校企合作交流

近日&#xff0c;在推动高等教育与产业深度融合的背景下&#xff0c;成都文理学院人工智能与大数据学院携手广东泰迪智能科技股份有限公司开展“专业建设交流会”。人工智能与大数据学院院长胡念青、院长助理陈坚、骨干教师刘超超、孙沛、赵杰、文运、胡斌、邹杰出席本次交流会…

vue项目中dom拖动排序功能实现

vue项目中拖动元素改变其顺序的功能实现 实现此功能&#xff0c;我利用的是SortableJs,其官网上直接介绍其为功能强大的js拖拽库&#xff0c;只需要简单的代码即可实现dom拖拽 1.下载 npm i sortablejs 2.引入 使用时&#xff0c;我们在那个页面中使用&#xff0c;就在该vue文…

【progressBar-js】优雅的 前端进度条 构建!

progressBar-js JS 前端进度条小工具 您可以通过此工具来构建一个有效的工具条&#xff0c;接下来就是一个示例&#xff01; 使用示例 引入 progressBar-js 库 直接在这里将 css 和 js 文件引入进来就算是成功导入了哦&#xff01;&#xff01;&#xff01; <link href&…

文件怎么加密?电脑文件加密,分享5个实用方法

通常情况下&#xff0c;人们对手机数据的保护比对电脑数据更为重视。许多人使用指纹和密码来防止他人窥视聊天记录和照片。然而&#xff0c;电脑上的数据却常常被忽视。大多数用户仅设置了电脑登录密码&#xff0c;认为这样就足以保护电脑和其中的文件。然而如果你也是这样认为…

hex、bin、elf、s19等文件格式介绍以及格式转换

文章目录 前言一、bin文件二、hex文件数据记录格式扩展线性地址记录(HEX386)格式扩展段地址记录(HEX86)文件结束(EOF)记录三、elf文件四、S19文件五、不同格式之间转换将bin文件转换成hex文件将hex文件转换成bin文件将bin文件转换成s19文件前言 编译器或汇编器将程序的源代码(…

详解三种常用标准化 Batch Norm Layer Norm RMSNorm

参考&#xff1a; BN究竟起了什么作用&#xff1f;一个闭门造车的分析《动手学深度学习》7.5 节 深度学习中&#xff0c;归一化是常用的稳定训练的手段&#xff0c;CV 中常用 Batch Norm&#xff1b; Transformer 类模型中常用 layer norm&#xff0c;而 RMSNorm 是近期很流行…

Pyppeteer原理介绍和入门尝试

pyppeteer仓库地址&#xff1a;https://github.com/miyakogi/pyppeteer puppeteer仓库地址&#xff1a;https://github.com/search?qpuppeteer&typerepositories 因为有些网页是可以检测到是否是使用了selenium。并且selenium所谓的保护机制不允许跨域cookies保存以及登…

测试的基础知识大全【测试概念、分类、模型、流程、测试用例书写、用例设计、Bug、基础功能测试实战】

测试基础笔记 Day01阶段⽬标⼀、测试介绍⼆、测试常⽤分类2.1 阶段划分单元测试集成测试系统测试验收测试 2.2 代码可⻅度划分⿊盒测试&#xff1a;主要针对功能&#xff08;阶段划分->系统测试&#xff09;灰盒测试&#xff1a;针对接⼝测试&#xff08;阶段划分->集成测…