【问题标题】:BERT embeddings in SPARKNLP or BERT for token classification in huggingface [closed]SPARKNLP 或 BERT 中的 BERT 嵌入,用于 huggingface 中的标记分类 [关闭]
【发布时间】:2021-02-12 19:05:06
【问题描述】:

目前我正致力于在 Spark 上生产一个 NER 模型。我目前有一个使用 Huggingface DISTILBERT 和 TokenClassification 头的实现,但由于性能有点慢且成本高,我正在尝试寻找优化方法。

我检查了 SPARKNLP 实现,它缺少预训练的 DISTILBERT,我认为有不同的方法,因此出现了一些关于此的问题:

  1. Huggingface 使用整个 BERT 模型,并添加了一个用于令牌分类的头部。这与获取 BERT 嵌入并将它们提供给另一个 NN 是否相同?
  2. 我问这个是因为这是 SPARKNLP 方法,该类有助于获取这些嵌入并将其用作另一个复杂 NN 的特征。这不会丢失BERT内部的一些知识吗?
  3. SPARKNLP 是否对 SPARK 进行了任何优化以帮助缩短推理时间,或者它只是另一种 BERT 实现。

【问题讨论】:

    标签: nlp bert-language-model huggingface-transformers johnsnowlabs-spark-nlp


    【解决方案1】:

    回答你的问题没有。 1:

    Hugging face 使用不同的 head 来完成不同的任务,这与 BERT 的作者对他们的模型所做的几乎相同。他们在现有模型之上添加了特定于任务的层,以针对特定任务进行微调。这里必须注意的一件事是,当您添加任务特定层(新层)时,您会共同学习新层并更新 BERT 模型的现有学习权重。所以,基本上你的 BERT 模型是梯度更新的一部分。这与获取嵌入然后将其用作神经网络的输入完全不同。

    问题 2: 当您获得嵌入并将其用于另一个复杂模型时,我不确定如何在丢失信息方面进行量化,因为您仍在使用使用 BERT 从您的数据中获得的信息来构建另一个模型。因此,我们不能归因于丢失信息,但与在 BERT 之上(以及与 BERT 一起)学习另一个模型相比,性能不一定是最好的。

    由于资源限制,人们通常会获得嵌入,然后作为另一个分类器的输入,在这种情况下训练或微调 BERT 可能不可行。

    【讨论】:

    • 我让其他用户回答问题 3,因为我不太了解 spark-nlp。
    猜你喜欢
    • 2021-04-29
    • 2020-08-10
    • 2021-04-30
    • 2021-10-20
    • 2020-10-03
    • 2021-10-31
    • 2020-09-24
    • 2021-05-31
    • 2020-12-08
    相关资源
    最近更新 更多