【方法总结】值分布强化学习(Distributional RL)-程序员宅基地

技术标签: 算法  python  编程语言  强化学习  大数据  

深度强化学习实验室

官网:http://www.neurondance.com/

来源:微软研究院AI头条授权转载

编辑:DeepRL

值分布强化学习(Distributional Reinforcement Learning)是一类基于价值的强化学习算法,也是一类新兴的强化学习方法。该方法达到了非分布式强化学习方法上新的基准性能,也与神经科学有着内在联系,因此具有很高的研究价值。本文将带大家一起选读多个近期值分布强化学习相关的研究工作,这些工作的发展脉络清晰、研究动机明确,为后续的进一步研究提供了重要参考。

什么是值分布强化学习

值分布强化学习(Distributional Reinforcement Learning,Distributional RL)是一类基于价值的强化学习算法(value-based Reinforcement Learning,value-based RL)。经典的基于价值的强化学习方法尝试使用期望值对累积回报进行建模,表示为价值函数 V(x) 或动作价值函数 Q(x,a)。而在这个建模过程中,完整的分布信息很大程度上被丢失了,值分布强化学习就是想要解决这个问题,对累积回报这个随机变量的分布 Z(x,a) 进行建模,而非只建模其期望。

目前的值分布强化学习通常使用 Dirac Mixture 对连续分布进行参数化建模。近年来,许多研究人员尝试从以下两个角度开展研究:一是对分布进行更好的参数化,从而更好地拟合实际的连续分布,如 C51、QR-DQN、IQN 和 FQF;二是对分布的不同统计特性进行建模,尝试找出更适合强化学习任务的建模方式,如 QR-DQN 学习分布的分位数值(quantile value)和 Expectile DRL 学习分布的期望分位数值(expectile value),而 MMD-DRL 则避免了对 Dirac Mixture 模型统计意义的人为规定。

值分布强化学习方法是一类新兴的强化学习方法,达到了非分布式强化学习方法上新的基准性能,在 Atari 基准上超过了原有的基于期望的 value-based RL 方法。另外,也有研究人员发现了值分布强化学习与神经科学的内在联系。因此,值分布强化学习方法具有很高的研究价值。接下来,本文将带大家一起选读多个近期值分布强化学习相关的研究工作,这些工作的发展脉络清晰、研究动机明确,为后续的进一步研究提供了重要的参考价值。

A Distributional Perspective

on Reinforcement Learning

“A Distributional Perspective on Reinforcement Learning”是由 DeepMind 的 Bellemare 等人完成的文章,是现代值分布强化学习中比较重要的一篇文章。文章从理论上证明了分布贝尔曼算子(distributional Bellman operator)的一些性质,并提出了一种实现方法,成为了后续研究的一个重要基石。在这篇文章中,作者首先说明传统 DQN 算法希望学习的 Q 是一个数值,其含义是未来奖励和的期望。而在值分布强化学习系列算法中,目标则由数值变为一个分布。在值分布强化学习中,目标也由数值 Q 变为随机变量 Z,这种改变可以使学到的内容是除了数值以外的更多信息,即整个分布。

图1:C51 的贝尔曼更新(Bellman Update)

在这种设定下,作者引入了 distributional Bellman operator,随后在 Wasserstein metric 下证明了 distributional Bellman operator 是一个 γ-contraction 算子。但由于 Wasserstein metric 的梯度在实际采用时是有偏差的。因此,在实际算法上,作者采用了 KL 散度进行计算。作者提出了 C51 算法,将可能的 Z 划分为51个固定区间,然后学习 Z 区到每个区间的概率,在迭代中使用 KL 散度计算损失函数(loss)。然而,在对目标的 Z 值进行一次 distributional Bellman operator 的计算之后,为了再次将其化为同样51个固定区间的概率表示,C51 算法使用了一种投影方法(即图1 d 中 Φ 所示),可以将概率重新投影到原来的固定区间中。随后,再采用 KL 散度的交叉熵为 Loss,对其进行优化即可。

论文链接:https://arxiv.org/abs/1707.06887

Distributional Reinforcement 

