관심있는 NLP 논문을 읽어보고 간단히 정리했습니다.
혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 🙇♂️
[University of Southern California]
- PINTO: prompt-based learning을 통해 rationalize하고, counterfactual regularization을 통해 faithfully reason하는 LM pipleine
- 중간 사이즈의 LM을 frozen하고 rationale을 생성할 수 있도록 prompting → 생성된 rationale을 컨텍스트로 이해하고 fine-tuning
1. Introduction
굉장히 재밌는 표현인 것 같은데, reasoning tasks에 대해서 LM의 파라미터에 내재된 knowledge를 explicit하게 끄집어내는 테크닉들이 많이 연구되고 있음을 언급합니다.
CoT만 생각해봐도 단순히 output 하나만 반환하는 것이 아니라, 그것이 어떻게, 왜 도출되었는지에 대한 설명을 스스로 달게 하면서 예측 정확도를 높일 수 있었던 테크닉이죠.
이후 자세히 설명하긴 하겠지만 관련 내용으로는 크게 세 가지가 있습니다.
1) fine-tuned self-rationalizing
2) prompted self-rationalizing
3) pipeline-rationalizing
본 논문에서 제시하는 방법은 위 세 가지 패러다임이 갖는 단점들을 잘 극복하여 뛰어난 reasoning 퍼포먼스를 보여주었다고 합니다.
참고로 PINTO는 Prompted ratIonalizing with CouNTerfactual reasOning의 약자인데...
억지도 이런 억지가 없다는 생각이 드네요 ㅋㅋㅋㅋㅋㅋ
2. Rationaled-Based Language Reasoning
본 연구에서는 여러 개의 선택지 중에서 하나를 정답으로 고르는 multi-choice question answering (QA) 태스크를 다루고 있습니다.
정답을 고를 수 있는 선택지와 실제 정답의 관계를 $a^{*} \in A$로 표현할 수 있습니다.
또한 question $q$와 정답 후보 $a_{i}$에 대해서 예측한 정답은 다음과 같습니다.
$$\hat {a} = arg \max_{a_{i} \in A}\rho(q, a_{i})$$
이런 방식을 ratinoaled-based reasoning task라고 부르는데 크게 세 가지 방식이 존재하고 각각의 특징에 대해 간단히 설명하겠습니다.
1) Fine-Tuned Self-Rationalization
- LM은 autoregressively하게 task output과 rationale을 하나의 sequence로 생성하도록 fine-tuned 됩니다.
- 이때 output과 rationale을 생성하는 것은 하나의 모델인데, 두 태스크의 objective가 다르다는 문제점이 있습니다.
- 또한 각 학습용 instance에 대한 rationale을 annotation하는 것도 비용이 만만치 않다는 문제가 있습니다.
2) Prompted Self-Rationalization
- 마찬가지로 LM이 task output과 rationale을 하나의 sequence로 생성하게 되지만, 여기서는 LM이 freeze 되어 있고 prompted 됩니다.
- 이는 적은 rationale 예시만을 가지고도 좋은 성능을 발휘하지만, 이것이 가능하기 위해서는 상당히 뛰어난 능력을 지닌 (큰 사이즈의) 모델이 필요하다는 문제점이 있습니다.
3) Pipeline Rationalization
- 먼저, fine-tuned rationalizing LM이 rationale을 생성합니다. 그리고 이와 독립된 fine-tuned reasoning LM이 이를 바탕으로 task output을 예측합니다.
- 하지만 두 모듈은 discrete 하기 때문에 end-to-end 학습이 이뤄질 수 없어 병목현상이 발생할 수 있습니다.
- 또한 LM이 학습할 추가적인 rationale을 만들어 내는 비용이 상당히 발생합니다.
3. PINTO
PINTO는 두 개의 모듈로 구성됩니다.
pipeline rationalization으로부터 시작한 것이라고 생각하면 쉽습니다.
즉, rationale을 생성하는 rationalizing module과, 이를 바탕으로 output을 생성하는 reasoning module이 있습니다.
각각 무슨 역할을 수행하는지 간단히 살펴보겠습니다.
Rationalizing Module
위에서 언급한 것처럼 학습에 사용될 rationale을 직접 만드는 것은 비용도 많이 들고 퀄리티를 보장하기 어렵습니다.
따라서 사람이 rationale을 만들지 않고, 이를 LM으로 대체하고자 하는 시도가 많이 이뤄지고 있습니다.
본 연구에서는 사전 학습이 끝난 모델에게 in-context learning을 활용하여 rationale을 생성하도록 prompting 합니다.
prompt는 학습 데이터셋으로부터 랜덤하게 추출된 (question-answer-rationale)이 포함됩니다.
이때 정답 후보와 실제 정답을 포함하는 집합 answer는 $A$로 표시되고, 실제 정답은 $a^{*}$입니다.
이에 대한 free-text rationale은 사람이 직접 작성하여 $r^{*} \in R$이 됩니다.
즉, $R$에 포함되는 다른 rationale들은 여기서 LM을 prompting하여 LM이 직접 생성한 데이터들이라는 것입니다.
이렇게 하는 이유는 실제 정답에 대한 rationale도 모델이 생성하고 학습에 활용하게 되는 경우, 일종의 cheating 같은 현상이 발생할 수 있기 때문입니다.
(거의 data leakage 느낌)
Reasoning Module
rationalizing module을 통해 생성된 데이터들을 모아서 reasoning module에 전달하면, 출력이 얼마나 그럴싸한지에 대한 score를 반환하게 됩니다.
그 식은 $\rho_{i} = \rho(q,A,a_{i},r_{i}$입니다.
reasoning module이 output을 생성할 때는 각 $a_{i}$에 대해서 (question, A, ratinoale)이 입력으로 주어집니다.
즉, 모든 정답 후보를 concat해서 입력으로 제공한다는 뜻입니다.
이 모듈은 결과적으로 $arg \max_{a_{i} \in A}P(a_{i}|q,A,R)$을 만족하는 $a_{i}$를 찾게 됩니다.
Training
사실 학습 과정에 대해서는 자세하게 설명할 것들이 조금 많긴 한데..
지면을 고려하여 (사실 시간이 좀 없습니다 죄송합니다) 간단히 키워드 정도만 소개하고.. 수식도 좀 그냥 캡쳐해서 설명하도록 하겠습니다.
표준이 되는 training objective는 다음과 같습니다.
이때 $Q(a_{i}|q,A)$는 $a_{i}=a^{*}$일 때는 1, 그렇지 않을 때는 0인 함수입니다.
즉, one-hot target distribution인 것이죠.
사실 이건 옳은 예측만을 반영하는 방식인 것인데, 이렇게 되면 모델이 갖는 부정적인 특성에 대해서는 학습할 수가 없게 됩니다.
이를 해결하기 위해서 본 논문에서는 uniform distribution을 따르는 noise를 추가하여 label smoothing을 적용하게 됩니다.
$\epsilon$이 noise의 정도를 결정하는 인자가 됩니다.
따라서 모델의 예측에 노이즈를 추가한 수식은 다음과 같습니다.
$$Q'(A|q,A) = (1-\epsilon)Q(A|q,A) + \epsilonU(A|q,A)$$
이를 최종 반영하게 되면 노이즈를 포함하는 예측값과, 이를 예측한 확률의 곱으로 표현이 되고, 이를 최소화 하는 것이 손실 함수로 정의되게 됩니다.
추가로 생성된 rationale을 perturbing 하는 두 가지 방식에 대해서 언급합니다.
자세한 이유는 생략하고, Token Masking과 Token Replacement입니다.
단순히 rationale을 masking 하는 방법과 다른 토큰으로 대체하는 방식이라고 생각하면 되겠습니다.
둘 중에 어떤 방식을 적용할 것인지는 랜덤하게 결정되고, 이를 통해 수정된 rationale, $R'=\{ r'_{i}\}$로 표현하고 이것이 위 수식에 반영되어 있는 것입니다.
4. Experiment & Results
- Datasets
- CommonsenseQA, StrategyQA, OpenBookQA, QASC
- Evaluation Metric
- ID, OOD 환경을 둘 다 평가
- faithfulness를 평가하기 위한 방법으로 LAS metric을 사용하는데, 이를 accuracy와 결합한 Normalized Relative Gain (NRG) metric을 최종적으로 사용
- Model
- rationalizaing module: GPT-neox (20B)
- reasoning module: T5-base
- Baselines
- Without Rationales
- Prompted Self-Rationalization
- Distilled Self-Rationalization
- NILE
- Standard Training
- Dropout Context
- In-Distribution Results
- reasoning module에 단순히 rationale을 붙여주는 것만으로는 성능 향상을 기대하기 어렵다. (노란색 형광펜)
- counterfactual regularization method는 유효한 것으로 확인된다. (Masking + Replacement)
- Out-of-Distribution (OOD) Results
- PINTO가 더 좋은 일반화 성능을 보이는 것이 확인된다.
- 데이터가 적수록 PINTO를 적용했을 때와 그렇지 않을 때의 성능 gap이 더 크다. 즉 low-resource 환경에서 더욱 빛을 발하는 테크닉이라는 것.
- 또 재밌는 실험이 prompt에 대해 얼마나 민감한지를 확인한 것이다.
- rationale을 랜덤하게 뒤섞은 경우, 즉 올바르지 않은 추론을 하게 되는 경우에 대해 학습이 잘 된 모델이라면 성능이 확 떨어져야 한다는 것이다.
- 그래서 외려 제대로 학습이 되지 않은 모델의 경우 그러거나 말거나~ 하면서 성능 변화가 상대적으로 작다. 이를 확인한 그래프는 아래와 같다.
출처 : https://arxiv.org/abs/2211.01562