machine-learning - Spacy-3 预训练永无止境
问题描述
我正在尝试对我的 NER 项目使用 Spacy-3 预训练。但是(使用开箱即用的)设置,我的预训练不会收敛。在一种情况下,我让它运行了 3 天,完成了 40 多个 epoch,但它似乎没有收敛。
具体到我的数据是它来自 OCR(英语,法律文件),因此包含大量拼写错误的单词和/或 AOV 单词 - 噪音(垃圾)。例如(其中一个)我的数据集将包含 4,903,282 个标记,其中 123,105 个标记是唯一的。
但频率为 5 或更高的代币只有 10,543 个。频率最高的标记是“,”,出现 336,643 次
我觉得我达到了一些“限制”——预训练仅限于一些“N”个单词,并且通过我的样本只是不断地冲洗掉好的(频繁的)标记。
从我的 config.cfg 中:
...
[corpora.pretrain]
@readers = "spacy.JsonlCorpus.v1"
path = ${paths.raw_text}
min_length = 5
max_length = 0
limit = 0
...
[pretraining]
max_epochs = 1000
dropout = 0.2
n_save_every = null
component = "tok2vec"
layer = ""
corpus = "corpora.pretrain"
[pretraining.batcher]
@batchers = "spacy.batch_by_words.v1"
size = 3000
discard_oversize = false
tolerance = 0.2
get_length = null
[pretraining.objective]
@architectures = "spacy.PretrainCharacters.v1"
maxout_pieces = 3
hidden_size = 300
n_characters = 4
[pretraining.optimizer]
@optimizers = "Adam.v1"
beta1 = 0.9
beta2 = 0.999
L2_is_weight_decay = true
L2 = 0.01
grad_clip = 1.0
use_averages = true
eps = 0.00000001
learn_rate = 0.001
[initialize]
vectors = "en_core_web_lg"
init_tok2vec = ${paths.init_tok2vec}
vocab_data = null
lookups = null
before_init = null
after_init = null
解决方案
推荐阅读
- javascript - 如何让我的机器人只回答我编写的命令?
- angular - 使用 AngularFire 的 where 子句在 Angular 中没有按预期工作
- javascript - 创建 TS 数组自定义类型?
- mysql - Wordpress SQL 查询消耗 100% CPU
- angular - 使用 ngFor 指令 Angular 创建多个不同的动态组件
- php - 单个页面中的多个星级评分表
- java - 将 _id(ObjectId) 转换为聚合中的字符串以进行查找 Spring boot
- acumatica - 弹出值未在自定义屏幕网格中更新
- compiler-errors - 调用`std.math.clamp` 给出编译错误`错误:无法在 Zig 中评估常量表达式`
- python - 从具有正确边缘的 png 图像中获取轮廓(轮廓)