贴图是Line最成功的商业模式,推出10年来,光在台湾的贴图创作者高达65万人,上架了8百多万组贴图,在日本更高,超过千万组贴图,但要从海量贴图中,找出使用者想用的推荐清单,Line有一套利用使用者历史纪录训练的推荐机器学习模型,可以针对不同使用族群提供统一的贴图推荐清单。
但是,Line的企图不只如此,甚至想要更近一步贴近上亿用户每一个人各自的喜好,来提供推荐。Line技术长Tomohiro Ikebe指出,今年秋天,Line在贴图推荐导入了一套新的机器学习训练架构,「可以处理爆量特徵来建立模型,又能兼顾隐私和用户便利性,就是联合学习和差分隐私。」
为了进一步了解用户喜好,不只要参考购买记录,甚至需了解用户浏览贴出和发送贴图的历史,「但从隐私角度,得非常小心处理这类资料。」他说。
透过联合学习(Federated Learning)机制,可以用户本地端App上完成模型训练,并利用差分隐私(Differential Privacy)架构,将模型加上杂讯来避免从模型回推原始资料,再将没有用户资料的特徵模型,回传到後端伺服器来更新整体推荐模型後,再分派新模型到用户App上,利用本地端Log来产生更个人化的推荐顺序。「这个方式可以在资料使用过程中,保护用户隐私。」Tomohiro Ikebe强调。
Line机器学习平台部门产品经理菊地悠更透露,实测後发现,结合联合学习来提供超级个人化的推荐,可以提高5.6%的贴图下载率。
机器学习训练,可以可以分成三种模式,第一种最常见的ML模式是伺服器端机器学习,在伺服器端完成ML训练和推论,例如推荐模型,先在伺服器端完成模型训练,产生推荐清单,再将清单送到App端点提供给用户,搜集在端点搜集经过同意的使用Log後,回传到伺服器,展开再次的模型训练。
第二种则是装置端推论模式。这个做法同样在伺服器端进行模型训练,但是将训练好的模型派送到用户端来,利用端点用户资料来推论,好处是不用将用户端资料回传,但所有用户都使用同样的推论模型。
第三模式则是新崛起的联合学习模式。在这个模式下,采取分段训练的方式,先在用户端进行模型训练 ,常见是随机挑选部分用户或特定装置来参与模型训练,并将各装置上的本地端模型上传到後端伺服器,然後才在後端整并所有的本地端模型,产生最後的整体模型,再将整体模型派送到用户端。
Line在今年秋天开始尝试联合学习,第一个导入联合学习的应用就是贴图订阅帐号的推荐功能。贴图订阅帐号在台湾就是贴图超值方案,每月缴交小额费用,可以长期使用500万组贴图,不用一一购买不同的贴图组。
订阅户在对话框要选择贴图时,Line会提供贴图推荐功能,一种是来自使用者自行下载的贴图,还有一种推荐是来自系统自动产生的推荐清单,使用者只要输入前几个字,就会快速筛选出这几个字所要挑选的贴图,再列出来让用户挑选,送出到对话中。Line就是在系统产生的推荐贴图功能导入了联合学习。
不过,不只用联合学习,「推荐推图运用了上述三种机器学习模式,分两阶段产生推荐。」Line机器学习平台部门产品经理菊地悠表示。
Line在今年秋天开始尝试联合学习,第一个导入的联合学习应用就是贴图订阅帐号的推荐功能开始尝试,每一个人的推荐清单排序都不一样,能够根据用户个人过去使用习惯和个人偏好来优化。图片来源/Line
结合联合学习,两阶段产生超级个人化推荐清单
第一阶段是产生初始候选推荐清单,采取的就是伺服器端机器学习训练模式,利用历史纪录,例如热门购买纪录、下载量,再依据不同使用者的特徵属性来区分出上千个用户群,对每一种使用者族群建立一个推荐模型,来产生这一群用户共用的贴图推荐名单,这就是第一阶段在伺服器端产生的候选名单。大约是从1千万组贴图中,选出100组候选名单。
接着进入第二阶段个人化重新排序,这也是本地端联合学习阶段,这又分成两个部分,推论和训练。在本地端推论上,依据用户特性,将这名用户所属小组的伺服器端推荐名单下载到App上,在用户端进行本地端推荐模型的推论,输入这名用户的个人特徵向量和物件特徵向量(利用输入关键字来产生),来进行推论,来重新排序所下载的候选贴图推荐清单。
用户输入想搜寻的贴图关键字时,每输入一个字,就会重新产生一个新的物件特徵向量,可以用来重新执行一次推论,产生新的推荐分数,作为重新排序之用。如此一来,就会产生一份更贴近这名用户喜好的个人化推荐顺序,将他可能更想用的贴图,列在前面,来提高使用率。
不只是本地端推论,Line也在本地端进行模型训练,利用了用户在装置上的过去浏览纪录和使用纪录,在装置端重新训练出一个更贴近这名用户偏好的本地端模型,并利用这个模型来进行本地端推荐分数的再计算,更进一步让推荐清单,可以贴近这名用户自己过去的使用习惯。最後再将这个模型回传到伺服器端整并,完成联合学习的训练。
不过,要在本地端实现联合学习的模型训练,得克服2大挑战。
第一是必须能支援不同类型装置和环境各自的ML训练环境,包括伺服器端和App端,其次是要能确保隐私,上传资料不能带有用户个资,也要避免模型遭骇而外流原始资料,这正是Line在联合学习模式再加上差分隐私演算法来回传模型到後端伺服器的缘故。
菊地悠表示, Line不只要在贴图推荐使用联合学习,未来也想导入其他服务,因此必须把联合学习模式平台化。
负责打造Line联合学习平台(Line Federated Learning平台,简称LFL平台)的Line Plus工程团队软体工程师Hyukjae Jang更指出,本地端训练的挑战是,手机资源有限,任意训练会占用资源而影响用户体验,因此,关键是要控制和管理多个FL模型的训练。「不只提供通用功能,要建立一个平台架构,才能支援不同类型的联合学习。」
Line机器学习平台本地端架构可以细分为三个部分,一个通用模组,应用模组和ML函式库。区分通用模组和应用模组的原因,是为了日後可以支援多种应用各自的联合学习训练需求。(图片来源/Line)
三地两国30人团队打造LFL平台
Line动员了东京、福冈和韩国三地的开发团队,共30多名工程师协同开发,打造出这个LFL平台,包括了伺服器端和本地端的架构。
在这个LFL平台上,从伺服器端模型储存库的模型,可以用来产生第一阶段的候选推荐清单,下载到本地端App上。再依据使用者输入的字,进行推荐分数的推论,来重新排序推荐清单。若本地端装置处於闲置状态,则会由本地端事件调度机制来驱动本地端的模型训练,来更新本地端的模型,作为後续本地端推论之用,也会将模型上传到伺服器端,经过模型整并机制,来产生新版的模型,再下载到用户端,作为新的第一阶段候选推荐模型之用。
这个LFL平台还提供延伸功能,在伺服器端则提供了模型储存库、版本控制、AB测试功能等,在本地端则有一套用ONNX格式打造的通用ML框架,可支援 iOS和Android,另外本地端还提供了背景ML训练机制和排程机制,以及结合差分隐私处理的上传机制。
在本地端的联合学习机制上,还可以细分为三个部分,一个通用模组,应用模组和ML函式库。通用模组负责本地端的模型管理,如版本控制,模型下载上传,模型更新等。而应用模组则可以针对不同应用,设定不同的联合学习模型和用户Log资料库。「未来可以支援多种应用各自的联合学习训练需求,这是区分通用模组和应用模组的关键理由。」Hyukjae Jang透露。
另外,要在装置端执行联合学习,必须要考虑电力、储存空间和装置待机状态。Hyukjae Jang表示,LFL有三个启动联合学习训练的原则,包括电力全满、储存空间足够,还要等使用者没有使用装置的时间。尤其要利用装置闲置时间来训练,必须要设计背景执行机制。
Line利用可以跨iOS和Android的Onyx runtime打造了一个只有1.2MB 大小的Yuki联合学习SDK,称为YFL,也可以支援资料科学家将TensorFlow或Pytorch训练的模型,转换成YFL能支援的轻量模型。函式库中也支援利用高斯分布来计算的差分隐私机制。并且只用CPU背景服务,而不需要GPU。
另外,还有一个抽样机制会随机抽样挑选部分人上传,也会限制上传次数,避免过度干扰使用者。在背景执行训练时,排程机制也会尽量利用晚上睡觉时间完成训练,然後删除Log资料。
Hyukjae Jang更透露,不只贴图,未来希望可以导入到更多不同类型的服务,包括聊天、音乐、电话、支付、新闻和影音服务上。
相关报导