본문 바로가기

카테고리 없음

[논문이해] Investigating Math Word Problems using Pretrained Multilingual Language Models

 

논문명: Investigating Math Word Problems using Pretrained Multilingual Language Models

논문링크: https://arxiv.org/pdf/2105.08928.pdf

 


 

요약

  • 이 논문은 2가지 언어적 관점으로 Math Word Problem 을 접근한다.
  • Cross-lingiual: 특정 언어(예시: 영어)로 학습한 모델이 다른 언어(예시: 중국어) 데이터도 잘 풀까?
  • Multilingual: 여러 언어로 학습하는 게 단일 언어로 학습한 것보다 좋을까?
  • 위 2가지를 명백히 하기 위해, MathQA(english) 와 Math23k(chinese) 를 적절히 가공한다.
  • 실험을 통해 다음을 밝혀냈다.
  • Cross-lingiual 은 효과적이지 않다 → 같은 숫자, 연산자를 갖고 있더라도 transferred 되지 않았다.
  • Multilingual 은 효과적이다 → 학습을 2개 이상의 언어로 한 뒤, 그 중 하나의 언어로 된 데이터에 일반화가능하다.

 

→ Cross-lingual: 모델이 배운 적 없는 언어로 된 데이터는 성능이 저조하다.

→ Multilingual: 모델이 여러 언어를 배우면, 성능이 상승한다. 단, 데이터 역시 배운 적 있는 언어여야 한다.

 


 

개요

  • Math Word Problem 에서 다양한 언어가 끼치는 영향에 대해 알고자 한다.
  • 이유1: 인지과학에선 수리 능력과 언어 능력의 관계에 대해 연구중이다. 최근(2015)에, 관련이 깊다는 게 밝혀짐. 그래서 기계도 그런지에 대해 흥미로움.
  • 이유2: mBERT, XLM-R 과 같이 다양한 언어를 기반으로 하는 모델이 cross-lingual task(예시: XNLI, MLQA) 에서 zero-shot, few-shot setting 으로 일부 성공을 거두고 있음. 이를 MWP 분야에 적용해보는 것은 합리적인 접근임.

그래서 저자는 다음과 같은 가설을 세우고, 실행한다.

 

가설

 

(1) Cross-lingual Setting

: Given a model trained with monolingual dataset, can the model solve MWPs over another language?

→ 하나의 언어로 학습된 모델은 다른 언어로 된 문제를 풀 수 있을까?

 

 

(2) Multilingual Setting

: Can combining datasets of different languages further boost the performance for each language?

→ 여러 언어로 구성된 데이터들은 각각의 언어에서도 성능을 높일 수 있을까?

 

즉, 예시로 중국어와 영어로 구성된 데이터로 학습시키면, 다른 영어 데이터 혹은 중국어 데이터를 더 잘 풀게 될까에 관한 물음이다.

 

(3) Can we identify some critical factors that may affect the results in (1) and (2)?

→ 위 2개의 결과를 통해 우린 어떤 의미 있는 요소들을 찾아낼 수 있을까?

 

 

데이터 수정/전환: Adaption of MathQA

(논문에서는 adaption 이라고 표현하는데, 개인적으로 수정/전환에 가장 가깝게 느껴진다. 굳이 읽어볼 필요는 없어서 핵심만 읽고 내려도 된다.)

 

핵심

  • 우선 저 가설을 증명하려면, multilingual dataset 이 필요하다.
  • 그래서 큰 규모의 dataset 인 Math23k(chinese), MathQA(english) 를 선택한다.
  • MathQA 를 Math23k 형태로 변경한다.

 

 

 

과정

  • Math23k 은 사칙연산 + 제곱만 가능하다. MathQA 도 그렇게 제한하기로 했다.
  • 변환 과정은 MathQA 의 annotated formula 를 이용한다. predefined function 을 이용하면, 아래 그림과 같이 AST(abstract syntax tree) parsing 을 할 수 있다.

 

 

  • 예컨대, 위 그림은 제일 위에 MathQA 문제로 구의 부피를 구하고 있다.
  • 그 공식을 간단히 'volume_sphere' 라고 명명한다. 그걸 AST parsing 한 그림이 위와 같다.

 

 

  • 구의 부피공식은 사칙연산과 제곱으로 표현가능하다.
  • 즉, 위 그림처럼 Adaptation 을 통해 분리하면 변환할 수 있다.

 

  • 하지만 sin, permutation 과 같은 연산자는 제외시켰다.
  • 위 그림은 적용된 연산자와 사용하지 않은 연산자 목록을 나열한 것이다.
  • 그리고, tree 를 만드는 과정에서 검산을 진행했는데 정답과 일치하지 않는 sample 은 삭제하였다고 한다. (근데, github 에 가보면 데이터는 주시지 않으셨다...)

 

위 과정을 모두 끝내고 나면, adaptation 의 결과는 다음과 같다.

 

 

w/o Pow: without Power operator, w/ Pow: with Power operator → 제곱 연산자의 차이를 의미함.

 

  • Math23k 같은 경우, development datatset 으로 쓰기 위해 train dataset 에서 1000개를 뽑았다.
  • 그런데 Math23k 경우, Pow 연산자가 거의 없다. 그래서 이로 인한 성능의 객관성 저하를 막고자, 모든 실험은 Pow 없는 형태로 진행했다고 밝힌다.

 

 

Zero-shot Cross-lingual Evaluation Datasets

 

 

  • transferability of MWP solvers 를 측정하기 위해 평가 dataset 을 다음과 같이 선정했다.
  • 선정된 dataset: AddSub, SingleOp, MultiArith
  • 그 후에, 언어별 성능 측정을 위해 중국어(zh) 로 번역했다. API 쓰고, 다듬었다고 함.

(zh: 중국어의 ISO 639 부호. 자세히 알 필요는 없고, chinese 라고 생각하면 된다.)

 

  • 평가를 위해 다음과 같이 problem types 를 중점으로 다뤘음을 보여준다.

 


모델 구조

(appendix 에 있으나, 의외로 이 논문에서 측정한 결과 성능이 매우 좋았다. 그래서 위로 끄집어 왔다.)

 

전체 구조

 

Encoder

: pretrained multilingual transformer + biLSTM

 

mPLM + biLSTM

 

1. pretrained multilingual transformer → mBERT or XLM-R

  • 다양한 언어를 common word space 로 갖는 모델이여야 하므로, 다양한 언어를 기반으로 사전학습되어야 한다.
  • 여기서 주의할 점은, 한 단어(word)가 단어조각(wordpiece)로 나눠지는 경우엔 hidden state vector 를 합친다. 여기선, averlage pooling 을 사용한다.
  • 예시로, 노란색에 주목하라. 2560 이 256 과 ##0 으로 나눠진 채로 mPLM 을 통과한다. 그 후에, 합쳐지는 표현이 있는데, average pooling 을 적용한 것이다.

 

2. biLSTM

biLSTM 의 결과값을 다음과 같이 표현한다.

  • 앞에서 나온 contextualized representation 을 biLSTM 에 통과시킨다.
  • biLSTM 의 결과값을 위 그림과 같이 표현한다.

 

 

Decoder

: LSTM

 

전체 구조

 

1. Copy Mechanism

  • 대부분의 numerical values 는 target vocabulary 에 존재하지 않는다.
  • 그래서 copy mechanism 을 사용해서 generation 할 때 사용한다.

copy score

  • 각 단어마다 W를 곱하고 sigmoid 를 취해서 0 ~ 1 을 얻는다. 마지막 행렬곱까지 끝나면, copy score 가 나온다.
  • 이 공식에서 보면, m 을 사용한다. 즉, 위에서 biLSTM 의 output 결과를 사용해서 구하고 있음을 알 수 있다.

 

2. Selective Read

 

  • 위에서 copy mechanism 을 쓰는 이유는 OOV(out-of-Vocabulary) 때문이다.
  • 물론, generation 은 해결했다. 하지만, 다음 단계의 input 은 해결하지 않았다.
  • 그냥 두면, unknown 일 때의 vector 가 입력값으로 들어간다.

  • 이를 방지하고자, copy score 를 이용해서 다음 input 값도 정한다.
  • softmax 를 사용해서, m 에 곱한 vector b 를 사용한다.

 

 

