关于强化学习优化粒子群算法的论文解读(上)

关于强化学习优化粒子群算法的论文解读(上)

继续创作,加速生长!这是我参加「日新计划 6 月更文挑战」的第17天,点击检查活动概况

前语

本片博文首要讲解一下一篇关于运用DDPG神经网络去优化粒子群算法的一篇文章。文章名为: 《Reinforcement learning based parameters adaption method for particleswarm optimization》

这不是要开组会了嘛,小爷得上,得讲一篇论文,不想写PPT直接写MarkDown。

TIPS:本文的顺序和那篇论文的是不一样的,我将挑选要点的来阐明。

本文首要分四步:

  1. 布景常识 (快速上手)
  2. 相关研讨(大致过一下)
  3. 具体如何运用强化学习
  4. 更多细节
  5. 考虑与假设

版权

郑重提示:本文版权归自己一切,任何人不得抄袭,搬运,运用需征得自己赞同!

2022.6.25

日期:2022.6.25 DAY 6

布景常识

传统PSO算法

1995年,遭到鸟群寻食行为的规律性启示,James Kennedy和Russell Eberhart建立了一个简化算法模型,经过多年改善最终形成了粒子群优化算法(Particle Swarm Optimization, PSO) ,也可称为粒子群算法。

粒子群算法的思想源于对鸟群寻食行为的研讨,鸟群经过集体的信息同享使集体找到最优的意图地。如下图,想象这样一个场景:鸟群在森林中随机查找食物,它们想要找到食物量最多的方位。可是一切的鸟都不知道食物具体在哪个方位,只能感遭到食物大概在哪个方向。每只鸟沿着自己判定的方向进行查找,并在查找的进程中记载自己曾经找到过食物且量最多的方位,一起一切的鸟都同享自己每一次发现食物的方位以及食物的量,这样鸟群就知道当时在哪个方位食物的量最多。在查找的进程中每只鸟都会依据自己回忆中食物量最多的方位和当时鸟群记载的食物量最多的方位调整自己接下来查找的方向。鸟群经过一段时间的查找后就能够找到森林中哪个方位的食物量最多(大局最优解)。

关于强化学习优化粒子群算法的论文解读(上)

这儿首要是经过两个方程来完成对粒子的控制,以此来完成让粒子完成大局的查找。

关于强化学习优化粒子群算法的论文解读(上)

强化学习

强化学习是机器学习范畴之一,遭到行为心理学的启示,首要关注智能体如安在环境中采纳不同的举动,以最大极限地进步累积奖赏。

关于强化学习优化粒子群算法的论文解读(上)

关键概念

关于强化学习这儿面首要有几个概念。

智能体

强化学习的本体,作为学习者或者决议计划者。

环境

强化学习智能体以外的一切,首要由状况集合组成。

状况

一个表示环境的数据,状况集则是环境中一切或许的状况。

动作

智能体能够做出的动作,动作集则是智能体能够做出的一切动作。

奖赏

智能体在执行一个动作后,取得的正/负反馈信号,奖赏集则是智能体能够取得的一切反馈信息。

战略

强化学习是从环境状况到动作的映射学习,称该映射联系为战略。浅显的理解,即智能体如何挑选动作的考虑进程称为战略。

方针

智能体自动寻觅在连续时间序列里的最优战略,而最优战略通常指最大化长时间累积奖赏。

因而,强化学习实践上是智能体在与环境进行交互的进程中,学会最佳决议计划序列。

根本结构

强化学习首要由智能体和环境组成。由于智能体与环境的交互办法与生物跟环境的交互办法类似,因而能够以为强化学习是一套通用的学习结构,是通用人工智能算法的未来。 强化学习的根本结构如图所示,智能体经过状况、动作、奖赏与环境进行交互。

关于强化学习优化粒子群算法的论文解读(上)

在线学习(简述)

这儿先做一个简述,后边咱们会进行深化一点的探讨。 关于强化学习呢,还能够划分:在线学习和离线学习。在论文傍边运用的DDPG,运用的是在线学习战略,所以本文也是简单说一下在线学习和离线学习。