Learning with Quantile Regression

在 C51 提出约四个月后,2017年10月,C51 的作者 Bellemare 与同在 DeepMind  的 Dabney 等人提出了 QR-DQN 算法,并在 Atari 实验上刷新了 C51 的实验结果。

QR-DQN 与 C51 的最大不同点在于对分布的表述方式。C51 算法固定了 N 个概率的可能取值,然后使用可学习的、与 N 个值相对应的 N 个概率值去描述分布。而 QR-DQN 则使用分位数来描述分布,也就是说,固定 N 个分位数,然后学习这 N 个分位数对应的数值取值。可以说,QR-DQN 使用了与 C51 相对的一种方法去描述分布。

图2:QR-DQN 的分位点投影(quantile projection)

分位数即累积分布函数(CDF)的逆,通过分位数 τ,可以找到与之相对应的一个 z 值。如果当在 CDF 函数上对分布进行建模时,便可以和 Wasserstein metric 更好地结合起来。如图2所示,黑色线为 Z 的 CDF 函数,蓝色线为 QR-DQN 使用的分位数方法对 CDF 的近似表达。红色部分,是近似表达与真实 CDF 函数之间的误差。

学习对应的分位数值时,QR-DQN 使用了分位点回归(Quantile Regression)。对于每个设定的分位数值 τ,使用 Quantile Regression 以及 Huber Loss。通过这种方法,QR-DQN 不会再设置Z取值的上下界,因此相比 C51 而言有更大的灵活程度。

图3:QR-DQN 在 Windy Gridworld 上的实验效果

在实验部分,QR-DQN 首先使用了一个 Toy Case 实验,在 Windy Gridworld 上证明了使用本文提出的方法,的确可以学到状态对应的分布。随后,QR-DQN 又在 Atari 上完成了实验,并且得到了比 C51 更加显著的提升。

论文链接:https://arxiv.org/abs/1710.10044

Implicit Quantile Networks 

for Distributional Reinforcement Learning

QR-DQN 在对分布进行建模时,选择了固定且等间隔的概率位置,这个固定位置的限制使得算法难以适应不同的分布,无法进一步降低 Wasserstein 距离。为了解决这个问题,QR-DQN 的作者 Dabney 等人在 QR-DQN 的基础上提出了 IQN 算法,并取得了比 QR-DQN 更好的性能表现。

图4:DQN、C51、QR-DQN、IQN 的网络结构对比

IQN 与 QR-DQN 主要有两点不同。首先,它在估计给定的分位数 τ 对应的取值时,将分位数 τ 也作为神经网络模型的输入,也就是说,使用神经网络来拟合整个连续分布,从而提高对于不同分布的表达能力。通过调整神经网络的容量,理论上能够以任意精度拟合价值函数对应的分布。其次,IQN 中使用从均匀分布中采样的分位数 τ 替代了 QR-DQN 中固定的分位数,通过调整每次采样中的分位数个数,可以提高强化学习在训练过程中的样本效率,更好地利用训练资源。

在 Atari 基准上的测试结果表明,IQN 算法的性能比起上述的 C51 和 QR-DQN 有着明显提升,和集成了各种经验技巧的 Rainbow 相比,IQN 的性能也十分接近。

图5:在 Atari Games 上的性能对比

 

表1:在 Atari Games 上的性能对比(IQN)

论文链接:https://arxiv.org/abs/1806.06923

Fully Parameterized Quantile Function for Distributional Reinforcement Learning

如果能够使用无穷多个采样点和无穷大的模型容量,IQN 方法就能够近似任意的完整分位数函数(quantile function),但这显然是不可能的。因此在实际中,必须考虑在有限个采样的情况下值分布强化学习算法的表示能力。

从这个角度出发,来自加利福尼亚大学圣迭戈分校的 Derek Yang 和微软亚洲研究院的研究人员合作提出了 FQF 方法。FQF 对分布进行了完全的参数化,而非如 QR-DQN 一般事先固定分位数或 IQN 中随机采样得到的分位数。在 FQF 中,分位数和其对应的值都被进行了参数化,根据不同的分布特点,调整分位数的位置,并使用 Quantile Regression 得到分位数对应的值。

