当前位置:   article > 正文

一种 用于GPT模型 训练的 包含加权 和 数据增强 和 损失方法 的设计_gpt进行数据增强

gpt进行数据增强

根据之前训练的字模型+PALM效果和经验。真是胡言乱语,牛头不搭马嘴。观察了模型的在各种条件下的输出。看大佬的各种的增强方法,搞了2周写完了新的增强管道。
换了新方案,继续训练了一晚上,马上就有不错的生成效果了,泪目。

在老的增强方法和损失函数上,T5 模型不太行,8+8 层的情况下生成效果不如12层相似参数量的PALM连贯,准确度也不如PALM,训练速度也比PALM慢2倍。

训练语料是质量较好的,但比较少,而且生僻字略多,所以使用字模型。

训练模型:GPT模型(参数量44M)
训练任务:翻译;对话续写;填空
词袋:单字(char)
词采样方法:top_K + top_P + temperature + 重复词概率惩罚

设计思路:
基于FLM方法,只能看到前面的词,而看不到后面的词的原理。随机破坏的前面的词,同时给予这些词分类 低权重或负权重进行学习,意为阻止模型对被破坏词的学习;然后适当降低被破损词的下一个词的权重,意为使下一个词受前一个词影响而降低概率了,但影响不大。

注意:所有增强均为训练中动态增强,而不是扩增后保存下来作为增强数据库。

中文增强流程

第一行为分词
第二行为权重

下面的 * 号 代表乘法,下面不同的增强方式组合起来,乘法之后,权重会比较多样化

预先设定,0.3概率,整句跳过所有增强


1 输入

枯叶堆静静地燃烧起来
1.0
  • 1
  • 2

2 检查汉字数量,如果小于4则跳过增强。

3 首先进行 jieba 分词,并逐词分配基础句子权重

枯叶静静地燃烧起来
1.01.01.01.01.0

4 对词进行增强

下面以选中 “静静地” 这个词为例

4.1 随机替换词

迭代所有词,对每一个词都使用概率 0.05 判断是否增强,增强方法从下面4个随机选一个

4.1.1 替换为同义词

:选中词的权重 * 0.9

枯叶寂静地燃烧起来
1.01.00.91.01.0
4.1.2 替换为同类词

:选中词的权重 * 0.4

枯叶暗暗地燃烧起来
1.01.00.41.01.0
4.1.3 替换为反义词

:选中词的权重 * -0.3

枯叶嘈杂地燃烧起来
1.01.0-0.31.01.0
4.1.4 替换为无关词

:选中词的权重 * -1.0

枯叶飞机燃烧起来
1.01.0-1.01.01.0

4.2 随机插入词

逆向迭代所有词,对每一个词都使用概率 0.05 判断是否增强,增强方法从下面4个随机选一个
词插入的位置是当前位置(即代表当前词会往后挪一下)

4.2.1 插入为同义词

:选中词的下一个位置的词权重 * -0.3

枯叶寂静地静静地燃烧起来
1.01.01.0-0.31.01.0
4.2.2 插入为同类词

:选中词的当前位置的词权重 * 0.7
:选中词的下一个位置的词权重 * -0.5

枯叶暗暗地静静地燃烧起来
1.01.00.7-0.51.01.0
4.2.3 插入为反义词

:选中词的当前位置的词权重 * -0.5
:选中词的下一个位置的词权重 * 0.5

枯叶嘈杂地静静地燃烧起来
1.01.0-0.50.51.01.0
4.2.4 插入为无关词

:选中词的当前位置的词权重 * -1.0
:选中词的下一个位置的词权重 * 0.3

枯叶飞机静静地燃烧起来
1.01.0-1.00.31.01.0

4.3 随机交换词序

迭代所有词,对每一个词都使用概率 0.05 判断是否增强
:选中词的当前位置的词权重 * 0.65
:选中词的下一个位置的词权重 * 0.65

枯叶燃烧静静地起来
1.01.00.50.51.0

4.4 随机删除词

迭代所有词,对每一个词都使用概率 0.05 判断是否增强
:选中词的当前位置的词和词权重删除
:选中词的下一个位置的词权重 * 0.7

