CN111381902B - 基于带属性异构网络嵌入的app启动加速方法 - Google Patents
基于带属性异构网络嵌入的app启动加速方法 Download PDFInfo
- Publication number
- CN111381902B CN111381902B CN202010161063.0A CN202010161063A CN111381902B CN 111381902 B CN111381902 B CN 111381902B CN 202010161063 A CN202010161063 A CN 202010161063A CN 111381902 B CN111381902 B CN 111381902B
- Authority
- CN
- China
- Prior art keywords
- node
- application
- model
- identification
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Abstract
本发明公开了一种基于带属性异构网络嵌入的APP启动加速方法,目的是对APP启动进行预测,根据预测得到的应用实现启动加速。技术方案是构建基于带属性的异构网络嵌入的应用启动加速系统,该系统由运行于移动终端上的数据处理模块、运行于云端的模型训练系统组成;数据处理模块由数据收集模块、数据预处理模块、数据上传模块、应用启动预测模块、应用启动加速模块、终端数据库组成;模型训练系统由应用记录存储模块、模型训练模块、模型交互模块以及云端数据库组成。应用启动加速系统使用带属性的异构网络嵌入的APP启动预测方法精确地预测下一个可能启动的应用,实现了提前创建应用进程并提前载入应用资源,减少用户等待应用启动的时间。
Description
技术领域
本发明涉及安卓(Android)系统中APP(即应用)启动加速领域,尤其涉及一种基于带属性异构网络嵌入的方法对APP启动进行预测以加速APP启动的方法。
背景技术
在安卓系统中,一般的应用是由Activity(活动)、Service(服务)、ContentProvider(内容提供者)、Broadcast(广播)四大组件组成的,而在安卓系统中负责四大组件的启动、切换、调度及应用进程的管理和调度的是ActivityManagerService(AMS,活动管理服务进程)。AMS是安卓系统中最核心的服务之一,其职责与操作系统中的进程管理和调度模块相类似,应用的启动流程与它息息相关。图1为目前安卓系统应用启动逻辑关系图。应用层桌面应用显示各个APP的图标,在用户点击图标的触发下,获取相关应用的上下文以及构建的Intent(意图,安卓系统中的一种请求方式)向中间层ActivityManager(活动管理进程)发送应用启动请求。ActivityManager以Binder(安卓系统进程间通信方式之一)机制将启动请求提交给服务层的AMS处理,AMS执行权限检查、任务栈分配等工作后,使用Socket(套接字)内部进程通讯的方式调用系统进程Zygote(安卓系统上所有应用进程的父进程),孵化一个新的子进程并注册到SystemServer(安卓系统的核心进程之一)。最后AMS新建并初始化应用相关View(视图),显示活动进程。
目前安卓系统应用应用启动流程是通过点击桌面上的图标实现的,具体包括以下步骤:
第一步,应用接收用户点击APP图标的启动操作,通过Binder调用向AMS发送请求,为了安全认证和管理,请求包括Context和Intent,Context表明身份,Intent表明意图。
第二步,AMS通过PackageManagerService(安装服务进程,负责管理应用安装、删除、启动等)解析Intent,使用容器类ResolveInfo(安卓系统中的一个类,是通过解析一个与IntentFilter相对应的intent得到的信息)保存解析出来的信息,包含四大组件Activity、Service、Content Provider、Broadcast的信息。
第三步,AMS进一步进行权限检查,新建一个保存Activity信息的数据结构ActivityRecord类,包括ProcessRecord类(表示Activity所属进程相关信息)、TaskRecord类(表示Activity所属task相关信息)、ActivityInfo类(表示Activity相关信息)、整型变量mActivityType(Activity类型,有普通应用类型、桌面类型、最近任务类型三种)、ActivityState类(表示Activity状态,有初始化、已恢复、正在暂停、已暂停、正在停止、已停止、结束、正在销毁、已销毁九种状态)、ApplicationInfo类(表示Activity所属应用相关信息)、ComponentName类(组件名)、字符串变量packageName(Activity所在包名)、字符串变量processName(Activity所属进程名称)、整型变量launchMode(启动模式)、整型变量userId(Activity所属用户ID)十一个变量,并通过它管理活动。
第四步,AMS服务进程为活动分配任务栈。在安卓系统中使用任务栈的方式管理Activity,当一个Activity启动时,系统根据其配置或调用的方式,将Activity压入一个特定的栈中,系统处于运行状态。一个任务栈包含多个任务,而一个任务包含多个Activity。首先综合计算活动的启动模式;调用安卓系统中ActivityStarter类中的getReusableIntentActivity()函数查找是否有可以重用的ActivityRecord类(类表示的Activity不再执行),如果有可重用的ActivityRecord类,把原来类表示的Activity信息替换成当前启动的Activity的信息,如果没有可重用的ActivityRecord,寻找可以重用的TaskRecord类,如果没有可以重用的TaskRecord,新建一个TaskRecord类来存储任务栈的描述信息。TaskRecord类包括ActivityStack(当前所属的任务栈信息)、数组列表mActivities(当前所属任务栈中的所有Activity列表、整型变量taskId(当前所属任务栈的ID)、字符串affinity(任务栈中第一个Activity信息)、整型变量mCallingUid、字符串mCallingPackage(调用者的包名)六个变量。
第五步,变更当前正在运行的Activity的状态,服务进程AMS调用安卓系统中ActivityStack类的startPausingLocked()方法通知APP进行暂停操作。然后通过ActivityStack类的activityPaused()方法通知AMS,AMS执行活动进程的恢复。
第六步,AMS创建进程对应的实体ProcessRecord以记录活动进程,包括描述身份的数据、描述进程中组件的数据、描述进程状态的数据、和实际使用的物理内存相关的数据、和时间相关的数据、和进程崩溃相关的数据、和instrumentation组件相关的数据、电源信息和调试信息、31个状态值九类数据。然后AMS委托ZygoteProcess进程将所有启动参数都通过socket的写入流发送给服务进程Zygote(是安卓系统的第一个进程)。
第七步,Zygote接收请求,孵化一个子进程。在安卓系统中,所有的应用程序进程及SystemServer进程都是由Zygote进程孵化出来的。
第八步,初始化安卓系统中应用的运行环境Runtime,包括未捕捉异常、Java虚拟机的堆内存利用率等的设置,调用安卓应用进程的初始类ActivityThread,通知AMS进程启动完毕,并初始化主线程。
第九步,服务进程AMS通过回调的方式将进程注册到SystemServer。这是为了保证身份的安全,防止非法进程注册到AMS。
第十步,AMS验证进程启动成功后,通知APP创建Application(安卓框架的一个系统组件,存储应用的系统信息),初始化APP的上下文以及各种资源。
第十一步,AMS遍历所有的任务栈,找出所有正在运行的、可见的应用进程,调用安卓系统中ActivityStackSupervisor类中realStartActivityLocked()方法开始一个活动的执行。
第十二步,AMS调用ActivityThread类初始化窗口管理器WindowManagerGlobal类(安卓系统一个管理界面控件的类)以及相关显示资源,调用类加载器ClassCloader去加载对应的Activity对应的类并在内存中对Activity进行实例化。
第十三步,初始化活动的窗口,新建相关的视图,向系统请求分配显示资源,并进行显示。
第十四步,结束。
在整个应用启动过程中,AMS是核心服务。Launcher(桌面应用)只需要构建Intent请求发送到AMS服务,应用的启动流程将不需要用户的参与。这是常规的应用启动方法,使用这种方法时,如果即将启动的应用没有被载入内存或者应用进程不存在,那么启动该应用时首先要创建该应用的应用进程。当启动一个较大的游戏时,启动时长有时可达到半分钟,对于用户来说等待时间是过长的。若通过一定方法预测下一个即将启动的应用,然后提前将该应用载入到内存,可减少用户的等待时间,提高用户体验。
预测下一个即将启动的应用的目的是预测用户在下一个时间段,最可能使用的移动应用,可以实现应用的预加载,为用户节省应用的启动时间,提供更好的使用体验。应用启动并载入最新的内容均需要一定的时间,可以通过将应用预先载入内存节省时间。但是预先载入应用的前提操作是比较准确的预测用户即将使用哪个应用,才能减少因为预载入不准确而造成的资源浪费以及各种不良后果。
目前在智能移动设备上与应用相关的特性多样化明显,用户只使用一次或偶尔次数的应用数量明显增多,包含用户画像、时间、地点、手机品牌与型号等等的数据量越来越大,网络嵌入方法能够较好地从大量数据中挖掘应用-用户-时间这样的不同类型数据间的关联关系。网络嵌入也叫网络表示学习,是一种将网络中的节点投影到低维连续空间,同时保留网络结构和固有属性的方法,可以用来实现链路预测。网络嵌入主要包括图嵌入和图神经网络。现实世界中,图结构无处不在,是节点和边的集合。图嵌入是一种将图数据映射为低微稠密向量的过程,需要捕捉到图的拓扑结构,节点与节点的关系,以及子图、边等其他的信息。嵌入过程存在一种共识:向量空间中保持连接的节点彼此靠近。单纯的图嵌入依靠节点的连接来表示节点之间的关系,但仅依靠连接关系无法有效地处理新节点。而带属性网络嵌入赋予图中每个节点一定的属性特征,在依靠节点的连接关系时,还可以根据节点的属性特征计算节点之间的相关性。所以带属性网络嵌入可以有效的处理新节点,旨在为网络中的节点寻找低维向量表示,以便在降低特征纬度的同时保留原始网络拓扑结构和节点属性邻近性。
从网络嵌入的角度来看应用使用预测问题,首先在训练时将历史应用数据中包含的关系转化成图,使用时间、位置、应用等作为图中的节点,将应用启动预测转化为根据时间、位置等新节点与图中应用节点的连接关系来预测是否会与该应用节点建立连接以及建立连接的可能性排序。在网络中存在不止一类节点与一种边关系,因此应用使用预测问题中生成的是异构网络。若要预测下一个小时用户可能启动的应用,时间节点或者位置节点都是在预测时新生成的,因此需要带属性网络嵌入方法处理新节点。清华大学某计算机实验室提出了一种带属性网络嵌入方法GATNE(参考Cen Y,Zou X,Zhang J,et al.于2019年5月发表在ACM Knowledge Discovery and Data Mining(SIGKDD,知识发现与数据挖掘)会议的论文:Representation Learning for Attributed Multiplex HeterogeneousNetwork,即“带属性的复杂异构网络的表示学习”),揭示了带属性异构网络的嵌入学习问题,该方法在网络中设置了多种类型的带属性的节点,如用户和商品结点,以及多种类型的边,每一种边表示一种情境,如点击、收藏、添加购物车等边关系,可以在同一个潜在空间中解决不同情境下的预测问题。这种方法可以适用到应用预测中,但是这种方法仅能预测两个节点之间是否会存在链接关系,且仅能根据某一种上下文如时间、位置信息等单独进行预测,导致预测方法精度不高,而以往的研究都表明时间、位置以及其他上下文对于应用预测的精度都有影响。
基于上述应用启动流程以及应用启动预测两方面的分析可知,通过带属性异构网络嵌入的APP启动预测方法预测下一个启动的应用,提前载入该应用以实现启动加速是完全可行的。目前还没有这种通过预测来加速应用启动的方法的相关报导。
发明内容
本发明要解决的技术问题是对APP启动进行预测,根据预测得到的应用实现启动加速,为用户节省应用的启动时间,提供更好的使用体验。
本发明的技术方案是:使用一种带属性异构网络嵌入的APP启动预测方法预测下一个可能启动的应用,利用Android系统提供的各种服务进程实现应用的提前载入,以减少用户等待应用载入的时间,提高用户体验。
本发明具体包含如下步骤:
第一步,构建基于带属性异构网络嵌入的应用启动加速系统。该系统由两层构成:第一层是运行于移动终端上的数据处理模块,第二层是运行于云服务器(云端)中的模型训练系统。
数据处理模块安装在移动终端(即移动智能设备),与移动终端中安卓系统的服务层进行交互,收集、存储应用使用相关记录,并对记录进行预处理操作后生成训练相关数据存储在移动终端,然后与云端模型训练系统交互,将训练相关数据发送给云端,从云端获取根据训练相关数据生成的应用启动预测模型实现应用启动预测及应用加速。数据处理模块由数据收集模块、数据预处理模块、数据上传模块、应用启动预测模块、应用启动加速模块、终端数据库组成。服务层是数据处理模块需要从安卓系统得到的相关服务,包括ActiveManager、ActiveManagerService、TelephonyManager、WiFiManager、BatteryService五个服务进程,其中ActiveManager服务进程用于监控应用的启动、暂停、结束等操作,ActiveManagerService服务进程用于实现应用的启动、暂停、结束等操作,TelephonyManager服务进程用于获取移动设备当前所处环境的基站信息,WiFiManager服务进程用于获取当前连接的WiFi相关信息,BatteryService用于获取移动设备当前电量相关信息。
终端数据库存储应用使用相关记录以及预处理之后的应用使用相关记录。终端数据库包含三类表,一类存储应用使用相关记录,一类存储经过预处理之后的应用使用相关记录,最后一类存储应用启动预测模型相关信息。
应用使用相关记录包括应用使用记录表、基站信息表、WiFi信息表、移动终端配置信息表四个表。应用使用记录表包含四个数据域,分别为应用使用记录标识ID、应用名称、应用启动时间戳、应用使用时长,其中:应用使用记录标识ID是表明应用使用记录的唯一标识;应用名称使用应用对应的安装包名称标识;应用启动时间戳记录应用启动的时间;应用使用时长是应用从启动到结束的时长。基站信息表包含两个数据域,分别为基站标识ID、基站信息获取时间戳,其中:基站标识ID是加密之后的基站ID;基站信息获取时间戳记录从移动终端获取基站信息时的时间。WiFi信息表包含四个域,分别为WiFi信息获取时间戳、服务集标识SSID、MAC地址BSSID、WiFi速率,其中:WiFi信息获取时间戳是从移动终端获取WiFi信息时的时间;服务集标识SSID以及MAC地址BSSID都是用来标记WiFi的标识;WiFi速率记录当前时间的网络速率。移动终端配置信息表包含五个域,分别为移动终端配置记录标识ID、移动终端电量、移动终端是否处于充电状态、移动终端是否已经充满电、配置信息获取时间戳,其中:移动终端配置记录标识ID是移动终端配置信息记录的唯一标识;移动终端电量表明当前移动终端电量的多少;移动终端是否处于充电状态说明移动终端是否正在充电;移动终端是否已经充满电表明移动终端是否电已充满;配置信息获取时间戳记录获取配置信息的时间。
为保存带属性异构网络、训练数据,预处理之后的应用使用相关记录包含终端节点属性表、终端训练数据表两个表。终端节点属性表存储带属性异构网络的节点的相关信息。带属性异构网络包含时间、位置、应用三种节点,还包含时间与应用、位置与应用、前序应用与应用三种边关系,可将三种边的关系看成是三个子网络。终端节点属性表包含四个域,分别为节点标识ID、节点名称、节点属性、节点类型;节点标识ID是节点在异构网络中的唯一标识,根据每一个节点名称生成对应的节点标识ID;节点包含应用节点、时间节点、位置节点三种节点,因此节点名称有三类:应用结点名称是应用使用记录表中的应用名称,节点类型使用数值1标记,节点属性使用应用类别对应的独热编码表示;时间节点名称使用hour of day标识,形式为YYYYMMDDHH,表示某年某月某日的某个小时,节点类型使用数值2标记,节点属性使用时间节点所在的星期几表示,表示为数值1到7;位置节点名称使用基站标识ID表示,同一个基站表示同一个位置,节点类型使用数值3标记,节点属性使用基站对应的独热编码表示。终端训练数据表存储训练数据,即预处理之后的应用使用记录,包含四个域,分别为应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID,其中:应用节点标识ID、时间结点标识ID、位置节点标ID、前序应用节点标识ID均从终端节点属性表获得,是应用节点、时间节点、位置节点、前序应用节点的唯一标识,前序应用节点表示使用当前应用之前的应用。
终端数据库第三类表存储应用启动预测模型相关信息,从云端获取的应用启动预测模型以文件的形式存储在移动终端,使用终端模型索引表存储模型文件在移动终端的位置信息,以便能够有效并迅速查找到对应模型。终端模型索引表记录应用启动预测模型相关信息,包含三个域,分别为模型存储时间戳、模型文件名称、模型文件位置,其中:模型存储时间戳是移动终端存储从云端获取启动预测模型的时间;模型文件名称以“模型名称_时间戳”形式表示,模型名称指启动预测模型(包含带属性异构网络嵌入模型以及神经网络模型两个模型)的命名;模型文件位置记录存储启动预测模型的文件在移动终端上的位置。
云服务器上安装有模型训练系统,模型训练系统负责训练数据的接收与存储、启动预测模型的训练以及训练后的启动预测模型的下发,由应用记录存储模块、模型训练模块、模型交互模块以及云端数据库组成。
云端数据库包含云端训练数据表、云端节点属性表、云端模型索引表三个表。云端训练数据表与终端数据库中的终端训练数据表对应,存储终端用户上传到云端的训练数据,包含五个域,分别为用户标识ID、应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID,其中:用户标识ID是移动终端对应用户的唯一标识;应用节点标识ID、时间结点标识ID、位置节点标ID、前序应用标识ID是应用节点、时间节点、位置节点、前序应用节点的唯一标识,与终端节点属性表中的相同。云端节点属性表包含五个域,分别为用户标识ID、节点标识ID、节点名称、节点属性、节点类型,其中用户标识ID与云端训练数据表中的相同,节点标识ID、节点名称、节点属性、节点类型与终端节点属性表中的相同。云端模型索引表记录云端生成的启动预测模型对应的索引信息,包含四个域,分别为用户标识ID、模型创建时间戳、模型存储文件名称、模型存储文件位置,其中:用户标识ID与云端训练数据表中的相同;模型创建时间戳是云端生成启动预测模型的时间;模型存储文件名称以“用户标识ID_模型名称_时间戳”形式表示,其中的“模型名称_时间戳”与终端模型索引表中的相同;模型文件位置记录存储启动预测模型的文件在云端的位置。
数据收集模块与终端数据库、服务进程ActivityManager、服务进程TelephonyManager、服务进程WiFiManager、服务进程BatteryService相连。数据收集模块利用这4个服务进程从移动终端收集用户的应用使用记录,包括应用启动时间戳、应用使用时长、当前使用的基站信息、当前连接的WiFi信息、设备配置信息(是否处于满电状态、是否处于充电状态),并将这些信息分别存储到终端数据库的应用使用记录表、基站信息表、WiFi信息表、移动设备配置信息表。
数据预处理模块与数据上传模块、终端数据库相连。数据预处理模块对从终端数据库中获取的应用使用记录表、基站信息表读取的数据进行预处理,生成与启动预测模型匹配的终端节点属性表、终端训练数据表。数据预处理模块从终端数据库的应用使用记录表获取应用名称、应用,从基站信息表获取基站相关信息,将这些信息转化成带属性异构网络相关信息,将节点名称以及节点属性存储到终端数据库的终端节点属性表中;并根据应用使用记录表、基站信息表、WiFi信息表、移动设备配置信息表生成与云端启动预测模型匹配的训练数据,包括应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID,存储到终端数据库的终端训练数据表中。数据预处理模块向数据上传模块发送第一数据上传请求(包含终端训练数据表中的N条记录、终端节点属性表中的M条记录,N和M均为正整数)。
数据上传模块与数据预处理模块、云端的应用记录存储模块相连,用于向云端上传与启动预测模型匹配的训练数据以及节点属性信息。数据上传模块从数据预处理模块接收第一数据上传请求,从中提取训练数据以及节点属性信息,调用服务进程WiFiManager获取移动终端的mac地址作为用户标识ID,向云端的应用记录存储模块发送第二数据上传请求(包含用户标识ID、终端训练数据表中的N条记录、终端节点属性表中的M条记录)。
应用记录存储模块与数据上传模块、云端数据库相连,应用记录存储模块接收数据上传模块的第二数据上传请求,从第二数据上传请求中提取用户标识ID、训练数据、节点属性三类信息,将训练数据存入云端数据库的云端训练数据表,将节点属性存入云端节点属性表。
模型训练模块与云端数据库相连,从云端数据库的云端训练数据表获取训练数据,从云端节点属性表获取节点属性,训练并存储应用启动预测模型。应用启动预测模型由带属性异构网络嵌入模型以及神经网络模型构成。首先在云端预设一个文件夹存储模型文件,命名为“云端模型文件夹”。模型训练模块从云端训练数据表获取用户对应的训练数据,将云端训练数据表中每一条记录拆分成三个节点对,根据节点对表示的信息构建带属性异构网络,并计算节点对出现的频率作为异构网络中边的权重;拆解异构网络生成训练样本对,从云端节点属性表中根据节点标识ID获取训练样本对对应的节点属性信息;构建一个带属性异构网络嵌入模型,并采用拆解得到的每一个训练样本对对带属性异构网络嵌入模型进行训练;将带属性异构网络嵌入模型以文件的形式存储在“云端模型文件夹”中,将带属性异构网络嵌入模型的索引信息存储到云端模型索引表;构建一个单隐层(即只包含输入层、一个隐藏层、输出层三层)的神经网络模型,根据带属性异构网络嵌入方法得到云端训练数据表中的每一条记录对应的时间、位置、前序应用节点对应的嵌入表示向量,融合三个嵌入表示向量作为输入训练神经网络模型,将神经网络模型以文件的形式存储在“云端模型文件夹”中,将神经网络模型的索引信息存储到云端模型索引表。
模型交互模块与云端数据库、应用启动预测模块相连,模型交互模块从应用启动预测模块接收应用启动预测模型请求(参数为用户标识ID),根据用户标识ID从云端数据库的云端模型索引表中获取应用启动预测模型即带属性异构网络嵌入模型以及神经网络模型的索引信息,提取两个模型存储文件位置信息,并将两个模型文件发送给应用启动预测模块。
应用启动预测模块与模型交互模块、终端数据库、应用启动加速模块、服务层相连。应用启动预测模块在移动终端预设一个文件夹存储模型文件,命名为“终端模型文件夹”。应用启动预测模块向模型交互模块发送应用启动预测模型请求,接收来自模型交互模块的应用启动预测模型文件,构建当前时间、位置、前序应用节点及对应属性信息,采用带属性异构网络嵌入模型得到三个节点对应的嵌入表示向量,采用神经网络模型对串联三个节点对应的嵌入表示向量进行处理得到概率向量,概率向量中的每一个值代表对应应用可能是下一个启动应用的概率,应用启动预测模块将预测结果即根据概率向量提取最大概率值对应的应用名称传递给应用启动加速模块。
应用启动加速模块与应用启动预测模块、服务进程ActiveManagerService相连,用于提前载入即将启动的应用。应用启动加速模块接收应用启动预测模块的预测结果,向服务进程ActiveManagerService发送Intent请求,请求提前载入应用。
第二步,基于带属性异构网络嵌入的应用启动加速系统为每个用户构建应用启动预测模型,即构建带属性异构网络嵌入模型以及神经网络模型,方法为:
2.1数据收集模块利用安卓系统提供的服务进程从移动终端收集用户的应用使用记录,包括:利用ActiveManager服务进程监控应用的启动、暂停、结束等操作,记录应用启动时间戳、应用名称,根据应用的启动时间与结束时间计算应用使用时长,存储到终端数据库应用使用记录表;利用TelephonyManager服务进程获取移动设备当前所处环境的基站标识ID并对基站标识ID加密,记录当前的时间戳,存储到终端数据库基站信息表;利用WiFiManager服务进程获取当前连接的WiFi相关信息,存储到终端数据库WiFi信息表;利用BatteryService获取移动终端当前电量,判断当前设备是否处于充电状态,是否处于满电状态,存储到终端数据库移动终端配置信息表中。
2.2数据预处理模块从终端数据库的应用使用记录表读取用户的应用名称、应用启动时间戳、应用使用时长,从基站信息表读取基站标识ID、基站信息获取时间戳,从移动终端配置信息表中读取移动设备电量、移动终端是否处于充电状态、移动终端是否已经充满电、配置信息获取时间戳,对读取的信息进行预处理,提取出应用、时间、位置三类上下文信息,将这三类信息作为异构网络中的三类节点,构建三类节点对应的节点属性信息,生成终端节点属性表;继续解析从终端数据库中读取出来的数据,提取出应用节点、时间节点、位置节点、前序应用节点组成一条训练数据;根据所有训练数据、终端节点属性表生成终端训练数据表,并将包含终端训练数据表中所有记录、终端节点属性表中所有记录的第一数据上传请求发送给数据上传模块。方法是:
2.2.1数据预处理模块在终端数据库建立临时数据表,存储生成训练数据的中间数据,包含五个域,分别为应用名称、应用启动时间戳、前序应用名称、基站标识ID、应用启动时间,其中:应用名称标识一个应用;应用启动时间戳记录应用启动的时间;前序应用名称记录当前应用启动的上一个应用;基站标识ID记录当前应用使用时所处的基站环境;应用启动时间在临时数据表中是指从应用启动时间戳中提取出的一种表示形式,使用“YYYYMMDDHH”形式表示,其中“YYYY”表示年份,“MM”表示月份,“DD”表示几号,“HH”表示小时,用来表示时间节点的名称。
2.2.2数据预处理模块从终端数据库的应用使用记录表提取除桌面应用、短信应用、电话应用的相关记录以外的所有记录,按时间升序对提取的记录进行排序以查找前序应用;然后提取每一条记录中的应用名称、应用启动时间戳,提取每一条记录的前一条记录中的应用名称作为前序应用名称,存入临时数据表。第一条记录没有对应的前序应用,因此不记录第一条记录。令临时数据表中共有N条记录。
2.2.3数据预处理模块查找应用使用记录对应的位置信息。为了找到应用使用记录表中对应记录所处的基站信息,从终端数据库中的基站信息表选择在应用开始前5分钟和应用结束后5分钟之间的基站信息,选择时间最接近的连接的基站的基站标识ID作为应用使用记录的位置信息,并根据每条应用使用记录将基站标识ID存入训练数据临时表。如果不存在这样的基站信息,将临时数据表中对应记录的基站标识ID标记为空。
2.2.4数据预处理模块构建时间节点,从终端训练数据表中提取每条记录的应用启动时间戳,从应用启动时间戳中提取时间,以一个小时为时间刻度,生成“YYYYMMDDHH”的字符串形式,表示某年某月某日某个时辰,作为时间节点的名称并存入临时数据表中的应用启动时间域。
2.2.5数据预处理模块生成应用、时间、位置节点。从临时数据表中提取表中记录的所有应用启动时间、基站标识ID、应用名称放在集合A中,对提取的信息执行去重操作,相同的应用启动时间、基站标识ID、应用名称只留下一个,防止在后续操作中同样的应用启动时间、基站标识ID、应用名称生成不一样的节点;将去重后的集合A中的应用启动时间、基站标识ID、应用名称作为异构网络中节点的节点名称,节点类型分别使用数值1、2、3表示,数值1在节点类型中表示应用节点,数值2在节点类型中表示位置节点,数值3在节点类型中表示时间节点。为了方便标记,对集合A中的节点使用自增序列进行唯一标序,并按照序列号-节点名称-节点类型的对应关系分别将每个节点的序列号、节点名称、节点类型存入终端数据库的终端节点属性表中的节点标识ID、节点名称、节点类型域。由于根据节点名称进行了去重操作,因此可以保证每个节点在终端节点属性表中只存在一条记录。
2.2.6数据预处理模块构建终端节点属性表中每个节点的属性信息。将所有应用类型进行独热编码,使用应用所属类型对应独热编码值作为应用节点属性信息;从终端节点属性表中提取应用启动时间,从应用启动时间中提取该时间所在是星期几,使用星期几作为时间节点属性信息;从临时数据表中不重复提取所有基站标识ID,对基站标识ID进行独热编码,位置节点使用基站标识ID对应的独热编码值作为节点属性信息。将每个节点对应的属性信息存储到终端节点属性表的节点属性域中。
2.2.7数据预处理模块根据临时数据表、终端节点属性表生成终端训练数据表,方法是:
2.2.7.1初始化变量n=1;
2.2.7.2获取临时数据表中的第n条记录,提取记录中的应用启动时间、基站标识ID、前序应用名称、应用名称;
2.2.7.3将从2.2.7.2步骤中得到的应用启动时间、基站标识ID、前序应用名称、应用名称作为节点名称,根据节点名称从终端节点属性表获取对应的节点标识ID,包括时间节点标识ID、位置节点标识ID、前序应用节点标识ID、应用节点标识ID,将四个节点标识ID存入终端训练数据表对应的时间节点标识ID、位置节点标识ID、前序应用节点标识ID、应用节点标识ID域,生成终端训练数据表的第n条记录,形式为:(应用节点标识ID,时间节点标识ID,位置节点标识ID,前序应用节点标识ID)。如果基站标识ID为空,则位置节点标识ID也记录为空。
2.2.7.4若n≤N,转2.2.7.1;若n>N,转2.2.8。
2.2.8数据预处理模块对终端训练数据表进行数据清洗,清除表中位置节点标识ID域带有空值的记录。
2.2.9数据预处理模块向数据上传模块发送第一数据上传请求(包含终端训练数据表中所有记录(N条记录)、终端节点属性表中所有记录(M条记录)),N和M均为正整数。
2.3数据上传模块接收来自数据预处理模块的第一数据上传请求,利用服务进程WiFiManager获取移动终端的mac地址,将移动终端的mac地址作为终端对应用户的用户标识ID,将用户标识ID和第一数据上传请求拼成第二数据上传请求(包含用户标识ID、终端训练数据表中所有记录(N条记录)、终端节点属性表中所有记录(M条记录)),将第二数据上传请求发送给云端应用记录存储模块。
2.4云端应用记录存储模块接收来自终端数据上传模块的第二数据上传请求,从第二数据上传请求中提取出用户标识ID、训练数据、节点属性,将训练数据存入云端训练数据表中,将节点属性存入云端节点属性表中。方法是:
2.4.1从第二数据上传请求中提取出用户标识ID;
2.4.2从第二数据上传请求中提取出训练数据,统计训练数据的条数,得到N的具体数值;
2.4.3获取初始化变量n=1;
2.4.4获取训练数据中的第n条数据,提取数据中的应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID;
2.4.5将得到的用户标识ID以及从第n条数据中提取出的应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID,存入云端训练数据表中对应的用户标识ID、应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID域中。
2.4.6若n≤N,转2.4.3;若n>N,转2.4.7。
2.4.7从第二数据上传请求中提取出节点属性,统计节点属性数据的条数,得到M的具体数值;
2.4.8获取初始化变量m=1;
2.4.9获取节点属性中的第m条数据,提取数据中的节点标识ID、节点名称、节点属性、节点类型;
2.4.10将得到的用户标识ID以及从第m条数据中提取出的节点标识ID、节点名称、节点属性、节点类型,分别存入云端节点属性表的用户标识ID、节点标识ID、节点名称、节点属性、节点类型域中。
2.4.11若m≤M,转2.4.8;若m>M,转2.5。
2.5令云端训练数据表中不同用户的数量为U;
2.6初始化变量u=1;
2.7模型训练模块将训练数据转换成为一个带属性异构网络,根据三类边关系将带属性异构网络划分为三个子网络,利用节点对及其对应的属性信息分别训练这三个子网络,通过这三个子网络得到时间节点、位置节点、前序应用节点的有效嵌入表示向量,构建一个带属性异构网络嵌入模型。具体方法为:
2.7.1根据第u个用户标识ID从云端节点属性表提取出所有节点标识ID,每个节点标识ID分为应用节点、时间节点、位置节点三类,将这三类节点作为异构网络中的节点。根据第u个用户标识ID从云端训练数据表获取相应用户的训练数据,每条训练数据形式为(用户标识ID,应用节点标识ID,时间节点标识ID,位置节点标识ID,前序应用节点标识ID),将每条训练数据拆分成三个节点对,分别为(应用节点标识ID,时间节点标识ID,1)、(应用节点标识ID,位置节点标识ID,2)、(应用节点标识ID,前序应用节点标识ID,3),其中数值1、2、3表示的是节点对类型,也是边类型。其中:节点对(应用节点标识ID,时间节点标识ID,1)表示在时间节点标识ID表示的时间使用过应用节点标识ID表示的应用,在异构网络中连接该应用节点与时间节点;节点对(应用节点标识ID,位置节点标识ID,2)表示在位置节点标识ID表示的位置使用过应用节点标识ID表示的应用,在异构网络中连接该应用节点与位置节点;节点对(应用节点标识ID,前序应用节点标识ID,3)表示在使用应用节点标识ID表示的应用之前使用的前序应用节点标识ID表示的应用,在异构网络中连接该应用节点与前序应用节点。同时记录相同节点对的出现频次作为边的权重。根据上述操作将训练数据转化成了一个异构网络,包括应用节点、时间节点、位置节点三类节点,以及应用节点与时间节点、应用节点与位置节点、应用节点与前序应用节点三类边连接关系,根据三种边连接关系将异构网络划分为三个子网络。在数据转换成异构网络的过程中,分别记录异构网络中三个子网络的节点,将子网络中所有节点标识ID分别存储在集合NS1、NS2、NS3中,分别记录集合中节点个数为M1、M2、M3,下标1、2、3分别对应边类型;
2.7.2采用随机游走算法生成链路。随机游走是指一种通过完全随机地游走,得到网络里各节点之间相关度的方法(参考Grady L于2006年11月发表在期刊IEEETransactions on Pattern Analysis and Machine Intelligence(IEEE模式分析与机器智能汇刊)第28卷第1768-1783页的论文:Random Walks for Image Segmentation,即“基于随机游走进行图像分割”)。根据2.7.1步生成的异构网络,依据三种边连接关系划分为三个子网络,分别以异构网络中三个子网络中的每一个节点为开始节点,生成第一链路列表LIST1、第二链路列表LIST2、第三链路列表LIST3,LISTr存放边类型为r的子网络中NSr个节点生成的NSr×20条长度为10的链路,1≤r≤3。方法是:
2.7.2.1初始化第一链路列表LIST1、第二链路列表LIST2、第三链路列表LIST3为空;
2.7.2.2初始化变量r=1,初始化一个临时列表LIST_TEMP为空;
2.7.2.3初始化变量m=1;
2.7.2.4初始化变量l=1,初始化一个节点链表L,用于存放以第m个节点为起始节点的链路上的节点标识ID;
2.7.2.5从节点标识ID集合NSr中获取第m个节点标识ID,将节点标识ID作为节点链表L的第一个节点存入节点链表L中;
2.7.2.6初始化变量i=1;
2.7.2.7选择节点链表L中的中第i个节点的邻居节点加入到节点链表L中;
2.7.2.8若i<10,令i=i+1,转2.7.2.7;若i>=10,转2.7.2.9;
2.7.2.9将节点链表L添加到临时列表LIST_TEMP中;
2.7.2.10若l≤20,令l=l+1,转2.7.2.5;若l>20,转2.7.2.11;
2.7.2.11若m≤Mr,令m=m+1,转2.7.2.4;若m>Mr,转2.7.2.12;
2.7.2.12将列表LIST_TEMP添加到列表LISTr中;
2.7.2.13若r≤3,令r=r+1,转2.7.2.3;若r>3,转2.7.3;
2.7.3采用skip-gram方法(参考McCormick于2016年4月出版的教程Word2VecTutorial-The Skip-Gram Model(Word2Vec教程-skip-gram模型))生成训练样本对,将训练样本对存入临时文件data_train.txt中。skip-gram算法的基本思想是构建一个神经网络,使用一句话中的某个词作为输入,使用输入的词的前后k个词作为输出,以用于预测与给定词相对应的上下文词。具体方法如下:
2.7.3.1初始化变量r=1;
2.7.3.2获取第r链路列表LISTr,是从边类型为r的子网络中生成的;
2.7.3.3统计链路列表LISTr中的链路条数,记为LN;
2.7.3.4初始化变量l=1;
2.7.3.5从链路列表LISTr中获取第l条节点链路L;
2.7.3.6初始化变量i=1;
2.7.3.7若在节点链路L中找到有效的第i-2个节点,生成训练样本对(节点标识IDi,节点标识IDi-2,r);若在链路L中找到有效的第i-1个节点,生成训练样本对(节点标识IDi,节点标识IDi-1,r);若在链路L中找到有效的第i+1个节点,生成训练样本对(节点标识IDi,节点标识IDi+1,r);若在链路L中找到有效的第i+2个节点,生成训练样本对(节点标识IDi,节点标识IDi+2,r);“有效”指能在节点链路L中找到,若i-2、i-1大于0则表示能在节点链路L中找到,即为有效;若i+1、i+2小于等于10则表示能在节点链路L中找到,也为有效。
2.7.3.8将2.7.3.7步生成的训练样本对信息存入文件data_train.txt中;
2.7.3.9若i≤10,令i=i+1,转2.7.3.7;若i>10,转2.7.5.10;
2.7.3.10若l≤LN,令l=l+1,转2.7.3.5;若l>LN,转2.7.3.11;
2.7.3.11若r≤3,令r=r+1,转2.7.3.2;若r>3,转2.7.4;
2.7.4根据带属性网络嵌入方法--GATNE方法利用2.7.3步得到的训练样本对和根据节点标识ID从云端节点属性表获取的对应节点属性值构建一个带属性异构网络嵌入模型,为网络中每个节点生成嵌入表示向量。如公式一所示,在边类型为r的子网络中,节点i的嵌入表示为向量vi,r:
其中:r表示边类型,r是正整数,1≤r≤3;xi是节点i的属性;hz(xi)是一个变换函数,其作用是计算xi在节点的嵌入表示中的影响,是节点i的基础嵌入;根据自注意力机制(一种将内部经验和外部感觉对齐从而增加部分区域的观察精细度的机制,参考ZhouhanLin,Minwei Feng,Cicero Nogueira dos Santos,Mo Yu,Bing Xiang,Bowen Zhou,andYoshua Bengio于2017年4月在International Conference on LearningRepresentations(ICLR,国际学习表征会议)发表的论文:A structured self-attentivesentence embedding),ai,r是作为在边类型为r的子网络中的节点i的边嵌入向量的权重,根据公式 计算得到,实际上是一个简单前馈神经网络,Wr是转化矩阵,需要模型训练优化得到,Ui在自注意力机制中表示隐藏层状态,tanh()是WrUi的激活函数,softmax()是一个归一化函数,将在负无穷到正无穷上的结果转换为0-1概率;Ui是节点i在三个子网络中的边嵌入向量拼接成的一个向量,表示节点i与其邻居节点的关系,每个节点在每一个子网络中聚合固定数量的邻居节点的节点属性均值作为该节点在该子网络中的边嵌入向量,Ui由节点i在三个子网络中得到的边嵌入向量串联而成;Mr是边嵌入向量的转换矩阵,表示Mr的转置,Mr中的第i个一维向量表示节点i在边类型为r的子网络中的边嵌入向量对节点i的嵌入表示的影响;αr表示在边类型为r的子网络中每个节点的边嵌入向量对于节点的嵌入表示的影响系数;Dz是节点i对应节点类型z的属性转换矩阵,其目的是为了计算新节点的嵌入表示向量,新节点与网络中的所有节点都是隔离的,Dz从节点属性相似性的角度表示节点i与网络中所有节点的相似关系,是Dz的转置;βr表示在边类型为r的子网络中,子网络中的节点属性之间的相似关系对于节点嵌入的影响系数。需要注意的是,只有在对应的子网络中,节点的嵌入表示才是有效的,即从边类型为1的子网络中得到的时间节点的嵌入表示才是有效的,从边类型为2的子网络中得到的位置节点的嵌入表示才是有效的,从边类型为3的子网络中得到的前序应用节点的嵌入表示才是有效的,而从三个子网络中得到的应用节点的嵌入表示都是有效的。
2.7.5采用2.7.3步得到的训练样本对以及2.7.4得到的节点的嵌入表示向量vi,r,使用NCE损失函数(参考TensorFlow官方文档Candidate Sampling Algorithms Reference(候选采样算法参考,https://tensorflow.google.cn/extras/candidate_sampling.pdf))对带属性异构网络嵌入模型进行训练,优化公式一中的转换矩阵以及ai,r,训练完毕后得到异构网络中每个节点的有效嵌入表示向量。时间节点的有效嵌入表示向量使用vi,t表示,位置节点的有效嵌入表示向量使用vi,l表示,前序应用节点的有效嵌入表示向量使用vi,p表示。具体训练过程如下:
2.7.5.1从文件data_train.txt中获取训练样本对,根据训练样本对中的节点标识ID从云端节点属性表中获取对应的节点属性,令训练样本对个数为M;
2.7.5.2将训练样本对划分为B个训练样本对集合,每个训练样本对集合中有batch个训练样本,表示对M/batch上取整,最后一个训练样本对集合的训练样本对数量小于等于batch,batch为正整数(64≤batch≤256);
2.7.5.3令变量b=1;
2.7.5.4将第b个训练样本对集合中的每一个样本对及其对应的属性作为带属性异构网络嵌入模型的训练数据,计算公式一,并使用NCE损失函数求解公式一的梯度,使用随机梯度下降算法(参考Tsuruoka Y,Tsujii,Jun’ichi,Ananiadou S于2009年8月在Annual Meeting of the Association for Computational Linguistics(ACL,国际计算语言学协会年会)会议第1卷第477–485页发表的论文:Stochastic Gradient DescentTraining for L1-regularized Log-linear Models with Cumulative Penalty,(即“L1正则对数线性模型累积惩罚的随机梯度下降训练”))调整公式一中的转换矩阵以及ai,r。
2.7.5.5若b<=B,令b=b+1,转到2.7.5.4;若b>B,转到2.7.6;
2.7.6以文件的形式将带属性异构网络嵌入模型存储在云端预先建立的“云端模型文件夹”中,命名为“用户标识ID_GATNE_时间戳”,其中“用户标识ID”使用实际的mac地址标识,“时间戳”使用实际的时间戳标识。
2.7.7构建带属性异构网络嵌入模型索引信息,使用移动终端实际的mac地址作为用户标识ID,使用当前时间作为模型创建时间戳,“用户标识ID_GATNE_时间戳”是模型存储文件名称,“云端模型文件夹”在云端的位置/用户标识ID_GATNE_时间戳”作为模型存储文件位置,分别将上述信息存储到云端模型索引表中对应的用户标识ID、模型创建时间戳、模型存储文件名称、模型存储文件位置域中。
2.8模型训练模块构建神经网络模型,融合时间、位置、前序应用三类上下文信息进行应用启动预测,方法是:
2.8.1以节点类型域值为1检索云端节点属性表,提取出节点类型域值为1的所有的应用节点标识ID,对提取的节点标识ID进行独热编码,得到每个节点标识ID对应的独热编码值,根据应用节点标识ID-应用独热编码值的关系存入字典D中。节点类型为1的节点是应用节点。
2.8.2根据第u个用户标识ID从云端训练数据表获取相应用户的训练记录,每条训练记录形式为(用户标识ID,应用节点标识ID,时间节点标识ID,位置节点标识ID,前序应用节点标识ID),训练记录共N条;
2.8.3初始化输入向量列表INPUT_LIST、实际输出向量列表OUTPUT_LIST为空,OUTPUT_LIST中的实际输出向量是指在当前时间、位置、前序应用的情景下使用的应用对应的独热编码值向量;
2.8.4获取参数变量n=1;
2.8.5提取第n条记录中的时间节点标识ID、位置节点标识ID、前序应用标识ID,根据节点标识ID从云端节点属性表中获取对应的节点属性,将三个节点标识ID以及对应的节点属性作为带属性异构网络嵌入模型的输入,按照公式一计算三个节点对应的嵌入表示向量,分别表示为vn,t、vn,l、vn,p,其中vn,t表示在第n条记录中时间节点对应的有效嵌入表示向量,vn,l表示在第n条记录中位置节点对应的有效嵌入表示向量,vn,p表示在第n条记录中前序应用节点对应的有效嵌入表示向量。融合vn,t、vn,l、vn,p,串联组成存入输入列表INPUT_LIST;
2.8.6提取第n条记录中的应用节点标识ID,根据应用节点标识ID从字典D中获取对应的独热编码值,记为pn,存入实际输出列表OUTPUT_LIST;
2.8.7若n≤N,令n=n+1,转到2.8.5;若n>N,转到2.8.8;
2.8.8结合应用启动预测场景,根据吴恩达于2014年发表的机器学习公开课课程(https://www.coursera.org/course/ml)构建单隐层的神经网络模型,即如公式二所述的数学模型,通过神经网络模型计算第n个概率向量qn:
qn=W(2)·sigmoid(vn·W(1)+b1)+b2 公式二,
其中:W(1)、W(2)分别是神经网络模型中隐藏层和输出层的转换矩阵;vn表示INPUT_LIST中的第n个向量,融合了第n条记录中时间节点、位置节点、前序应用节点的嵌入表示向量;b1、b2分别是神经网络模型中隐藏层和输出层的偏置向量;sigmoid函数是隐藏层的激活函数;概率向量qn表示根据第n条记录得到的预测结果,qn中的第i个概率值表示独热编码值向量中第i个位置值为1对应的应用的启动概率。
2.8.9采用输入列表INPUT_LIST以及实际输出列表OUTPUT_LIST训练神经网络模型。INPUT_LIST中的每一条输入向量按照公式二计算,得到输入对应的概率向量,然后根据公式三的交叉熵损失函数H计算神经网络模型的输出即概率向量与OUTPUT_LIST中实际输出的差异,根据随机梯度下降算法优化公式二中的W(1)、W(2)、b1、b2四个变量:
在公式三中:A表示第u个用户已安装的应用数量;表示第n条记录中的实际应用对应的独热编码值向量的第j个元素;表示第n条记录中根据输入以及神经网络模型计算得到的概率向量的第j个元素。INPUT_LIST中共有N个向量,即N个输入,一个输入对应云端训练数据表中的一条记录的时间节点、位置节点、前序应用节点;OUTPUT_LIST中共有N个独热编码值向量,一个独热编码值向量对应云端训练数据表中的一条记录中的应用节点。因此输入列表INPUT_LIST与实际输出列表OUTPUT_LIST的元素数目一致,并且一一对应。具体训练过程如下:
2.8.9.1将N个输入向量划分为B2个输入集合,每个输入集合中有batch2个训练样本,表示对N/batch2上取整,最后一个输入集合的输入向量数量小于等于batch2,batch2为正整数(64≤batch2≤256);
2.8.9.2获取参数变量b=1;
2.8.9.3第b个集合中的每一个输入作为神经网络模型的训练数据,计算公式二,根据公式二的结果计算公式三,使用随机梯度下降算法根据公式三的结果调整公式二中的W(1)、W(2)、b1、b2。
2.8.9.4若b≤B2,令b=b+1,转到2.8.9.3;若b>B2,转到2.8.10;
2.8.10以文件的形式将神经网络模型存储在云端预先建立的“云端模型文件夹”中,命名为“用户标识ID_NEURAL_时间戳”,其中“用户标识ID”使用实际的mac地址标识,“时间戳”使用实际的时间戳标识。
2.8.11构建神经网络模型索引信息,包括用户标识ID、模型创建时间戳、模型存储文件名称、模型存储文件位置,将索引信息存储到云端模型索引表。
2.9若u≤U,令u=u+1,转到2.7;若u>U,转第三步。
第三步,移动终端根据最新的应用启动预测模型进行应用预测并根据最新预测结果执行应用启动加速,方法是:
3.1应用启动预测模块按周期访问云端,保证终端预测使用的是最新的应用启动预测模型,即带属性异构网络嵌入模型以及神经网络模型,然后分别构造两个模型的输入,得到预测结果。具体方法是:
3.1.1应用启动预测模块使用安卓系统内置定时器,按周期T1(一般设置为两周)向模型交互模块发送下载模型请求(参数为用户标识ID,即设备的mac地址);
3.1.2模型交互模块从下载模型请求中提取出用户标识ID,根据用户标识ID从云端模型索引表获取用户对应的最新的应用启动预测模型索引记录,即最新的带属性异构网络嵌入模型以及神经网络模型的索引记录,根据记录中的模型存储文位置从“云端模型文件夹”中提取文件信息,将这两个模型发送给应用启动预测模块;
3.1.3应用启动预测模块将从模型交互模块得到的两个模型以文件的形式存储在终端“终端模型文件夹”中,将带属性异构网络嵌入模型文件命名为“GATNE_时间戳”,神经网络模型命名为“NEURAL_时间戳”,其中“时间戳”都使用当前接收模型所处的时间戳。应用启动预测模块构建两个模型的索引信息,使用当前接收模型所处的时间戳作为两个模型索引记录的模型存储时间戳,使用“GATNE_时间戳”字符串作为带属性异构网络嵌入模型索引记录的模型文件名称,使用“云端模型文件夹”在终端的位置/GATNE_时间戳”作为带属性异构网络嵌入模型索引记录的模型文件位置,使用“NEURAL_时间戳”字符串作为神经网络模型索引记录的模型文件名称,使用“云端模型文件夹”在终端的位置/NEURAL_时间戳”作为神经网络模型索引记录的模型文件位置,将两个模型的索引信息存储到终端模型索引表中。
3.1.4应用启动预测模块使用安卓系统内置定时器,按周期T2(一般设置为一个小时)从终端模型索引表中获取最新的应用启动预测模型的索引记录,即带属性异构网络嵌入模型以及神经网络模型的索引记录。根据带属性异构网络嵌入模型索引记录中的模型文件名称、模型文件位置在终端对应位置找到对应的带属性异构网络嵌入模型文件,根据神经网络模型索引记录中的模型文件名称、模型文件位置在终端对应位置找到对应的神经网络模型文件,从文件中提取出带属性异构网络嵌入模型与神经网络模型。
3.1.5应用启动预测模块从安卓系统服务进程TelephonyManager获取当前所处基站标识ID,根据基站标识ID从终端节点属性表中得到对应位置节点的节点标识ID作为位置节点标识ID,以及节点属性作为位置节点属性。应用启动预测模块从终端应用使用记录表中获取最新的应用使用记录,从中提取应用名称,根据应用名称从终端节点属性表中获取应用节点的节点标识ID作为前序应用节点标识ID,以及节点属性作为前序应用节点属性。应用启动预测模块获取当前时间戳,从时间戳中提取出年、月、日、小时的信息,构建“YYYYMMDDHH”形式的字符串作为时间节点名称,根据节点名称从终端节点属性表中查找对应记录,若记录存在则从记录中提取出节点标识ID作为时间节点标识ID,以及节点属性作为时间节点属性;若记录不存在则计算当前时间戳属于星期几,并构建时间节点属性,在终端节点属性表中新建一条记录,分别将“YYYYMMDDHH”形式的字符串、星期几、3记录在终端节点属性表中的节点名称、节点属性、节点类型域中。
3.1.6根据公式一以及3.1.5步得到的时间节点标识ID、时间节点属性、位置节点标识ID、位置节点属性、前序应用节点标识ID、前序应用节点属性,利用公式一计算当前时间节点、位置节点、前序应用节点的有效嵌入表示vt、vl、vp。串联vt、vl、vp生成v=(vt,vl,vp),v作为神经网络模型的输入,根据公式二计算概率向量,概率向量中存在NA个元素,其中第j个元素值表示独热编码值向量中第j个元素为1的应用对应的概率值,表示该应用可能的是下一个启动应用的概率,NA为正整数。
3.1.7应用启动预测模块对概率向量中的每一个元素按照从大到小的顺序进行排序,选择概率最大的元素值,令该元素值处于概率向量的第x个位置,找到独热编码值向量第x个元素值为1的应用,即为预测结果,将预测结果(应用的名称)发送给应用启动加速模块。
3.2应用启动加速模块从应用启动预测模块接收预测得到的应用名称,根据预测得到的应用请求系统创建应用进程,并且将应用资源提前载入到内存:
3.2.1应用启动加速模块根据得到的应用名称构建相关Intent请求,发送给服务进程ActivityManagerService。
3.2.2服务进程ActivityManagerService调用PackageManagerService解析应用相关信息,使用容器类ResolveInfo保存解析出来的信息。
3.2.3应用启动加速模块调用服务进程ActivityManagerService进一步对应用授予的权限进行检查,如应用使用过程中需要请求网络,应用是否持有网络访问权限。并新建一个保存Activity信息的数据结构ActivityRecord,主要包括launchedFromPid(当前Activity的进程标识)、launchedFromUid(当前Activity进程的创建者)、launchedFromPackage(当前Activity进程的安装包)、Intent(意图请求)、state(当前Activity的状态)等信息,并通过它管理活动。
3.2.4应用启动加速模块为Activity分配任务栈。首先综合计算活动的启动模式;调用安卓系统的getReusableIntentActivity()方法查找是否有可以重用的活动进程,如果有可重用的活动进程,把原来活动进程信息替换成当前活动的信息,如果没有可重用的活动进程,寻找可以重用的任务进程,如果没有可以重用的任务进程,新建一个TaskRecord类(存储任务栈的描述信息)。
3.2.5应用启动加速模块创建进程对应的实体ProcessRecord(记录进程信息的对象),委托ZygoteProcess进程将所有启动参数都通过socket的写入流发送给Zygote。服务进程Zygote接收请求后孵化一个子进程。
3.2.6应用启动加速模块调用安卓系统的handleChildProc()方法初始化Runtime(安卓系统中应用的运行环境),包括未捕捉异常、Java虚拟机的堆内存利用率等的设置。然后调用ActivityThread(安卓应用进程的初始类)初始化主线程。
3.2.7应用启动加速模块调用安卓系统的ActivityThread类的attah()方法将服务进程Zygote孵化出的子进程注册到SystemServer服务进程。
3.2.8应用启动加速模块通知应用创建Application(安卓框架的一个系统组件,存储应用的系统信息),初始化应用的上下文以及各种资源。
3.2.9应用启动加速模块调用ActivityThread类初始化WindowManagerGlobal类(是安卓系统中一个管理界面控件的类)以及相关显示资源,然后调用安卓系统的类加载器加载对应的Activity对应的类并在系统内存中实例化应用资源。
3.2.10应用启动加速模块初始化活动的窗口,新建相关的视图,向系统请求分配显示资源。
3.2.11应用启动加速模块调用AMS服务进程,将载入的应用状态设置为暂停。
3.2步操作完成以后,移动终端已经创建了预测得到的应用的进程,并将应用资源提前载入到了内存中。当用户在桌面点击图标的时候,如果正好选择了启动预测方法预测得到的应用,说明应用启动预测方法较为准确。由于此时已经创建了该应用进程,且应用资源已经载入到内存中,可以减少进程创建与资源载入的时间,达到了APP启动加速的效果。
采用本发明可以达到以下技术效果:
1、本发明第二步采用基于带属性异构网络嵌入的应用启动预测方法对应用启动进行预测,通过用户历史应用使用模式,可以较为精确地预测用户在下一段时间(指T2)内可能会启动的应用。
2、本发明第三步根据第二步的应用启动预测方法得到下一段时间(指T2)可能会启动的应用,实现了该应用的提前载入,在预测结果较为精确的情况下,可以减少用户等待应用启动的时间,提高用户体验。
附图说明
图1是背景技术所述安卓系统应用启动逻辑图;
图2是本发明第一步构建的基于带属性异构网络嵌入的APP启动加速系统逻辑结构图;
图3是本发明总体流程图;
图4是本发明第2.7-2.8步模型训练模块构建带属性异构网络嵌入模型以及神经网络模型的流程图。
具体实施方式
图3是本发明总体流程图;如图3所示,本发明包括以下步骤:
第一步,构建基于带属性异构网络嵌入的应用启动加速系统。该系统如图2所示,由两层构成:第一层是运行于移动终端上的数据处理模块,第二层是运行于云服务器(云端)中的模型训练系统。
数据处理模块安装在移动终端(即移动智能设备),与移动终端中安卓系统的服务层进行交互,收集、存储应用使用相关记录,并对记录进行预处理操作后生成训练相关数据存储在移动终端,然后与云端模型训练系统交互,将训练相关数据发送给云端,从云端获取根据训练相关数据生成的应用启动预测模型实现应用启动预测及应用加速。数据处理模块由数据收集模块、数据预处理模块、数据上传模块、应用启动预测模块、应用启动加速模块、终端数据库组成。服务层是数据处理模块需要从安卓系统得到的相关服务,包括ActiveManager、ActiveManagerService、TelephonyManager、WiFiManager、BatteryService五个服务进程,其中ActiveManager服务进程用于监控应用的启动、暂停、结束等操作,ActiveManagerService服务进程用于实现应用的启动、暂停、结束等操作,TelephonyManager服务进程用于获取移动设备当前所处环境的基站信息,WiFiManager服务进程用于获取当前连接的WiFi相关信息,BatteryService用于获取移动设备当前电量相关信息。
终端数据库存储应用使用相关记录以及预处理之后的应用使用相关记录。终端数据库包含三类表,一类存储应用使用相关记录,一类存储经过预处理之后的应用使用相关记录,最后一类存储应用启动预测模型相关信息。
应用使用相关记录包括应用使用记录表、基站信息表、WiFi信息表、移动终端配置信息表四个表。应用使用记录表包含四个数据域,分别为应用使用记录标识ID、应用名称、应用启动时间戳、应用使用时长,其中:应用使用记录标识ID是表明应用使用记录的唯一标识;应用名称使用应用对应的安装包名称标识;应用启动时间戳记录应用启动的时间;应用使用时长是应用从启动到结束的时长。基站信息表包含两个数据域,分别为基站标识ID、基站信息获取时间戳,其中:基站标识ID是加密之后的基站ID;基站信息获取时间戳记录从移动终端获取基站信息时的时间。WiFi信息表包含四个域,分别为WiFi信息获取时间戳、服务集标识SSID、MAC地址BSSID、WiFi速率,其中:WiFi信息获取时间戳是从移动终端获取WiFi信息时的时间;服务集标识SSID以及MAC地址BSSID都是用来标记WiFi的标识;WiFi速率记录当前时间的网络速率。移动终端配置信息表包含五个域,分别为移动终端配置记录标识ID、移动终端电量、移动终端是否处于充电状态、移动终端是否已经充满电、配置信息获取时间戳,其中:移动终端配置记录标识ID是移动终端配置信息记录的唯一标识;移动终端电量表明当前移动终端电量的多少;移动终端是否处于充电状态说明移动终端是否正在充电;移动终端是否已经充满电表明移动终端是否电已充满;配置信息获取时间戳记录获取配置信息的时间。
为保存带属性异构网络、训练数据,预处理之后的应用使用相关记录包含终端节点属性表、终端训练数据表两个表。终端节点属性表存储带属性异构网络的节点的相关信息。带属性异构网络包含时间、位置、应用三种节点,还包含时间与应用、位置与应用、前序应用与应用三种边关系,可将三种边的关系看成是三个子网络。终端节点属性表包含四个域,分别为节点标识ID、节点名称、节点属性、节点类型;节点标识ID是节点在异构网络中的唯一标识,根据每一个节点名称生成对应的节点标识ID;节点包含应用节点、时间节点、位置节点三种节点,因此节点名称有三类:应用结点名称是应用使用记录表中的应用名称,节点类型使用数值1标记,节点属性使用应用类别对应的独热编码表示;时间节点名称使用hour of day标识,形式为YYYYMMDDHH,表示某年某月某日的某个小时,节点类型使用数值2标记,节点属性使用时间节点所在的星期几表示,表示为数值1到7;位置节点名称使用基站标识ID表示,同一个基站表示同一个位置,节点类型使用数值3标记,节点属性使用基站对应的独热编码表示。终端训练数据表存储训练数据,即预处理之后的应用使用记录,包含四个域,分别为应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID,其中:应用节点标识ID、时间结点标识ID、位置节点标ID、前序应用节点标识ID均从终端节点属性表获得,是应用节点、时间节点、位置节点、前序应用节点的唯一标识,前序应用节点表示使用当前应用之前的应用。
终端数据库第三类表存储应用启动预测模型相关信息,从云端获取的应用启动预测模型以文件的形式存储在移动终端,使用终端模型索引表存储模型文件在移动终端的位置信息,以便能够有效并迅速查找到对应模型。终端模型索引表记录应用启动预测模型相关信息,包含三个域,分别为模型存储时间戳、模型文件名称、模型文件位置,其中:模型存储时间戳是移动终端存储从云端获取启动预测模型的时间;模型文件名称以“模型名称_时间戳”形式表示,模型名称指启动预测模型(包含带属性异构网络嵌入模型以及神经网络模型两个模型)的命名;模型文件位置记录存储启动预测模型的文件在移动终端上的位置。
云服务器上安装有模型训练系统,模型训练系统负责训练数据的接收与存储、启动预测模型的训练以及训练后的启动预测模型的下发,由应用记录存储模块、模型训练模块、模型交互模块以及云端数据库组成。
云端数据库包含云端训练数据表、云端节点属性表、云端模型索引表三个表。云端训练数据表与终端数据库中的终端训练数据表对应,存储终端用户上传到云端的训练数据,包含五个域,分别为用户标识ID、应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID,其中:用户标识ID是移动终端对应用户的唯一标识;应用节点标识ID、时间结点标识ID、位置节点标ID、前序应用标识ID是应用节点、时间节点、位置节点、前序应用节点的唯一标识,与终端节点属性表中的相同。云端节点属性表包含五个域,分别为用户标识ID、节点标识ID、节点名称、节点属性、节点类型,其中用户标识ID与云端训练数据表中的相同,节点标识ID、节点名称、节点属性、节点类型与终端节点属性表中的相同。云端模型索引表记录云端生成的启动预测模型对应的索引信息,包含四个域,分别为用户标识ID、模型创建时间戳、模型存储文件名称、模型存储文件位置,其中:用户标识ID与云端训练数据表中的相同;模型创建时间戳是云端生成启动预测模型的时间;模型存储文件名称以“用户标识ID_模型名称_时间戳”形式表示,其中的“模型名称_时间戳”与终端模型索引表中的相同;模型文件位置记录存储启动预测模型的文件在云端的位置。
数据收集模块与终端数据库、服务进程ActivityManager、服务进程TelephonyManager、服务进程WiFiManager、服务进程BatteryService相连。数据收集模块利用这4个服务进程从移动终端收集用户的应用使用记录,包括应用启动时间戳、应用使用时长、当前使用的基站信息、当前连接的WiFi信息、设备配置信息(是否处于满电状态、是否处于充电状态),并将这些信息分别存储到终端数据库的应用使用记录表、基站信息表、WiFi信息表、移动设备配置信息表。
数据预处理模块与数据上传模块、终端数据库相连。数据预处理模块对从终端数据库中获取的应用使用记录表、基站信息表读取的数据进行预处理,生成与启动预测模型匹配的终端节点属性表、终端训练数据表。数据预处理模块从终端数据库的应用使用记录表获取应用名称、应用,从基站信息表获取基站相关信息,将这些信息转化成带属性异构网络相关信息,将节点名称以及节点属性存储到终端数据库的终端节点属性表中;并根据应用使用记录表、基站信息表、WiFi信息表、移动设备配置信息表生成与云端启动预测模型匹配的训练数据,包括应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID,存储到终端数据库的终端训练数据表中。数据预处理模块向数据上传模块发送第一数据上传请求(包含终端训练数据表中的N条记录、终端节点属性表中的M条记录,N和M均为正整数)。
数据上传模块与数据预处理模块、云端的应用记录存储模块相连,用于向云端上传与启动预测模型匹配的训练数据以及节点属性信息。数据上传模块从数据预处理模块接收第一数据上传请求,从中提取训练数据以及节点属性信息,调用服务进程WiFiManager获取移动终端的mac地址作为用户标识ID,向云端的应用记录存储模块发送第二数据上传请求(包含用户标识ID、终端训练数据表中的N条记录、终端节点属性表中的M条记录)。
应用记录存储模块与数据上传模块、云端数据库相连,应用记录存储模块接收数据上传模块的第二数据上传请求,从第二数据上传请求中提取用户标识ID、训练数据、节点属性三类信息,将训练数据存入云端数据库的云端训练数据表,将节点属性存入云端节点属性表。
模型训练模块与云端数据库相连,从云端数据库的云端训练数据表获取训练数据,从云端节点属性表获取节点属性,训练并存储应用启动预测模型。应用启动预测模型由带属性异构网络嵌入模型以及神经网络模型构成。首先在云端预设一个文件夹存储模型文件,命名为“云端模型文件夹”。模型训练模块从云端训练数据表获取用户对应的训练数据,将云端训练数据表中每一条记录拆分成三个节点对,根据节点对表示的信息构建带属性异构网络,并计算节点对出现的频率作为异构网络中边的权重;拆解异构网络生成训练样本对,从云端节点属性表中根据节点标识ID获取训练样本对对应的节点属性信息;构建一个带属性异构网络嵌入模型,并采用拆解得到的每一个训练样本对对带属性异构网络嵌入模型进行训练;将带属性异构网络嵌入模型以文件的形式存储在“云端模型文件夹”中,将带属性异构网络嵌入模型的索引信息存储到云端模型索引表;构建一个单隐层(即只包含输入层、一个隐藏层、输出层三层)的神经网络模型,根据带属性异构网络嵌入方法得到云端训练数据表中的每一条记录对应的时间、位置、前序应用节点对应的嵌入表示向量,融合三个嵌入表示向量作为输入训练神经网络模型,将神经网络模型以文件的形式存储在“云端模型文件夹”中,将神经网络模型的索引信息存储到云端模型索引表。
模型交互模块与云端数据库、应用启动预测模块相连,模型交互模块从应用启动预测模块接收应用启动预测模型请求(参数为用户标识ID),根据用户标识ID从云端数据库的云端模型索引表中获取应用启动预测模型即带属性异构网络嵌入模型以及神经网络模型的索引信息,提取两个模型存储文件位置信息,并将两个模型文件发送给应用启动预测模块。
应用启动预测模块与模型交互模块、终端数据库、应用启动加速模块、服务层相连。应用启动预测模块在移动终端预设一个文件夹存储模型文件,命名为“终端模型文件夹”。应用启动预测模块向模型交互模块发送应用启动预测模型请求,接收来自模型交互模块的应用启动预测模型文件,构建当前时间、位置、前序应用节点及对应属性信息,采用带属性异构网络嵌入模型得到三个节点对应的嵌入表示向量,采用神经网络模型对串联三个节点对应的嵌入表示向量进行处理得到概率向量,概率向量中的每一个值代表对应应用可能是下一个启动应用的概率,应用启动预测模块将预测结果即根据概率向量提取最大概率值对应的应用名称传递给应用启动加速模块。
应用启动加速模块与应用启动预测模块、服务进程ActiveManagerService相连,用于提前载入即将启动的应用。应用启动加速模块接收应用启动预测模块的预测结果,向服务进程ActiveManagerService发送Intent请求,请求提前载入应用。
第二步,基于带属性异构网络嵌入的应用启动加速系统为每个用户构建应用启动预测模型,即构建带属性异构网络嵌入模型以及神经网络模型,方法为:
2.1数据收集模块利用安卓系统提供的服务进程从移动终端收集用户的应用使用记录,包括:利用ActiveManager服务进程监控应用的启动、暂停、结束等操作,记录应用启动时间戳、应用名称,根据应用的启动时间与结束时间计算应用使用时长,存储到终端数据库应用使用记录表;利用TelephonyManager服务进程获取移动设备当前所处环境的基站标识ID并对基站标识ID加密,记录当前的时间戳,存储到终端数据库基站信息表;利用WiFiManager服务进程获取当前连接的WiFi相关信息,存储到终端数据库WiFi信息表;利用BatteryService获取移动终端当前电量,判断当前设备是否处于充电状态,是否处于满电状态,存储到终端数据库移动终端配置信息表中。
2.2数据预处理模块从终端数据库的应用使用记录表读取用户的应用名称、应用启动时间戳、应用使用时长,从基站信息表读取基站标识ID、基站信息获取时间戳,从移动终端配置信息表中读取移动设备电量、移动终端是否处于充电状态、移动终端是否已经充满电、配置信息获取时间戳,对读取的信息进行预处理,提取出应用、时间、位置三类上下文信息,将这三类信息作为异构网络中的三类节点,构建三类节点对应的节点属性信息,生成终端节点属性表;继续解析从终端数据库中读取出来的数据,提取出应用节点、时间节点、位置节点、前序应用节点组成一条训练数据;根据所有训练数据、终端节点属性表生成终端训练数据表,并将包含终端训练数据表中所有记录、终端节点属性表中所有记录的第一数据上传请求发送给数据上传模块。方法是:
2.2.1数据预处理模块在终端数据库建立临时数据表,存储生成训练数据的中间数据,包含五个域,分别为应用名称、应用启动时间戳、前序应用名称、基站标识ID、应用启动时间,其中:应用名称标识一个应用;应用启动时间戳记录应用启动的时间;前序应用名称记录当前应用启动的上一个应用;基站标识ID记录当前应用使用时所处的基站环境;应用启动时间在临时数据表中是指从应用启动时间戳中提取出的一种表示形式,使用“YYYYMMDDHH”形式表示,其中“YYYY”表示年份,“MM”表示月份,“DD”表示几号,“HH”表示小时,用来表示时间节点的名称。
2.2.2数据预处理模块从终端数据库的应用使用记录表提取除桌面应用、短信应用、电话应用的相关记录以外的所有记录,按时间升序对提取的记录进行排序以查找前序应用;然后提取每一条记录中的应用名称、应用启动时间戳,提取每一条记录的前一条记录中的应用名称作为前序应用名称,存入临时数据表。第一条记录没有对应的前序应用,因此不记录第一条记录。令临时数据表中共有N条记录。
2.2.3数据预处理模块查找应用使用记录对应的位置信息。为了找到应用使用记录表中对应记录所处的基站信息,从终端数据库中的基站信息表选择在应用开始前5分钟和应用结束后5分钟之间的基站信息,选择时间最接近的连接的基站的基站标识ID作为应用使用记录的位置信息,并根据每条应用使用记录将基站标识ID存入训练数据临时表。如果不存在这样的基站信息,将临时数据表中对应记录的基站标识ID标记为空。
2.2.4数据预处理模块构建时间节点,从终端训练数据表中提取每条记录的应用启动时间戳,从应用启动时间戳中提取时间,以一个小时为时间刻度,生成“YYYYMMDDHH”的字符串形式,表示某年某月某日某个时辰,作为时间节点的名称并存入临时数据表中的应用启动时间域。
2.2.5数据预处理模块生成应用、时间、位置节点。从临时数据表中提取表中记录的所有应用启动时间、基站标识ID、应用名称放在集合A中,对提取的信息执行去重操作,相同的应用启动时间、基站标识ID、应用名称只留下一个,防止在后续操作中同样的应用启动时间、基站标识ID、应用名称生成不一样的节点;将去重后的集合A中的应用启动时间、基站标识ID、应用名称作为异构网络中节点的节点名称,节点类型分别使用数值1、2、3表示,数值1在节点类型中表示应用节点,数值2在节点类型中表示位置节点,数值3在节点类型中表示时间节点。为了方便标记,对集合A中的节点使用自增序列进行唯一标序,并按照序列号-节点名称-节点类型的对应关系分别将每个节点的序列号、节点名称、节点类型存入终端数据库的终端节点属性表中的节点标识ID、节点名称、节点类型域。由于根据节点名称进行了去重操作,因此可以保证每个节点在终端节点属性表中只存在一条记录。
2.2.6数据预处理模块构建终端节点属性表中每个节点的属性信息。将所有应用类型进行独热编码,使用应用所属类型对应独热编码值作为应用节点属性信息;从终端节点属性表中提取应用启动时间,从应用启动时间中提取该时间所在是星期几,使用星期几作为时间节点属性信息;从临时数据表中不重复提取所有基站标识ID,对基站标识ID进行独热编码,位置节点使用基站标识ID对应的独热编码值作为节点属性信息。将每个节点对应的属性信息存储到终端节点属性表的节点属性域中。
2.2.7数据预处理模块根据临时数据表、终端节点属性表生成终端训练数据表,方法是:
2.2.7.1初始化变量n=1;
2.2.7.2获取临时数据表中的第n条记录,提取记录中的应用启动时间、基站标识ID、前序应用名称、应用名称;
2.2.7.3将从2.2.7.2步骤中得到的应用启动时间、基站标识ID、前序应用名称、应用名称作为节点名称,根据节点名称从终端节点属性表获取对应的节点标识ID,包括时间节点标识ID、位置节点标识ID、前序应用节点标识ID、应用节点标识ID,将四个节点标识ID存入终端训练数据表对应的时间节点标识ID、位置节点标识ID、前序应用节点标识ID、应用节点标识ID域,生成终端训练数据表的第n条记录,形式为:(应用节点标识ID,时间节点标识ID,位置节点标识ID,前序应用节点标识ID)。如果基站标识ID为空,则位置节点标识ID也记录为空。
2.2.7.4若n≤N,转2.2.7.1;若n>N,转2.2.8。
2.2.8数据预处理模块对终端训练数据表进行数据清洗,清除表中位置节点标识ID域带有空值的记录。
2.2.9数据预处理模块向数据上传模块发送第一数据上传请求(包含终端训练数据表中所有记录(N条记录)、终端节点属性表中所有记录(M条记录)),N和M均为正整数。
2.3数据上传模块接收来自数据预处理模块的第一数据上传请求,利用服务进程WiFiManager获取移动终端的mac地址,将移动终端的mac地址作为终端对应用户的用户标识ID,将用户标识ID和第一数据上传请求拼成第二数据上传请求(包含用户标识ID、终端训练数据表中所有记录(N条记录)、终端节点属性表中所有记录(M条记录)),将第二数据上传请求发送给云端应用记录存储模块。
2.4云端应用记录存储模块接收来自终端数据上传模块的第二数据上传请求,从第二数据上传请求中提取出用户标识ID、训练数据、节点属性,将训练数据存入云端训练数据表中,将节点属性存入云端节点属性表中。方法是:
2.4.1从第二数据上传请求中提取出用户标识ID;
2.4.2从第二数据上传请求中提取出训练数据,统计训练数据的条数,得到N的具体数值;
2.4.3获取初始化变量n=1;
2.4.4获取训练数据中的第n条数据,提取数据中的应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID;
2.4.5将得到的用户标识ID以及从第n条数据中提取出的应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID,存入云端训练数据表中对应的用户标识ID、应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID域中。
2.4.6若n≤N,转2.4.3;若n>N,转2.4.7。
2.4.7从第二数据上传请求中提取出节点属性,统计节点属性数据的条数,得到M的具体数值;
2.4.8获取初始化变量m=1;
2.4.9获取节点属性中的第m条数据,提取数据中的节点标识ID、节点名称、节点属性、节点类型;
2.4.10将得到的用户标识ID以及从第m条数据中提取出的节点标识ID、节点名称、节点属性、节点类型,分别存入云端节点属性表的用户标识ID、节点标识ID、节点名称、节点属性、节点类型域中。
2.4.11若m≤M,转2.4.8;若m>M,转2.5。
2.5令云端训练数据表中不同用户的数量为U;
2.6初始化变量u=1;
2.7模型训练模块将训练数据转换成为一个带属性的异构网络,根据三类边关系将带属性异构网络划分为三个子网络,利用节点对及其对应的属性信息分别训练这三个子网络,通过这三个子网络得到时间节点、位置节点、前序应用节点的有效嵌入表示向量,构建一个带属性异构网络嵌入模型。具体方法如图4所示:
2.7.1根据第u个用户标识ID从云端节点属性表提取出所有节点标识ID,每个节点标识ID分为应用节点、时间节点、位置节点三类,将这三类节点作为异构网络中的节点。根据第u个用户标识ID从云端训练数据表获取相应用户的训练数据,每条训练数据形式为(用户标识ID,应用节点标识ID,时间节点标识ID,位置节点标识ID,前序应用节点标识ID),将每条训练数据拆分成三个节点对,分别为(应用节点标识ID,时间节点标识ID,1)、(应用节点标识ID,位置节点标识ID,2)、(应用节点标识ID,前序应用节点标识ID,3),其中数值1、2、3表示的是节点对类型,也是边类型。其中:节点对(应用节点标识ID,时间节点标识ID,1)表示在时间节点标识ID表示的时间使用过应用节点标识ID表示的应用,在异构网络中连接该应用节点与时间节点;节点对(应用节点标识ID,位置节点标识ID,2)表示在位置节点标识ID表示的位置使用过应用节点标识ID表示的应用,在异构网络中连接该应用节点与位置节点;节点对(应用节点标识ID,前序应用节点标识ID,3)表示在使用应用节点标识ID表示的应用之前使用的前序应用节点标识ID表示的应用,在异构网络中连接该应用节点与前序应用节点。同时记录相同节点对的出现频次作为边的权重。根据上述操作将训练数据转化成了一个异构网络,包括应用节点、时间节点、位置节点三类节点,以及应用节点与时间节点、应用节点与位置节点、应用节点与前序应用节点三类边连接关系,根据三种边连接关系将异构网络划分为三个子网络。在数据转换成异构网络的过程中,分别记录异构网络中三个子网络的节点,将子网络中所有节点标识ID分别存储在集合NS1、NS2、NS3中,分别记录集合中节点个数为M1、M2、M3,下标1、2、3分别对应边类型;
2.7.2采用随机游走算法生成链路。根据2.7.1步生成的异构网络,依据三种边连接关系划分为三个子网络,分别以异构网络中三个子网络中的每一个节点为开始节点,生成第一链路列表LIST1、第二链路列表LIST2、第三链路列表LIST3,LISTr存放边类型为r的子网络中NSr个节点生成的NSr×20条长度为10的链路,1≤r≤3。方法是:
2.7.2.1初始化第一链路列表LIST1、第二链路列表LIST2、第三链路列表LIST3为空;
2.7.2.2初始化变量r=1,初始化一个临时列表LIST_TEMP为空;
2.7.2.3初始化变量m=1;
2.7.2.4初始化变量l=1,初始化一个节点链表L,用于存放以第m个节点为起始节点的链路上的节点标识ID;
2.7.2.5从节点标识ID集合NSr中获取第m个节点标识ID,将节点标识ID作为节点链表L的第一个节点存入节点链表L中;
2.7.2.6初始化变量i=1;
2.7.2.7选择节点链表L中的中第i个节点的邻居节点加入到节点链表L中;
2.7.2.8若i<10,令i=i+1,转2.7.2.7;若i>=10,转2.7.2.9;
2.7.2.9将节点链表L添加到临时列表LIST_TEMP中;
2.7.2.10若l≤20,令l=l+1,转2.7.2.5;若l>20,转2.7.2.11;
2.7.2.11若m≤Mr,令m=m+1,转2.7.2.4;若m>Mr,转2.7.2.12;
2.7.2.12将列表LIST_TEMP添加到列表LISTr中;
2.7.2.13若r≤3,令r=r+1,转2.7.2.3;若r>3,转2.7.3;
2.7.3采用skip-gram方法生成训练样本对,将训练样本对存入临时文件data_train.txt中。skip-gram算法的基本思想是构建一个神经网络,使用一句话中的某个词作为输入,使用输入的词的前后k个词作为输出,以用于预测与给定词相对应的上下文词。具体方法如下:
2.7.3.1初始化变量r=1;
2.7.3.2获取第r链路列表LISTr,是从边类型为r的子网络中生成的;
2.7.3.3统计链路列表LISTr中的链路条数,记为LN;
2.7.3.4初始化变量l=1;
2.7.3.5从链路列表LISTr中获取第l条节点链路L;
2.7.3.6初始化变量i=1;
2.7.3.7若在节点链路L中找到有效的第i-2个节点,生成训练样本对(节点标识IDi,节点标识IDi-2,r);若在链路L中找到有效的第i-1个节点,生成训练样本对(节点标识IDi,节点标识IDi-1,r);若在链路L中找到有效的第i+1个节点,生成训练样本对(节点标识IDi,节点标识IDi+1,r);若在链路L中找到有效的第i+2个节点,生成训练样本对(节点标识IDi,节点标识IDi+2,r);“有效”指能在节点链路L中找到,若i-2、i-1大于0则表示能在节点链路L中找到,即为有效;若i+1、i+2小于等于10则表示能在节点链路L中找到,也为有效。
2.7.3.8将2.7.3.7步生成的训练样本对信息存入文件data_train.txt中;
2.7.3.9若i≤10,令i=i+1,转2.7.3.7;若i>10,转2.7.5.10;
2.7.3.10若l≤LN,令l=l+1,转2.7.3.5;若l>LN,转2.7.3.11;
2.7.3.11若r≤3,令r=r+1,转2.7.3.2;若r>3,转2.7.4;
2.7.4根据带属性网络嵌入方法--GATNE方法利用2.7.3步得到的训练样本对和根据节点标识ID从云端节点属性表获取的对应节点属性值构建一个带属性异构网络嵌入模型,为网络中每个节点生成嵌入表示向量。如公式一所示,在边类型为r的子网络中,节点i的嵌入表示为向量vi,r:
其中:r表示边类型,r是正整数,1≤r≤3;xi是节点i的属性;hz(xir)是一个变换函数,其作用是计算xir在节点的嵌入表示中的影响,是节点i的基础嵌入;Uir是节点i在三个子网络中的边嵌入向量拼接成的一个向量,表示节点i与其邻居节点的关系,每个节点在每一个子网络中聚合固定数量的邻居节点的节点属性均值作为该节点在该子网络中的边嵌入向量,Ui由节点i在三个子网络中得到的边嵌入向量串联而成;根据自注意力机制,air,r是作为在边类型为r的子网络中的节点i的边嵌入向量的权重,根据公式 计算得到,实际上是一个简单前馈神经网络,Wr是转化矩阵,需要模型训练优化得到,Uir在自注意力机制中表示隐藏层状态,tanh()是WrUi的激活函数,softmax()是一个归一化函数,将在负无穷到正无穷上的结果转换为0-1概率;Mr是边嵌入向量的转换矩阵,表示Mr的转置,Mr中的第i个一维向量表示节点i在边类型为r的子网络中的边嵌入向量对节点i的嵌入表示的影响;αr表示在边类型为r的子网络中每个节点的边嵌入向量对于节点的嵌入表示的影响系数;Dz是节点i对应节点类型z的属性转换矩阵,其目的是为了计算新节点的嵌入表示向量,新节点与网络中的所有节点都是隔离的,Dz从节点属性相似性的角度表示节点i与网络中所有节点的相似关系,是Dz的转置;βr表示在边类型为r的子网络中,子网络中的节点属性之间的相似关系对于节点嵌入的影响系数。需要注意的是,只有在对应的子网络中,节点的嵌入表示才是有效的,即从边类型为1的子网络中得到的时间节点的嵌入表示才是有效的,从边类型为2的子网络中得到的位置节点的嵌入表示才是有效的,从边类型为3的子网络中得到的前序应用节点的嵌入表示才是有效的,而从三个子网络中得到的应用节点的嵌入表示都是有效的。
2.7.5采用2.7.3步得到的训练样本对以及2.7.4得到的节点的嵌入表示向量vi,r,使用NCE损失函数对带属性异构网络嵌入模型进行训练,优化公式一中的转换矩阵以及ai,r,训练完毕后得到异构网络中每个节点的有效嵌入表示向量。时间节点的有效嵌入表示向量使用vi,t表示,位置节点的有效嵌入表示向量使用vi,l表示,前序应用节点的有效嵌入表示向量使用vi,p表示。具体训练过程如下:
2.7.5.1从文件data_train.txt中获取训练样本对,根据训练样本对中的节点标识ID从云端节点属性表中获取对应的节点属性,令训练样本对个数为M;
2.7.5.2将训练样本对划分为B个训练样本对集合,每个训练样本对集合中有batch个训练样本,表示对M/batch上取整,最后一个训练样本对集合的训练样本对数量小于等于batch,batch为正整数(64≤batch≤256);
2.7.5.3令变量b=1;
2.7.5.4将第b个训练样本对集合中的每一个样本对及其对应的属性作为带属性异构网络嵌入模型的训练数据,计算公式一,并使用NCE损失函数求解公式一的梯度,使用随机梯度下降算法调整公式一中的转换矩阵以及ai,r。
2.7.5.5若b<=B,令b=b+1,转到2.7.5.4;若b>B,转到2.7.6;
2.7.6以文件的形式将带属性异构网络嵌入模型存储在云端预先建立的“云端模型文件夹”中,命名为“用户标识ID_GATNE_时间戳”,其中“用户标识ID”使用实际的mac地址标识,“时间戳”使用实际的时间戳标识。
2.7.7构建带属性异构网络嵌入模型索引信息,使用移动终端实际的mac地址作为用户标识ID,使用当前时间作为模型创建时间戳,“用户标识ID_GATNE_时间戳”是模型存储文件名称,“云端模型文件夹”在云端的位置/用户标识ID_GATNE_时间戳”作为模型存储文件位置,分别将上述信息存储到云端模型索引表中对应的用户标识ID、模型创建时间戳、模型存储文件名称、模型存储文件位置域中。
2.8模型训练模块构建神经网络模型,融合时间、位置、前序应用三类上下文信息进行应用启动预测,方法如图4所示:
2.8.1以节点类型域值为1检索云端节点属性表,提取出节点类型域值为1的所有的应用节点标识ID,对提取的节点标识ID进行独热编码,得到每个节点标识ID对应的独热编码值,根据应用节点标识ID-应用独热编码值的关系存入字典D中。节点类型为1的节点是应用节点。
2.8.2根据第u个用户标识ID从云端训练数据表获取相应用户的训练记录,每条训练记录形式为(用户标识ID,应用节点标识ID,时间节点标识ID,位置节点标识ID,前序应用节点标识ID),训练记录共N条;
2.8.3初始化输入向量列表INPUT_LIST、实际输出向量列表OUTPUT_LIST为空,OUTPUT_LIST中的实际输出向量是指在当前时间、位置、前序应用的情景下使用的应用对应的独热编码值向量;
2.8.4获取参数变量n=1;
2.8.5提取第n条记录中的时间节点标识ID、位置节点标识ID、前序应用标识ID,根据节点标识ID从云端节点属性表中获取对应的节点属性,将三个节点标识ID以及对应的节点属性作为带属性异构网络嵌入模型的输入,按照公式一计算三个节点对应的嵌入表示向量,分别表示为vn,t、vn,l、vn,p,其中vn,t表示在第n条记录中时间节点对应的有效嵌入表示向量,vn,l表示在第n条记录中位置节点对应的有效嵌入表示向量,vn,p表示在第n条记录中前序应用节点对应的有效嵌入表示向量。融合vn,t、vn,l、vn,p,串联组成存入输入列表INPUT_LIST;
2.8.6提取第n条记录中的应用节点标识ID,根据应用节点标识ID从字典D中获取对应的独热编码值,记为pn,存入实际输出列表OUTPUT_LIST;
2.8.7若n≤N,令n=n+1,转到2.8.5;若n>N,转到2.8.8;
2.8.8结合应用启动预测场景,根据吴恩达于2014年发表的机器学习公开课课程构建单隐层的神经网络模型,即如公式二所述的数学模型,通过神经网络模型计算第n个概率向量qn:
qn=W(2)·sigmoid(vn·W(1)+b1)+b2 公式二,
其中:W(1)、W(2)分别是神经网络模型中隐藏层和输出层的转换矩阵;vn表示INPUT_LIST中的第n个向量,融合了第n条记录中时间节点、位置节点、前序应用节点的嵌入表示向量;b1、b2分别是神经网络模型中隐藏层和输出层的偏置向量;sigmoid函数是隐藏层的激活函数;概率向量qn表示根据第n条记录得到的预测结果,qn中的第i个概率值表示独热编码值向量中第i个位置值为1对应的应用的启动概率。
2.8.9采用输入列表INPUT_LIST以及实际输出列表OUTPUT_LIST训练神经网络模型。INPUT_LIST中的每一条输入向量按照公式二计算,得到输入对应的概率向量,然后根据公式三的交叉熵损失函数H计算神经网络模型的输出即概率向量与OUTPUT_LIST中实际输出的差异,根据随机梯度下降算法优化公式二中的W(1)、W(2)、b1、b2四个变量:
在公式三中:A表示第u个用户已安装的应用数量;表示第n条记录中的实际应用对应的独热编码值向量的第j个元素;表示第n条记录中根据输入以及神经网络模型计算得到的概率向量的第j个元素。INPUT_LIST中共有N个向量,即N个输入,一个输入对应云端训练数据表中的一条记录的时间节点、位置节点、前序应用节点;OUTPUT_LIST中共有N个独热编码值向量,一个独热编码值向量对应云端训练数据表中的一条记录中的应用节点。因此输入列表INPUT_LIST与实际输出列表OUTPUT_LIST的元素数目一致,并且一一对应。具体训练过程如下:
2.8.9.1将N个输入向量划分为B2个输入集合,每个输入集合中有batch2个训练样本, 表示对N/batch2上取整,最后一个输入集合的输入向量数量小于等于batch2,batch2为正整数(64≤batch2≤256);
2.8.9.2获取参数变量b=1;
2.8.9.3第b个集合中的每一个输入作为神经网络模型的训练数据,计算公式二,根据公式二的结果计算公式三,使用随机梯度下降算法根据公式三的结果调整公式二中的W(1)、W(2)、b1、b2。
2.8.9.4若b≤B2,令b=b+1,转到2.8.9.3;若b>B2,转到2.8.10;
2.8.10以文件的形式将神经网络模型存储在云端预先建立的“云端模型文件夹”中,命名为“用户标识ID_NEURAL_时间戳”,其中“用户标识ID”使用实际的mac地址标识,“时间戳”使用实际的时间戳标识。
2.8.11构建神经网络模型索引信息,包括用户标识ID、模型创建时间戳、模型存储文件名称、模型存储文件位置,将索引信息存储到云端模型索引表。
2.9若u≤U,令u=u+1,转到2.7;若u>U,转第三步。
第三步,移动终端根据最新的应用启动预测模型进行应用预测并根据最新预测结果执行应用启动加速,方法是:
3.1应用启动预测模块按周期访问云端,保证终端预测使用的是最新的应用启动预测模型,即带属性异构网络嵌入模型以及神经网络模型,然后分别构造两个模型的输入,得到预测结果。具体方法是:
3.1.1应用启动预测模块使用安卓系统内置定时器,按周期T1(设置为两周)向模型交互模块发送下载模型请求(参数为用户标识ID,即设备的mac地址);
3.1.2模型交互模块从下载模型请求中提取出用户标识ID,根据用户标识ID从云端模型索引表获取用户对应的最新的应用启动预测模型索引记录,即最新的带属性异构网络嵌入模型以及神经网络模型的索引记录,根据记录中的模型存储文位置从“云端模型文件夹”中提取文件信息,将这两个模型发送给应用启动预测模块;
3.1.3应用启动预测模块将从模型交互模块得到的两个模型以文件的形式存储在终端“终端模型文件夹”中,将带属性异构网络嵌入模型文件命名为“GATNE_时间戳”,神经网络模型命名为“NEURAL_时间戳”,其中“时间戳”都使用当前接收模型所处的时间戳。应用启动预测模块构建两个模型的索引信息,使用当前接收模型所处的时间戳作为两个模型索引记录的模型存储时间戳,使用“GATNE_时间戳”字符串作为带属性异构网络嵌入模型索引记录的模型文件名称,使用“云端模型文件夹”在终端的位置/GATNE_时间戳”作为带属性异构网络嵌入模型索引记录的模型文件位置,使用“NEURAL_时间戳”字符串作为神经网络模型索引记录的模型文件名称,使用“云端模型文件夹”在终端的位置/NEURAL_时间戳”作为神经网络模型索引记录的模型文件位置,将两个模型的索引信息存储到终端模型索引表中。
3.1.4应用启动预测模块使用安卓系统内置定时器,按周期T2(设置为一个小时)从终端模型索引表中获取最新的应用启动预测模型的索引记录,即带属性异构网络嵌入模型以及神经网络模型的索引记录。根据带属性异构网络嵌入模型索引记录中的模型文件名称、模型文件位置在终端对应位置找到对应的带属性异构网络嵌入模型文件,根据神经网络模型索引记录中的模型文件名称、模型文件位置在终端对应位置找到对应的神经网络模型文件,从文件中提取出带属性异构网络嵌入模型与神经网络模型。
3.1.5应用启动预测模块从安卓系统服务进程TelephonyManager获取当前所处基站标识ID,根据基站标识ID从终端节点属性表中得到对应位置节点的节点标识ID作为位置节点标识ID,以及节点属性作为位置节点属性。应用启动预测模块从终端应用使用记录表中获取最新的应用使用记录,从中提取应用名称,根据应用名称从终端节点属性表中获取应用节点的节点标识ID作为前序应用节点标识ID,以及节点属性作为前序应用节点属性。应用启动预测模块获取当前时间戳,从时间戳中提取出年、月、日、小时的信息,构建“YYYYMMDDHH”形式的字符串作为时间节点名称,根据节点名称从终端节点属性表中查找对应记录,若记录存在则从记录中提取出节点标识ID作为时间节点标识ID,以及节点属性作为时间节点属性;若记录不存在则计算当前时间戳属于星期几,并构建时间节点属性,在终端节点属性表中新建一条记录,分别将“YYYYMMDDHH”形式的字符串、星期几、3记录在终端节点属性表中的节点名称、节点属性、节点类型域中。
3.1.6根据公式一以及3.1.5步得到的时间节点标识ID、时间节点属性、位置节点标识ID、位置节点属性、前序应用节点标识ID、前序应用节点属性,利用公式一计算当前时间节点、位置节点、前序应用节点的有效嵌入表示vt、vl、vp。串联vt、vl、vp生成v=(vt,vl,vp),v作为神经网络模型的输入,根据公式二计算概率向量,概率向量中存在NA个元素,其中第j个元素值表示独热编码值向量中第j个元素为1的应用对应的概率值,表示该应用可能的是下一个启动应用的概率,NA为正整数。
3.1.7应用启动预测模块对概率向量中的每一个元素按照从大到小的顺序进行排序,选择概率最大的元素值,令该元素值处于概率向量的第x个位置,找到独热编码值向量第x个元素值为1的应用,即为预测结果,将预测结果(应用的名称)发送给应用启动加速模块。
3.2应用启动加速模块从应用启动预测模块接收预测得到的应用名称,根据预测得到的应用请求系统创建应用进程,并且将应用资源提前载入到内存:
3.2.1应用启动加速模块根据得到的应用名称构建相关Intent请求,发送给服务进程ActivityManagerService。
3.2.2服务进程ActivityManagerService调用PackageManagerService解析应用相关信息,使用容器类ResolveInfo保存解析出来的信息。
3.2.3应用启动加速模块调用服务进程ActivityManagerService进一步对应用授予的权限进行检查,如应用使用过程中需要请求网络,应用是否持有网络访问权限。并新建一个保存Activity信息的数据结构ActivityRecord,主要包括launchedFromPid(当前Activity的进程标识)、launchedFromUid(当前Activity进程的创建者)、launchedFromPackage(当前Activity进程的安装包)、Intent(意图请求)、state(当前Activity的状态)等信息,并通过它管理活动。
3.2.4应用启动加速模块为Activity分配任务栈。首先综合计算活动的启动模式;调用安卓系统的getReusableIntentActivity()方法查找是否有可以重用的活动进程,如果有可重用的活动进程,把原来活动进程信息替换成当前活动的信息,如果没有可重用的活动进程,寻找可以重用的任务进程,如果没有可以重用的任务进程,新建一个TaskRecord类(存储任务栈的描述信息)。
3.2.5应用启动加速模块创建进程对应的实体ProcessRecord(记录进程信息的对象),委托ZygoteProcess进程将所有启动参数都通过socket的写入流发送给Zygote。服务进程Zygote接收请求后孵化一个子进程。
3.2.6应用启动加速模块调用安卓系统的handleChildProc()方法初始化Runtime(安卓系统中应用的运行环境),包括未捕捉异常、Java虚拟机的堆内存利用率等的设置。然后调用ActivityThread(安卓应用进程的初始类)初始化主线程。
3.2.7应用启动加速模块调用安卓系统的ActivityThread类的attah()方法将服务进程Zygote孵化出的子进程注册到SystemServer服务进程。
3.2.8应用启动加速模块通知应用创建Application(安卓框架的一个系统组件,存储应用的系统信息),初始化应用的上下文以及各种资源。
3.2.9应用启动加速模块调用ActivityThread类初始化WindowManagerGlobal类(是安卓系统中一个管理界面控件的类)以及相关显示资源,然后调用安卓系统的类加载器加载对应的Activity对应的类并在系统内存中实例化应用资源。
3.2.10应用启动加速模块初始化活动的窗口,新建相关的视图,向系统请求分配显示资源。
3.2.11应用启动加速模块调用AMS服务进程,将载入的应用状态设置为暂停。
Claims (11)
1.一种基于带属性异构网络嵌入的APP启动加速方法,其特征在于使用一种带属性异构网络嵌入的APP启动预测方法预测下一个可能启动的应用,利用安卓系统提供的各种服务进程实现应用的提前载入,具体包含如下步骤:
第一步,构建基于带属性异构网络嵌入的应用启动加速系统,该系统由两层构成:第一层是运行于移动终端上的数据处理模块,第二层是运行于云端的模型训练系统;
数据处理模块安装在移动终端,与移动终端中安卓系统的服务层进行交互,收集、存储应用使用相关记录,并对记录进行预处理操作后生成训练相关数据存储在移动终端,然后与云端模型训练系统交互,将训练相关数据发送给云端,从云端获取根据训练相关数据生成的应用启动预测模型实现应用启动预测及应用加速;数据处理模块由数据收集模块、数据预处理模块、数据上传模块、应用启动预测模块、应用启动加速模块、终端数据库组成;服务层是数据处理模块需要从安卓系统得到的相关服务,包括ActiveManager、ActiveManagerService、TelephonyManager、WiFiManager、BatteryService五个服务进程;
终端数据库存储应用使用相关记录以及预处理之后的应用使用相关记录,包含三类表,一类存储应用使用相关记录,一类存储经过预处理之后的应用使用相关记录,最后一类存储应用启动预测模型相关信息;
应用使用相关记录包括应用使用记录表、基站信息表、WiFi信息表、移动终端配置信息表四个表;应用使用记录表包含四个数据域,分别为应用使用记录标识ID、应用名称、应用启动时间戳、应用使用时长,其中:应用使用记录标识ID是表明应用使用记录的唯一标识;应用名称使用应用对应的安装包名称标识;应用启动时间戳记录应用启动的时间;应用使用时长是应用从启动到结束的时长;基站信息表包含两个数据域,分别为基站标识ID、基站信息获取时间戳,其中:基站标识ID是加密之后的基站ID;基站信息获取时间戳记录从移动终端获取基站信息时的时间;WiFi信息表包含四个域,分别为WiFi信息获取时间戳、服务集标识SSID、MAC地址BSSID、WiFi速率,其中:WiFi信息获取时间戳是从移动终端获取WiFi信息时的时间;服务集标识SSID以及MAC地址BSSID都是用来标记WiFi的标识;WiFi速率记录当前时间的网络速率;移动终端配置信息表包含五个域,分别为移动终端配置记录标识ID、移动终端电量、移动终端是否处于充电状态、移动终端是否已经充满电、配置信息获取时间戳,其中:移动终端配置记录标识ID是移动终端配置信息记录的唯一标识;移动终端电量表明当前移动终端电量的多少;移动终端是否处于充电状态说明移动终端是否正在充电;移动终端是否已经充满电表明移动终端是否电已充满;配置信息获取时间戳记录获取配置信息的时间;
预处理之后的应用使用相关记录包含终端节点属性表、终端训练数据表两个表;终端节点属性表存储带属性的异构网络的节点的相关信息,带属性的异构网络包含时间、位置、应用三种节点,还包含时间与应用、位置与应用、前序应用与应用三种边关系;终端节点属性表包含四个域,分别为节点标识ID、节点名称、节点属性、节点类型;节点标识ID是节点在异构网络中的唯一标识,根据每一个节点名称生成;应用节点名称是应用使用记录表中的应用名称,节点类型使用数值1标记,节点属性使用应用类别对应的独热编码表示;时间节点名称使用hour of day标识,形式为YYYYMMDDHH,表示某年某月某日的某个小时,节点类型使用数值2标记,节点属性使用时间节点所在的星期几表示,表示为数值1到7;位置节点名称使用基站标识ID表示,同一个基站表示同一个位置,节点类型使用数值3标记,节点属性使用基站对应的独热编码表示;终端训练数据表中存储训练数据,即预处理之后的应用使用记录,包含四个域,分别为应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID,其中:应用节点标识ID、时间结点标识ID、位置节点标ID、前序应用节点标识ID均从终端节点属性表获得,前序应用节点表示使用当前应用之前的应用;
终端数据库第三类表存储应用启动预测模型相关信息,从云端获取的应用启动预测模型以文件的形式存储在移动终端,使用终端模型索引表存储模型文件在移动终端的位置信息;终端模型索引表记录应用启动预测模型相关信息,包含三个域,分别为模型存储时间戳、模型文件名称、模型文件位置,其中:模型存储时间戳是移动终端存储从云端获取启动预测模型的时间;模型文件名称以“模型名称_时间戳”形式表示,模型名称指启动预测模型的命名;模型文件位置记录存储启动预测模型的文件在移动终端上的位置;
云服务器上安装有模型训练系统,模型训练系统负责训练数据的接收与存储、启动预测模型的训练以及训练后的启动预测模型的下发,由应用记录存储模块、模型训练模块、模型交互模块以及云端数据库组成;
云端数据库包含云端训练数据表、云端节点属性表、云端模型索引表三个表;云端训练数据表与终端数据库中的终端训练数据表对应,存储终端用户上传到云端的训练数据,包含五个域,分别为用户标识ID、应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID,其中:用户标识ID是移动终端对应用户的唯一标识;应用节点标识ID、时间结点标识ID、位置节点标ID、前序应用标识ID与终端节点属性表中的相同;云端节点属性表包含五个域,分别为用户标识ID、节点标识ID、节点名称、节点属性、节点类型,其中用户标识ID与云端训练数据表中的相同,节点标识ID、节点名称、节点属性、节点类型与终端节点属性表中的相同;云端模型索引表记录云端生成的启动预测模型对应的索引信息,包含四个域,分别为用户标识ID、模型创建时间戳、模型存储文件名称、模型存储文件位置,其中:用户标识ID与云端训练数据表中的相同;模型创建时间戳是云端生成启动预测模型的时间;模型存储文件名称以“用户标识ID_模型名称_时间戳”形式表示,其中的“模型名称_时间戳”与终端模型索引表中的相同;模型文件位置记录存储启动预测模型的文件在云端的位置;
数据收集模块与终端数据库、服务进程ActivityManager、服务进程TelephonyManager、服务进程WiFiManager、服务进程BatteryService相连;数据收集模块利用这4个服务进程从移动终端收集用户的应用使用记录,包括应用启动时间戳、应用使用时长、当前使用的基站信息、当前连接的WiFi信息、设备配置信息,并将收集的信息分别存储到终端数据库的应用使用记录表、基站信息表、WiFi信息表、移动设备配置信息表;
数据预处理模块与数据上传模块、终端数据库相连,数据预处理模块对从终端数据库中获取的应用使用记录表、基站信息表读取的数据进行预处理,生成与启动预测模型匹配的终端节点属性表、终端训练数据表,向数据上传模块发送第一数据上传请求,第一数据上传请求中包含终端训练数据表中的N条记录、终端节点属性表中的M条记录,N和M均为正整数;
数据上传模块与数据预处理模块、云端的应用记录存储模块相连,用于向云端上传与启动预测模型匹配的训练数据以及节点属性信息;数据上传模块从数据预处理模块接收数据上传请求,从中提取训练数据以及节点属性信息,获取用户标识ID,向云端的应用记录存储模块发送第二数据上传请求,第二数据上传请求中包含用户标识ID、终端训练数据表中的N条记录、终端节点属性表中的M条记录;
应用记录存储模块与数据上传模块、云端数据库相连,用于接收移动终端上传的训练数据、节点属性并存储到云端数据库中;应用记录存储模块接收数据上传模块的第二数据上传请求,从第二数据上传请求中提取用户标识ID、训练数据、节点属性,将训练数据存入云端数据库的云端训练数据表,将节点属性存入云端节点属性表;
模型训练模块与云端数据库相连,从云端数据库的云端训练数据表获取训练数据,从云端节点属性表获取节点属性,训练并存储应用启动预测模型,应用启动预测模型由带属性异构网络嵌入模型以及神经网络模型构成;云端预设有一个“云端模型文件夹”来存储模型文件;模型训练模块从云端训练数据表获取用户对应的训练数据,将云端训练数据表中每一条记录拆分成三个节点对,根据节点对表示的信息构建带属性的异构网络,并计算节点对出现的频率作为异构网络中边的权重;拆解异构网络生成训练样本对,从云端节点属性表中根据节点标识ID获取训练样本对对应的节点属性信息;构建一个带属性异构网络嵌入模型,并采用拆解得到的每一个训练样本对对带属性异构网络嵌入模型进行训练;将带属性异构网络嵌入模型以文件的形式存储在“云端模型文件夹”中,将带属性异构网络嵌入模型的索引信息存储到云端模型索引表;构建一个单隐层的神经网络模型,根据带属性异构网络嵌入方法得到云端训练数据表中的每一条记录对应的时间、位置、前序应用节点对应的嵌入表示向量,融合三个嵌入表示向量作为输入训练神经网络模型,将神经网络模型以文件的形式存储在“云端模型文件夹”中,将神经网络模型的索引信息存储到云端模型索引表;
模型交互模块与云端数据库、应用启动预测模块相连,模型交互模块从应用启动预测模块接收参数为用户标识ID的应用启动预测模型请求,根据用户标识ID从云端数据库的云端模型索引表中获取应用启动预测模型即带属性异构网络嵌入模型以及神经网络模型的索引信息,提取两个模型存储文件位置信息,并将两个模型文件发送给应用启动预测模块;
应用启动预测模块与模型交互模块、终端数据库、应用启动加速模块、服务层相连;应用启动预测模块在移动终端预设有“终端模型文件夹”来存储模型文件;应用启动预测模块向模型交互模块发送应用启动预测模型请求,接收来自模型交互模块的应用启动预测模型文件,构建当前时间、位置、前序应用节点及对应属性信息,采用带属性异构网络嵌入模型得到三个节点对应的嵌入表示向量,采用神经网络模型对串联三个节点对应的嵌入表示向量进行处理得到概率向量,概率向量中的每一个值代表对应应用可能是下一个启动应用的概率,应用启动预测模块将预测结果即根据概率向量提取最大概率值对应的应用名称传递给应用启动加速模块;
应用启动加速模块与应用启动预测模块、服务进程ActiveManagerService相连,应用启动加速模块接收应用启动预测模块的预测结果,向服务进程ActiveManagerService发送Intent请求,请求提前载入应用;
第二步,基于带属性异构网络嵌入的应用启动加速系统为每个用户构建应用启动预测模型,即构建带属性异构网络嵌入模型以及神经网络模型,方法为:
2.1数据收集模块利用安卓系统提供的服务进程从移动终端收集用户的应用使用记录,包括应用启动时间戳、应用使用时长、当前使用的基站信息、当前连接的WiFi信息、设备配置信息,并将收集的信息分别存储到终端数据库的应用使用记录表、基站信息表、WiFi信息表、移动设备配置信息表;
2.2数据预处理模块从终端数据库的应用使用记录表读取用户的应用名称、应用启动时间戳、应用使用时长,从基站信息表读取基站标识ID、基站信息获取时间戳,从移动终端配置信息表中读取移动设备电量、移动终端是否处于充电状态、移动终端是否已经充满电、配置信息获取时间戳,对读取的信息进行预处理,提取出应用、时间、位置三类上下文信息,将这三类信息作为异构网络中的三类节点,构建三类节点对应的节点属性信息,生成终端节点属性表;继续解析从终端数据库中读取出来的数据,提取出应用节点、时间节点、位置节点、前序应用节点组成一条训练数据;根据所有训练数据、终端节点属性表生成终端训练数据表,并将包含终端训练数据表中所有记录、终端节点属性表中所有记录的第一数据上传请求发送给数据上传模块;
2.3数据上传模块接收来自数据预处理模块的第一数据上传请求,获取终端对应用户的用户标识ID,将用户标识ID和第一数据上传请求拼成第二数据上传请求,将第二数据上传请求发送给云端应用记录存储模块;
2.4云端应用记录存储模块接收来自终端数据上传模块的第二数据上传请求,从第二数据上传请求中提取出用户标识ID、训练数据、节点属性,将训练数据存入云端训练数据表中,将节点属性存入云端节点属性表中;
2.5令云端训练数据表中不同用户的数量为U;
2.6初始化变量u=1;
2.7模型训练模块将训练数据转换成为一个带属性的异构网络,根据三类边关系将带属性的异构网络划分为三个子网络,利用节点对及其对应的属性信息分别训练这三个子网络,通过这三个子网络得到时间节点、位置节点、前序应用节点的有效嵌入表示向量,构建一个带属性异构网络嵌入模型,方法为:
2.7.1根据第u个用户标识ID从云端节点属性表提取出所有节点标识ID,每个节点标识ID分为应用节点、时间节点、位置节点三类,将这三类节点作为异构网络中的节点;根据第u个用户标识ID从云端训练数据表获取相应用户的训练数据,将每条训练数据拆分成三个节点对,分别为(应用节点标识ID,时间节点标识ID,1)、(应用节点标识ID,位置节点标识ID,2)、(应用节点标识ID,前序应用节点标识ID,3),其中数值1、2、3表示的是节点对类型,也是边类型;其中:节点对(应用节点标识ID,时间节点标识ID,1)表示在时间节点标识ID表示的时间使用过应用节点标识ID表示的应用,在异构网络中连接该应用节点与时间节点;节点对(应用节点标识ID,位置节点标识ID,2)表示在位置节点标识ID表示的位置使用过应用节点标识ID表示的应用,在异构网络中连接该应用节点与位置节点;节点对(应用节点标识ID,前序应用节点标识ID,3)表示在使用应用节点标识ID表示的应用之前使用的前序应用节点标识ID表示的应用,在异构网络中连接该应用节点与前序应用节点;同时记录相同节点对的出现频次作为边的权重;根据上述操作将训练数据转化成了一个异构网络,包括应用节点、时间节点、位置节点三类节点,以及应用节点与时间节点、应用节点与位置节点、应用节点与前序应用节点三类边连接关系,根据三种边连接关系将异构网络划分为三个子网络;在数据转换成异构网络的过程中,分别记录异构网络中三个子网络的节点,将子网络中所有节点标识ID分别存储在集合NS1、NS2、NS3中,分别记录集合中节点个数为M1、M2、M3,下标1、2、3分别对应边类型;
2.7.2采用随机游走算法生成链路:根据2.7.1步生成的异构网络,依据三种边连接关系划分为三个子网络,分别以异构网络中三个子网络中的每一个节点为开始节点,生成第一链路列表LIST1、第二链路列表LIST2、第三链路列表LIST3,LISTr存放边类型为r的子网络中NSr个节点生成的NSr×20条长度为10的链路,1≤r≤3;
2.7.3采用skip-gram方法生成训练样本对,将训练样本对存入临时文件data_train.txt中;
2.7.4采用带属性的网络嵌入方法即GATNE方法利用训练样本对和根据节点标识ID从云端节点属性表获取的对应节点属性值构建一个带属性异构网络嵌入模型,为网络中每一个节点都生成嵌入表示向量;如公式一所示,在边类型为r的子网络中,节点i的嵌入表示为向量vi,r:
其中:xi是节点i的属性值;hz(xi)是一个变换函数,其作用是计算xi在节点的嵌入表示中的影响;根据自注意力机制,ai,r是作为在边类型为r的子网络中的节点i的边嵌入向量的权重,根据公式计算得到,实际上是一个简单前馈神经网络,Wr是转化矩阵,需要模型训练优化得到,Ui在自注意力机制中表示隐藏层状态,tanh()是WrUi的激活函数,softmax()是一个归一化函数,将在负无穷到正无穷上的结果转换为0-1概率;Ui是节点i在三个子网络中的边嵌入向量拼接成的一个向量,表示节点i与其邻居节点的关系,每个节点在每一个子网络中都聚合固定数量邻居节点的属性均值作为该节点在该子网络中的边嵌入向量,Ui由节点i在三个子网络中得到的边嵌入向量串联而成;Mr是边嵌入向量的转换矩阵,表示Mr的转置,Mr中的第i个一维向量表示节点i在边类型为r的子网络中的边嵌入向量对节点i的嵌入表示的影响;αr表示在边类型为r的子网络中每个节点的边嵌入向量对于节点的嵌入表示的影响系数;Dz是节点i对应节点类型z的属性转换矩阵,其目的是为了计算新节点的嵌入表示向量,新节点与网络中的所有节点都是隔离的,Dz从节点属性相似性的角度表示节点i与网络中所有节点的相似关系,是Dz的转置;βr表示在边类型为r的子网络中,子网络中的节点属性之间的相似关系对于节点嵌入的影响系数;
2.7.5采用训练样本对以及节点的嵌入表示向量vi,r,使用NCE损失函数对带属性异构网络嵌入模型进行训练,优化公式一中的转换矩阵以及ai,r,得到异构网络中每个节点的有效嵌入表示向量;时间节点的有效嵌入表示向量使用vi,t表示,位置节点的有效嵌入表示向量使用vi,l表示,前序应用节点的有效嵌入表示向量使用vi,p表示;
2.7.6以文件的形式将带属性异构网络嵌入模型存储在“云端模型文件夹”中,命名为“用户标识ID_GATNE_时间戳”,其中“用户标识ID”使用实际的mac地址标识,“时间戳”使用实际的时间戳标识;
2.7.7构建带属性异构网络嵌入模型索引信息,使用移动终端实际的mac地址作为用户标识ID,使用当前时间作为模型创建时间戳,“用户标识ID_GATNE_时间戳”是模型存储文件名称,“云端模型文件夹”在云端的位置/用户标识ID_GATNE_时间戳”作为模型存储文件位置,分别将上述信息存储到云端模型索引表中对应的用户标识ID、模型创建时间戳、模型存储文件名称、模型存储文件位置域中;
2.8模型训练模块构建神经网络模型,融合时间、位置、前序应用三类上下文信息进行应用启动预测,方法是:
2.8.1以节点类型域值为1检索云端节点属性表,提取出节点类型域值为1的所有的应用节点标识ID,对提取的节点标识ID进行独热编码,得到每个节点标识ID对应的独热编码值,根据应用节点标识ID-应用独热编码值的关系存入字典D中;
2.8.2根据第u个用户标识ID从云端训练数据表获取相应用户的训练记录;
2.8.3初始化输入向量列表INPUT_LIST、实际输出向量列表OUTPUT_LIST为空,OUTPUT_LIST中的实际输出向量是指在当前时间、位置、前序应用的情景下使用的应用对应的独热编码值向量;
2.8.4获取参数变量n=1;
2.8.5提取第n条记录中的时间节点标识ID、位置节点标识ID、前序应用标识ID,根据节点标识ID从云端节点属性表中获取对应的节点属性,将三个节点标识ID以及对应的节点属性作为带属性异构网络嵌入模型的输入,按照公式一计算三个节点对应的嵌入表示向量,分别表示为vn,t、vn,l、vn,p,其中vn,t表示在第n条记录中时间节点对应的有效嵌入表示向量,vn,l表示在第n条记录中位置节点对应的有效嵌入表示向量,vn,p表示在第n条记录中前序应用节点对应的有效嵌入表示向量;融合vn,t、vn,l、vn,p,串联组成vn=(vn,t,vn,l,vn,p),存入输入列表INPUT_LIST;
2.8.6提取第n条记录中的应用节点标识ID,根据应用节点标识ID从字典D中获取对应的独热编码值,记为pn,存入实际输出列表OUTPUT_LIST;
2.8.7若n≤N,令n=n+1,转到2.8.5;若n>N,转到2.8.8;
2.8.8结合应用启动预测场景,构建单隐层的神经网络模型,即如公式二所描述的数学模型,通过神经网络模型计算第n个概率向量qn:
qn=W(2)·sigmoid(vn·W(1)+b1)+b2公式二,
其中:W(1)、W(2)分别是神经网络模型中隐藏层和输出层的转换矩阵;vn表示INPUT_LIST中的第n个向量,融合了第n条记录中时间节点、位置节点、前序应用节点的嵌入表示向量;b1、b2分别是神经网络模型中隐藏层和输出层的偏置向量;sigmoid函数是隐藏层的激活函数;概率向量qn表示根据第n条记录得到的预测结果,qn中的第i个概率值表示独热编码值向量中第i个位置值为1对应的应用的启动概率;
2.8.9采用输入列表INPUT_LIST以及实际输出列表OUTPUT_LIST训练神经网络模型,INPUT_LIST中的每一条输入向量按照公式二计算,得到输入对应的概率向量,然后根据公式三的交叉熵损失函数H计算神经网络模型的输出即概率向量与OUTPUT_LIST中实际输出的差异,根据随机梯度下降算法优化公式二中的W(1)、W(2)、b1、b2四个变量:
2.8.10以文件的形式将神经网络模型存储在“云端模型文件夹”中,命名为“用户标识ID_NEURAL_时间戳”,其中“用户标识ID”使用实际的mac地址标识,“时间戳”使用实际的时间戳标识;
2.8.11构建神经网络模型索引信息,包括用户标识ID、模型创建时间戳、模型存储文件名称、模型存储文件位置,将索引信息存储到云端模型索引表;
2.9若u≤U,令u=u+1,转到2.7;若u>U,转第三步;
第三步,移动终端根据最新的应用启动预测模型进行应用预测并根据最新预测结果执行应用启动加速,方法是:
3.1应用启动预测模块按周期访问云端,保证终端预测使用的是最新的应用启动预测模型,分别构造带属性异构网络嵌入模型和神经网络模型的输入,得到预测结果,具体方法是:
3.1.1应用启动预测模块使用安卓系统内置定时器,按周期T1向模型交互模块发送下载模型请求,下载模型请求参数为用户标识ID;
3.1.2模型交互模块从下载模型请求中提取出用户标识ID,根据用户标识ID从云端模型索引表获取用户对应的最新的应用启动预测模型索引记录,即最新的带属性异构网络嵌入模型以及神经网络模型的索引记录,根据记录中的模型存储文位置从“云端模型文件夹”中提取文件信息,将两个模型发送给应用启动预测模块;
3.1.3应用启动预测模块将从模型交互模块得到的两个模型以文件的形式存储在“终端模型文件夹”中,将带属性异构网络嵌入模型文件命名为“GATNE_时间戳”,神经网络模型命名为“NEURAL_时间戳”,其中“时间戳”使用当前接收模型所处的时间戳;应用启动预测模块构建两个模型的索引信息,使用当前接收模型所处的时间戳作为两个模型索引记录的模型存储时间戳,使用“GATNE_时间戳”字符串作为带属性异构网络嵌入模型索引记录的模型文件名称,使用“云端模型文件夹”在终端的位置/GATNE_时间戳”作为带属性异构网络嵌入模型索引记录的模型文件位置,使用“NEURAL_时间戳”字符串作为神经网络模型索引记录的模型文件名称,使用“云端模型文件夹”在终端的位置/NEURAL_时间戳”作为神经网络模型索引记录的模型文件位置,将两个模型的索引信息存储到终端模型索引表中;
3.1.4应用启动预测模块使用安卓系统内置定时器,按周期T2从终端模型索引表获取最新的带属性异构网络嵌入模型以及神经网络模型的索引记录;根据带属性异构网络嵌入模型索引记录中的模型文件名称、模型文件位置在终端对应位置找到对应的带属性异构网络嵌入模型文件,根据神经网络模型索引记录中的模型文件名称、模型文件位置在终端对应位置找到对应的神经网络模型文件,从文件中提取出带属性异构网络嵌入模型与神经网络模型;
3.1.5应用启动预测模块从安卓系统服务进程TelephonyManager获取当前所处基站标识ID,根据基站标识ID从终端节点属性表中得到对应位置节点的节点标识ID作为位置节点标识ID,以及节点属性作为位置节点属性;应用启动预测模块从终端应用使用记录表中获取最新的应用使用记录,从中提取应用名称,根据应用名称从终端节点属性表中获取应用节点的节点标识ID作为前序应用节点标识ID,以及节点属性作为前序应用节点属性;应用启动预测模块获取当前时间戳,从时间戳中提取出年、月、日、小时的信息,构建“YYYYMMDDHH”形式的字符串作为时间节点名称,根据节点名称从终端节点属性表中查找对应记录,若记录存在则从记录中提取出节点标识ID作为时间节点标识ID,以及节点属性作为时间节点属性;若记录不存在则计算当前时间戳属于星期几,并构建时间节点属性,在终端节点属性表中新建一条记录,分别将“YYYYMMDDHH”形式的字符串、星期几、3记录在终端节点属性表中的节点名称、节点属性、节点类型域中;
3.1.6根据公式一以及3.1.5步得到的时间节点标识ID、时间节点属性、位置节点标识ID、位置节点属性、前序应用节点标识ID、前序应用节点属性,利用公式一计算当前时间节点、位置节点、前序应用节点的有效嵌入表示vt、vl、vp;串联vt、vl、vp生成v=(vt,vl,vp),v作为神经网络模型的输入,根据公式二计算概率向量,概率向量中存在NA个元素,其中第j个元素值表示独热编码值向量中第j个元素为1的应用对应的概率值,表示该应用可能的是下一个启动应用的概率,NA为正整数;
3.1.7应用启动预测模块对概率向量中的每一个元素按照从大到小的顺序进行排序,选择概率最大的元素值,令该元素值处于概率向量的第x个位置,找到独热编码值向量第x个元素值为1的应用,即为预测结果,将预测结果发送给应用启动加速模块;
3.2应用启动加速模块从应用启动预测模块接收预测得到的应用名称,根据预测得到的应用请求系统创建应用进程,并且将应用资源提前载入到内存:
3.2.1应用启动加速模块根据得到的应用名称构建相关Intent请求,发送给服务进程ActivityManagerService;
3.2.2服务进程ActivityManagerService调用PackageManagerService解析应用相关信息,使用容器类ResolveInfo保存解析出来的信息;
3.2.3应用启动加速模块调用服务进程ActivityManagerService进一步对应用授予的权限进行检查,并新建一个保存Activity信息的数据结构ActivityRecord,包括当前Activity的进程标识launchedFromPid、当前Activity进程的创建者launchedFromUid、当前Activity进程的安装包launchedFromPackage、意图请求Intent、当前Activity的状态state,并通过ActivityRecord管理活动;
3.2.4应用启动加速模块为Activity分配任务栈:首先综合计算活动的启动模式;调用安卓系统的getReusableIntentActivity()方法查找是否有可以重用的活动进程,如果有可重用的活动进程,把原来活动进程信息替换成当前活动的信息,如果没有可重用的活动进程,寻找可以重用的任务进程,如果没有可以重用的任务进程,新建一个TaskRecord类存储任务栈的描述信息;
3.2.5应用启动加速模块创建进程对应的实体ProcessRecord以记录进程信息的对象,委托ZygoteProcess进程将所有启动参数都通过socket的写入流发送给Zygote;服务进程Zygote接收请求后孵化一个子进程;
3.2.6应用启动加速模块调用安卓系统的handleChildProc()方法初始化安卓系统中应用的运行环境Runtime,包括未捕捉异常、Java虚拟机的堆内存利用率等的设置,然后调用安卓应用进程的初始类ActivityThread初始化主线程;
3.2.7应用启动加速模块调用安卓系统的ActivityThread类的attah()方法将服务进程Zygote孵化出的子进程注册到SystemServer服务进程;
3.2.8应用启动加速模块通知应用创建Application,初始化应用的上下文以及各种资源;
3.2.9应用启动加速模块调用ActivityThread类初始化WindowManagerGlobal类以及相关显示资源,然后调用安卓系统的类加载器加载对应的Activity对应的类并在系统内存中实例化应用资源;
3.2.10应用启动加速模块初始化活动的窗口,新建相关的视图,向系统请求分配显示资源;
3.2.11应用启动加速模块调用AMS服务进程,将载入的应用状态设置为暂停。
2.如权利要求1所述的基于带属性异构网络嵌入的APP启动加速方法,其特征在于2.1步所述数据收集模块从移动终端收集用户的应用使用记录的方法是:利用ActiveManager服务进程监控应用的启动、暂停、结束操作,记录应用启动时间戳,根据应用的启动时间与结束时间计算应用使用时长,存储到终端数据库应用使用记录表;利用TelephonyManager服务进程获取移动设备当前所处环境的基站标识ID并对基站标识ID加密,记录当前的时间戳,存储到终端数据库基站信息表;利用WiFiManager服务进程获取当前连接的WiFi相关信息,存储到终端数据库WiFi信息表;利用BatteryService获取移动终端当前电量,判断当前设备是否处于充电状态,是否处于满电状态,存储到终端数据库移动终端配置信息表中。
3.如权利要求1所述的基于带属性异构网络嵌入的APP启动加速方法,其特征在于2.2步所述数据预处理模块对从终端数据库读取的信息进行预处理,生成终端节点属性表、终端训练数据表,并将包含这两个表中所有记录的第一数据上传请求发送给数据上传模块的方法是:
2.2.1数据预处理模块在终端数据库建立临时数据表,存储生成训练数据的中间数据,包含五个域,分别为应用名称、应用启动时间戳、前序应用名称、基站标识ID、应用启动时间,其中:应用名称标识一个应用;应用启动时间戳记录应用启动的时间;前序应用名称记录当前应用启动的上一个应用;基站标识ID记录当前应用使用时所处的基站环境;应用启动时间在临时数据表中是指从应用启动时间戳中提取出的一种表示形式,使用“YYYYMMDDHH”形式表示,其中“YYYY”表示年份,“MM”表示月份,“DD”表示几号,“HH”表示小时,用来表示时间节点的名称;
2.2.2数据预处理模块从终端数据库的应用使用记录表提取除桌面应用、短信应用、电话应用的相关记录以外的所有记录,按时间升序对提取的记录进行排序以查找前序应用;然后提取应用使用记录表每一条记录中的应用名称、应用启动时间戳,提取每一条记录的前一条记录中的应用名称作为前序应用名称,存入临时数据表;令临时数据表中共有N条记录;
2.2.3数据预处理模块查找应用使用记录对应的位置信息,方法是从终端数据库中的基站信息表选择在应用开始前5分钟和应用结束后5分钟之间的基站信息,选择时间最接近的连接的基站的基站标识ID作为应用使用记录的位置信息,并根据每条应用使用记录将基站标识ID存入训练数据临时表,如果不存在这样的基站信息,将临时数据表中对应记录的基站标识ID标记为空;
2.2.4数据预处理模块构建时间节点,方法是从终端训练数据表中提取每条记录的应用启动时间戳,从应用启动时间戳中提取时间,以一个小时为时间刻度,生成“YYYYMMDDHH”的字符串形式,表示某年某月某日某个时辰,作为时间节点的名称并存入临时数据表中的应用启动时间域;
2.2.5数据预处理模块生成应用、时间、位置节点,方法是:从临时数据表中提取表中记录的所有应用启动时间、基站标识ID、应用名称放在集合A中,对提取的信息执行去重操作,相同的应用启动时间、基站标识ID、应用名称只留下一个;将去重后的集合A中的应用启动时间、基站标识ID、应用名称作为异构网络中节点的节点名称,节点类型分别使用数值1、2、3表示;对集合A中的节点使用自增序列进行唯一标序,并按照序列号-节点名称-节点类型的对应关系分别将每个节点的序列号、节点名称、节点类型存入终端数据库的终端节点属性表中的节点标识ID、节点名称、节点类型域;
2.2.6数据预处理模块构建终端节点属性表中每个节点的属性信息,方法是:将所有应用类型进行独热编码,使用应用所属类型对应独热编码值作为应用节点属性信息;从终端节点属性表中提取应用启动时间,从应用启动时间中提取该时间所在是星期几,使用星期几作为时间节点属性信息;从临时数据表中不重复提取所有基站标识ID,对基站标识ID进行独热编码,位置节点使用基站标识ID对应的独热编码值作为节点属性信息,将每个节点对应的属性信息存储到终端节点属性表的节点属性域中;
2.2.7数据预处理模块根据临时数据表、终端节点属性表生成终端训练数据表;
2.2.8数据预处理模块对终端训练数据表进行数据清洗,清除表中位置节点标识ID域带有空值的记录;
2.2.9数据预处理模块向数据上传模块发送包含终端训练数据表中所有记录、终端节点属性表中所有记录的第一数据上传请求。
4.如权利要求3所述的基于带属性异构网络嵌入的APP启动加速方法,其特征在于2.2.7步所述数据预处理模块根据临时数据表、终端节点属性表生成终端训练数据表的方法是:
2.2.7.1初始化变量n=1;
2.2.7.2获取临时数据表中的第n条记录,提取记录中的应用启动时间、基站标识ID、前序应用名称、应用名称;
2.2.7.3将从2.2.7.2步得到的应用启动时间、基站标识ID、前序应用名称、应用名称作为节点名称,根据节点名称从终端节点属性表获取对应的节点标识ID,包括时间节点标识ID、位置节点标识ID、前序应用节点标识ID、应用节点标识ID,将四个节点标识ID存入终端训练数据表对应的时间节点标识ID、位置节点标识ID、前序应用节点标识ID、应用节点标识ID域,生成终端训练数据表的第n条记录;如果基站标识ID为空,则位置节点标识ID也记录为空;
2.2.7.4若n≤N,转2.2.7.1;若n>N,结束。
5.如权利要求1所述的基于带属性异构网络嵌入的APP启动加速方法,其特征在于2.3步所述数据上传模块获取终端对应用户的用户标识ID的方法是:利用服务进程WiFiManager获取移动终端的mac地址,将移动终端的mac地址作为终端对应用户的用户标识ID。
6.如权利要求1所述的基于带属性异构网络嵌入的APP启动加速方法,其特征在于2.4步所述云端应用记录存储模块将训练数据存入云端训练数据表中,将节点属性存入云端节点属性表中的方法是:
2.4.1从第二数据上传请求中提取出用户标识ID;
2.4.2从第二数据上传请求中提取出训练数据,统计训练数据的条数,得到N的具体数值;
2.4.3获取初始化变量n=1;
2.4.4获取训练数据中的第n条数据,提取数据中的应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID;
2.4.5将得到的用户标识ID以及从第n条数据中提取出的应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID,存入云端训练数据表中对应的用户标识ID、应用节点标识ID、时间节点标识ID、位置节点标识ID、前序应用节点标识ID域中;
2.4.6若n≤N,转2.4.3;若n>N,转2.4.7;
2.4.7从第二数据上传请求中提取出节点属性,统计节点属性数据的条数,得到M的具体数值;
2.4.8获取初始化变量m=1;
2.4.9获取节点属性中的第m条数据,提取数据中的节点标识ID、节点名称、节点属性、节点类型;
2.4.10将得到的用户标识ID以及从第m条数据中提取出的节点标识ID、节点名称、节点属性、节点类型,分别存入云端节点属性表的用户标识ID、节点标识ID、节点名称、节点属性、节点类型域中;
2.4.11若m≤M,转2.4.8;若m>M,结束。
7.如权利要求1所述的基于带属性异构网络嵌入的APP启动加速方法,其特征在于2.7.2步所述采用随机游走算法生成链路的方法是:
2.7.2.1初始化第一链路列表LIST1、第二链路列表LIST2、第三链路列表LIST3为空;
2.7.2.2初始化变量r=1,初始化一个临时列表LIST_TEMP为空;
2.7.2.3初始化变量m=1;
2.7.2.4初始化变量l=1,初始化一个节点链表L,用于存放以第m个节点为起始节点的链路上的节点标识ID;
2.7.2.5从节点标识ID集合NSr中获取第m个节点标识ID,将节点标识ID作为节点链表L的第一个节点存入节点链表L中;
2.7.2.6初始化变量i=1;
2.7.2.7选择节点链表L中的中第i个节点的邻居节点加入到节点链表L中;
2.7.2.8若i<10,令i=i+1,转2.7.2.7;若i>=10,转2.7.2.9;
2.7.2.9将节点链表L添加到临时列表LIST_TEMP中;
2.7.2.10若l≤20,令l=l+1,转2.7.2.5;若l>20,转2.7.2.11;
2.7.2.11若m≤Mr,令m=m+1,转2.7.2.4;若m>Mr,转2.7.2.12;
2.7.2.12将列表LIST_TEMP添加到列表LISTr中;
2.7.2.13若r≤3,令r=r+1,转2.7.2.3;若r>3,结束。
8.如权利要求1所述的基于带属性异构网络嵌入的APP启动加速方法,其特征在于2.7.3步所述采用skip-gram方法生成训练样本对的方法是:
2.7.3.1初始化变量r=1;
2.73.2获取第r链路列表LISTr;
2.7.3.3统计链路列表LISTr中的链路条数,记为LN;
2.7.3.4初始化变量l=1;
2.7.3.5从链路列表LISTr中获取第l条节点链路L;
2.7.3.6初始化变量i=1;
2.7.3.7若在节点链路L中找到有效的第i-2个节点,生成训练样本对(节点标识IDi,节点标识IDi-2,r);若在链路L中找到有效的第i-1个节点,生成训练样本对(节点标识IDi,节点标识IDi-1,r);若在链路L中找到有效的第i+1个节点,生成训练样本对(节点标识IDi,节点标识IDi+1,r);若在链路L中找到有效的第i+2个节点,生成训练样本对(节点标识IDi,节点标识IDi+2,r);“有效”指能在节点链路L中找到,要求i-2、i-1大于0或i+1、i+2小于等于10;
2.7.3.8将2.7.3.7步生成的训练样本对存入文件data_train.txt中;
2.7.3.9若i≤10,令i=i+1,转2.7.3.7;若i>10,转2.7.5.10;
2.7.3.10若l≤LN,令l=l+1,转2.7.3.5;若l>LN,转2.7.3.11;
2.7.3.11若r≤3,令r=r+1,转2.7.3.2;若r>3,结束。
9.如权利要求1所述的基于带属性异构网络嵌入的APP启动加速方法,其特征在于2.7.5步所述采用训练样本对以及节点的嵌入表示向量vi,r,使用NCE损失函数对带属性异构网络嵌入模型进行训练,优化公式一中的转换矩阵以及ai,r,得到异构网络中每个节点的有效嵌入表示向量的方法是:
2.7.5.1从文件data_train.txt中获取训练样本对,根据训练样本对中的节点标识ID从云端节点属性表中获取对应的节点属性,令训练样本对个数为M;
2.7.5.2将训练样本对划分为B个训练样本对集合,每个训练样本对集合中有batch个训练样本, 表示对M/batch上取整,最后一个训练样本对集合的训练样本对数量小于等于batch,64≤batch≤256;
2.7.5.3令变量b=1;
2.7.5.4将第b个训练样本对集合中的每一个样本对及其对应的属性作为带属性异构网络嵌入模型的训练数据,计算公式一,并使用NCE损失函数求解公式一的梯度,使用随机梯度下降算法调整公式一中的转换矩阵以及ai,r;
2.7.5.5若b<=B,令b=b+1,转到2.7.5.4;若b>B,转到2.7.6。
10.如权利要求1所述的基于带属性异构网络嵌入的APP启动加速方法,其特征在于2.8.9步所述采用INPUT_LIST和OUTPUT_LIST训练神经网络模型的方法是:
2.8.9.1将N个输入向量划分为B2个输入集合,每个输入集合中有batch2个训练样本, 表示对N/batch2上取整,最后一个输入集合的输入向量数量小于等于batch2,64≤batch2≤256;
2.8.9.2获取参数变量b=1;
2.8.9.3第b个集合中的每一个输入作为神经网络模型的训练数据,计算公式二,根据公式二的结果计算公式三,使用随机梯度下降算法根据公式三的结果调整公式二中的W(1)、W(2)、b1、b2;
2.8.9.4若b≤B2,令b=b+1,转到2.8.9.3;若b>B2,结束。
11.如权利要求1所述的基于带属性异构网络嵌入的APP启动加速方法,其特征在于第三步所述T1设置为两周,所述T2设置为一个小时。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010161063.0A CN111381902B (zh) | 2020-03-10 | 2020-03-10 | 基于带属性异构网络嵌入的app启动加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010161063.0A CN111381902B (zh) | 2020-03-10 | 2020-03-10 | 基于带属性异构网络嵌入的app启动加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111381902A CN111381902A (zh) | 2020-07-07 |
CN111381902B true CN111381902B (zh) | 2021-04-13 |
Family
ID=71215394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010161063.0A Expired - Fee Related CN111381902B (zh) | 2020-03-10 | 2020-03-10 | 基于带属性异构网络嵌入的app启动加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111381902B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11768700B2 (en) * | 2020-04-02 | 2023-09-26 | Citrix Systems, Inc. | Contextual application switch based on user behaviors |
CN111931485B (zh) * | 2020-08-12 | 2021-03-23 | 北京建筑大学 | 一种基于跨网络表示学习的多模异质关联实体识别方法 |
CN112819152B (zh) * | 2020-08-14 | 2024-03-01 | 腾讯科技(深圳)有限公司 | 一种神经网络训练方法及装置 |
CN114116040A (zh) * | 2020-08-31 | 2022-03-01 | 华为技术有限公司 | 加速应用启动的方法、电子设备及计算机存储介质 |
CN114968391B (zh) * | 2021-05-26 | 2023-07-25 | 中移互联网有限公司 | 应用程序加速方法及装置 |
CN117539837A (zh) * | 2024-01-10 | 2024-02-09 | 暗物智能科技(广州)有限公司 | 模型文件的存储方法、装置、电子设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102036340A (zh) * | 2009-09-25 | 2011-04-27 | Lg电子株式会社 | 移动终端及利用该移动终端来管理并执行数据通信的方法 |
CN108228270A (zh) * | 2016-12-19 | 2018-06-29 | 腾讯科技(深圳)有限公司 | 启动资源加载方法及装置 |
CN108628645A (zh) * | 2018-04-28 | 2018-10-09 | Oppo广东移动通信有限公司 | 应用程序预加载方法、装置、存储介质及终端 |
CN109814937A (zh) * | 2017-11-20 | 2019-05-28 | 广东欧珀移动通信有限公司 | 应用程序预测模型建立、预加载方法、装置、介质及终端 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528254A (zh) * | 2016-12-16 | 2017-03-22 | 中南大学 | 一种app快速加载方法 |
CN107168742B (zh) * | 2017-05-19 | 2018-01-19 | 中南大学 | 基于定制安卓平台的应用快速部署方法 |
CN107783801B (zh) * | 2017-11-06 | 2021-03-12 | Oppo广东移动通信有限公司 | 应用程序预测模型建立、预加载方法、装置、介质及终端 |
CN108804153B (zh) * | 2018-05-21 | 2021-03-12 | Oppo广东移动通信有限公司 | 应用程序的预加载方法、装置、存储介质及终端 |
-
2020
- 2020-03-10 CN CN202010161063.0A patent/CN111381902B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102036340A (zh) * | 2009-09-25 | 2011-04-27 | Lg电子株式会社 | 移动终端及利用该移动终端来管理并执行数据通信的方法 |
CN108228270A (zh) * | 2016-12-19 | 2018-06-29 | 腾讯科技(深圳)有限公司 | 启动资源加载方法及装置 |
CN109814937A (zh) * | 2017-11-20 | 2019-05-28 | 广东欧珀移动通信有限公司 | 应用程序预测模型建立、预加载方法、装置、介质及终端 |
CN108628645A (zh) * | 2018-04-28 | 2018-10-09 | Oppo广东移动通信有限公司 | 应用程序预加载方法、装置、存储介质及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN111381902A (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111381902B (zh) | 基于带属性异构网络嵌入的app启动加速方法 | |
Liu et al. | Locating influential nodes via dynamics-sensitive centrality | |
Imteaj et al. | Federated learning for resource-constrained iot devices: Panoramas and state of the art | |
CN111258767B (zh) | 复杂系统仿真应用的云计算资源智能分配方法与装置 | |
He et al. | Parallel implementation of classification algorithms based on MapReduce | |
CN104808892A (zh) | 一种应用图标排序方法、装置、系统及相关设备 | |
US11630851B2 (en) | Systems and methods for providing predictions to applications executing on a computing device | |
CN110196933A (zh) | 一种用户数据标签处理方法及装置 | |
CA3137748A1 (en) | Method and apparatus for determining configuration knob of database | |
Liu et al. | Hierarchical spark: A multi-cluster big data computing framework | |
CN115794341A (zh) | 基于人工智能的任务调度方法、装置、设备及存储介质 | |
CN112925634A (zh) | 异构资源调度方法和系统 | |
Wang et al. | Membership inference attack with multi-grade service models in edge intelligence | |
KR101686919B1 (ko) | 빅데이터에 기반한 추론 엔진을 관리하는 방법 및 장치 | |
CN113988225A (zh) | 建立表征提取模型、表征提取、类型识别的方法和装置 | |
Xiao et al. | ORHRC: Optimized recommendations of heterogeneous resource configurations in cloud-fog orchestrated computing environments | |
KR20170059546A (ko) | IoT 사물 및 IoT 서비스 분석 방법 및 장치 | |
Barrère et al. | A probabilistic cost-efficient approach for mobile security assessment | |
CN115147020A (zh) | 装修数据处理方法、装置、设备及存储介质 | |
García-Pérez et al. | Predictability of missing links in complex networks | |
Dong et al. | Accelerating skycube computation with partial and parallel processing for service selection | |
Bompiani et al. | High-performance computing with terastat | |
CN112766501A (zh) | 增量训练方法和相关产品 | |
CN111324444A (zh) | 一种云计算任务调度方法及装置 | |
Yang et al. | The correlation analysis and prediction between mobile phone users complaints and telecom equipment failures under big data environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210413 |
|
CF01 | Termination of patent right due to non-payment of annual fee |