在 FQF 中,算法包含两个模型,一个是分位数提议网络(fraction proposal network),用来针对每个状态动作对应生成合适的分位数位置;二是分位数值网络(quantile value network),将前一个网络输出的分位数τ映射到对应的取值(quantile value)。

FQF 通过最小化真实分布与近似分布之间的 1-Wasserstein 距离来训练分位数提议网络。利用分数提议网络生成的当前提议的分位数,可以通过 Quantile Regression 来训练分位数值网络。与 QR-DQN 和 IQN 相比,通过学习和自我调整的分位数位置可以更好地近似真实分布。

图6:FQF 可以通过调整分位数的位置来最小化拟合误差

论文链接:https://arxiv.org/abs/1911.02140

Non-crossing quantile regression 

for deep reinforcement learning

QR-DQN、IQN、FQF 等使用 Quantile Regression 的值分布强化学习方法已经取得了很好的效果,然而实验表明,Quantile Regression 并不能保证得到的分位数值(quantile value)的单调性。但一个有效的、分布的分位数值应该是非减的,这就导致直接通过 Quantile Regression 并不能学习到一个有效的分布。这种交错(crossing)的现象在有限的采样数的情况下十分明显,而缺少单调性的约束,模型的可解释性会大大降低。由于值分布强化学习是基于分布的统计意义进行建模,所以这种方式最终会导致模型的整体性能下降。

针对这个问题,“Non-crossing quantile regression for deep reinforcement learning”文章的作者提出了一种无交错的分位数回归(non-crossing quantile regression)方法。该方法通过在对分位数值进行估计时加入单调性的限制,以保证最终估计得到的分位数值不会出现上述提到的交错现象。作者通过实验证明了在加入分位数的单调性限制的情况下,该方法仍能保证分布在无限次迭代更新之后可以收敛到固定点。


图7:Non-crossing quantile regression 的网络结构

论文链接:https://proceedings.neurips.cc//paper/2020/file/b6f8dc086b2d60c5856e4ff517060392-Paper.pdf

Statistics and Samples 

in Distributional Reinforcement Learning

“Statistics and Samples in Distributional Reinforcement Learning”是由 DeepMind 在2019年提出的。文章的作者提出了一种分析值分布强化学习的统一分析框架,并基于这种框架,提出了一种新的分析算法:Expectile Distributional RL(EDRL)。

作者分析认为,此前的值分布强化学习算法,大致可以归为两种类型。其中一类是学习离散类别分布(categorical distribution reinforcement learning,CDRL)的算法,前文中提到的 C51 即为这类算法,另一类是学习概率分布的分位数的算法,QR-DQN 等即属于这类。作者认为,这些值分布强化学习的算法都可以视为:首先找到一系列统计量(statistics)以描述分布,然后在做更新时找到一种 Imputation Strategy 来根据维护的一系列统计量重构分布,并在此基础上计算 Loss。随后,作者与 QR-DQN 进行类比,提出了 EDRL 算法。若对期望分位数不熟悉的话,可以通过以下的例子迅速类比:均值之于0.5 期望分位数,即为中位数之于0.5 分位数。

图8:在 Chain MDP下,CDRL、naïveEDRL 和 EDRL 的对比

作者以 Chain MDP 为例,说明了 EDRL 算法的优势。在 CDRL 算法中,由于投影操作的存在,最后回到 x_0 状态时,更倾向于高估方差(图8中的蓝色分布);而 naïve 的 EDRL 则会低估方差,迅速塌缩到一个冲击函数(橙色);这样在综合考虑 imputation strategy 时,才能更加精确地估计分布(绿色)。随后,作者使用上述框架定义了 Bellman closedness 的概念:在维护一个统计量的集合是否可以通过自身经由 Bellman operator 之后的值来学习自身。通过这种分析,作者对值分布强化学习中何种统计量可以通过 Bellman update 来学到进行了理论上的分析。最终,在 Tabular case 和 Atari 上进行的实验表明,EDRL 算法相比 CDRL、QDRL 等基线算法,有较为明显的优点。

