机械进修应用的核心体系包含数据收集、数据预处理、模型练习和模型办事,每个体系对计算、存储、通信和一致性的请求都不一样。对于模型练习体系而言,因为摩尔定律掉效,实际营业整体的数据量和数据维度持续赓续的增长,机械进修算法的No Free Lunch定理,实际建模过程中频繁测验测验的须要,计算框架的No Free Lunch,实际的机械进修体系须要一个专门针对机械进修设计的兼顾开辟效力和履行效力的分布式并行计算框架。此次分享起首对解决开辟效力中的计算和编程模型的选择,编程说话的选择做了介绍,开辟者须要根据本身实际的应用处景、开辟成本和团队才能等去做衡量和选择。然后又举例介绍懂得决履行效力中涉及到的计算、存储、通信和容错的设计和优化。持续Profiling,迭代清除瓶颈,均衡应用好各类计算资本,尽可能最大年夜化各类计算资本的应用率,大年夜而晋升整体履行效力。
除了上述的容错方法之外,还可以应用传统灾备常用的安排冗余体系来进行灾备,根据灾备体系的在线情况,可以分为冷、平和热备份方法,实际应用中可以根据实际的资本涸萃C机能请求选择最合适实际问题的冗余容错方法。
机械进修实际应用的常见陷阱
近些年CPU、GPU等计算硬件的效力晋升速度远高于主存机能的晋升速度,所以计算和存储上的机能差距在赓续扩大年夜,形成了“存储墙”(Memory Wall),是以在很多问题上,存储优化更为重要。在存储方面,大年夜CPU的存放器到L1、L2等高速缓存,再到CPU本地内存,再到其他CPU内存,还有外存等有着复杂的存储构造和不合的存储硬件,拜访效力也有着量级的差距。Jeff Dean建议编程人员切记不合存储硬件的机能数据。
在实际的机械进修应用中,经常会碰到一些轻易被忽视的陷阱。这里举例分享一些常见的陷阱:一致性、开放世界、依附治理、可懂得性/可调试性。
一致性陷阱
一致性陷诹?鲱常见的轻易被忽视的陷阱。
起首练习/预估一致性问题是最常见的,个中包含特点表达不一致以及目标含义不一致。特点表达不一致较为常见,原由也有很多:表达方法不一是比较常见的,比如在练习数据中0代表男,1代表女,可是在预估数据中1代表女,0代表男;练习和评估特点提取中,某一方或者两方都出现了逻辑缺点,会导致不一致;有一种比较隐秘的不一致叫“穿越”,尤其在时序数据上特别轻易产生,“穿越”就是指特点里包含了违背时序或者因不雅逻辑的信息,比如有特点是在全部练习数据集中取该特点时正负例的个数/比例,这里其实隐含应用到了样本的标注信息,然则现其实预估过程中是弗成能提前拿到标注信息的(不然就不须要预估了);又比如某些特点应用了当前样本时光点之后的信息,然则这在实际的预估中是做不到的,因为今朝还无法穿越到将来。还有一种不一致性是目标含义的不一致性,比如目标是优化搜刮结不雅的用户知足度,然则却竽暌姑用户点击作为机械进修的目标,用户点击了某个搜刮结不雅不代表用户对这个结不雅知足。
别的一种轻易被忽视的一致性是字段含义会跟着时光的推移会产生变更。
在实际应用中须要重点存眷一致性测试,留心特点的具体物理含义,避免出现特点表达不一致、目标含义不一致、随时光变更的不一致的问题。
开放世界陷阱
机械进修体系被应用到实际营业中去时,面对的就是一个开放世界,机械进修体系不再是一个静态孤立的体系,而是须要跟外部世界打交道,这里就有很多的陷阱。个中有一个异常有名的幸存者误差问题,因为当前的模型会影响下一次模型的练习数据,如不雅不做干涉,那么练习数据是有误差的。这个误差最有名的来源来自二战时代,科学家团队研究若何对飞机加固来晋升飞机在疆场的存活率,他们找来了疆场上存活下来的飞机上的弹孔进行分析,最后得出结论:腹部中弹最多,所以须要在腹部进行加固,可进步存活率。然则,统计学家Abraham Wald指出他们忽视了那些被摧毁的飞机,因为它们被击中了机翼、引擎等关键部位,所以可能更好地保护机翼、引擎等关键部位才能晋升飞机在疆场上的存活率。在推荐体系、搜刮引擎等体系中如许的问题长短经常见的,用户看到的结不雅是基于机械进修模型推荐出来的,而这些结不雅又会成为下一次机械进修模型练习的数据,然则这些数据是有模型偏置的。本质上这是一个Exploitation和Exploration上衡量的问题,须要以经久效不雅为目标,解决如许的问题可以参考强化进修中的解决筹划。除了幸存者误差陷阱之外,机械进修体系在实际营业体系中也可能会与其他体系进行合营,机械进修体系的输出会跟着数据而产生变更,然则如不雅与之合营的体系中依附机械进修体系输出的参数比如阈值等却固定不变,就可能会影响全部体系的效不雅。实际应用中须要监控机械进修体系的输出分布和对其他体系的影响,可采取比如预估分布改┞俘等策略。
在实际机械进修模型练习体系的设计上,具体的选择取决于框架设计者的偏好和实际问题(比如体系安排请求、开辟价值等)的需求。
依附陷阱
【编辑推荐】