课题思路是构建一种多维度词表示方法,更抽象一点课题属于多模态语言表示研究范畴。具体而言,是想增加词表示嵌入信息量,比如声音和图像信息,而不仅仅是词汇在上下文中的分布信息,这在直观上比较容易理解,数据维度越多,蕴含的信息量就越大。
但有一个问题,尽管增加了维度数量/信息含量,最终的词表示是否会提高下游任务的表现?不同维度间信息会不会相互干扰?
现在词向量/语言表示模型的评价指标,一般是词相似度(word similarity)计算和文本分类(text classification),如果在这两项任务上进行测试。直观上,语音和图像信息的嵌入应该并不能提供更好的任务表现。
基于这种考虑,课题组从较高的抽象层面,将语言信息分为两大维度,感知维度(Perceptual)和隐感知维度(Latent Perceptual),基于的想法是,语言所蕴含的信息不仅是从物理形式(文本/语音)中获得,更深层次的信息还需要通过非物理形式(人脑思考)获得。一个简单的例子是,一句话中每个词都有对应的词性,尽管人们在阅读和交流时不会刻意明确每个词的词性,但是正是这些词性的加入,最终使得语言的含义更充分表达。
这里“ 充分表达 ”的含义很丰富,但就实验而言,我们希望能够在下游任务上取得更好的表现。以下是六月末及七月份的实验记录:
注:以下是在词相似度计算任务上的表现,MC30 353ALL 353SIM 353REL RG65 YP130 MTurk287都是数据集,红色√标记代表当前模型表现优于作为baseline的W2V。
数据的组织形式都是: A + B
Edict_text+voice t与v都是小数,效果一般
Mmodel300 A/B 较小,效果一般
Mmodel600 A/B 较大,效果较好
Mmodel500_25 A/B 较小,效果一般,值得注意的是,A/B的值与Mmodel300相似,测试表现也相似。很容易理解,调整=向量X权重,决定相似度的是向量。
Mmodel600_25 与Mmodel500_25完全一致,效果一般
Mmodel800_25 与Mmodel500_25完全一致,效果一般
Mmodel900_25 与Mmodel500_25完全一致,效果一般
Mmodel50_25 text权重较大,目前效果也最好,缺点是词汇量少,才18M,想办法增加词汇量,并控制迭代次数别太大
然后调整了for j in range(5) 变为 range(1) 得到
Mmodel100_25 text/voice权重比与Mmodel50_25一致(可能是只是用于计算的向量没有发生变化),测试表现一般,34M
Mmodel200_25 text部分权重下降,效果一般,60M
然后调整了range(1) 变成 range(3) 得到
Mmodel200_25 text/voice下降,效果一般-----------------------------------
中途测试了一下Mmodel50_25的训练过程,大概有4500个词,每个词被选中训练1-3次左右,1最多3最少
另存为Mmodel50_26 效果还可以,稍逊于Mmodel5_25,可能是每次训练保存的单词不同造成的
-----------------------------------
353ALL 353SIM 353REL RG65 YP130 MTurk287
Mmodel300_29_3 √ √ √ √ √
Mmodel600_29_3 √ √ √
Mmodel900_29_3 √ √ √
-----------------------------------
效果一般
Mmodel300_30_2
Mmodel400_30_2
Mmodel500_30_2
Mmodel900_30_2
------------------------------------
效果很差
Mmodel300_30_1
Mmodel400_30_1
Mmodel500_30_1
Mmodel900_30_1
为了在限制每个词训练次数的情况下,增加词汇的数量,做出以下尝试:
①对比了一下效果较差的test30和效果较好的test25,这两个模型间的区别是test25没有对词最大训练次数做出限制,test30限制一个词最多被选中N次,
这里的N测试了1,2,3,4效果都一般
------------------------------------
MC30 353ALL 353SIM 353REL RG65 YP130 MTurk287
Mmodel200_7_1_3_2
Mmodel300_7_1_3_2 √ √
Mmodel400_7_1_3_2 √ √
Mmodel500_7_1_3_2 √
Mmodel900_7_1_3_2
②调低range(n),将之前模型中的range(3)调整为range(2),最多被选中次数仍然为2次,效果得到提升,直观上最终测试结果与Mmodel50_25类似。Mmodel200_7_1_4_2
Mmodel300_7_1_4_2
Mmodel400_7_1_4_2
Mmodel500_7_1_4_2
Mmodel900_7_1_4_2
n继续增加到4,效果又再次极差,继续调整n=5,猜测结果仍然差,似乎又是因为词训练次数上升导致的Mmodel200_7_1_5_2
Mmodel300_7_1_5_2
Mmodel400_7_1_5_2
Mmodel500_7_1_5_2
Mmodel900_7_1_5_2
n=5效果差,但是相较于4_2有所恢复,如果极大地增加训练次数会如何?
-------------------------------------
将Text的部分由word2vec替换成Bert,效果一般,不同数据集测试结果差别较大,在MC30表现最好,比W2V低10个点。
我觉得这是正常的,因为word2vec各维度权重一致,比较适合做(语义)余弦相似度计算,但是这不是Bert要做的事,Bert不能直接计算余弦空间距离来算
语义相似度,只能多个词算相对相似度。
应该试着改一下loss,考虑下夏姐的那个方法.....,对了可以把那个当做loss的一部分来训练
BMmodel2000_7_21_10_3
BMmodel3000_7_21_10_3
BMmodel4000_7_21_10_3首先判断当前词是不是在词相似度数据中存在,如果存在那么其损失函数 = 0.3*wordnet + 0.7*词相似度数据集,但是我总觉得,有点问题。
直观上来说,经过这个调整之后,词相似度测试上的效果应该会变得很好,这有点用训练集训练并验证的意思,danshi就效果而言
非常的差,无论迭代次数多少都是类似的结果MC30 353ALL 353SIM 353REL RG65 YP130 MTurk287
Mmodel_7_22_10_3_2000 √
Mmodel_7_22_10_3_3000 √
Mmodel_7_22_10_3_4000 √
将text部分由bert替换成w2v之后,效果有好一些了,大概比w2v低5个点左右,
bert和w2v区别在哪呢,bert768维,并且各维度权重不一思路应该是没有问题的,很直观,这么说来应该是模型的问题,应该再试着检查修改一下
发现dictWS的构造过程写错了,里面只有2项,修改之后有4500项,
但改正后,测试效果极差
Mmodel_7_22_10_3_2000
Mmodel_7_22_10_3_3000
Mmodel_7_22_10_3_4000
Mmodel_7_22_10_3_5000
Mmodel_7_22_10_3_10000试着将loss完全改成词相似度计算,在词对中没有找到的词,用synset寻找在词对中存在的同义词对应value代替
效果和上面类似,都是极差,继续看看实验模型代码
还有个问题就是,在训练过程中,loss最后直接变成0,原因是什么(符合条件trained_num<10的全被已经训练完,导致2000 3000 ...完全一致)
Mmodel_7_24_10_3_2000
Mmodel_7_24_10_3_3000
Mmodel_7_24_10_3_4000
Mmodel_7_24_10_3_5000
Mmodel_7_24_10_3_10000
修改了程序,表现提升到正常水平,还是比w2v低10-20个点继续修改程序,text部分为w2v,仅考虑在ws中出现的词,loss计算的label由ws数据提供,训练中loss的确由4减低到0.3
会不会有种可能,同一个词对应多个单词,这个词被多个value影响,但是这些value分布在不同的ws数据中,导致最后表现并不好
MC30 353ALL 353SIM 353REL RG65 YP130 MTurk287
Mmodel_7_24_10_3_2000 √ √
Mmodel_7_24_10_3_3000 √ √
Mmodel_7_24_10_3_4000 √ √
增加每个单词的最大被训练次数,10->100
测试了一下,咋部分数据集上,误差绝对值diff(M)《 diff(W2V)的情况较多,但是即使这样最终的指标仍然不好,这是因为Mmodel随机性波动,不随着ws数据变化
把测试中相似度都取绝对值
M值分布随机性比较大
Mmodel_7_25_10_3_15000
Mmodel_7_25_10_3_15000_2(sword也写入词典保存)现在Mmodel中的单词数量大概2180
考虑到WS数据中相似度0-1表示,而test方法中cosine返回-1~1,所以对方法返回值作绝对值处理
并增加权重变量,三个门机制的权重也将变化
初次实验,pw = 0.7,lpw = -1.1,ssw = 1.4,修改将三个权重的区间设置为0-1,并且使pw+lpw+ssw = 1去掉lploss和ssloss,试一下对每个维度调整后在ws上的表现
Mmodel_7_28_10_3_15000
Mmodel_7_28_10_3_20000
Mmodel_7_28_10_3_30000
Mmodel_7_28_10_3_40000Mmodel_7_28_1000_20000_2
Mmodel_7_28_1000_30000_2
Mmodel_7_28_1000_40000BMmodel_7_29_1000_10000
BMmodel_7_29_1000_20000
BMmodel_7_29_1000_30000之后修改了词表示被保存的条件(当前词停止训练的条件是与实际相似度很接近)
MC30 STANFORD 353ALL 353SIM 353REL RG65 YP130 MTurk287
BMmodel_8_2_20000 √ √--------------------------------------------------------------