Reinfocement Learning 学习笔记PartⅡ

文章目录

  • Reinfocement Learning
    • 六、随机近似与随机梯度下降(Stochastic Approximation & Stochastic Gradient Descent)
      • 6.1 Robbins-Monro Algorithm
      • 6.2 随机梯度下降
    • 七、时序差分方法(Temporal-Difference Learning)
      • 7.1 TD算法介绍
      • 7.2 TD算法的收敛性
      • 7.3 TD算法与MC算法的比较
      • 7.4 Sarsa及其变种
      • 7.5 Q-learning
      • 7.6 on-policy learning & off-policy learning
      • 7.7 summary

Reinfocement Learning

六、随机近似与随机梯度下降(Stochastic Approximation & Stochastic Gradient Descent)

6.1 Robbins-Monro Algorithm

Stochastic approximation (SA) 是指一大类求根和优化问题的随机迭代算法,与许多其他求根算法相比,SA 的强大之处在于它无需知道目标函数的表达式或其导数。Robbins-Monro算法是SA领域的开创工作。

假定我们想要此等式的根 w w w g ( w ) = 0 g(w)=0 g(w)=0

当函数 g g g 的表达式已知或者它的导数已知的时候,求解当然很简单。但是当 g g g 未知的时候,问题就困难起来了。Robbins-Monro 算法是这样解决的:
w k + 1 = w k − a k g ∼ ( w k , η k ) w_{k+1}=w_k-a_k {\overset{\sim}{g}}(w_k,\eta_k) wk+1=wkakg(wk,ηk)
其中 w k w_k wk 是对第 k k k 次根的估计, g ∼ ( w k , η k ) = g ( w k ) + η k {\overset{\sim}{g}}(w_k,\eta_k)=g(w_k)+\eta_k g(wk,ηk)=g(wk)+ηk 是第 k k k 个带有噪声(误差)的观测(输出), a k a_k ak 是正系数。

显然这个算法并不依赖于函数 g g g,但依赖于输入序列 w k w_k wk 和带有噪声输出序列 g ∼ ( w k , η k ) {\overset{\sim}{g}}(w_k,\eta_k) g(wk,ηk),框图如下:

image-20231214133817850

最终 w k + 1 w_{k+1} wk+1 能收敛到根 w ∗ w^* w。收敛性在此不做证明。

来看一个平均值求解的例子。如何求平均值,把所有数加起来除以个数当然能求得。但这样做的弊端是我必须要获取所有的数据后才能求其均值,如何使用迭代的方式求解呢?

我们可以假设 w k + 1 = 1 k ∑ k i = 1 x i w_{k+1}=\frac{1}{k}\underset{i=1}{\overset{k} \sum} x_i wk+1=k1i=1kxi,则 w k = 1 k − 1 ∑ k − 1 i = 1 x i w_{k}=\frac{1}{k-1}\underset{i=1}{\overset{k-1} \sum} x_i wk=k11i=1k1xi,所以 w k + 1 w_{k+1} wk+1 可以由 w k w_k wk 表示:
w k + 1 = 1 k ∑ k i = 1 x i = 1 k ( ∑ k − 1 i = 1 x i + x k ) = 1 k ( ( k − 1 ) w k + x k ) = w k − 1 k ( w k − x k ) w_{k+1}=\frac{1}{k}\underset{i=1}{\overset{k} \sum} x_i=\frac{1}{k}(\underset{i=1}{\overset{k-1} \sum}x_i+x_k)=\frac{1}{k}((k-1)w_k+x_k)=w_k-\frac{1}{k}(w_k-x_k) wk+1=k1i=1kxi=k1(i=1k1xi+xk)=k1((k1)wk+xk)=wkk1(wkxk)
就像这样:

image-20231214140823822

如果把 1 k \frac{1}{k} k1 变为 α k \alpha_k αk 还能成立吗?可以用上述的 Robbins-Monro Algorithm 来证明 w k + 1 w_{k+1} wk+1 仍然能收敛到期望。

问题转换为当 α k ≠ 1 k \alpha_k \neq \frac{1}{k} αk=k1 时, w k + 1 w_{k+1} wk+1 还能收敛到期望 E [ X ] \mathbb{E}[X] E[X] 吗?

我们有 w k + 1 = w k − α k ( w k − x k ) w_{k+1}=w_k-\alpha_k(w_k-x_k) wk+1=wkαk(wkxk)

