terrifyzhao/bert-utils

您好,请问应该怎么修改最后句向量的维度呢,768维对我后续的任务而言太高了,我只需要100维或者50维的向量哎,(谢谢你)

Opened this issue · 20 comments

您好,请问应该怎么修改最后句向量的维度呢,768维对我后续的任务而言太高了,我只需要100维或者50维的向量哎,(谢谢你)

@27232xsl 你可以在你的模型输入层添加一个全连接层进行降维

@好像有点难度,我尝试一下吧,谢谢你,先不要close掉我的问题哦,我可能要回来接着问的,谢谢你哈

我还有两个问题想请教一下 1.我要是用英文语料来训练并且只得到句向量的话,是否可以直接用你的程序不需要任何修改 2.我有一段文本(有好几句话)是来描述一个命名实体的,现在想得到这段文本的段向量,是否只能先得到句向量再进行相加呢?有别的思路吗?(灰常谢谢你!!!)

@27232xsl 请问你做了降维吗?我也不会

@Biaocsu 我根据下游任务做了降维,但是和这个bert算法没有关系的,让bert的768维向量乘以个768*100维的矩阵,自己设了目标函数不断训练这个矩阵,最后会得到矩阵,然后再相乘就可以降维了

@27232xsl 好独特的思路,不错不错。另外可以将这个思路的代码贴一下吗?哈哈哈,谢谢

这部分的代码实现很简单的,但是我的下游任务有点复杂,代码灰常灰常灰常长,贴不上来,你可以也这样试一下的,,,祝你成功哈哈哈哈

@27232xsl 嗯嗯,好的,哈哈哈

@27232xsl 另外我有个疑问,这个768*100的矩阵在下游任务上即使是最优结果,但是怎么解释它也是与bert词向量相乘的最好矩阵呢?

判断是不是最好矩阵难道不是通过在下游任务的最终效果看出来的吗,在下游任务中表现不错就可以说明这是个好矩阵啊。。。对吧

@27232xsl 我感觉有点不对劲哦!因为如果我下游任务换个目标函数,完全可以得到一个区别很大的768*100矩阵,所以这个矩阵好像很难解释好坏

@Biaocsu 对啊,矩阵可以换的啊,评价这个矩阵好不好和评价这个768维的向量好不好是一样的啊,下游任务效果好,比如说我分类分的很清楚,这个向量就不错啊,,,不是吗,我觉得很对劲啊~~~~哈哈哈哈虽然我的下游任务效果并不好!!!!

@27232xsl 或者说,我如果想利用降维后的词向量做其他下游任务感觉就不行了,因为目标函数都不一样了,反正总感觉有问题

因为我可以随便设定一个768*100的矩阵(这个矩阵一定可以是某个目标函数的最优解)

@27232xsl 我在网上搜词向量降维技术,也没搜到这种办法应该是有原因的吧,目前比较可靠的好像是利用PCA

@Biaocsu 我知道你指的是哪里不对劲,我也思考过,你是觉得这个最终100维的向量怎么能调来调去呢,可是正常情况应该就是随着下游任务调的,哪有那么多通用的还适合各种下游任务的向量,比如有一条鱼,有的人喜欢煎的,有的人喜欢煮的,有的人喜欢炖的,鱼就是768维向量,个人喜好就是100维向量,煎煮炖等做法就是矩阵,难道这个人吃什么不是应该根据个人喜好决定鱼的做法吗?

哈哈哈,我竟无法反驳。不过我还是通过全连接层降维吧。如果你最终这个词向量用在任务上效果表现很好,麻烦告知一声哈

@Biaocsu 好吧,不过我好菜的,也不用听我的,效果好了我就告诉你

都是摸索着不断成长,加油

@Biaocsu 嗯嗯