区别1:网络结构(主要是Masked Multi-Head-Attention和Multi-Head-Attention)
gpt1使用transformer的decoder,单向编码,是一种基于语言模型的生成式模型,更适合生成下一个单词或句子

bert使用transformer的encoder,双向编码,适合处理需要理解整个句子或段落的任务。可以用于许多NLP任务,如分类、命名实体识别和句子关系判断等

区别2:预训练任务(主要是Masking Input)
有一个句子是台湾大学,GPT选取BOS这个起始Token,所对应的输出embedding,用h来表示。然后通过一个Linear Transform,再通过一个softmax,得到一个概率分布,我们希望这个输出的概率分布,跟正确答案的交叉熵越小越好。

在Bert的预训练任务中,Bert主要使用"填空题"的方式来完成预训练,当我们输入一个句子时,其中的一些词会被随机mask。可以用一个one-hot vector来表示这个字符,并使输出和one-hot vector之间的交叉熵损失最小。