论文链接:https://arxiv.org/abs/1902.08102

Distributional Reinforcement Learning 

with Maximum Mean Discrepancy

在值分布强化学习的研究中,如何表述分布,如何衡量分布(随机变量)之间的差异,成为了瓶颈。因为,要完全表示 return 的分布需要无限维的空间,所以,找到一种拥有更强表现能力的方法就至关重要。在之前的工作中,研究者们基本都使用概率分布函数或者分位数等方式,对其 return 的分布进行建模。而在2020年7月的文章“Distributional Reinforcement Learning with Maximum Mean Discrepancy”中,作者提出了 MMD-DQN 算法,使用最大平均差异(Maximum Mean Discrepancy,MMD)对分布进行建模。

如果对 MMD 不太熟悉的话,那么可以考虑一种 MMD 的特例,比如当考虑一阶情况时,MMD 可以理解为 X,Y 两个随机变量的一阶矩的差值。事实上,MMD 的含义类似于衡量某种矩的差异。如下式所表示,MMD 依赖于某一类映射 f∈F,其定义为,两个随机变量 Z,W 经过某一类映射 F 的变换后,随机变量期望之差的上界。这里先后取上界、期望,也是 MMD 中 Maximum 和 Mean 得名的原因。最后,再经过核函数映射等可以进一步化简,得到可以在实际算法中使用的解析解。

作者通过这种方式,巧妙地对 return 的分布进行表示,同时避免了 C51、QR-DQN 中只能选择固定值、分位数,而在近似真实分布上具有较大误差的情形。随后,作者证明了 MMD 的特性以及 Bellman operator 的收敛性,并提出了 MMD-DQN 算法。在计算 MMD 以及选取最佳动作的过程中,还采取了对 Z 进行采样的策略。

表2:在 Atari Games 上的性能对比(MMD-DQN)

最终,作者在 Atari 上进行实验,并将实验结果与 C51、QR-DQN、以及 IQN、FQF 等基线进行对比,从表2中可以看到,性能在整体游戏上有了提升。

论文链接:https://www.researchgate.net/publication/343228735_Distributional_Reinforcement_Learning_with_Maximum_Mean_Discrepancy

值分布强化学习的应用

值分布强化学习可以对强化学习中价值函数对应的完整分布有一个参数化的建模方式,分布中的信息可以带来更多的操作和利用空间,一个典型的应用方向就是风险敏感(risk-sensitive)的应用。

在强化学习中,探索(exploration)和利用(exploitation)的平衡是一个关键的问题,有些场景中需要智能体具有足够的探索能力才能够学习到真正有用的策略,即智能体需要能够理解不同状态的价值的不确定性。使用值分布强化学习可以对状态的价值函数进行更精细的建模,有助于设计更好的探索策略,从而提高智能体在冒险任务中的表现能力。

对这个方向感兴趣的读者还可以参考以下几篇文章:

a. Borislav Mavrin et al. Distributional Reinforcement Learning for Efficient Exploration. ICML 2019.

链接:https://arxiv.org/abs/1905.06125

b. Junyu Zhang et al. Cautious Reinforcement Learning via Distributional Risk in the Dual Domain. 2020.

链接:https://arxiv.org/abs/2002.12475

c. Xiaoteng Ma et al. DSAC: Distributional Soft Actor Critic for Risk-Sensitive Reinforcement Learning. ICML workshop 2019.

链接:https://arxiv.org/abs/2004.14547

总结

值分布强化学习在近几年得到了广泛的关注,在非分布式的强化学习算法中超过了之前已有的算法,刷新了 Atari 等基准测试场景下的最优性能。而随着对于强化学习的马尔可夫过程的随机变量有了更完整的建模,强化学习算法可以更有针对性地处理不同的问题,例如在保证算法较高性能的同时控制算法风险,这是原本的基于期望的价值函数难以做到的。

