多目标MMOE

介绍MMOE

deep部分:存在多个Expert网络,每个Expert网络的输出最终会经过门网络进行加权平均(比较简单的线性加权,Attention的思想)
门网络通过softmax输出每个专家网络的可能性,线性加权相乘。然后进行分类或者回归任务
对于不同的任务通过相应的Gating Network来对不同的Expert赋予不同的权重,使得部分Expert“专注于各自擅长的任务”

多目标MMOE_第1张图片

论文:左侧的shallow tower部分和右侧的main tower部分,论文中提到的采用类似Wide&Deep模型结构就是指这两个tower,其中shallow tower可以对应Wide部分,main tower对应的是Deep部分
存在n个Expert网络,每个Expert网络的输出最终会经过Gating Network进行加权平均(比较简单的线性加权,Attention的思想)
对于不同的任务通过相应的Gating Network来对不同的Expert赋予不同的权重,使得部分Expert“专注于各自擅长的任务”

Shallow Tower部分

position bias问题,文章中shallow Tower部分主要作用就是消除Position bias的影响。这部分模型的输入是与position bias相关的一些特征(如广告展现时的排序位置、用户机型等),文章提到了用户机型也算在这部分feature当中,比较直观的认知是不同机型的尺寸的差异可能会对这些position bias有所影响。实际上我们线上的PC搜索模型当中也是采用同样的架构,即Main Tower + Shallow Tower这种类似Wide&Deep的模型结构

多目标MMOE_第2张图片

多目标MMOE_第3张图片


loss计算mse和softmax_cross_entropy

tf.squeeze(control_layer,axis=[1]) #从tensor中删除所有大小是1的维度,也可以通过指定squeeze_dims来删除特定尺寸1尺寸。
tf.expand_dims(gate,axis=1) #在第axis位置增加一个维度

experts变成多个全连接层Expert
        experts = []
        for i in range(n_experts): #8*多个全连接层
            experts.append(self.Expert(shared_bottom, expert_units))
        # Convert experts to tensor
        experts = tf.convert_to_tensor(experts)
        experts = tf.transpose(experts, perm=[1, 0, 2])

GATE
		输入经过n层 分类一个,回归一个
        logits = tf.layers.dense(net, n_experts, activation=None) #使GATE和n_experts维度相等方便后续相乘 8个
        probabilities = tf.nn.softmax(logits)
权重gate层和experts层相乘,经过tower在分类
def Classify(self, gate, experts, tower_units, n_classes):
        gate = tf.expand_dims(gate, axis=1) #增加维度
        control_layer = tf.matmul(gate, experts)
        # 注意指定squeeze的维度,否则如果有一维是None,会导致整个tensor丢失形状
        control_layer = tf.squeeze(control_layer, axis=[1])
        # Tower
        net = control_layer
        for units in tower_units: # [64, 32]
            net = tf.layers.dense(net, units=units, activation=tf.nn.relu, use_bias=False)
        # Compute logits (1 per class).
        logits = tf.layers.dense(net, n_classes, activation=None)
        predicted_classes = tf.argmax(logits, 1)  #回归去掉这一行 
        return logits

你可能感兴趣的:(推荐系统)