乐趣区

关于机器学习:multitask-learning-在即时配送中的尝试

引言

当初大多数机器学习工作都是单任务学习。对于简单的问题,也能够合成为简略且互相独立的子问题来独自解决,而后再合并后果,失去最后简单问题的后果。这样做看似正当,其实是不正确的,因为事实世界中很多问题不能分解为一个一个独立的子问题,即便能够合成,各个子问题之间也是互相关联的,通过一些共享因素或共享示意分割在一起。把事实问题当做一个个独立的单任务解决,疏忽了问题之间所富含的丰盛的关联信息。

多个工作之间共享一些因素,它们能够在学习过程中,共享它们所学到的信息,这是单任务学习所不具备的。相关联的多任务学习比单任务学习能获得更好的泛化成果。

在外卖配送场景,多种预测工作存在十分高的关联性。区域均匀配送时长、区域负载、以后时刻单量呈强相干关系,利用这种相干关系,咱们能够构建多任务学习的训练框架晋升彼此预估准确率。

外围

问题
对于每个配送区域在每一分钟,预估该区域将来 20 分钟的均匀配送时长。这个配送时长会作为配送区域内供需关系的调控因子,触发调控行为。

label 构建

  • 将来 20 分钟区域所有订单的均匀配送时长
  • 将来 20 分钟区域的订单量
  • 将来 20 分钟的均匀负载

特色构建

  • 区域固有特征:骑手数量、区域面积等
  • 区域实时特色:实时天气、实时订单量等
  • 区域历史统计特色:同时段均匀配送时长、同时段天气等

网络结构

采纳 DeepFM。
DeepFM 模型联合了广度和深度模型的有长处,联结训练 FM 模型和 DNN 模型,来同时学习低阶特色组合和高阶特色组合,DeepFM 模型的 Deep 局部和 FM 局部从词嵌入层共享数据输出,该模型具备如下长处:
(1) 联合了广度和深度模型的长处,联结训练 FM 模型和 DNN 模型,同时学习低阶特色组合和高阶特色组合。
(2) 端到端模型,无需特色工程。
(3) DeepFM 共享雷同的输出和词嵌入向量,训练更高效。

DeepFM 的输出可由连续型变量和类别型变量独特组成,对输出的离散数据须要进行词嵌入解决,通过一个相似部分连贯的构造,将离散特色映射到低维向量。DeepFM 蕴含两局部:神经网络局部与因子合成机局部,别离负责低阶特色的提取和高阶特色的提取。这两局部共享同样的输出。

DeepFM 的预测后果能够写为:$y=sigmoid(y_{fm} + f_{DNN})$

FM 局部的输入如下:

公式阐明如下:
1)这里的 $w_{ij}$ 即 $<v_{i},v_{j}>$,能够了解为 DeepFM 构造中计算词嵌入向量的权矩阵。
2)词嵌入层的神经元个数是由词嵌入向量长度和特色数量独特确定,神经元的个数为 embedding vector*field_size。

而后是 DNN 局部的构造,DNN 的作用是结构高维特色,并且 DNN 的输出也是雷同的词嵌入向量,即和 FM 局部进行权值共享。对于 DNN 网络中的输出 $a$ 解决形式采纳前向流传,这里假如 $a(0)=(e_1,e_2,…,e_n)$ 示意词嵌入层的输入,那么 $a(0)$ 作为下一层 DNN 暗藏层的输出,其前馈过程如下:
$a(l+1)=σ(W^{(l)}a^{(l)}+b^{(l)})$

在具体实现过程中,咱们将词嵌入层的词嵌入向量长度设置为 64,DNN 局部采纳 3 层全连贯层。对于 FM 局部的一阶项和二阶项以及 DNN 的每一层别离设置 dropout。其中,FM 局部的 dropout 系数为 0.85,DNN 局部的 dropout 系数为 0.9。在 DNN 全连贯层后退出 batch normalization 层。

参数共享

采纳硬参数共享机制进行多任务学习网络构建。参数的硬共享机制是神经网络的多任务学习中最常见的一种形式,硬共享机制升高了过拟合的危险。咱们通过对于所有工作共享暗藏层,同时保留几个特定工作的输入层来实现多任务学习的模型框架。多任务学习的损失函数分为 2 局部:主工作损失函数、辅助工作损失函数。对于主工作选用分段函数进行优化,改善长尾状况预估偏短问题。对于辅助工作选用平方损失进行学习优化。主工作损失函数和辅助工作损失函数别离如下:

模型训练

多任务学习有交替训练和联结训练。因为数据集雷同,咱们采纳的是多任务学习中的交替训练进行网络参数的学习。具体做法是,首先生产一个在 0 - 1 范畴内的随机数,将该随机数作为以后训练轮次训练任务的根据。训练任务选取规定,如表一所示。从表中能够看出,针对主工作和辅助工作,咱们别离设定不同的训练概率,主工作为 0.6、两个辅助工作均为 0.2,这样能够保障主工作在无限的训练轮次下能够失去充沛的训练。深度学习网络采纳 Adam 优化器进行训练,初始学习率为 0.015,每训练 2000 步,将学习率进行一次衰减,衰减系数为 0.95。

扩大:多任务学习

概念

多任务学习 (multi-task learning) 是基于共享示意(shared representation),把多个相干的工作放在一起学习的一种机器学习办法。

多任务学习波及多个相干的工作同时并行学习,梯度同时反向流传,多个工作通过底层的共享示意(shared representation)来互相帮助学习,晋升泛化成果。

网络结构

在网络结构上,分为硬共享机制(在一个基学习器的最初一层加上多个特定的输入层)和 soft 参数共享机制(每个工作都有本人的参数和模型,模型参数之间的间隔是正则化的,以便激励参数类似化)

(1)参数的硬共享机制:参数的硬共享机制是神经网络的多任务学习中最常见的一种形式,一般来讲,在理论利用中,通常通过在所有工作之间共享暗藏层,同时保留几个特定工作的输入层来实现。 硬共享机制升高了过拟合的危险。事实上,有文献证实了这些共享参数过拟合危险的阶数是 N,其中 N 为工作的数量,比工作相干参数的过拟合危险要小。直观来将,这一点是十分有意义的。越多任务同时学习,咱们的模型就能捕捉到越多任务的同一个示意,从而导致在咱们原始工作上的过拟合危险越小。

(2)参数的软共享机制(基于束缚的共享(regularization based)):每个工作都有本人的模型,本人的参数。在共享 Soft 参数时,每个工作都有本人的参数和模型。模型参数之间的间隔是正则化的,以便激励参数类似化。咱们对模型参数的间隔进行正则化来保障参数的类似。如有文献应用 L2 间隔正则化,而也有文献应用迹正则化(trace norm)。用于深度神经网络中的软共享机制的束缚很大水平上是受传统多任务学习中正则化技术的影响。束缚深度神经网络 Soft 参数共享的思维受到了 MTL 正则化技术的极大启发,这种思维曾经用于其它模型开发。

训练形式

在训练阶段,包含交替训练和联结训练 (把两个 loss 相加) 两种形式。

什么时候交替训练好?

当对每个不同的工作有两个不同的数据集(例如,从英语翻译成法语,英语翻译成德语)时,交替训练是一个好主见。通过以这种形式设计网络,能够进步每个工作的性能,而无需找到更多任务特定的训练数据。

什么时候联结训练好?

交替训练容易对某一类产生偏差,当对于雷同数据集,产生不同属性的输入时,放弃工作的独立性,应用联结训练较好。

退出移动版