此外,值分布强化学习还有着很大的发展潜力。首先,对于分布的建模仍然存在着很明显的近似误差,如何对分布进行更好地建模仍然是该领域中十分重要的一个问题。另外,值分布强化学习方法在侧重于探索的任务中还存在着很大的性能缺失,如何利用完整分布的信息以提高算法的探索能力也是一个很关键的问题。希望借由此文,可以有更多的研究人员关注和投入到这个领域中,一起推动值分布强化学习这个领域的发展,为后续的技术和理论完善贡献力量。

实验室官网:http://www.neurondance.com/

实验室社区:http://deeprl.neurondance.com/

总结1:周志华 || AI领域如何做研究-写高水平论文

总结2:全网首发最全深度强化学习资料(永更)

总结3:  《强化学习导论》代码/习题答案大全

总结4:30+个必知的《人工智能》会议清单

总结52019年-57篇深度强化学习文章汇总

总结6:   万字总结 || 强化学习之路

总结7:万字总结 || 多智能体强化学习(MARL)大总结

总结8:深度强化学习理论、模型及编码调参技巧

第95篇:如何提高"强化学习算法模型"的泛化能力?

第94篇:多智能体强化学习《星际争霸II》研究

第93篇:MuZero在Atari基准上取得了新SOTA效果

第92篇:谷歌AI掌门人Jeff Dean获冯诺依曼奖

第91篇:详解用TD3算法通关BipedalWalker环境

第90篇:Top-K Off-Policy  RL论文复现

第89篇:腾讯开源分布式多智能TLeague框架

第88篇:分层强化学习(HRL)全面总结

第87篇:165篇CoRL2020 accept论文汇总

第86篇:287篇ICLR2021深度强化学习论文汇总

第85篇:279页总结"基于模型的强化学习方法"

第84篇:阿里强化学习领域研究助理/实习生招聘

第83篇:180篇NIPS2020顶会强化学习论文

第82篇:强化学习需要批归一化(Batch Norm)吗?

第81篇:《综述》多智能体强化学习算法理论研究

第80篇:强化学习《奖励函数设计》详细解读

第79篇: 诺亚方舟开源高性能强化学习库“刑天”

第78篇:强化学习如何tradeoff"探索"和"利用"?

第77篇:深度强化学习工程师/研究员面试指南

第76篇:DAI2020 自动驾驶挑战赛(强化学习)

第75篇:Distributional Soft Actor-Critic算法

第74篇:【中文公益公开课】RLChina2020

第73篇:Tensorflow2.0实现29种深度强化学习算法

第72篇:【万字长文】解决强化学习"稀疏奖励"

第71篇:【公开课】高级强化学习专题

第70篇:DeepMind发布"离线强化学习基准“

第69篇:深度强化学习【Seaborn】绘图方法

第68篇:【DeepMind】多智能体学习231页PPT

第67篇:126篇ICML2020会议"强化学习"论文汇总

第66篇:分布式强化学习框架Acme,并行性加强

第65篇:DQN系列(3): 优先级经验回放(PER)

第64篇:UC Berkeley开源RAD来改进强化学习算法

第63篇:华为诺亚方舟招聘 || 强化学习研究实习生

第62篇:ICLR2020- 106篇深度强化学习顶会论文

第61篇:David Sliver 亲自讲解AlphaGo、Zero

第60篇:滴滴主办强化学习挑战赛:KDD Cup-2020

第59篇:Agent57在所有经典Atari 游戏中吊打人类

第58篇:清华开源「天授」强化学习平台

第57篇:Google发布"强化学习"框架"SEED RL"

第56篇:RL教父Sutton实现强人工智能算法的难易

第55篇:内推 ||  阿里2020年强化学习实习生招聘

第54篇:顶会 || 65篇"IJCAI"深度强化学习论文

第53篇:TRPO/PPO提出者John Schulman谈科研

第52篇:《强化学习》可复现性和稳健性,如何解决?

第51篇:强化学习和最优控制的《十个关键点》

第50篇:微软全球深度强化学习开源项目开放申请

第49篇:DeepMind发布强化学习库 RLax

第48篇:AlphaStar过程详解笔记

第47篇:Exploration-Exploitation难题解决方法

第46篇:DQN系列(2): Double DQN 算法

