谷歌';s BERT for NLP:替换vocab.txt中的外来字符以添加单词?
我正在微调伯特模型,但需要添加几千个单词。我知道可以替换vocab.txt顶部的~1000谷歌';s BERT for NLP:替换vocab.txt中的外来字符以添加单词?,nlp,Nlp,我正在微调伯特模型,但需要添加几千个单词。我知道可以替换vocab.txt顶部的~1000[unused#]行,但我也注意到文件中有数千个单外来字符(unicode),我永远不会使用它们。对于微调,是否可以使用my words、fine tune和model来替换它们?未使用的单词权重基本上是随机初始化的,因为它们没有被使用。如果你只是用你自己的词来替换它们,但不在特定领域的语料库上做进一步的预训练,那么它基本上只会是随机的。因此,如果您替换并继续进行微调,在我看来不会有多大好处 让我向你指出这
[unused#]
行,但我也注意到文件中有数千个单外来字符(unicode),我永远不会使用它们。对于微调,是否可以使用my words、fine tune和model来替换它们?未使用的单词权重基本上是随机初始化的,因为它们没有被使用。如果你只是用你自己的词来替换它们,但不在特定领域的语料库上做进一步的预训练,那么它基本上只会是随机的。因此,如果您替换并继续进行微调,在我看来不会有多大好处
让我向你指出这一点。根据论文作者的说法:
我的建议是只使用现有的单词vocab
并在域内文本上运行更多步骤的预试运行
应该“免费”学习构图。记住这一点
词条词汇基本上没有词汇表外的词汇,
你不知道在训练前看到了哪些单词
而不是。仅仅因为一个单词被单词碎片分开并不意味着
这很少见,事实上,许多被拆分成单字的单词是
在培训前数据中查看了5000多次
但是如果你想增加更多的人声,你可以选择:(a)替换
“[unusedX]”表示您的词汇。因为没有用过
它们被有效地随机初始化。(b) 将其附加到
vocab,并编写一个脚本,生成一个新的检查点
与预先训练的检查点相同,但声音更大
其中新嵌入是随机初始化的(对于初始化
使用了tf.truncated_normal_初始值设定项(stddev=0.02))。这很可能会发生
需要处理一些tf.concat()和tf.assign()调用
希望这有帮助