返回介绍

数学基础

统计学习

深度学习

工具

Scala

1.3 模型

发布于 2023-07-17 23:38:23 字数 4521 浏览 0 评论 0 收藏 0

  1. 共享底部多任务模型Shared-Bottom Multi-task Model:如下图所示为Shared-Bottom多任务模型,我们将它视为多任务建模的典型baseline 方法。

    给定 $ K $ 个任务,该模型由以下部分组成:

    • 一个共享底部网络 shared-bottom network ,以函数 $ f(\cdot) $ 来表示。
    • $ K $ 个 tower network ,以函数 $ h^{(k)}(\cdot),k=1,2,\cdots,K $ 来表示,每个任务对应一个tower network

    输入层input layer 之后是 shared-bottom network ,而之后是 tower network。然后每个任务的 tower 产生对应任务的输出 $ y_k $ 。对于任务 $ k $ ,其输出可以公式化为:

    $ y_k = h^{(k)}\left(f\left(\mathbf{\vec x}\right)\right) $

    其中 $ \mathbf{\vec x} $ 为输入的样本特征。

    这里还有一个核心问题是:多个 output 的目标函数如何融合?我们知道 DNN 的优化过程只能优化单个目标函数,但是这里有两个 output,意味着有两个目标函数。如何融合多任务的目标函数也是一个难点,最简单的方法是各个目标函数直接相加。

  2. MoE:原始的 Mixture-of-Expert:MoE 模型可以形式化为:

    $ y = \sum_{i=1}^n g_i\times f_i \left(\mathbf{\vec x}\right) $

    其中:

    • $ f_i \left(\mathbf{\vec x}\right) $ 是第 $ i $ 个专家expert 的输出,共有 $ n $ 个专家。
    • $ \mathbf{\vec g} = g\left(\mathbf{\vec x}\right)\in \mathbb R^n $ 为门控网络的输出,第 $ i $ 个分量 $ g_i\in \mathbb R $ 给出第 $ i $ 个专家的权重,表示专家 $ f_i $ 的概率。且满足 $ \sum_{i=1}^n g_i = 1,\;g_i\ge 0 $ 。

    门控网络基于输入得到 $ n $ 个专家的权重分布,最终的输出是所有专家输出的加权和。

    MoE 是单任务的、多个 expert 的集成方法。

  3. MoE LayerMoE 最初是作为多个单体模型individual model 的集成方法ensemble method 而开发的,但是有些工作将其转变为基本构建块basic building block,并将其堆叠在 DNN 中。

    • MoE Layer 具有和 MoE 模型相同的结构,但是采用前一层的输出作为后一层的输入。然后以端到端的方式训练整个模型。
    • MoE Layer 的主要目标是实现条件计算,其中每个样本中只有网络的一部分是活跃的。对于每个输入样本,模型都可以通过以输入为条件的门控网络来选择全体专家的一个子集。
  4. MMoE:我们提出了一种新的 MoE 模型,该模型旨在捕获任务差异,而不需要比Shared-Bottom多任务模型多得多的模型参数。新模型被称作Multi-gate Mixture-of-Expert: MMoE 模型,其关键思想是用 MoE Layer 替代 shared-bottom network $ f $ 。更重要的是,我们为每个任务 $ k $ 添加了一个单独的门控网络 $ g^{(k)}(\cdot) $ 。

    具体而言,任务 $ k $ 的输出为:

    $ y_k = h^{(k)}\left(f^{(k)}\left(\mathbf{\vec x}\right)\right)\\ f^{(k)}\left(\mathbf{\vec x}\right)=\sum_{i=1}^ng^{(k)}_i f_i \left(\mathbf{\vec x}\right) $

    其中:

    • $ \mathbf{\vec x}\in \mathbb R^d $ 为输入 embedding
    • $ \mathbf{\vec g}^{(k)}=g^{(k)}\left(\mathbf{\vec x}\right)\in \mathbb R^{n} $ 为任务 $ k $ 的门控网络,而 $ g^{(k)}_i $ 为 $ \mathbf{\vec g}^{(k)} $ 的第 $ i $ 项,对应于任务 $ k $ 中第 $ i $ 个专家的权重。 $ k=1,2,\cdots,K $ 。
    • $ f_i\left(\mathbf{\vec x}\right) $ 为第 $ i $ 个专家。 $ i=1,2,\cdots,n $ 。
    • $ f^{(k)}\left(\mathbf{\vec x}\right) $ 为所有 $ n $ 个专家在任务 $ k $ 上的加权和,它是任务 $ k $ tower network 的输入。
    • $ h^{(k)}(\cdot) $ 为任务 $ k $ 的tower network

    我们MMoE 的实现由采用 ReLU 激活函数的多层感知机组成。门控网络只是对输入线性变换然后通过一个 softmax 层:

    $ \mathbf{\vec g}^{(k)}=g^{(k)}\left(\mathbf{\vec x}\right) = \text{softmax}\left(\mathbf W_{g^{(k)}} \mathbf{\vec x}\right)\in \mathbb R^n $

    其中 $ \mathbf W_{g^{(k)}}\in \mathbb R^{n\times d} $ 是线性变换的参数, $ d $ 是输入特征的维度。

  5. 每个门控网络 $ g^{(k)}\left(\mathbf{\vec x}\right) $ 都可以学习在给定输入 $ \mathbf{\vec x} $ 的条件下 select 所有专家的一个子集。对于多任务学习场景下的灵活参数共享,这是理想的。

    作为一种特殊情况,如果仅选择一个具有最高 gate score 的专家,那么每个门控网络实际上将输入空间线性地划分为 $ n $ 个区域,每个区域对应一个专家。MMoE 通过决定不同 gate 产生的间隔如何相互重叠,从而能够以一个复杂的方式来建模任务关系。如果任务的相关性较低,则共享专家将受到惩罚,这些任务的门控网络将学会使用不同的专家。

    如果任务之间的相关性较低,则不同任务之间倾向于选择不同的专家;如果任务之间的相关性较高,则不同任务之间倾向于选择相同的专家。

    Shared-Bottom 模型相比,MMoE 只有几个额外的门控网络,而门控网络中的模型参数数量可以忽略不计。因此,在多任务学习中,整个模型仍然尽可能地享受知识迁移的好处。

    为理解为每个任务引入单独的门控网络如何帮助模型学习task-specific的信息,我们比较了所有任务共享一个门控的模型结构。我们称之为One-gate Mixture-of-Expert: OMoE 模型,如下图所示。这是 MoE LayerShared-Bottom多任务模型的直接适配。

    OMoE 可以视为多个子模型的 ensemble,因此它的效果要强于 shared-bottom 模型。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文