首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >伯特使用GLoVE吗?

伯特使用GLoVE吗?
EN

Data Science用户
提问于 2020-04-28 21:23:47
回答 2查看 4.4K关注 0票数 7

从我所读到的所有文档中,人们都在推动BERT如何使用或生成嵌入。我知道有一个键、一个查询和一个值,这些都是生成的。

我不知道的是,最初的嵌入--你把最初的东西放入伯特--是否可以或者应该是一个向量。人们对伯特或阿尔伯特如何不能被用来进行逐字比较感到诗意,但没有人明确地说出伯特在消费什么。是向量吗?如果是这样的话,它只是一个热向量吗?为什么它不是GLoVE载体?(请暂时忽略位置编码讨论)

EN

回答 2

Data Science用户

回答已采纳

发布于 2020-04-30 08:00:55

伯特不能使用GloVe嵌入,仅仅是因为它使用了不同的输入分段。GloVe使用传统的类似单词的标记,而伯特则将输入分割成被称为单词片段的子字单元。一方面,它确保没有词汇外的标记,另一方面,完全未知的单词被分割成字符,伯特可能也无法理解它们。

总之,伯特学习它的自定义字片嵌入与整个模型。它们不能携带与word2vec或GloVe相同的语义信息,因为它们通常只是单词片段,伯特需要在后面的层中理解它们。

如果你愿意的话,你可能会说输入是一个热点向量,但几乎总是如此,它只是一个有用的教学抽象。所有现代的深度学习框架仅仅通过直接索引来实现嵌入查找,将嵌入矩阵与一个热向量相乘将是浪费的。

票数 8
EN

Data Science用户

发布于 2020-04-29 01:01:59

伯特的嵌入包括三件事:

  • 令牌嵌入
  • 段嵌入
  • 位置嵌入

我猜你的问题是关于令牌嵌入。

令牌嵌入是一个向量,其中每个令牌被编码为词汇表ID。

例子:

代码语言:javascript
复制
# !pip install transformers

from transformers import BertTokenizer

t = BertTokenizer.from_pretrained("bert-base-uncased")

text = "My dog is cute."
text2 = "He likes playing"

t1 = t.tokenize(text)
t2 = t.tokenize(text2)
print(t1, t2)

tt = t.encode(t1, t2)
print(tt)

“我的”,“狗”,“是”,“可爱”,“ 2003年年,10140,1012,102,2002年,7777,2652,102

票数 5
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/73189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档