枯叶燃烧起来
1.01.00.71.0

5 对字进行增强

把词进一步拆开,得到一串单字列表

1.01.01.01.01.01.01.01.01.01.0

下面以选中 “烧” 这个字为例

5.1 随机替换字

5.1.1 替换为同音字

迭代所有字,对每一个字都使用概率 0.05 判断是否增强
:选中字的权重 * 0.6
:选中字的下一个字权重 * 0.8

1.01.01.01.01.01.01.00.60.81.0
5.1.2 替换为形近字

迭代所有字,对每一个字都使用概率 0.05 判断是否增强
:选中字的权重 * 0.6
:选中字的下一个字权重 * 0.8

1.01.01.01.01.01.01.00.60.81.0
5.1.3 替换为非同音字

迭代所有字,对每一个字都使用概率 0.05 判断是否增强
:选中字的权重 * -1.0
:选中字的下一个字权重 * 0.3

1.01.01.01.01.01.01.0-1.00.31.0
5.1.4 替换为非形近字

迭代所有字,对每一个字都使用概率 0.05 判断是否增强
:选中字的权重 * -1.0
:选中字的下一个字权重 * 0.3

1.01.01.01.01.01.01.0-1.00.31.0

5.2 随机交换字序

迭代所有字,对每一个字都使用概率 0.05 判断是否增强
:交换选中字与下一个字的位置和权重
:选中字的权重 * -0.1
:选中字的下一个字权重 * -0.1

1.01.01.01.01.01.01.0-0.1-0.11.0

特殊token的权重

除了分隔符,结束符等必需的特殊token的权重设为1.0
不必要(不会影响输出文本,或不会在输出文本中看到)的令牌,例如 开始,提示,填充 token 设置权重为0

其他

2023/3/23 更新
新的加权损失函数 weighted_and_neg_topk_cross_entropy ,为以下加权损失函数的改进版。
https://blog.csdn.net/ONE_SIX_MIX/article/details/129732022

旧的加权损失函数

Loss使用加权的交叉熵函数
B: 批量
L: 序列长度
C: 词向量通道数
out shape [B, L, C] --------------- 为模型输出,为 Float Tensor
label shape [B, L] ----------------- 为标签,为 Long Tensor
label_mask shape [B, L] -------- 为标签掩码,为 Bool Tensor,True 代表内容,False 代表是长度填充的token
label_weight shape [B, L] ------ 为标签权重,为 Float Tensor,即上面所述的东西

out = model(x)
if label is not None:
    if label_mask is not None:
        label[~label_mask] = -100
    assert label.shape == x.shape
    loss = F.cross_entropy(out.transpose(1, 2), label, label_smoothing=label_smoothing, reduction='none')
    loss = loss * label_weight
    loss = loss[label_mask].mean()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

附注

因为是小模型,不要因为句子后面的全是简单规律的 pad token 就省去 label_mask,我发现小模型即便记忆规律超级简单的 pad token 也会降低生成文本的质量(两个方面产生负面影响,一个是稀释了有效句子的Loss,使Loss偏小,一个是占用模型的记忆容量)。

引用和参考

【中文同义词近义词】词向量 vs 同义词近义词库
https://www.cnblogs.com/bymo/p/8440722.html

同义词,同类词库:哈工大同义词词林扩展版 存档
https://github.com/One-sixth/HIT-IR-Lab-Tongyici-Cilin-Extended

【NLP】NLP数据增强的15种方法
https://blog.csdn.net/fengdu78/article/details/124622163

一文了解NLP中的数据增强方法
https://blog.csdn.net/u011983997/article/details/122847095

词林:在线词典
https://www.cilin.org/

反义词 修饰副词 停用词 同义关系库 否定词 情态词 抽象关系库 程度副词 等词库
https://github.com/liuhuanyong/ChineseSemanticKB

同音字,形近字,音形码 库
https://github.com/wenyangchou/SimilarCharactor

nlpcda / NLP Chinese Data Augmentation 一键中文数据增强工具
https://github.com/425776024/nlpcda

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/354382?site
推荐阅读
相关标签
  

闽ICP备14008679号