本发明属于无线通信领域,更具体地,涉及一种物联网暂态数据的缓存替换方法及系统。
背景技术:
随着物联网(iot)在智能交通、智能电网、智能家居以及工业自动化等领域的迅速发展和广泛应用,海量的物联网数据流量给现今的通信网络带来了巨大的压力和挑战。为了解决上述问题,一种常见的思路是在物联网中加入边缘缓存机制,利用网络边缘缓存节点空闲的存储资源,缓存热点数据,请求端可以直接从相应的边缘缓存节点获取数据,而无需从数据源处获取,从而避免了大量不必要的端到端通信。物联网系统中的边缘缓存可以卸载网络流量,降低网络时延,提供更好的服务质量和用户体验。由于边缘缓存节点的存储容量一般比较有限,一个高效的缓存替换策略能够提高缓存击中率,从而更高效的利用缓存空间,卸载更多的网络流量。物联网系统中大量应用还对数据的时效性有要求,只有在一定时效内的数据才是可用的数据,因而缓存数据的新鲜度也是缓存替换时一个重要的考量标准。因而,物联网系统中边缘缓存替换策略,需要同时考虑缓存数据的热度和新鲜度信息,从而更好的满足物联网场景下的缓存需求。
传统的缓存替换方法,如先进先出方法,最近最少使用方法,最不经常使用等,由于未考虑内容的热度趋势和用户请求分布,缓存效率较低。现有的边缘缓存的缓存替换策略包括:e.bastug等人提出的利用用户-数据的相关性,通过协同过滤预测数据的热度,缓存策略在开始时贪婪地缓存热点数据,直到边缘缓存节点缓存耗尽,然后根据预测出来的热度信息,进行缓存替换;p.blasco等人提出的通过背包方法(knapsack)解决小型基站中数据放置的问题,其中,数据热度是根据数据接收到的请求速率估算的;j.song等人提出的引入多臂赌博机(multi-armedbandit,mab)方法,将数据热度与数据缓存过程结合起来考虑;s.tanzil等人提出的通过构建神经网络估计数据的热度,使用混合整数线性规划方法计算缓存的放置位置和大小,但是该方法的热度预测阶段,需要利用视频内容的关键字和分类信息,这对一般的iot数据不适用。
上述方法主要集中于非暂态数据的边缘缓存,边缘缓存节点通过估计数据的热度来决定是否缓存如何替换缓存。一方面,由于假设数据的热度分布和用户请求服从特定的分布(如泊松分布),从而无法适应数据热度和用户请求分布快速变化的场景;另一方面,只专注于非暂态数据的缓存,没有考虑暂态数据的时效性问题。
技术实现要素:
针对现有技术的缺陷,本发明的目的在于解决现有技术物联网海量暂态数据传输中存在的时延大、通信资源消耗大,存储资源受限条件下边缘缓存节点中暂态数据缓存效率不高的技术问题。
为实现上述目的,第一方面,本发明实施例提供了一种物联网暂态数据的缓存替换方法,当前边缘缓存节点的缓存空间已满,该方法包括以下步骤:
s1.边缘缓存节点接收到用户发出的新的暂态数据项请求;
s2.判断请求的暂态数据项内容是否在边缘缓存节点的缓存中,若是,进入步骤s3,否则,进入步骤s6;
s3.判断请求的暂态数据项是新鲜数据还是过期数据,若是新鲜数据,进入步骤s4,若是过期数据,进入步骤s5;
s4.直接从边缘缓存节点的缓存区读取该数据,将该数据转发给用户;
s5.边缘缓存节点将用户请求转发给数据源,从数据源处读取新数据,用新数据替换边缘缓存节点的缓存区中该过期数据,并将该新数据转发给用户;
s6.边缘缓存节点将用户请求转发给数据源,从数据源处读取新数据,使用深度增强学习选择边缘缓存节点的缓存区中待替换的数据,用新数据替换该待替换的数据,并将该新数据转发给用户。
具体地,步骤s2中,若fk∈fk,则请求的数据项内容在边缘缓存节点的缓存中,若
具体地,步骤s3中,若tage(p(fk))≤tlife(p(fk)),则请求的数据项是新鲜数据,若tage(p(fk))>tlife(p(fk)),则请求的数据项是过期数据,其中,fk为数据项请求k对应的cid,p(·)为从请求内容cid到数据项的映射函数,tlife(·)为数据项的有效生命周期,tage(·)表示数据项的年龄。
具体地,步骤s6中所述使用深度增强学习选择边缘缓存节点的缓存区中待替换的数据,具体包括:
1)在n时刻,观察边缘缓存节点状态信息,得到n时刻状态sn;
2)根据缓存策略π(an|sn)选择缓存动作an并执行该缓存动作;
3)执行缓存动作an后,计算即时奖励rn,边缘缓存节点状态信息由sn变为sn+1;
4)将即时奖励rn反馈到边缘缓存节点,并将本次状态转换过程<sn,an,rn,sn+1>作为训练样本,用于训练深度增强学习的行动者-评论家网络,重复上述过程。
具体地,即时奖励rn的计算公式如下:
其中,reqn表示缓存动作an执行之后,到下一次执行缓存动作an+1之间边缘缓存节点收到的所有数据请求集合,c(dk)为获取数据dk的综合成本。
具体地,综合成本c(dk)的计算公式如下:
c(dk)=α·c(dk)+(1-α)·l(dk)
其中,α∈[0,1]表示折中系数,c(dk)表示通信成本,l(dk)表示数据时效性成本,c1表示直接从边缘缓存节点获取数据的通信开销,c2表示从数据源处获取数据的通信开销,c1<c2,且c1、c2均为正常数;fk为数据项请求k对应的cid,fk为请求k到达时边缘缓存节点中缓存的数据项对应的cid集合,p(·)为从请求内容cid到数据项的映射函数,tlife(·)为数据项的有效生命周期,tage(·)表示数据项的年龄。
具体地,深度增强学习中行动者网络参数θ的依照梯度上升更新为:
其中,λ为行动者网络的学习速率,
深度增强学习中评论家网络的网络参数θv依照梯度下降更新为:
其中,λ′为评论家网络的学习速率。
具体地,深度增强学习中行动者网络参数θ的依照梯度上升更新为:
其中,λ为行动者网络的学习速率,
深度增强学习中评论家网络的网络参数θv依照梯度下降更新为:
其中,λ′为评论家网络的学习速率。
第二方面,本发明实施例提供一种物联网暂态数据的缓存替换系统,当前边缘缓存节点的缓存空间已满,该系统包括:状态判断模块、读取模块、请求转发模块和缓存替换模块;
所述状态判断模块,用于判断用户所请求暂态数据的状态,所述状态包括:状态一:请求的暂态数据项内容在边缘缓存节点的缓存中且请求的暂态数据项是新鲜数据;状态二:请求的暂态数据项内容在边缘缓存节点的缓存中且请求的暂态数据项是过期数据;状态三:请求的暂态数据项内容不在边缘缓存节点的缓存中;
所述读取模块,用于在所述状态判断模块判断结果为状态一时,直接从边缘缓存节点的缓存区读取该数据,将该数据转发给用户;
所述请求转发模块,用于在所述状态判断模块判断结果为状态二或三时,边缘缓存节点将用户请求转发给数据源,从数据源处读取新数据;
所述缓存替换模块,用于在所述状态判断模块判断结果为状态二时,用所述请求转发模块读取的新数据替换边缘缓存节点的缓存区中该过期数据,并将该新数据转发给用户;在所述状态判断模块判断结果为状态三时,使用深度增强学习选择边缘缓存节点的缓存区中待替换的数据,用所述请求转发模块读取的新数据替换该待替换的数据,并将该新数据转发给用户。
第三方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面所述的缓存替换方法。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
1.本发明考虑暂态数据的有效生命周期,将物联网数据的数据新鲜度和通信资源的消耗纳入综合通信成本,从而给出了物联网暂态数据缓存策略的目标:最小化获取物联网数据的长期综合成本。通过在网络的边缘缓存节点中缓存暂态数据,能够卸载网络流量到网络边缘,降低时延,一定程度上解决了物联网海量暂态数据传输中存在的时延大、通信资源消耗大的问题。
2.本发明使用深度增强学习的方法学习暂态数据的缓存策略,具体地,将缓存替换问题建模为马尔科夫过程,从边缘缓存节点的数据请求历史中挖掘数据的热度趋势信息,结合暂态数据的生命周期和数据新鲜度信息,作为深度增强学习的环境状态的输入。短期奖励设置为综合通信成本的相反数。利用评论家网络学习价值函数、行动者网络学习策略函数,通过不断地进行缓存替换操作,自适应地学习缓存策略,最大化长期奖励,从而最小化物联网中获取暂态数据的长期综合成本,解决了存储资源受限条件下边缘缓存节点中暂态数据缓存效率不高的问题。
附图说明
图1为本发明实施例提供的一种物联网暂态数据的缓存替换方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
首先,对本发明中用到的一些术语进行解释。
边缘缓存节点是指物联网中靠近用户侧的具有缓存能力的网络节点。
数据新鲜度等于数据剩余的有效时间与有效生命周期的比值,比值越大,使用的数据越及时,数据的新鲜度越高。
数据时效性是指从数据源产生数据到用户端获取该数据的时间间隔及效率。获取时间间隔越短,时效性越强。
数据热度表示数据的流行程度,即一定时间内被请求的次数,次数越高,数据热度越高。
暂态数据是指对数据有时效性要求的数据。
本发明的构思为:首先,为研究暂态数据缓存的综合成本,将获取物联网数据的综合成本分为两个部分:通信成本(包括带宽消耗、时延等)和数据时效性成本。物联网边缘缓存节点中缓存替换的目标是最小化获取数据的长期综合成本,即同时考虑通信成本和数据时效性成本。然后,将缓存替换问题建模为马尔可夫过程问题,从而构建了基于深度增强学习(deepreinforcementlearning,drl)的缓存策略:根据物联网一段时间内的数据请求历史和当前的缓存状态,自动学习缓存策略,最小化获取物联网数据获取的长期综合成本。
如图1所示,一种物联网暂态数据的缓存替换方法,当前边缘缓存节点的缓存空间已满,该方法包括以下步骤:
s1.边缘缓存节点接收到用户发出的新的暂态数据项请求;
s2.判断请求的暂态数据项内容是否在边缘缓存节点的缓存中,若是,进入步骤s3,否则,进入步骤s6;
s3.判断请求的暂态数据项是新鲜数据还是过期数据,若是新鲜数据,进入步骤s4,若是过期数据,进入步骤s5;
s4.直接从边缘缓存节点的缓存区读取该数据,将该数据转发给用户;
s5.边缘缓存节点将用户请求转发给数据源,从数据源处读取新数据,用新数据替换边缘缓存节点的缓存区中该过期数据,并将该新数据转发给用户;
s6.边缘缓存节点将用户请求转发给数据源,从数据源处读取新数据,使用深度增强学习选择边缘缓存节点的缓存区中待替换的数据,用新数据替换该待替换的数据,并将该新数据转发给用户。
步骤s1.边缘缓存节点接收到用户发出的新的暂态数据项请求。
物联网中的数据项d用cid(contentid)唯一标识,每个数据项包含两个字段:生成时间tgen(d)和有效生命周期tlife(d)。在t时刻,数据项d的年龄表示为tage(d)=t-tgen(d)。如果数据项d的年龄小于其有效生命周期,即tage(d)<tlife(d),则称数据项d是新鲜数据,在有效生命周期内;否则,称称数据项d是过期数据,已过时效期。
将来自物联网用户端的数据项请求记为k,所请求数据项内容对应的cid为fk,请求到达的时间为tk。在tk时刻,物联网边缘缓存节点中缓存的数据项集合记为
当数据项请求k到达后,物联网边缘缓存节点首先检查缓存中是否存在cid为fk且新鲜的缓存数据项。分三种情况考虑:
情形1:fk∈fk且tage(p(fk))≤tlife(p(fk)),即请求的数据项内容在缓存中,而且该缓存项是新鲜的,满足时效性要求。因此,边缘缓存节点直接返回缓存的数据项p(fk)给数据请求者。
情形2:fk∈fk且tage(p(fk))>tlife(p(fk)),即请求的数据项内容在缓存中,而且该缓存项已经过期。因此,边缘缓存节点从数据源处获取新数据返回给数据请求者,并且用新获取的数据替换掉缓存中的过期数据。
情形3:
通过以上三种情形的分析,用户发出请求k后,收到的返回数据项dk可以表示为:
其中,fk为数据项请求k对应的cid,p(·)为从请求内容cid到数据项的映射函数,fk为请求k到达时边缘缓存节点中缓存的数据项对应的cid集合,tage(d)表示数据项d的年龄,tlife(d)表示数据项d的有效生命周期。
步骤s2.判断请求的暂态数据项内容是否在边缘缓存节点的缓存中,若是,进入步骤s3,否则,进入步骤s6。
fk∈fk表明请求的数据项内容在边缘缓存节点的缓存中,
步骤s3.判断请求的暂态数据项是新鲜数据还是过期数据,若是新鲜数据,进入步骤s4,若是过期数据,进入步骤s5。
tage(p(fk))≤tlife(p(fk))表明请求的数据项是新鲜数据,tage(p(fk))>tlife(p(fk))表明请求的数据项是过期数据。
边缘缓存节点的缓存替换策略而言,初始时边缘缓存节点先贪婪地缓存所有到达的数据项,直到缓存空间填满。当缓存已满后,如果新到达的请求,对应情形1,无需进行缓存替换;对应情形2,由于已知当前请求所对应的缓存数据已过期,因此直接用新获取的数据替换掉该过期数据即可;对应情形3,新的数据到达,需要缓存替换方法决定是否用新的数据项替换掉缓存区已经缓存的数据项,如果替换,具体替换哪一个已缓存的数据项。
具体地,对数据项dk缓存策略给出的缓存动作记为ak,动作空间为a={a0,a1,…,ai}。ak=a0表示不进行缓存替换,ak=ai(1≤i≤i)表示用从数据源处获取的新鲜数据项dk替换缓存区
步骤s6.边缘缓存节点将用户请求转发给数据源,从数据源处读取新数据,使用深度增强学习选择边缘缓存节点的缓存区中待替换的数据,用新数据替换该待替换的数据,并将该新数据转发给用户。
步骤s6对应情形3,使用深度增强学习选择边缘缓存节点的缓存区中待替换的数据,定义获取暂态数据项dk的综合成本c(dk)。
将获取暂态数据项dk的综合成本c(dk)分为两个部分,一部分为通信成本c(dk),另一部分为数据时效性成本l(dk)。
通信成本c(dk)的计算公式如下:
其中,c1表示直接从边缘缓存节点获取数据的通信开销,c2表示从数据源处获取数据的通信开销,c1<c2,且c1、c2均为正常数。
数据时效性成本l(dk)的计算公式如下:
综合成本c(dk)的计算公式如下:
c(dk)=α·c(dk)+(1-α)·l(dk)
其中,α∈[0,1]表示折中系数,对两种成本的重要性进行了加权,较大的α表示用户更在意通信损耗,否则,用户更在意数据时效性。
为了优化物联网获取数据的综合成本,将缓存替换问题建模成马尔可夫过程问题。对应前面缓存情形1和情形2都是确定性的规则,因此,只需要优化情景3中的缓存替换动作。
马尔可夫过程问题可以通过{s,a,m(sn+1|sn,an),r(sn,an)}定义,其中,s表示物联网系统边缘缓存节点的状态集合,sn表示n时刻边缘缓存节点的状态;a表示缓存替换策略的动作集合,an表示n时刻的缓存动作;m(sn+1|sn,an)表示执行动作an后,边缘缓存节点的状态从sn转移为sn+1的状态转移概率矩阵,r(sn,an)表示即时奖励函数,在状态sn执行动作an后的系统奖励反馈。因此,整个缓存替换过程可以表示为:
1)在n时刻,边缘缓存节点观察系统状态信息,得到系统n时刻状态sn∈s。
2)边缘缓存节点根据缓存策略π(an|sn)选择缓存动作an并执行。
3)执行缓存动作an后,系统返回一个即时奖励rn=r(sn,an),且系统状态由sn转移为sn+1。
4)即时奖励rn反馈到边缘缓存节点,将本次状态转换过程<sn,an,rn,sn+1>作为训练样本加入深度强化学习的经验池,用于训练行动者-评论家网络,重复上述过程。
其中,缓存策略π(an|sn)表示,在状态sn下,选择缓存替换动作an的概率,可简写为π。
整个过程的长期积累奖励记为
为了衡量缓存策略π的优劣,定义价值函数vπ(sn)=e[rn|sn;π]表示缓存策略π在状态sn下的长期积累奖励rn的期望。状态sn下的最优价值函数可表示为v*(sn)=maxπvπ(sn)。
由马尔可夫性质,将vπ(sn)带入bellman方程,得到:
其中,p(sn+1,rn|sn,an)表示在状态sn下执行动作an后,转移到状态sn+1且得到系统即时奖励rn的概率,γ∈[0,1]表示折扣系数。该式给出了马尔科夫过程中价值函数的迭代计算方法。
如果给出马尔可夫过程的状态转移概率矩阵m(sn+1|sn,an),可以通过动态规划的方法,解出最优策略。然而边缘缓存替换过程中,状态转移概率矩阵未知,因此,本发明使用深度增强学习的方法,智能地从历史数据中挖掘信息,使用深度神经网络学习拟合状态-价值函数,从而得到最优的缓存替换策略。
本发明使用深度增强学习方法,自适应地学习高效的缓存策略,以行动者-评论家(actor-critic)深度增强学习方法为例,但是不局限于行动者-评论家方法,介绍本发明的技术细节。其中:
输入:在边缘缓存节点不断处理用户请求的过程中,出现情形3,即请求的数据项内容不在缓存中时,边缘缓存节点通过转发该请求,从数据源处获取到所请求的数据项dn。此时,缓存策略智能体(agent)观察当前的环境状态
策略:本发明用行动者网络表征替换策略πθ(an|sn),也可表示为π(an|sn;θ),可简称为πθ,行动者网络参数为θ。行动者网络的输入是n时刻边缘缓存节点的状态信息sn,行动者网络的输出为选择各个缓存动作的概率。深度增强学习最终是根据策略πθ(an|sn)选择缓存替换动作,即对选择各缓存动作概率最大的缓存区位置上的数据,执行替换动作an。例如,边缘缓存节点中有3个缓存区(标位1,2,3,然后用0表示不替换)。行动者网络输出的概率为(0.1,0.1,0.7,0.1),然后按照这个概率选择替换的位置,此处很有可能输出就是a2,所以就是替换掉2号缓存区。行动者网络的目标是根据学习到的缓存策略,输出相应的缓存替换动作,从而最大化长期累积奖励期望e[rn|πθ]。
状态-价值函数:本发明用评论家网络来表征状态-价值函数
策略训练:每执行一次缓存替换动作an,系统反馈给缓存策略智能决策模块一个即时奖励rn:
其中,reqn表示缓存动作an执行之后,到下一次执行缓存动作an+1之间边缘缓存节点收到的所有数据请求集合,c(dk)为获取数据dk的综合成本。由于目标是为了最小化获取数据的长期综合成本,所以在成本前面加了负号。
根据bellman方程和马尔可夫过程的状态转移轨迹,可以估算出长期总奖励的期望,从而通过梯度更新的方式来学习网络参数。总奖励的期望相对于行动者网络参数θ的梯度可以计算为:
为了最大化总奖励的期望,行动者网络参数θ的依照梯度上升更新为:
其中,λ为行动者网络的学习速率,可以根据实际情况调整;
评论家网络可以通过时间差分的方法训练,损失函数设为评论家网络输出
其中,λ′为评论家网络的学习速率,可以根据实际情况调整;
为了解决增强学习中的“探索-利用困境”(exploration-exploitationdilemma),“利用”表示采取当前已经学习到的最优动作,而“探索”试图通过采取当前非最佳的动作来充分地探索动作空间。为了防止学习策略落入局部最优,本技术方案通过将策略(行动者网络输出的动作概率分布)的熵以正则项的形式加入行动者网络参数θ的更新过程,从而实现了对“探索”过程的鼓励:
其中,h(π(·|sn;θ))是状态sn下、策略πθ输出的动作空间的策略熵,β表示探索系数,
通过梯度上升方法,θ朝着熵增的方向更新,鼓励“探索”过程。探索系数β是一个正数,用以平衡“探索”和“利用”的程度。越大的β值,表示越鼓励“探索”,具体实施时可以根据需要调整。
缓存策略支持在线学习和离线学习两种方式。在线学习可以直接部署到边缘缓存节点,根据边缘缓存节点处理的物联网请求数据,周期性的更新网络参数,学习缓存策略。离线学习先在线下将缓存策略预训练好,然后部署到边缘缓存节点,保持不变。
本发明提供一种物联网暂态数据的缓存替换系统,该系统包括:状态判断模块、读取模块、请求转发模块和缓存替换模块;
所述状态判断模块,用于判断用户所请求暂态数据的状态,所述状态包括:状态一:请求的暂态数据项内容在边缘缓存节点的缓存中且请求的暂态数据项是新鲜数据;状态二:请求的暂态数据项内容在边缘缓存节点的缓存中且请求的暂态数据项是过期数据;状态三:请求的暂态数据项内容不在边缘缓存节点的缓存中;
所述读取模块,用于在所述状态判断模块判断结果为状态一时,直接从边缘缓存节点的缓存区读取该数据,将该数据转发给用户;
所述请求转发模块,用于在所述状态判断模块判断结果为状态二或三时,边缘缓存节点将用户请求转发给数据源,从数据源处读取新数据;
所述缓存替换模块,用于在所述状态判断模块判断结果为状态二时,用所述请求转发模块读取的新数据替换边缘缓存节点的缓存区中该过期数据,并将该新数据转发给用户;在所述状态判断模块判断结果为状态三时,使用深度增强学习选择边缘缓存节点的缓存区中待替换的数据,用所述请求转发模块读取的新数据替换该待替换的数据,并将该新数据转发给用户。
该系统还包括训练模块,用于在每执行一次缓存替换动作时,收集缓存替换动作、替换动作所带来的即时奖励、替换前后的边缘缓存节点的状态,并基于上述参数训练所述缓存替换模块中深度增强学习的网络参数。
以上,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。