這篇文章是騰訊人工智能實驗室發表在EMNLP 2017上的文章,基於細粒度的模板解數學應用題。
貢獻點
- 學習問題文本到模板片段的映射,充分利用模板的信息。
- 爲每個模板自動構建sketch。
- 實現了一個兩階段的系統,包括模板檢索和對齊排序。
整體思路
總結下來,該工作主要分爲三個部分:
1. 模板歸納 sketch for template
訓練集中的題目包含文本和表達式。
- 首先,把文本中的操作數映射到,對錶達式中的具體操作數也用來代替,轉換成表達式模板。
- 每個模板可能對應多個題目,將相同模板的題目歸爲一類。抽取其特徵,包括單位、問題關鍵詞、文本表達等來表徵這個模板。這裏的文本表達是對應於模板片段的,即細粒度的模板匹配。【如下圖】
2. 訓練過程
有了每個模板對應的歸納特徵,我們就想要對訓練集中的數據進行訓練。訓練的過程分爲兩個部分,一部分是訓練選擇模板的正確性,另一部分是在選擇候選的模板之後,將操作數填到模板中的位置正確性。對於這兩個部分的訓練,損失函數都是使用了Ranking SVM的方法。
定義選擇模板的損失:
其中的l(t) = max(0, 1-t)^2,+表示預測正確。這裏的f(x_i, t_j)表示特徵向量,特徵是根據題目x_i和模板t_j來人工構造的。v_t^T表示可學習參數。所以上式的目標就是要使得題目x_i屬於模板t_j的可能性大於屬於其他模板的可能性。爲每個題目選擇可能性最大的top-n個模板作爲候選模板。
定義操作數填到模板各位置上的損失:
上式想要達到的目標就是儘可能的讓操作數在模板的正確的位置上。
3. 測試過程
在參數v^T訓練好之後,我們就可以利用這個模型,來判斷測試集中的題目屬於哪個模板的概率比較大。以及題目中的操作數應該如何填在模板的slot當中。
對應這兩個問題,這裏應該定義兩個概率函數。
一個是計算題目x_i屬於模板t_j的概率:
一個是確定該題目對應於模板的位置(對齊操作):
分析
這篇文章基於模板匹配來解決Math Word Problems,本質上還是屬於相似度比較的範疇,即計算待解題目和訓練集中的模板的相似度,找到相似度最高的模板,然後將題目文本中的操作數對應到解題模板中去。得到解題的表達式,最終得到結果。
文中的方法和他所比較的方法都存在一個問題,就是在一個模板對應的題目很少的情況下,最終得到的準確率結果就比較差。因爲如果一個模板對應的題目很少,那麼對於這個模板的訓練就不足,那麼久很難得到好的結果。
關於這一點,之前的文章中也有講到混合模型,就是當相似度大於一個閾值的時候,就是用相似度比較的方法,當相似度小於閾值的時候,就是用端到端的深度學習方法。這篇文章爲什麼沒有使用呢?
文章中值得借鑑的一點就是:對模板進行了細粒度的分析,對於模板中所出現的操作符及其對應的兩個操作數,都會找一些與其對應的文本表達。