使用BERT作为句子编码器(即将可变长度的句子Map到固定长度的向量)的主要关注点之一是选择哪个层进行池化以及如何进行池化。我在UCI-News Aggregator Dataset上进行了可视化,其中我随机抽取了20K条新闻标题;从不同层获取句子编码,并使用最大池化和平均池化,最后通过PCA将其降维到2D。数据只有四个类别,用红色、蓝色、黄色和绿色表示。BERT模型是由谷歌发布的uncased_L-12_H-768_A-12
。
完整线程可以在这里查看:https://github.com/hanxiao/bert-as-service#q-so-which-layer-and-which-pooling-strategy-is-the-best
6条答案
按热度按时间r6hnlfcb1#
对于那些对使用BERT模型作为句子编码器感兴趣的人,欢迎查看我的仓库
bert-as-service
:https://github.com/hanxiao/bert-as-service。你可以用两行代码获得句子/ELMo类似的词嵌入。kgsdhlau2#
@hanxiao 这句话是通过平均词向量来表示整个句子的编码吗?
stszievb3#
你能用简单的语言解释一下你是如何从词嵌入得到句子嵌入的吗?
hjqgdpho4#
@hanxiao 这句话是通过计算词向量的平均值来表示整个句子的吗?
我认为它不是通过计算词嵌入的平均值来实现的。
kcugc4gi5#
@hanxiao 这句话是通过平均词向量来表示整个句子的编码吗?
你可以查看这两张图片的标题,它们分别展示了池化策略(即REDUCE_MEAN和REDUCE_MAX)。
ercv8c1e6#
关于可视化的惊人作品!