语义相关的Doc2Vec模型训练参数优化

1 引言

关键词生成是自然语言处理和双语教学中重要的一个环节。目前我们对词汇的处理有两个不同的方向。一个方向是从段落中按照textrank抽取出关键词 (<关键词提取---PyTextRank和Spacy的工作原理>,<PyTextRank---文本关键字(keywords)的自动取出>), 【PyTextRank更新到最新版V3.2.1】取出的关键词与原文中出现的词汇完全相同; 另一个方向是基于语义相关的关键词获取(语义相似模型(Doc2Vec)在双语教学中的应用, Doc2Vec Model---段落相似性查询)。这种方法通过对语料库的训练,寻找与关键词语义相关的词语,其结果的好坏取决于许多因素,包括算法,预料库的大小和质量,参数设置等。这篇文章探讨了一些因素对结果的影响。


2 数据集

现代自然语言处理都使用了大规模开放的预训练集,如Gensim, Spacy, Transformers, PyTorch, Tensorflow等,而我们为了保持本专业高度的集成性,采用了封闭的GeotechSet数据集,这个数据集只包括岩土工程领域的数据,GeotechSet是一个动态的数据集,由于不断完善数据质量和增加新的数据,因此产生的结果随着时间在不断变化。


3 训练时间

数据量越大,参数设置越精细,模型的训练时间越长。目前GeotechSet的数据集为148M, 与所有其他预训练模型相比,这个数据量还是很小的,但即便如此,训练时间仍然用了42分钟。训练的机器配置CPU Inter(R) Core i7-10700 CPU @2.9GHz,16核,内存32G。

import multiprocessingcores = multiprocessing.cpu_count()

模型参数如下:

model = Doc2Vec(dm=0, dbow_words=1, vector_size=200, window=8, min_count=10, epochs=20, workers=cores)

epochs显著地影响了训练时间,大多数的出版物使用10~20, 当设置epochs=20时,训练时间变为25分钟;当设置epochs=10时,训练时间变为16分钟。下面以关键词UDEC为例,比较epochs为20和10时的结果。

语义相关的Doc2Vec模型训练参数优化的图1

从上图可以看出,当epoches=20时,能够产生出一些UDEC的细节,例如cell_space和config_cell (Cell Space Detection---UDEC的单元映射算法), 但代价是训练时间过长,不过epoches=10时的效果也不算太差。如果继续降低epoches的数目,例如epoches=5, 训练时间变为12分钟。现在检查结果,与UDEC语义相关的词汇变为:

universal_distinct_element_code

udec_manual

flac3d

udec_model

joint_generator

solve_fos

itasca_consulting_group

由此可以看出,随着epoches数目的增加,语义相关的词汇逐渐由宏观到微观。设置epoches值在很大程度上取决于我们要达到的目的。 


4 矢量尺寸

在过去的训练中一直取vector_size=200。下面检查vector_size=100时的结果,同时取epoches=5,运行时间仍然为12分钟,可见vector_size值不会显著影响训练时间。再检查与UDEC语义相关的词汇:

universal_distinct_element_code 

udec_model

itasca_consulting_group_inc

udec_manual 

fictitious_joints 

phase2 

这个结果与上面的结果相比较,发现内容差不多。可见vector_size这个值取100或200对于我们的数据集影响不多。


5 语义相关结果

下面列出vector_size=100,epochs=5 这个最小模型运行后其他词汇语义相关的结果,与<语义相似模型(Doc2Vec)在双语教学中的应用>得出的结果比较,可以发现这些结果非常有趣。

(1) Slope

rock_body / stability_slope / high_steep_rock_slope / slope_angle / rainfall / slope_failure / top_slope / body_improve_slope_stability /

(2) Stability

implications_groundwater_behaviour / geomechanics_rock_slope / instability / evaluating_stability / stability_analysis / global_stability / improve_long_term / long_term_stability / study_stability_problems / slope_stability /

(3) Discrete

discretizing / interconnected / composed_multiple / hexahedral / dfn_epm / intersecting_joint / granular_materials_presented / voronoi_tessellations 

(4) fracture

fracture_network / fracture_aperture / fracture_length / fracture_geometry / discontinuity / natural_fractures / fracture_opening 

(5) Network

flow_pipe / pipe_network / connectivity / flow_network / introduction_discrete_fracture / joint_networks / stimulated / lattice / shale_gas_flow / 


6 结束语

尽管模型算法基于严格的数学定义,但模型训练在很大程度上是一门艺术而不是科学,调参是模型训练时必要步骤,会占用大量时间。通过不断调参来最大化实现我们所期望的目标,用最小的时间达到最优的效果。在目前的训练中,取vector_size=200,epochs=5是比较合适的选择。 


默认 最新
当前暂无评论,小编等你评论哦!
点赞 评论 收藏
关注