論文筆記 | Learning Fine-Grained Expressions to Solve Math Word Problems

這篇文章是騰訊人工智能實驗室發表在EMNLP 2017上的文章,基於細粒度的模板解數學應用題。

貢獻點

  1. 學習問題文本到模板片段的映射,充分利用模板的信息。
  2. 爲每個模板自動構建sketch。
  3. 實現了一個兩階段的系統,包括模板檢索和對齊排序。

整體思路

總結下來,該工作主要分爲三個部分:

1. 模板歸納 sketch for template

訓練集中的題目包含文本和表達式。

  • 首先,把文本中的操作數映射到n1,n2,...n_1, n_2, ...,對錶達式中的具體操作數也用n1,n2,...n_1, n_2,...來代替,轉換成表達式模板。
  • 每個模板可能對應多個題目,將相同模板的題目歸爲一類。抽取其特徵,包括單位、問題關鍵詞、文本表達等來表徵這個模板。這裏的文本表達是對應於模板片段的,即細粒度的模板匹配。【如下圖】
    在這裏插入圖片描述

2. 訓練過程

有了每個模板對應的歸納特徵,我們就想要對訓練集中的數據進行訓練。訓練的過程分爲兩個部分,一部分是訓練選擇模板的正確性,另一部分是在選擇候選的模板之後,將操作數填到模板中的位置正確性。對於這兩個部分的訓練,損失函數都是使用了Ranking SVM的方法。

定義選擇模板的損失:
L=12vt2+Cil(vtTf(xi,tj)+vtTf(xi,tl))L = \frac{1}{2}||v_t||^2 + C \sum_{i} l(v_t^T f(x_i, t_j)^+ - v_t^T f(x_i, t_l)^-)

其中的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個模板作爲候選模板。

定義操作數填到模板各位置上的損失:
L=12va2+Cil(vaTf(xi,ak)+vaTf(xi,al))L = \frac{1}{2}||v_a||^2 + C \sum_{i} l(v_a^T f(x_i, a_k)^+ - v_a^T f(x_i, a_l)^-)

上式想要達到的目標就是儘可能的讓操作數在模板的正確的位置上。

3. 測試過程

在參數v^T訓練好之後,我們就可以利用這個模型,來判斷測試集中的題目屬於哪個模板的概率比較大。以及題目中的操作數應該如何填在模板的slot當中。

對應這兩個問題,這裏應該定義兩個概率函數。

一個是計算題目x_i屬於模板t_j的概率:
p(tjxi;vt)=exp(vtf(xi,tj))tjTexp(vtf(xi,tj)) p(t_j|x_i; v_t) = \frac{exp(v_t \cdot f(x_i, t_j))}{\sum_{t_j' \in T}exp(v_t \cdot f(x_i, t_j'))}

一個是確定該題目對應於模板的位置(對齊操作):

p(ak)=exp(vaf(xi,ak))akAexp(vaf(xi,ak))p(a_k) = \frac{exp(v_a \cdot f(x_i, a_k))}{\sum_{a_k' \in A}exp(v_a' \cdot f(x_i, a_k'))}

分析

這篇文章基於模板匹配來解決Math Word Problems,本質上還是屬於相似度比較的範疇,即計算待解題目和訓練集中的模板的相似度,找到相似度最高的模板,然後將題目文本中的操作數對應到解題模板中去。得到解題的表達式,最終得到結果。

文中的方法和他所比較的方法都存在一個問題,就是在一個模板對應的題目很少的情況下,最終得到的準確率結果就比較差。因爲如果一個模板對應的題目很少,那麼對於這個模板的訓練就不足,那麼久很難得到好的結果。

關於這一點,之前的文章中也有講到混合模型,就是當相似度大於一個閾值的時候,就是用相似度比較的方法,當相似度小於閾值的時候,就是用端到端的深度學習方法。這篇文章爲什麼沒有使用呢?

文章中值得借鑑的一點就是:對模板進行了細粒度的分析,對於模板中所出現的操作符及其對應的兩個操作數,都會找一些與其對應的文本表達。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章