来自Transformers的双向编码器表示(BERT)

http://zh-v2.d2l.ai/chapter_natural-language-processing-pretraining/bert.html


there should be [0,0,0,1,1,1]

I agree with you, np.repeat( [0,1], 3 ) = [0,0,0,1,1,1]

在下一句预测里面为什么要先flatten encoded_X 啊? 根据后面, 不应该只输入<cls>对应的特征吗?

encoded_X = torch.flatten(encoded_X, start_dim=1)  #这里为什么不是 encoded_X[:,0,:] ?
# NSP的输入形状:(batchsize,num_hiddens)
nsp = NextSentencePred(encoded_X.shape[-1])
nsp_Y_hat = nsp(encoded_X)
nsp_Y_hat.shape

我觉得应该是:

nsp_input = encoded_X[:, 0, :]
print("nsp_input", nsp_input.shape)
# NSP的输入形状:(batchsize,num_hiddens) 只需要输入<cls>的特征
nsp = NextSentencePred(nsp_input.shape[-1])
nsp_Y_hat = nsp(nsp_input)
nsp_Y_hat.shape

**


**
前端页面展示出问题了,没人员维护吗?

  1. 为什么BERT成功了?
    因为BERT整合了词的表示依赖于它们的上下文;对上下文进行双向编码,并且架构是任务无关的,从左到右编码上下文。
  • 对于上下文敏感的词表示,如ELMo和GPT,词的表示依赖于它们的上下文。
  • ELMo对上下文进行双向编码,但使用特定于任务的架构(然而,为每个自然语言处理任务设计一个特定的体系架构实际上并不容易);而GPT是任务无关的,但是从左到右编码上下文。