这儿以QLearn 为代表

关于强化学习优化粒子群算法的论文解读(上)

离线学习(简述)

离线学习其实和在线学习类似,差异在于挑选动作的时分,离线学习单纯依照价值最大的去现在。而在线学习的话仍是有一定概率来挑选并不是当时价值最大的动作。

关于强化学习优化粒子群算法的论文解读(上)

实践核心代码的差异:

Q Learn

def QLearning():
    QTable = Init(N_STATES, ACTIONS)  
    for ecpho in range(ECPHOS): 
        step_counter = 0
        S = 0
        # 是否回合结束
        isWin = False
        updateEnvShow(S, ecpho, step_counter)
        while not isWin:
            #挑选行为
            A = ChoseAction(S, QTable)
            # 得到当时行为会得到的Reward,以及下一步的情况
            S_, R = GetReward(S, A)
            # 估算的(状况-行为)值
            q_predict = QTable.loc[S, A]
            if S_ != 'win':
                # 实践的(状况-行为)值 这个便是类似与G1
                q_target = R + GAMMER * QTable.iloc[S_, :].max()
            else:
                #  实践的(状况-行为)值 (回合结束)
                q_target = R
                isWin = True    
            QTable.loc[S, A] += ALPHA * (q_target - q_predict)  #  QTable 更新
            S = S_  # 探索者移动到下一个 state
            # 环境更新显示
            updateEnvShow(S, ecpho, step_counter+1)
            step_counter += 1
    return QTable

关于强化学习优化粒子群算法的论文解读(上)
Sarsa 离线学习

def SARSA():
    QTable = Init(N_STATES, ACTIONS)
    for ecpho in range(ECPHOS):
        step_counter = 0
        S = 0
        # 是否回合结束
        isWin = False
        updateEnvShow(S, ecpho, step_counter)
        A = ChoseAction(S, QTable)  # 先初始化挑选行为
        while not isWin:
            S_, R = GetReward(S, A)
            try:
                A_ = ChoseAction(S_, QTable)
            except:
                # 这儿阐明已经到了结尾(假如报错)
                pass
            q_predict = QTable.loc[S, A]
            if S_ != 'win':
                q_target = R + GAMMER * QTable.iloc[S_, :].max()
            else:
                q_target = R
                isWin = True
            QTable.loc[S, A] += ALPHA * (q_target - q_predict)  #  QTable 更新
            S = S_  
            A = A_  
            updateEnvShow(S, ecpho, step_counter+1)
            step_counter += 1
    return QTable

关于离线学习而言,假如从上面的代码来改的话,那么只需求把动作挑选函数的概率调整为1,并且先提早挑选一个价值最大的动作即可。

无论是关于在线学习仍是离线学习,其意图都是需求得到这样一张表:

关于强化学习优化粒子群算法的论文解读(上)

Qlearn

现在咱们来好好的聊了里边的一些大体的细节。

马尔可夫决议计划

咱们这儿只讲大概几个和QLearn 联系比较严密的东西。 里边比较具体的关于这个的是 概率论 这儿面有说到。 这个是强化学习的一个理论支撑,类似于梯度下降,微分对神经网络

马尔科夫链

那么首要咱们的第一点是马尔可夫链:这个东西便是一系列或许发生的状况。

例如:一个人刚起床,他有或许先刷牙,然后洗脸,然后上课。 或者这个人 起床,洗澡,刷牙,然后上课。 用一条链来表示便是:

刷牙-洗脸-上课 洗澡-刷牙-上课

战略

关于强化学习优化粒子群算法的论文解读(上)

累计报答

关于强化学习优化粒子群算法的论文解读(上)
这个首要是看到马尔可夫链,当时的状况对后边是有相关的。

值函数

关于强化学习优化粒子群算法的论文解读(上)

他们之间的对应联系大致如下图:

关于强化学习优化粒子群算法的论文解读(上)

具体体现

强化学习便是数学原理是依据马尔可夫来的,那么在实践的体现傍边的意图是为了求取一个表格Q。 这个表格Q,其实便是:

