語義相關的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是比較合適的選擇。 


登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP