机器学习是人工智能研究领域的一个重要分支,近十年由于以深度学习为表明的研究方向在图像识别,语音识别,文本翻译及深度强化学习在围棋等游戏应用中的重大突破而又从新兴起,变成新的技术浪潮。可是机器学习尚未达到实现人工智能的阶段,没法像人同样快速学习新技能,掌握新领域,进行创造性活动。机器学习还仅仅是弱人工智能,即在特定领域,在给定的业务问题边界,充分的数据支撑条件下,经过专家的特征工程和面向业务目标构建的反馈优化方法上来实现达到或者超过人类专家的行为能力。所以机器学习应用的落地毫不是一蹴而就的,须要不断的解决机器学习应用落地过程当中的各类问题,包括数据,特征,目标,反馈优化以及机器学习应用系统的性能,维护和可扩展问题,这些问题自己有时又会交织在一块儿,须要咱们系统性的思考,平衡和解决。html
咱们根据机器学习应用的使用者不一样,能够把应用形态划分为面向人的辅助支撑工具offline形态和面向设备,系统的持续运行分析的online形态,固然online形态中由于一些系统性能等方面的须要,一般都会结合offline形态的能力,所以也能够把offline,online看做机器学习应用的第一阶段和第二阶段。典型的工业offline应用有基站设备扩容预测(非云化设备场景),存储和光器件设备老化预测等,这些应用支撑业务人员完成具体的决策和物理活动;典型的online应用则包括了故障类型识别,UE主频智能切换等。算法
在online形态中,咱们根据应用场景要求的机器学习模型时效性不一样,即机器学习模型的更新周期不一样,又能够将应用形态划分为online predict和online learning两种形态,前者的机器学习模型主要为离线建模,模型按天/周/月更新,在线仅仅是应用模型进行预测;后者则须要进行在线建模,在线预测,模型更新的周期须要达到小时/分钟。Online learning的典型应用则例如根据预测分钟级别的业务流量进行基站节能,根据带宽流量预测进行数据中心间的带宽利用率提高和边缘视频码率的选择。数据库
根据应用场景的地域部署特性要求,即对机器学习模型的泛化能力要求不一样,能够划分为local Learning和Global learning。Local learning只须要模型在一个地域适应一组数据源的样本,虽然随着时间的变化,部分数据及关联特征的分布也会出现变化,但整体来讲是缓慢的,对模型来说,仅须要具有弱泛化能力;Global learning则须要模型进行全球部署,须要模型可以适应在不一样地域数据和特征的剧烈变化,如大部分特征的消失或增长。Global Learning的典型应用即上述应用形态在全球部署的延伸,可见的成功案例主要有Google的广告推荐,Netflix的视频推荐。安全
小结一下,根据机器学习应用的使用角色,时效性以及地域性要求,咱们能够将机器学习应用划分为offline,online predict,online learning,local learning和Global learning等多种形态。不一样形态下不一样的技术实现路径咱们将面临不一样的挑战和问题。网络
接下来,咱们从核心的架构质量属性的角度看看各类应用形态的挑战和问题。架构
从最简单的offline应用开始,如图1,因offline条件下,训练和预测对于性能通常状况下均没有严格强调响应时间,因此多数状况下,你们仅须要考虑batch的批量执行模式。训练和预测在接入原始数据后的数据准备,特征工程等数据处理部分和基于模型的预测部分能够彻底复用训练阶段的能力。app
图1. offline机器学习应用技术架构框架
由于训练和预测均为离线,因此二者能够复用相同的特征处理过程,通常状况下能够复用统一的特征存储能力,例如HDFS。dom
那么online predict形态会有什么不一样?机器学习
一、首先由于在线预测部分对于响应时间的要求,即须要在实际预测前准备好能够提早处理的数据特征;
二、由于在线预测部分多数按照事件方式请求,因此对预测对象如基站小区等的特征访问不是batch模式,而是按key 访问,因此须要引入KV存储;
三、同时在online predict形态下,能够引入一些更具备时效性的特征,这些特征的处理在训练时仍然可使用离线处理方法,可是在线部分就须要引入新的流处理能力;
四、由于引入online predict后,模型的更新就须要更多的系统流程来替代offline模式下人的许多手工动做,如模型的更新,模型的版本管理,模型的评估,模型的对比测试等。因此须要额外引入模型管理,如图2。
图2. Online Predict机器学习应用技术架构
上图中红色部分圈中的特征库-KV存储,是典型的机器学习应用领域中,面向业务对象构建的可复用的基础特征库,能够在多个相同领域的机器学习中应用,在机器学习平台类软件中,是领域机器学习平台的重要组成部分。模型管理部分用于持续评估和管理模型,能够提供相对通用的机器学习框架来解决模型的闭环反馈更新问题。
常见的模型更新方式有多种:
一、简单的使用滑动数据集方式,从新训练模型;
二、采用模型Wrapper的方式持续叠加新的模型,相似RandomForrest,GBDT等算法;
三、采用机器学习函数求解的增量迭代方式;
四、针对反馈数据单独使用分类模型,特别是针对训练模型自己为非监督模型的算法,采用GAN方式进行持续优化。
在线数据处理-Spark Streaming部分区别于离线数据准备,须要为算法提供更具时效性的特征,例如事件级别,分钟级别的统计特征,如15分钟的基站视频协议业务流量等。PredictServer部分主要提供在线的模型测试框架,支持同时存在的多个模型组进行对比测试,并提供详细的对比测试记录给训练模型。以上两种形态,Train和Predict部分都是能够网络隔离的,由于Train部分的数据都是能够离线的,能够采用人工、非自动化的方式从生产系统中以抽样的方式离线导出来训练的。
更具挑战的则是online learning,在算法和系统会有更复杂的要求:
一、首先模型在线更新致使模型审核通常再也不由人工来完成,须要系统自动完成;
二、由于在线更新,因此每次仅能基于增量的数据;
三、由于1,2的缘由,系统必须避免模型由于当前窗口数据致使的剧烈变化,可以在历史模型参数和当前模型参数间进行平滑;
4,长期online的系统除了考虑特征随时间变化而产生分布变化的弱泛华要求,也须要考虑系统环境变化如硬件、软件版本升级致使的特征(包括关键特征)增长、删除的剧烈变化;
五、工程上须要匹配算法,支持特征的柔性变化,作到特征更新无需版本更新。这些都须要引入online training的处理能力,在线处理组件从kafka等消息或流系统中实时增量获取数据,本地训练后讲算法中间状态保存在状态数据库中,状态的数据主要也是KV结构的数据,须要引入KV存储。须要注意的是,若是offline Training还可使用一些传统的数据挖掘类算法如Decision Tree,Bayesian等方法,那么online Training就要求基于目标损失函数,采用增量、迭代的方式进行函数优化,持续更新优化。参考技术架构如图3。
图3. Online Learning机器学习应用技术架构
在线学习部分的输入数据包括kafka输出的在线算法特征和特征库—KV存储中保存的已预计算的历史特征。在线学习过程当中的模型迭代参数须要持续更新到状态库-KV存储中(个别非模型的增量迭代计算可能须要保存中间计算结果)。在线学习部分还有一个重要分支就是强化学习,强化学习方向不管是早期的q-learning,saras,仍是近期的DQN,DDPG等算法,典型的结构如图4。
图4. ReinforcementLearning机器学习交互结构
上述架构中
Agent表示智能体,即执行强化学习算法的**服务,根据外部输入的状态参数选择最优的执行动做,并根据动做执行后的环境状态和报酬优化动做选择算法。此处未展开多智能体学习结构,原则上能够认为是Agent内部的层次结构。Environment表示执行环境,持续输出环境参数给Agent,并从Agent接收并执行Action。State Store表示状态存储,在面向传统的离散状态和Action时,State Store中保存State、Action、Reward的映射表,在面向新兴的连续Action和State时,保存DQN等神经网络的回放样本数据,也是表示为(St,at,St+1,rt+1)将强化学习合入已有架构后参考以下图5,其中算法执行框架部分能够利用已有的Tensorflow框架,状态存储能够复用已有的KV存储,外部环境代理EnvironmentProxy部分则将Agent的算法逻辑与具体的业务网元交互逻辑解耦出来,特别当外部网元交互模式、协议、部署复杂时。
图5. Online Learning(含RL)机器学习应用技术架构
Local learning and Global Learning 最后再看看Global Learning和Local Learning,Local Learning能够理解为上述offline,online的应用形态。Global learning有多种实现方式:简单实现能够是多个**的Local learning,Netflix初期在十几个国家推广运营时,实际上就是相似运做方式,好处就是系统简单,易复制;复杂实现由两种方式,如图6
图6. Online Predict机器学习应用技术架构
一、Global data share, data share方式与online learning很是类似,全球多地部署的系统能够仅理解为数据采集,真正的学习则仍是部署在中心区域,各地的数据经过流的方式持续的发送到中心区域。Google和Netflix目前都是data share(视野所限,没有发现公开的论文讨论如何解决模型共享的问题),将全球各地的数据统一采集汇总到某一个数据中心统一进行模型训练,将不一样国家,语言,文化,种族相关的特征引入统一的模型,在统一的模型基础上再进行校订和纠偏[1][2];
二、model share方式则解决data share方式的限制,即解决数据安全隐私致使的没法共享问题。这样须要在各个区域,国家部署本地学习能力,而后将模型与中心区域及其它各区域作交换。中心区域逻辑上充分利用领域知识、全球各区域的数据和模型来最大程度的优化模型,特别是针对部分区域数据缺少的问题。目前主要有学术研究,周志华老师2016年提出过learn ware及相关的一些基础研究[3][4],主要就是解决在数据不共享的条件下,如何实现模型的可重用,可演进,可了解等重要问题。