关于强化学习优化粒子群算法的论文解读(上)
依照前面的粒子便是这个玩意:
关于强化学习优化粒子群算法的论文解读(上)

在咱们实践上开端的时分Q表咱们是不知道的,所以咱们会有一个初始化,之后输入当时的状况和下一步的动作,会得到当时假如挑选了这个动作,那么将得到的奖赏,以及下一个状况,咱们先经过q(s,a)能够得到。可是除此之外,由于咱们实践上Q表一开端是随机的,所以是需求进行不断完善,收敛的,所以咱们还需求不断更新咱们的Q表。

所以在咱们的实践代码里边仍是有不一样的。

关于强化学习优化粒子群算法的论文解读(上)

DQN神经网络

这个首要是由于论文中说到了DDPG,假如不说这个DQN 的话,这个DDPG很难说下去,那么论文也很难讲下去,这篇论文的难点在于常识面较广,实践算法其实不难。

DQN 其实和QLearn是一样的,差异在于,本来的Q表从一个表,一个有实体的表,变成了一个神经网络。意图是为了,经过神经网络去拟合那个Q表,由于在实践进程傍边,假如需求将一切的状况和动作价值存起来是不或许的假如它的状况许多的话。所以需求一个神经网络来做拟合。 伪代码如下:

关于强化学习优化粒子群算法的论文解读(上)

关于强化学习优化粒子群算法的论文解读(上)

编码细节

在咱们本来的时分,运用Q表

关于强化学习优化粒子群算法的论文解读(上)

可是现在的话,由于咱们是直接运用了这种“特别的表”所以咱们能够独自运用两个神经网络去别离代表实践和估量(猜测)

关于强化学习优化粒子群算法的论文解读(上)
关于强化学习优化粒子群算法的论文解读(上)
而咱们的丢失函数便是让q_eval 和 q_target 变小 所以:
关于强化学习优化粒子群算法的论文解读(上)
这儿的loss_func 是nn.MSELoss()

DDPG

从上面的内容,你会发现,这个玩意和传统的Qlearn没太大差异仅仅很巧妙地运用了神经网络,最终仍是要得到一个关于每一个动作的打分,然后去依照那个得分去挑选分高的动作,换一句话说是,这个神经网络仍是只能得到对应动作的价值,例如 上下左右,然后选价值最大的,如 上 这个动作。

可是在我实践的PSO问题傍边,我想要的是一组解,也便是你直接告诉我w c1 c2 取哪些值?

所以现在直接运用DQN 就很难了,明显这玩意貌似只能挑选出一个动作,而我的w c1 c2 不或许是一个动作,假如把他看作是一个动作的话,那么你将有 无穷个动作挑选,假定有规模,那便是可数无穷个动作。

为了处理那个问题,所以有了DDGP,也便是我想要直接得到一组动作,你直接告诉我 w c1 c2取得哪些值?

怎么做,没错,再来一个神经网络。 具体怎么做,如下图:

关于强化学习优化粒子群算法的论文解读(上)

Actor 网络直接生成一个动作,然后 本来在DQN的那个网络在这儿是Critic 网络 去点评,这个点评其实便是在DQN里边的那个网络,输入一个S,和 A 得到一个价值,现在这个价值变成了评分。

关于强化学习优化粒子群算法的论文解读(上)

丢失函数便是这样:

关于强化学习优化粒子群算法的论文解读(上)

GAN对立神经网络(拓宽)

这个是我接下来要干的事情,依据GAN来优化PSO,由于从流程和建模的角度来看,运用DDPG是运用GAN差异不大,仅仅一个建模将直接经过习惯值来,一个是能够经过参数本身进行建模。

关于强化学习优化粒子群算法的论文解读(上)

异同

现在咱们再来比照一下DDPG神经网络。

