当我们训练自定义模型时,我确实看到我们有 dropout 和 n_iter 参数需要调整,但是 Spacy 使用哪种深度学习算法来训练自定义模型?另外,当添加新的实体类型时,创建空白还是在现有模型上训练它好?
Omr*_*374 13
spaCy 有自己的深度学习库,称为Thinc,用于不同的 NLP 模型。对于大多数(如果不是全部)任务,spaCy 使用基于 CNN 的深度神经网络,并进行了一些调整。专门用于命名实体识别,spacy 使用:
一种从 shift-reduce 解析器借用的基于转换的方法,在Lample 等人的论文Neural Architectures for Named Entity Recognition 中有所描述。Matthew Honnibal 描述了 spaCy 如何在YouTube 视频中使用它。
一个名为“嵌入。编码。参加。预测”的框架(从视频的这里开始),幻灯片这里。
嵌入:使用布隆过滤器嵌入单词,这意味着单词哈希作为关键字保存在嵌入字典中,而不是单词本身。这维护了一个更紧凑的嵌入字典,单词可能会发生冲突并以相同的向量表示结束。
编码:单词列表被编码成一个句子矩阵,以考虑上下文。spaCy 使用 CNN 进行编码。
参加:根据查询确定哪些部分的信息量更大,并获得特定于问题的表示。
预测:spaCy 使用多层感知器进行推理。
根据 Honnibal 的说法,该框架的优点是:
有关完整概述,Matthew Honnibal 在此 YouTube 视频中介绍了该模型的工作原理。幻灯片可以在这里找到。
注意:此信息基于 2017 年的幻灯片。此后引擎可能已更改。
从理论上讲,在使用新实体微调 spaCy 模型时,您必须确保模型不会忘记先前学习实体的表示。如果可能的话,最好的办法是从头开始训练模型,但由于缺乏数据或资源,这可能并不容易或不可能。
编辑 2021 年 2 月:spaCy 版本 3 现在使用 Transformer 架构作为其深度学习模型。
归档时间: |
|
查看次数: |
2879 次 |
最近记录: |