【问题标题】:What is a multi-headed model? And what exactly is a 'head' in a model?什么是多头模型?模型中的“头”到底是什么?
【发布时间】:2019-09-24 01:07:51
【问题描述】:

什么是深度学习中的多头模型?

到目前为止我发现的唯一解释是:每个模型都可能被认为是一个主干加上一个头,如果你预先训练主干并放置一个随机头,你可以对其进行微调,它是好主意
谁能提供更详细的解释。

【问题讨论】:

    标签: machine-learning neural-network deep-learning


    【解决方案1】:

    您找到的解释是准确的。根据您希望对数据进行预测的内容,您需要足够的主干网络和一定数量的预测头

    例如,对于基本分类网络,您可以将 ResNet、AlexNet、VGGNet、Inception 等视为主干,将全连接层视为唯一的预测头。

    对于需要多头的问题的一个很好的例子是本地化,您不仅要对图像中的内容进行分类,还要对对象进行本地化(查找其周围边界框的坐标)。

    下图显示了一般架构

    主干网络(“卷积和池化”)负责从包含更高级别汇总信息的图像中提取特征图。每个头部都使用此特征图作为输入来预测其期望的结果。

    您在训练期间优化的损失通常是每个预测头的各个损失的加权总和。

    【讨论】:

    • 据我所知,每个“负责人”都负责一项特定的任务,我们拟合数据的最终模型是这些“负责人”的混合?
    • @zoandr 正确。我在这方面添加了更多信息。
    • 如果我必须解决多标签分类问题,是否意味着我必须使用多头模型?
    • @zoandr 是的,您可以这样做,但是您也可以将问题转换为多类分类问题并返回一个头。
    • 但是在多标签分类的情况下,“头”是什么?我使用 GloVe 模型对文本进行矢量化,然后使用 LabelPowerset 和 RandomForestClassifier 进行拟合。这三个是我的“头”吗?
    【解决方案2】:

    头是网络的顶部。例如,在底部(数据进入的地方)你采用一些模型的卷积层,比如 resnet。如果您调用 ConvLearner.pretrained,CovnetBuilder 将为您在 Fast.ai 中的数据构建一个具有适当头部的网络(如果您正在处理分类问题,它将创建一个带有交叉熵损失的头部,如果您正在处理回归问题,它会创建一个适合的头部)。

    但是您可以构建一个具有多个头的模型。该模型可以从基础网络(resnet conv 层)获取输入并将激活信息提供给某个模型,例如 head1,然后将相同的数据提供给 head2。或者您可以在 resnet 之上构建一些共享层,并且只有这些层馈送到 head1 和 head2。

    您甚至可以将不同的图层提供给不同的头部!这有一些细微差别(例如,关于 fastai 库,如果您不指定 custom_head 参数,ConvnetBuilder 将在基础网络顶部添加一个 AdaptivePooling 层,如果您不指定)但这是总体情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      • 2011-09-08
      • 2019-06-11
      • 2011-05-12
      • 2014-05-25
      • 1970-01-01
      相关资源
      最近更新 更多