【问题标题】:Transformer/BERT token prediction vocabulary (filtering the special tokens out of the set of possible tokens)Transformer/BERT 标记预测词汇表(从可能的标记集中过滤特殊标记)
【发布时间】:2021-02-13 23:23:44
【问题描述】:

对于 Transformer 模型,尤其是 BERT,以编程方式禁止模型以特殊标记作为预测结果是否有意义(并且在统计上是正确的)? 在原始实现中如何?在收敛期间,模型必须学会不预测这些,但这种干预会有所帮助(或相反)吗?

  • 我会主要考虑 [MASK]、[CLS] 标记
  • [PAD] 令牌也可能有一定意义(但并非在所有情况下都如此)

【问题讨论】:

    标签: bert-language-model transformer


    【解决方案1】:

    如果我理解您的问题,您是在问 BERT(或其他基于转换器的模型)如何处理特殊字符。这与模型架构的相关性较低(即,此答案与自回归模型甚至非神经模型相关)与预处理步骤的相关性较低。

    特别是,BERT 标记器使用字节对编码标记器将文本和标记拆分为子词。如果标记器无法识别字符序列,它将用UNK 元标记替换字符序列,非常类似于MASKCLS 标记。如果您想查看更多细节,Google 会有很多答案,例如来自a blog article

    当我们使用预训练模型时,有一点需要注意。由于模型是在某个语料库上进行预训练的,因此词汇表也是固定的。换句话说,当我们将预训练模型应用于其他一些数据时,新数据中的某些标记可​​能不会出现在预训练模型的固定词汇表中。这通常称为词汇表外 (OOV) 问题。

    对于没有出现在原始词汇表中的token,设计为应该替换为一个特殊的token [UNK],代表unknown token。

    【讨论】:

    • 我了解标记化。我的问题也不在于 OOV 令牌([UNK])。我的意思是问在标记预测期间以编程方式过滤掉特殊标记(从可能的预测词汇表中)是否有意义;这将以某种方式指导培训。无论如何,模型都必须学习它,但通过这种过滤可以加快速度。我不知道作者是否在最初的实现中做到了;也不知道会不会引入任何统计相关的问题。
    • “在标记预测期间以编程方式过滤掉特殊标记” - 您能否澄清一下特殊标记的含义(可能是示例)?您能否澄清一下“过滤器”的含义?也许您在质疑从训练语料库中删除某些标记是否会改善结果?
    • 不,从技术上讲,我们需要语料库中的所有标记(例如,如果语料库只是减少,则 torch.nn.Embedding 将不起作用)。示例:在 MLM 期间,我们预测蒙面位置;最可能的令牌往往是例如[CLS];我们知道在给定位置它不可能,所以我们寻找另一个最有可能的令牌(它不在特殊令牌集中)并产生它。
    猜你喜欢
    • 1970-01-01
    • 2021-09-30
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多