第45篇:DQN系列(1): Double Q-learning

第44篇:科研界最全工具汇总

第43篇:起死回生|| 如何rebuttal顶会学术论文?

第42篇:深度强化学习入门到精通资料综述

第41篇:顶会征稿 ||  ICAPS2020: DeepRL

第40篇:实习生招聘 || 华为诺亚方舟实验室

第39篇:滴滴实习生|| 深度强化学习方向

第38篇:AAAI-2020 || 52篇深度强化学习论文

第37篇:Call For Papers# IJCNN2020-DeepRL

第36篇:复现"深度强化学习"论文的经验之谈

第35篇:α-Rank算法之DeepMind及Huawei改进

第34篇:从Paper到Coding, DRL挑战34类游戏

第33篇:DeepMind-102页深度强化学习PPT

第32篇:腾讯AI Lab强化学习招聘(正式/实习)

第31篇:强化学习,路在何方?

第30篇:强化学习的三种范例

第29篇:框架ES-MAML:进化策略的元学习方法

第28篇:138页“策略优化”PPT--Pieter Abbeel

第27篇:迁移学习在强化学习中的应用及最新进展

第26篇:深入理解Hindsight Experience Replay

第25篇:10项【深度强化学习】赛事汇总

第24篇:DRL实验中到底需要多少个随机种子?

第23篇:142页"ICML会议"强化学习笔记

第22篇:通过深度强化学习实现通用量子控制

第21篇:《深度强化学习》面试题汇总

第20篇:《深度强化学习》招聘汇总(13家企业)

第19篇:解决反馈稀疏问题之HER原理与代码实现

第18篇:"DeepRacer" —顶级深度强化学习挑战赛

第17篇:AI Paper | 几个实用工具推荐

第16篇:AI领域:如何做优秀研究并写高水平论文?

第15篇:DeepMind开源三大新框架!

第14篇:61篇NIPS2019DeepRL论文及部分解读

第13篇:OpenSpiel(28种DRL环境+24种DRL算法)

第12篇:模块化和快速原型设计Huskarl DRL框架

第11篇:DRL在Unity自行车环境中配置与实践

第10篇:解读72篇DeepMind深度强化学习论文

第9篇:《AutoML》:一份自动化调参的指导

第8篇:ReinforceJS库(动态展示DP、TD、DQN)

第7篇:10年NIPS顶会DRL论文(100多篇)汇总

第6篇:ICML2019-深度强化学习文章汇总

第5篇:深度强化学习在阿里巴巴的技术演进

第4篇:深度强化学习十大原则

第3篇:“超参数”自动化设置方法---DeepHyper

第2篇:深度强化学习的加速方法

第1篇:深入浅出解读"多巴胺(Dopamine)论文"、环境配置和实例分析

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/deeprl/article/details/112598387

智能推荐

计算机毕业设计Java疫情防控医用品管理(系统+源码+mysql数据库+Lw文档)_疫情防护用品销售管理系统 论文-程序员宅基地

文章浏览阅读467次。计算机毕业设计Java疫情防控医用品管理(系统+源码+mysql数据库+Lw文档)springboot基于SpringBoot的婚庆策划系统的设计与实现。JSP健身俱乐部网站设计与实现sqlserver和mysql。JSP网上测试系统的研究与设计sqlserver。ssm基于SpringMvC的流浪狗领养系统。ssm基于Vue.js的音乐播放器设计与实现。ssm校园流浪猫图鉴管理系统的设计与实现。_疫情防护用品销售管理系统 论文

android插件化开发打包,Android项目开发如何设计整体架构-程序员宅基地

文章浏览阅读988次,点赞28次,收藏28次。最后小编想说:不论以后选择什么方向发展,目前重要的是把Android方面的技术学好,毕竟其实对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!这里附上我整理的几十套腾讯、字节跳动,京东,小米,头条、阿里、美团等公司19年的Android面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。由于篇幅有限,这里以图片的形式给大家展示一小部分。

基于单片机数码管秒表控制系统设计-程序员宅基地

