Nlp Spacy在训练自定义模型时使用哪种深度学习算法?

Nlp Spacy在训练自定义模型时使用哪种深度学习算法?,nlp,spacy,ner,Nlp,Spacy,Ner,当我们训练自定义模型时,我确实看到我们需要调整辍学和n_iter参数,但Spacy使用哪种深度学习算法来训练自定义模型?另外,在添加新实体类型时,创建空白或在现有模型上对其进行训练是否合适?spaCy使用哪种学习算法? 深度学习lib库有自己的深度学习库,用于不同NLP模型的引擎盖。对于大多数(如果不是全部)任务,spaCy使用了基于CNN的深层神经网络,并进行了一些调整。spacy专门用于命名实体识别,它使用: 一种基于转换的方法借用自移位-归约解析器,Lample等人在论文中对此进行了描述。

当我们训练自定义模型时,我确实看到我们需要调整辍学和n_iter参数,但Spacy使用哪种深度学习算法来训练自定义模型?另外,在添加新实体类型时,创建空白或在现有模型上对其进行训练是否合适?

spaCy使用哪种学习算法?

深度学习lib库有自己的深度学习库,用于不同NLP模型的引擎盖。对于大多数(如果不是全部)任务,spaCy使用了基于CNN的深层神经网络,并进行了一些调整。spacy专门用于命名实体识别,它使用:

  • 一种基于转换的方法借用自移位-归约解析器,Lample等人在论文中对此进行了描述。 Matthew Honnibal描述了spaCy如何在一个应用程序上使用此功能

  • 一个名为“嵌入、编码、参与、预测”的框架(从视频开始),幻灯片

    • 嵌入:使用Bloom过滤器嵌入单词,这意味着单词哈希作为键保存在嵌入词典中,而不是单词本身。这维护了一个更紧凑的嵌入字典,单词可能会发生冲突,并以相同的向量表示结束

    • 编码:将单词列表编码到句子矩阵中,以考虑上下文。spaCy使用CNN进行编码

    • 参与:确定给定查询的哪些部分信息量更大,并获取问题特定的表示形式

    • 预测:spaCy使用多层感知机进行推理

  • 根据Honnibal的说法,该框架的优点是:

  • 主要相当于序列标记(另一个任务spaCy为其提供了模型)
  • 与解析器共享代码
  • 轻松排除无效序列
  • 任意特征很容易定义
  • 为了获得完整的概述,Matthew Honnibal描述了该模型是如何实现的。可以找到幻灯片

    注:此信息基于2017年的幻灯片。从那时起,发动机可能已经改变了

    添加新实体类型时,我们是创建空白模型还是训练现有模型? 理论上,当使用新实体微调空间模型时,必须确保模型不会忘记以前学习的实体的表示。如果可能的话,最好的办法是从头开始训练模型,但由于缺乏数据或资源,这可能不容易或不可能


    编辑2021年2月:spaCy版本3现在使用Transformer架构作为其深度学习模型。

    在训练自定义实体的示例代码中,我们可以将SGD视为优化器,因此如果我错了,请纠正我,基本上在引擎盖下有一个CNN训练的模型,但在训练自定义实体时,spacy在CNN模型上使用SGD来调整参数,以使误差函数最小化?是的,SGD是使用的优化器,但是模型本身不同于通常用于NER的普通LSTM或CRF。好的,明白了。所以你要说的是,Spacy的核心模型是基于CNN的,但它也包含了来自其他架构(如LSTM、CRF e.t.cI)的功能。我不认为它包含了LSTM或CRF。这可能就是为什么它比循环模型快得多的原因。如果要我用一句话说的话,我会说“CNN在布卢姆之上,全神贯注”