参考: https://www.jianshu.com/p/df7906a2a28e
上面的参考博文中重点介绍了Bert的可视化后的结果,将 Bert 中的注意力机制通过Tensor2Tensor工具描述出来。
另外另一个开源库BertViz 有含有Transformer模型的各种模型更详细的可视化。
https://github.com/jessevig/bertviz
BertViz是用于可视化Transformer模型中注意力的工具,支持Transformer库中的所有模型(BERT,GPT-2,XLNet,RoBERTa,XLM,CTRL等)。
以GPT-2为例,Seq2Seq的注意力机制的部分可视化代码:
model_version = 'gpt2'
model = GPT2Model.from_pretrained(model_version, output_attentions=True)
tokenizer = GPT2Tokenizer.from_pretrained(model_version)
text = "The quick brown fox jumps over the lazy dogs."
inputs = tokenizer.encode_plus(text, return_tensors='pt', add_special_tokens=True)
input_ids = inputs['input_ids']
attention = model(input_ids)[-1]
input_id_list = input_ids[0].tolist() # Batch index 0
tokens = tokenizer.convert_ids_to_tokens(input_id_list)
call_html()
head_view(attention, tokens)
模型视图提供了所有模型层和头的注意力鸟瞰视图。
神经网络视图可视化查询和关键向量中的单个神经元,并显示如何使用它们来计算注意力。