建立如下函数 g ( w ) = w − E [ X ] g(w)=w-\mathbb{E}[X] g(w)=wE[X],如果 g ( w ) = 0 g(w)=0 g(w)=0,根即为期望。

现输入一个 w w w,如何得到其噪音的观测呢?
g ∼ ( w , η ) = g ( w ) + η = ( w − E [ X ] ) + ( E [ X ] − x ) = w − x {\overset{\sim}{g}}(w,\eta)=g(w)+\eta=(w-\mathbb{E}[X])+(\mathbb{E}[X]-x)=w-x g(w,η)=g(w)+η=(wE[X])+(E[X]x)=wx
现考虑 w k w_k wk 序列并带入到 Robbins-Monro 公式中得:
w k + 1 = w k − α k ( w k − x k ) w_{k+1}=w_k-\alpha_k(w_k-x_k) wk+1=wkαk(wkxk)
即得到证明:即使 α k ≠ 1 k \alpha_k \neq \frac{1}{k} αk=k1 时, w k + 1 w_{k+1} wk+1 仍能收敛到期望 E [ X ] \mathbb{E}[X] E[X]

6.2 随机梯度下降

Stochastic gradient descent(SGD)被广泛应用于机器学习和强化学习,但后面可以发现它实际上就是一种特殊的 Robbins-Monro 算法。

假设我们要求解一个最优化问题 w w w 何值时, J ( w ) J(w) J(w) 最小:
min ⁡ w J ( w ) = E [ f ( w , X ) ] \underset{w}{\min}\quad J(w)=\mathbb{E}[f(w,X)] wminJ(w)=E[f(w,X)]
image-20231214144946062

α k \alpha_k αk 是学习率(步长), ∇ \nabla 表示梯度,采用梯度下降的方法一定能找到一个局部极小值

期望很难求,用蒙特卡洛估计依靠数据近似期望

image-20231214145951576

但每一次更新 w k w_k wk 时,都需要进行多次采样,现实中可能行不通

image-20231214150222648

与 GD 相比使用随机梯度来代替真实的梯度,与 BGD 相比,使 n = 1 n=1 n=1,即采样一次。

例子:

image-20231214150614741 image-20231214151150422

为什么 SGD 是可以收敛的呢?同样时使用 Robbins-Monro 证明。

现在有目标函数 J ( w ) = E [ f ( w , X ) ] J(w)=\mathbb{E}[f(w,X)] J(w)=E[f(w,X)]

我想让它取得最小值,那么一个必要条件时取得最小值时的梯度为0,即 ∇ w J ( w ) = E [ ∇ w f ( w , X ) ] = 0 \nabla_wJ(w)=\mathbb{E}[\nabla_w f(w,X)]=0 wJ(w)=E[wf(w,X)]=0

g ( w ) = ∇ w J ( w ) = E [ ∇ w f ( w , X ) ] g(w)=\nabla_wJ(w)=\mathbb{E}[\nabla_w f(w,X)] g(w)=wJ(w)=E[wf(w,X)],此时变成了 g ( w ) = 0 g(w)=0 g(w)=0 的求根问题

image-20231214152331509

image-20231214152355128

七、时序差分方法(Temporal-Difference Learning)

7.1 TD算法介绍

TD 算法是 m o d e l − f r e e model-free modelfree 的算法

由给定的策略 π \pi π t t t 时刻可以得到序列 { ( s t , r t + 1 , s t + 1 ) } t \{(s_t,r_{t+1},s_{t+1})\}_t {(st,rt+1,st+1)}t s t s_t st 表示 t t t 时刻所在的状态

image-20231214162807099

式中 v t v_t vt 代表在 t t t 时刻状态 s s s s t a t e v a l u e state \ value state value (即 v π v_{\pi} vπ)的估计值,这个式子就是要用 v t v_t vt 来不断逼近 s t a t e v a l u e state \ value state value

( 1 ) (1) (1) 式表示更新当前状态 s t s_t st s t a t e v a l u e state \ value state value 估计值 v t + 1 ( s t ) v_{t+1}(s_t) vt+1(st)

( 2 ) (2) (2) 式表示其余状态的的 s t a t e v a l u e state \ value state value 估计值不进行更新

image-20231214163154558

q u e s t i o n 1 question1 question1:为什么 v − t \overset{-}v_t vt 被称作 T D t a r g e t TD \ target TD target

a n s w e r 1 answer1 answer1:因为此算法是要把 v t ( s t ) v_t(s_t) vt(st) 朝着 v − t \overset{-}v_t vt 的方向改进