首要Actor 在这儿相当于Generator 评委仍是评委,这两个网络都是要练习的网络。 这个判断器,就比如那个Cirtic,差异是啥?强化学习有个环境,这个DQN里边,或者DDPG里边那个评分怎么来的,还不是依照环境来给的,你把DDPG里边的Critic换成Q表一样跑,仅仅内存要炸,而且效果或许还要好,一方面精准记载,一方面只有一个网络。 而咱们的GAN 是现有一个专家,这个专家不就也相当于环境嘛?

此外丢失函数不同。

关于强化学习优化粒子群算法的论文解读(上)

关于强化学习优化粒子群算法的论文解读(上)

相关研讨

这篇论文的话,有相当大的部分再序言这个。咱们这儿简单挑选几个。

Linear strategies 线性战略

这个是咱们常常运用的一个优化。

关于强化学习优化粒子群算法的论文解读(上)
下面的一些描绘都是相关论文有关于线性战略的一个优化
关于强化学习优化粒子群算法的论文解读(上)

History based

关于强化学习优化粒子群算法的论文解读(上)

有的论文在运转进程中将整个运转进程划分为许多小的进程。在每一个小进程中运用不同的参数或战略,并依据小阶段最终的算法性能来判断参数或战略是否足够好。足够好的战略或参数将在后续运转中被更多地挑选。在论文[29]中,作者建立了一个参数存储器。每次运转时,将一切运转粒子分配不同的参数组,小段运转完成后,将一些性能较好的粒子运用的参数保存在参数存储器中。后续粒子挑选的参数将趋向于接近参数回忆的平均值。在[30]中,作者依据以往一些优秀的粒子群算法规划了5种粒子群操作战略,并记载了每种战略的成功率。在初始状况,一切成功率设置为50%,然后在每个小进程中,依据曩昔成功率的权重,随机挑选一个战略执行。有多少粒子被提升了,这是依据回忆的成功率更新。在论文[31]中,作者对原EPSo进行了改善,更新了规划的战略,将粒子群划分为多个子群,并对战略进行独自评价,进一步进步了算法的性能。

强化学习优化

关于其他的办法的话,实在是在论文里边说到的不少,可是都还不是主角,所以咱们要点来到这儿。

这个部分的话,还不是这篇论文傍边所运用到的战略,仍是在介绍相关的研讨。 这儿论文中给了一张表:

关于强化学习优化粒子群算法的论文解读(上)

这儿是其他运用强化学习的童鞋,他们运用这个强化学习输入输出得到的东西在PSO的运用。 如[40] 它输入的参数的当时方位,gbest,输出c1 c2 经过 gbest 规划奖赏,是直接作用在单个粒子的,运用的算法是PG(DDPG)

然后下面是关于强化学习的介绍了,这个在咱们的布景常识里边有说到。我感觉是至少要比论文愈加具体的。

Comprehensive learning particle swarm optimizer(CLPSO)

这个也是一个对粒子群进行优化的一个算法,我个人觉得比较有意思,所以这儿也是独自讲一下。 原文是这样的:

关于强化学习优化粒子群算法的论文解读(上)

我这大概说一下人话便是: 首要是这个速度方程:

关于强化学习优化粒子群算法的论文解读(上)
w 仍是那个w,c 仍是那个c,rand便是随机数,这儿的pbest指的是悉数的粒子的pbest,经过下面这个方程来完成挑选哪一个pbest
关于强化学习优化粒子群算法的论文解读(上)

这儿ps为种群大小,a = 0.05,b = 0.45。当粒子更新其一维速度时,会生成一个随机值[0,1],并与Pc进行比较。假如随机值大于Pc,该维度的粒子将遵从自己的pbest。不然,它会跟从另一个粒子的最佳值。CLPSo将选用锦标赛挑选来挑选方针粒子。此外,为了避免在错误的方向上浪费函数的核算,CLPSO将一定次数的核算定义为改写间隙m。在粒子跟从方针粒子的进程中,将粒子停止改善的次数记载为flag,假如flag大于m,则粒子将再次选用竟赛挑选的办法取得新的方针粒子。

那么这儿便是相关研讨了,我这儿先大略带过,由于要点仍是这篇论文的实践运用。

由于篇幅问题,今日就先到这儿吧~