使用手动实现Tranformer和使用BERT哪个做Intent识别效果更好?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用手动实现Tranformer和使用BERT哪个做Intent识别效果更好?相关的知识,希望对你有一定的参考价值。

参考技术A 总用手动实现的,这个合适用这个做一英特识别效果更好,我觉得这个两个的话,应该是这个使用这个逼e rt,这个做音的识别效果更好一点的。这款的对于这个樱桃的话,识别效果相当好,而且的话,它的使用功能也是挺强的。 参考技术B 一般情况下的话我觉得一般情况下的话我觉得使用手动实现这一款的话当然还是第二款性价比也是会更高一些的吧 参考技术C 你好! 扫描版pdf,以及由图片直接转换成的pdf,用常规软件转换成word文档后,内容仍旧是图片,不能进行文字编辑,要用OCR软件进行图片文字识别转换。 OCR软件也可用于文本内容的pdf转换。 参考技术D 你好! 扫描版pdf,以及由图片直接转换成的pdf,用常规软件转换成word文档后,内容仍旧是图片,不能进行文字编辑,要用OCR软件进行图片文字识别转换。 OCR软件也可用于文本内容的pdf转换。有些文本内容的pdf使用了非常规编码,用常规软件转换后 第5个回答  2021-11-15 2020年6月23日 但是大量的paper表明,transformer或Bert的特定层有独特的功能,底层更偏向于关注语法;顶层更偏向于关注语义。 所以对Multi-head而言,同一层Transformer_block关注的方面应该整体是一...

BERT 输出不确定

【中文标题】BERT 输出不确定【英文标题】:BERT output not deterministic 【发布时间】:2019-10-31 13:21:32 【问题描述】:

。 当我输入相同的输入时,我希望输出值是确定性的,但是我的伯特模型中的值正在改变。听起来很尴尬,相同的值被返回两次,一次。也就是说,一旦出现另一个值,就会出现相同的值并重复。 如何使输出具有确定性? 让我展示一下我的代码的 sn-ps。 我使用的模型如下。

对于 BERT 实现,我使用了 huggingface 实现的 BERT pytorch 实现。这是 pytorch 领域非常著名的模型 ri 实现。 [链接]https://github.com/huggingface/pytorch-pretrained-BERT/

        tokenizer = BertTokenizer.from_pretrained(self.bert_type, do_lower_case=self.do_lower_case, cache_dir=self.bert_cache_path)
        pretrain_bert = BertModel.from_pretrained(self.bert_type, cache_dir=self.bert_cache_path)
        bert_config = pretrain_bert.config

得到这样的输出

        all_encoder_layer, pooled_output = self.model_bert(all_input_ids, all_segment_ids, all_input_mask)

        # all_encoder_layer: BERT outputs from all layers.
        # pooled_output: output of [CLS] vec.

pooled_output

tensor([[-3.3997e-01,  2.6870e-01, -2.8109e-01, -2.0018e-01, -8.6849e-02,

tensor([[ 7.4340e-02, -3.4894e-03, -4.9583e-03,  6.0806e-02,  8.5685e-02,

tensor([[-3.3997e-01,  2.6870e-01, -2.8109e-01, -2.0018e-01, -8.6849e-02,

tensor([[ 7.4340e-02, -3.4894e-03, -4.9583e-03,  6.0806e-02,  8.5685e-02,

对于所有的编码器层,情况是一样的,- 一次两次是一样的。

我从bert中提取词嵌入特征,情况也是一样。

wemb_n
tensor([[[ 0.1623,  0.4293,  0.1031,  ..., -0.0434, -0.5156, -1.0220],

tensor([[[ 0.0389,  0.5050,  0.1327,  ...,  0.3232,  0.2232, -0.5383],

tensor([[[ 0.1623,  0.4293,  0.1031,  ..., -0.0434, -0.5156, -1.0220],

tensor([[[ 0.0389,  0.5050,  0.1327,  ...,  0.3232,  0.2232, -0.5383],

【问题讨论】:

【参考方案1】:

请尝试设置种子。我遇到了同样的问题并设置了种子以确保我们每次都获得相同的值。可能的原因之一可能是在 BERT 中发生了辍学。

【讨论】:

哦,太好了。我现在也使用 python、numpy 和 torch 来获得相同的值。谢谢。 我们知道在推理过程中什么是随机的吗?在训练期间,我相信大多数版本的 BERT 都使用 dropout,它使用随机化。但是,为了推断,我不确定在哪里使用随机数生成器。

以上是关于使用手动实现Tranformer和使用BERT哪个做Intent识别效果更好?的主要内容,如果未能解决你的问题,请参考以下文章

attention的前世今生

Bert实战:使用Bert实现文本分类。

BERT的开源实现的使用

如何使用 Bert 进行长文本分类?

如何使用 BERT 对相似的句子进行聚类

BERT 输出不确定