3. Attentive Read: bilinear attention

 

  • M(encoder output) 을 문맥을 반영하여 읽고 싶어서 한다고 한다. (개인적으로 BERT 도 통과하고, biLSTM 도 통과했는데 왜 더 attention 을 해야 하는지는 잘 모르겠다...)
  • 그래서 c 라는 contextualized vector 를 구하기 위해 다음과 같이 계산한다고 한다.
  • 첫번째식: 늘 그랬듯이, w 로 차원도 맞춰주고 현재 상태도 곱해준다. 그리고 sigmoid 를 취해서 0 ~ 1 로 바꾼다.
  • 두번째식: softmax 를 통해 총합이 1이 되도록 변경한다. 확률값처럼 말이다.
  • 세번째식: 두번째 식의 이유는 당연히 곱해서 합치기 위해서다. encoder ouput 에 weighted 해서 합친 것과 같다.

 

4. Update state process

 

  • 이제 다 합칠 수 있다 → concatenation
  • 입력값: 직전 embedding (e) + Selective Read(b) + Attentive Read(c)

 

 

5. generation score

  • 이제 state 가 구해졌으니 생성하면 된다.
  • vocab size 로 변경해서 점수를 구한다.
  • 이 값들을 통해서 beam search 등을 적용한 것으로 보인다.

 

→ 사실 이 논문의 실험은 언어에 초점이 맞춰져 있지만, 성능이 의외로 괜찮아서 모델쪽에 시선이 갔다. 그런데 내 실력이 부족해서 그런지, 어렵다. 구현체도 allennlp 로 짜져 있는데, 한글 자료가 없어서 애먹고 있는 중이다. 돌리고 싶었는데, 결국 돌리지는 못했다...

 


 

실험

 

평가 지표: evaluation metrics

  • 모델은 식을 도출한다.
  • 그래서 그 식을 계산한 값이 일치하는지를 보고자 한다.
  • 정답과 예측값의 차이가 predefined threshold 보다 작으면 맞았다고 가정했다.
  • predefined threshold: 0.0001
  • 결론: 맞은 문제 수 / 전체 문제 수

 

실험 대상

  • mBERT-zh: multilingual BERT 사용, Math23k(zh) 로만 학습함.
  • mBERT-en: multilingual BERT 사용, MathQA(en) 로만 학습함.
  • mBERT-xl: multilingual BERT 사용, Math23k(zh) 와 MathQA(en)로 학습함.
  • XLM-R-xl: XLM-R 사용, Math23k(zh) 와 MathQA(en)로 학습함.

 

실험 설정

  • NVIDIA 2080ti
  • batch size: 160
  • learning rate: 0.00003
  • scheduler: polynomial decay
  • epoch: 최대 150. 30 번 이상 성능 개선 없으면 멈춤.

 

실험 결과

언어 교차: Cross-lingual

  • 지켜봐야 할 모델/결과: mBERT-zh, mBERT-en (단일 언어로 학습된 모델의 성능)
  • 학습한 언어에서만 성능을 보이고, 학습하지 않은 언어에 대해선 성능이 없다고 보면 될 정도로 저조하다.
  • 결론: 언어를 교차해서 학습하는 건 도움이 되질 않는다.

 

다양한 언어: Multilingual

  • 지켜봐야 할 결과: 'mBERT-zh 와 mBERT-xl 의 비교', 'mBERT-en 와 mBERT-xl 의 비교'
  • 영어만 배웠던 모델이 중국어도 배웠더니, 영어 성능도 올라가고 있다. 혹은 중국어만 배웠던 모델이 영어도 배웠는데, 중국어 성능도 올랐다.
  • 결론: 여러 언어를 학습하는 건 도움이 된다.

 

Domain similarity

  • 난이도 역시 도움이 된다는 걸 보여준다. 그 이유로 mBERT-zh 가 mBERT-en 보다 영어 성능이 더 좋다.
  • 논문에서는 Math23k 가 MathQA 보다 쉽고, 난이도가 평가 dataset 과 유사하기 때문이라고 본다.
  • 즉, 같은 언어여도 domain simliarity 가 다르면 성능에 도움이 되지 않을 수 있다는 말이다.
  • 결론: 언어이외에도, domain similarity 역시 성능에 중요한 요소 중 하나다.