什么是多头模型?模型中的“头”到底是什么?
Posted
技术标签:
【中文标题】什么是多头模型?模型中的“头”到底是什么?【英文标题】:What is a multi-headed model? And what exactly is a 'head' in a model? 【发布时间】:2019-09-24 01:07:51 【问题描述】:什么是深度学习中的多头模型?
到目前为止我发现的唯一解释是:每个模型都可能被认为是一个主干加上一个头,如果你预先训练主干并放置一个随机头,你可以对其进行微调,它是好主意 谁能提供更详细的解释。
【问题讨论】:
【参考方案1】:您找到的解释是准确的。根据您希望对数据进行预测的内容,您需要足够的主干网络和一定数量的预测头。
例如,对于基本分类网络,您可以将 ResNet、AlexNet、VGGNet、Inception 等视为主干,将全连接层视为唯一的预测头。
对于需要多头的问题的一个很好的例子是本地化,您不仅要对图像中的内容进行分类,还要对对象进行本地化(查找其周围边界框的坐标)。
下图显示了一般架构
主干网络(“卷积和池化”)负责从包含更高级别汇总信息的图像中提取特征图。每个头部都使用此特征图作为输入来预测其期望的结果。
您在训练期间优化的损失通常是每个预测头的各个损失的加权总和。
【讨论】:
据我所知,每个“负责人”都负责一项特定的任务,我们拟合数据的最终模型是这些“负责人”的混合? @zoandr 正确。我在这方面添加了更多信息。 如果我必须解决多标签分类问题,是否意味着我必须使用多头模型? @zoandr 是的,您可以这样做,但是您也可以将问题转换为多类分类问题并返回一个头。 但是在多标签分类的情况下,“头”是什么?我使用 GloVe 模型对文本进行矢量化,然后使用 LabelPowerset 和 RandomForestClassifier 进行拟合。这三个是我的“头”吗?【参考方案2】:https://forums.fast.ai/t/terminology-question-head-of-neural-network/14819/2 https://www.youtube.com/watch?vh5Tz7gZT9Fo (1:13:00)头是网络的顶部。例如,在底部(数据进入的地方)你采用一些模型的卷积层,比如 resnet。如果您调用 ConvLearner.pretrained,CovnetBuilder 将为您在 Fast.ai 中的数据构建一个具有适当头部的网络(如果您正在处理分类问题,它将创建一个带有交叉熵损失的头部,如果您正在处理回归问题,它会创建一个适合的头部)。
但是您可以构建一个具有多个头的模型。该模型可以从基础网络(resnet conv 层)获取输入并将激活信息提供给某个模型,例如 head1,然后将相同的数据提供给 head2。或者您可以在 resnet 之上构建一些共享层,并且只有这些层馈送到 head1 和 head2。
您甚至可以将不同的图层提供给不同的头部!这有一些细微差别(例如,关于 fastai 库,如果您不指定 custom_head 参数,ConvnetBuilder 将在基础网络顶部添加一个 AdaptivePooling 层,如果您不指定)但这是总体情况。
【讨论】:
以上是关于什么是多头模型?模型中的“头”到底是什么?的主要内容,如果未能解决你的问题,请参考以下文章
[Python人工智能] 三十六.基于Transformer的商品评论情感分析 keras构建多头自注意力(Transformer)模型
[Python人工智能] 三十六.基于Transformer的商品评论情感分析 keras构建多头自注意力(Transformer)模型