文章浏览阅读600次,点赞11次,收藏6次。*单片机设计介绍,基于单片机数码管秒表控制系统设计。

Python小程序之验证码图片生成_小程序图片验证码后端生成-程序员宅基地

文章浏览阅读235次。python小程序之验证码图片的生成定义随机字母的生成函数定义随机颜色生成函数,采用RGB格式,生成一个元组调用Image,生成画布,填充底色为白色调用画笔函数Draw,传入画布对象填充画布的每一个色块,作为背景在画布上控制间距,填上每一个字在最后的图上进行模糊操作代码# 生成一个随机的二维码小程序from PIL import Image,ImageDraw,ImageF..._小程序图片验证码后端生成

思科自防御网络安全方案典型配置_思科设备怎么ranga)服务器区域独立防护;-程序员宅基地

文章浏览阅读2.2k次。 1. 用户需求分析客户规模:客户有一个总部,具有一定规模的园区网络; 一个分支机构,约有20-50名员工; 用户有很多移动办公用户 客户需求:组建安全可靠的总部和分支LAN和WAN; 总部和分支的终端需要提供安全防护,并实现网络准入控制,未来实现对VPN用户的网络准入检查; 需要提供IPSEC/SSLVPN接入; 在内部各主要部门间,及内外网络间进_思科设备怎么ranga)服务器区域独立防护;

苹果账号迁移流程_apple 账号迁移-程序员宅基地

文章浏览阅读445次。4、转移账号生成的 p8 文件(证书文件)1、转移苹果账号的 teamID。2、接受苹果账号的 teamID。5、接受账号生成的 p8 文件。3、转移应用的 AppID。_apple 账号迁移

随便推点

深度学习中优化方法之动量——momentum、Nesterov Momentum、AdaGrad、Adadelta、RMSprop、Adam_momentum seg-程序员宅基地

文章浏览阅读1k次。https://blog.csdn.net/u012328159/article/details/80311892_momentum seg

动态数据生成静态html页_监听数据变更自动生成静态html-程序员宅基地

文章浏览阅读816次。主要的原理就是替换模板里的特殊字符。 1、静态模板页面 template.html,主要是定义了一些特殊字符,用来被替换。 HTML code DOCTYPE HT_监听数据变更自动生成静态html

预防按钮的多次点击 恶意刷新-程序员宅基地

文章浏览阅读494次。 今日在做一个新闻系统的评论时. 想到了预防"提交"按钮的多次点击的问提 (prevent multiple clicks of a submit button in ASP.NET). 以前碰到此类问提总是用重定位页面来解决. 这次我想找到一个一劳永逸的办法. 通过查讯Google,找到了一些代码,挑选一些较好的修改了一下。public void pa

sokcs5软件dante配置指南_dante 代理 配置pam用户名密码 模式-程序员宅基地

文章浏览阅读4.7k次。近来公司业务有需要做socks5代理的需求,研究了一下,主要的开源实现有2个:dante http://www.inet.no/dante/ss5 http://ss5.sourceforge.net/比较了一下,还是比较倾向于dante,因为看到有人这样评价ss5:Project has an incredibly poor source code quality. Th_dante 代理 配置pam用户名密码 模式

Excel vba 求助。_vba countifs 源码-程序员宅基地

文章浏览阅读809次。在excel vba 中用到countifs 函数,但用来统计带有特殊符号* 时总是统计chu_vba countifs 源码

web前端基础——实现动画效果_web前端实现图片动画效果-程序员宅基地

文章浏览阅读2.6k次。当两个效果之间变换时,可以使用transition过渡属性,但是有多个效果来回变换时,就需要使用动画效果,且动画过程可控(重复播放,画面暂停,最终画面等)文章目录1、简介2、实现步骤3、复合属性animation4、动画属性1、简介动画的本质是快速切换大量图片在人脑中形成的具有连续性的画面构成动画的最小单元:帧或者动画帧2、实现步骤定义动画@keyframes 动画名称{ from{} to{}}@keyframes 动画名称{ 0%{} 10%{} 20%{} 50._web前端实现图片动画效果

推荐文章

热门文章

相关标签