image-20231214164326703

q u e s t i o n 2 question2 question2 T D e r r o r TD \ error TD error 是什么?

a n s w e r 2 answer2 answer2

  • 两个时刻的差值
  • 描述了 v t v_t vt v π v_{\pi} vπ 之间的误差

T D A l g o r i t h m p r o p e r t i e s TD \ Algorithm \ properties TD Algorithm properties

  1. 对给定的策略进行 p o l i c y e v a l u a t i o n policy \ evaluation policy evaluation ,即计算 s t a t e v a l u e state \ value state value(不能估计 a c t i o n v a l u e action \ value action value,不能寻找最优策略)
  2. 核心思想就是对于给定的策略,我对状态 s s s v π v_{\pi} vπ 有一个估计,这可能是不准确的,此时将得到的 { ( s t , r t + 1 , s t + 1 ) } t \{(s_t,r_{t+1},s_{t+1})\}_t {(st,rt+1,st+1)}t 与估计联系到一起,得到 T D e r r o r TD \ error TD error,这说明了此时的估计是不准确的,并利用 T D e r r o r TD \ error TD error 来改进当前的估计。

7.2 TD算法的收敛性

TD 算法其实是求解了这样一个贝尔曼公式:

image-20231215121843563

就是把原来的 G t + 1 G_{t+1} Gt+1 替换成了 v π ( S ′ ) v_{\pi}(S') vπ(S) ,这是由 s t a t e v a l u e state \ value state value 最初始的定义得到的。

可以用 Robbins-Monro Algorithm 来求解这个公式,首先定义:

image-20231215122233806

如果 g ( v ( s ) ) = 0 g(v(s))=0 g(v(s))=0,那么 v ( s ) = E [ R + γ v π ( S ′ ∣ s ) ] v(s)=\mathbb{E}[R+\gamma v_{\pi}(S'|s)] v(s)=E[R+γvπ(Ss)] 成立,就可以用 v ( s ) v(s) v(s) 来逼近 v π ( s ) v_{\pi}(s) vπ(s)。我们有大量 R , S ′ R,S' R,S 的数据采样 r , s ′ r,s' r,s

image-20231215122504113

得到:

image-20231215122532778

此式存在两个问题。

q u e s t i o n 1 question1 question1:式子是由 { ( s , r , s ′ ) } \{(s,r,s')\} {(s,r,s)} 的得到的,如何确保它是按序的呢?

a n s w e r 1 answer1 answer1:将 { ( s , r , s ′ ) } \{(s,r,s')\} {(s,r,s)} 替换为一个 t r a j e c t o r y trajectory trajectory 中的 { ( s t , r t + 1 , s t + 1 ) } \{(s_t,r_{t+1},s_{t+1})\} {(st,rt+1,st+1)}

q u e s t i o n 2 question2 question2:式中的 v π ( s k ′ ) v_{\pi}(s_k') vπ(sk) 是不知道的

a n s w e r 2 answer2 answer2:用 v k ( s k ′ ) v_{k}(s_k') vk(sk) v π ( s k ′ ) v_{\pi}(s_k') vπ(sk) 的估计值来代替 v π ( s k ′ ) v_{\pi}(s_k') vπ(sk) ,仍能使得 v k ( s ) v_k(s) vk(s) 收敛

7.3 TD算法与MC算法的比较

TD LearningMC Learning
O n l i n e Online Online:能够在收到一个 r e w a r d reward reward 后立即更新 s t a t e / a c t i o n v a l u e state/action \ value state/action value O f f l i n e Offline Offline:必须要等到一个 e p i s o d e episode episode 结束才能计算 r e t u r n return return
C o n t i n u i n g t a s k s Continuing \ tasks Continuing tasks:可以处理连续的任务( e p i s o d e episode episode 无限长) E p i s o d i c t a s k s Episodic \ tasks Episodic tasks:只能处理一个 e p i s o d e episode episode t e r m i n a l s t a t e terminal \ state terminal state 的任务
B o o t s t r a p p i n g Bootstrapping Bootstrapping:更新 v a l u e value value 依赖于先前 v a l u e value value 的估计值 N o n − b o o t s t r a p p i n g Non-bootstrapping Nonbootstrapping:可以直接估计 s t a t e / a c t i o n v a l u e state/action \ value state/action value
L o w e s t i m a t i o n v a r i a n c e Low \ estimation \ variance Low estimation variance:相较于 MC 有较少的随机变量,但是是有偏估计(由初始的估计造成) H i g h e s t i m a t i o n v a r i a n c e High \ estimation \ variance High estimation variance:为估计 q π k ( s , a ) q_{\pi_k}(s,a) qπk(s,a) 涉及到的随机变量较多,采样数量少的情况下方差较大,是无偏估计

7.4 Sarsa及其变种

S a r s a Sarsa Sarsa 可以给出给定策略 π \pi π a c t i o n v a l u e action \ value action value

假设有集合 { ( s t , a t , r t + 1 , s t + 1 , a t + 1 ) } t \{(s_t,a_t,r_{t+1},s_{t+1},a_{t+1})\}_t {(st,at,rt+1,st+1,at+1)}t

image-20231215130620423

形式上跟 T D TD TD 算法是一样的,只是 T D TD TD 得到的是 s t a t e v a l u e state \ value state value 的估计值,而 S a r s a Sarsa Sarsa a c i t o n v a l u e aciton \ value aciton value 的估计值

S a r s a Sarsa Sarsa 求解的是这样的贝尔曼公式:

在这里插入图片描述

在求得 a c t i o n v a l u e action \ value action value 之后,使用 ϵ − g r e e d y \epsilon-greedy ϵgreedy 的策略进行 p o l i c y i m p r o v e m e n t policy \ improvement policy improvement

算法存在的问题是:如果 e p i s o d e episode episode 不足以覆盖全部的 ( s , a ) (s,a) (s,a),那么可能找不到全局的最优策略。

E x p e c t e d S a r s a Expected \ Sarsa Expected Sarsa

image-20231215132900346

不需要再对 a t + 1 a_{t+1} at+1 进行采样, E x p e c t e d S a r s a Expected \ Sarsa Expected Sarsa 求解的是这样的贝尔曼公式:

在这里插入图片描述

n − s t e p S a r s a n-step\ Sarsa nstep Sarsa 需要的集合为 { ( s t , a t , r t + 1 , s t + 1 , a t + 1 ) , . . . , r t + n , s t + n , a t + n } t \{(s_t,a_t,r_{t+1},s_{t+1},a_{t+1}),...,r_{t+n},s_{t+n},a_{t+n}\}_t {(st,at,rt+1,st+1,at+1),...,rt+n,st+n,at+n}t,而 M C MC MC 是需要整个的 e p i s o d e episode episode,即所有的 s t a t e − a c t i o n p a i r state-action \ pair stateaction pair

image-20231215133651194

区别在于后面的 T D t a r g e t TD \ target TD target 不同

image-20231215133734213

7.5 Q-learning

image-20231215140030458

S a r s a Sarsa Sarsa 相比也是 T D t a r g e t TD \ target TD target 不同, Q − l e a r n i n g Q-learning Qlearning 取的是让状态 s t + 1 s_{t+1} st+1 a c t i o n v a l u e action \ value action value 取得最大值时的动作 a a a,而 S a r s a Sarsa Sarsa 是随机采样一个 a a a

Q − l e a r n i n g Q-learning Qlearning 求解的是贝尔曼最优方程:

image-20231215140438341

得到的值是最优的 a c t i o n v a l u e action \ value action value,当然对应的是最优策略

7.6 on-policy learning & off-policy learning

T D L e a r n i n g TD \ Learning TD Learning 中有两种策略:

  • b e h a v i o r p o l i c y behavior \ policy behavior policy:用于生成 e x p e r i e n c e s a m p l e s experience \ samples experience samples(即前面所说的 { ( s t , a t , r t + 1 , s t + 1 , a t + 1 ) } t \{(s_t,a_t,r_{t+1},s_{t+1},a_{t+1})\}_t {(st,at,rt+1,st+1,at+1)}t 这样的序列)
  • t a r g e t p o l i c y target \ policy target policy:持续向最优策略更新

由此引出 o n − p o l i c y on-policy onpolicy o f f − p o l i c y off-policy offpolicy

  • o n − p o l i c y on-policy onpolicy b e h a v i o r p o l i c y behavior \ policy behavior policy t a r g e t p o l i c y target \ policy target policy 相同,即用一个策略 π \pi π 与环境交互得到 e x p e r i e n c e experience experience 同时改进这个策略 π \pi π ,再用改进的策略 π ′ \pi' π 与环境交互然后再改进直到得到最优策略 π ∗ \pi^* π
  • o f f − p o l i c y off-policy offpolicy b e h a v i o r p o l i c y behavior \ policy behavior policy t a r g e t p o l i c y target \ policy target policy 不相同,即用一个策略 π \pi π 与环境交互得到 e x p e r i e n c e experience experience 同时改进另外一个策略 π ′ \pi' π ,再用策略 π \pi π 与环境交互然后再改进 π ′ \pi' π 直到得到最优策略 π ∗ \pi^* π

S a r s a Sarsa Sarsa o n − p o l i c y on-policy onpolicy π t → e x p e r i e n c e → a c t i o n v a l u e e s t i m a t i o n → π t + 1 \pi_t \rightarrow experience \rightarrow action \ value \ estimation \rightarrow \pi_{t+1} πtexperienceaction value estimationπt+1 π t \pi_t πt 既是 b e h a v i o r p o l i c y behavior \ policy behavior policy 也是 t a r g e t p o l i c y target \ policy target policy

M o n t e − C a r l o Monte-Carlo MonteCarlo o n − p o l i c y on-policy onpolicy π t → e x p e r i e n c e / t r a j e c t o r y → a c t i o n v a l u e e s t i m a t i o n → π t + 1 \pi_t \rightarrow experience / trajectory \rightarrow action \ value \ estimation \rightarrow \pi_{t+1} πtexperience/trajectoryaction value estimationπt+1 π t \pi_t πt 既是 b e h a v i o r p o l i c y behavior \ policy behavior policy 也是 t a r g e t p o l i c y target \ policy target policy

Q − l e a r n i n g Q-learning Qlearning o f f − p o l i c y off-policy offpolicy: 由 s t s_t st 选择动作 a t a_t at b e h a v i o r p o l i c y behavior \ policy behavior policy 可以是任意策略, t a r g e t p o l i c y target\ policy target policy 是根据最大 a c t i o n v a l u e action \ value action value 确定的最优策略

Q − l e a r n i n g Q-learning Qlearning 可以是 o n − p o l i c y on-policy onpolicy 的,也可以是 o f f − p o l i c y off-policy offpolicy

image-20231215144254887

用更新的 π t + 1 \pi_{t+1} πt+1 继续生成 e x p e r i e n c e experience experience,在 p o l i c y i m p r o v e m e n t policy \ improvement policy improvement 阶段采用 ϵ − g r e e d y \epsilon-greedy ϵgreedy 是希望策略具有一定的探索性,希望能覆盖到所有的 ( s , a ) (s,a) (s,a)

image-20231215144400046

π b \pi_b πb (此策略生成的 e p i s o d e episode episode 会对 Q − l e a r n i n g Q-learning Qlearning 的结果产生影响)来生成 e x p e r i e n c e experience experience,在 p o l i c y i m p r o v e m e n t policy \ improvement policy improvement 阶段采用 g r e e d y greedy greedy 是因为我不会用改进的策略来生成 e x p e r i e n c e experience experience,所以选最优的即可

7.7 summary

前面介绍的 T D TD TD 算法其实都可以用下面的式子统一表示:

image-20231215150359580

不同点在于 q t − \overset{-}{q_t} qt

image-20231215150431266

所有的算法也可以看作是求解贝尔曼公式或者贝尔曼最优公式的随即近似算法:

image-20231215150547040

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

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

相关文章

TSINGSEE青犀可视化视频云平台JT/T1078接入能力在智慧物流中的应用

一、引言 随着科技的快速发展和全球贸易的蓬勃发展,智慧物流成为了现代物流业的重要发展方向。智慧物流通过引入先进的信息技术,实现了物流过程的自动化、智能化和信息化,从而提高了物流效率和准确性。在这个过程中,JT/T1078接入…

魔众文库系统v5.7.0版本文件顺序选择,短信注册支持设置密码,前端界面升级

文件顺序选择,短信注册支持设置密码,前端界面升级 [新功能] 富文本支持文档一键导入,支持Word文档(docx)、Markdown文档(md) [新功能] 财务中心→全部订单新增"业务订单ID"筛选条件…

【Vue】elementUI表格,导出Excel

系列文章 【Vue】vue增加导航标签 本文链接:https://blog.csdn.net/youcheng_ge/article/details/134965353 【Vue】Element开发笔记 本文链接:https://blog.csdn.net/youcheng_ge/article/details/133947977 【Vue】vue,在Windows IIS平台…

Jmeter分布式性能测试,80%资深测试都会遇到这个坑!

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

【C语言】动态内存管理(C语言的难点与精华,数据结构的前置知识,你真的掌握了吗?)

文章目录 引言一、为什么要动态内存分配二、动态内存分配的相关函数2.1 malloc2.2 free2.3 calloc2.4 realloc 三、常见的动态内存的错误3.1 对NULL指针的解引用3.2 对动态内存越界访问3.3 对非动态内存释放3.4 对动态内存部分释放3.5 对动态内存多次释放3.6 未对动态内存释放&…

v-md-editor高级使用之自定义目录

​ 官方给出的目录设置参见:https://code-farmer-i.github.io/vue-markdown-editor/zh/senior/toc.html#%E7%9B%B8%E5%85%B3%E9%85%8D%E7%BD%AE ​ 在做实际使用中往往可能需要将目录结构独立出来,经过近一天的研究终于明白其实现逻辑,并将目…

3.qml 3D-Node类学习

Node类是在View3D 中的对象基础组件,用于表示3D空间中的对象,类似于Qt Quick 2D场景中的Item,介绍如下所示: 如上图可以看到,Node类的子类非常多,比如Model类(显示3D模型)、ParticleSystem3D粒子系统类、Li…

苹果计划将全球1/4的IPhone产能转移至印度

KlipC报道:据相关人士报道,苹果希望在未来2到3年内每年在印度生产超过5000万部iphone,要是该计划得以实现,印度将占领全球iPhone产量的四分之一。 KlipC的分析师Alex Su表示:“此次iPhone15推出是苹果印度制造计划的一…

认知能力测验,①如何破解数字推理类测试题?

校园招聘(秋招春招),最为常见的认知能力测验,在线工具网将整理分析关于认知能力测验的系列文章,希望能帮助大家顺利通过认知能力测评,找到自己心仪的工作。 数字推理测试,是我们在求职中经常会…

C# 获取Windows所有窗口句柄

写在前面 在做录屏或截屏操作时,需要获取当前正在运行中的桌面程序句柄,在网上查找资源的的时候,发现了一个工具类还不错,这边做个验证记录。 参考代码 public class WindowApi{//寻找目标进程窗口 [DllImport("USER…

【大数据】Hudi 核心知识点详解(二)

😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 &#x…

商用机器人,不好用是原罪

热潮褪去后,所有的问题都汇总成一个词,不好用。 从炙手可热到“大玩具” 一款产品好用与否,更多时候人们不会关心它先进的技术、工艺、用料,也不会考虑所谓的潮流趋势或前景,只会用最朴素的直观感受告诉你&#xff0…

【Redis】Redis.conf详解

Redis.conf详解 启动的时候,就通过配置文件来启动! 工作中,一些小小的配置,可以让你脱颖而出! 单位 配置文件 unit单位 对大小写不敏感!include包含其他配置文件 就是好比我们学习Spring、Improt&#x…

讨论用于评估DREX的五种DR指标

概要 动态范围是已经使用了近一个世纪的用于评估接收机性能的参数。这里介绍五种动态有关指标的定义及测试方法,用于评估数字接收激励器(DREX,digital receiver exciters)。DREX是构成雷达的关键整部件,其瞬时带宽&am…

docker consul 容器的自动发现与注册

consul相关知识 什么是注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构,起初的…

kafka配置多个消费者groupid kafka多个消费者消费同一个partition(java)

目录 1- 单播模式,只有一个消费者组2- 广播模式,多个消费者组3- Java实践 kafka是由Apache软件基金会开发的一个开源流处理平台。kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 kafka中partition…

Git忽略已经提交的文件

原理类似于 Android修改submodule的lib包名

一文搞懂OSI参考模型与TCP/IP

OSI参考模型与TCP/IP 1. OSI参考模型1.1 概念1.2 数据传输过程 2. TCP/IP2.1 概念2.2 数据传输过程 3. 对应关系4. 例子4.1 发送数据包4.2 传输数据包4.3 接收数据包 1. OSI参考模型 1.1 概念 OSI模型(Open System Interconnection Reference Model)&a…

MySQL,分组order by

一、创建分组 ## 创建分组 -- 返回每个发布会的参会人数 SELECT event_id,COUNT(*) as canjia_num FROM sign_guest GROUP BY event_id; 1、group by子句可以包含任意个列,但是但指定的所有列都是一起计算的。 group by 后2个字段一起计算的 2、group by后面可以跟…

Leetcode 剑指 Offer II 057. 存在重复元素 III

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两…