** 논문: https://arxiv.org/pdf/2005.08314.pdf
** 깃헙: https://github.com/facebookresearch/TaBERT
자연어(Natural Language, NL) 문장과 표 데이터에 대한 representation을 동시에 학습할 수 있는 사전학습 기법
TaBERT 학습에 대한 전체 학습도 : (A) 표 내용에 대한 스냅샷은 자연어 발화에 기반해 생성 (B) 스냅샷에 있는 각 행은 Transformer로 인코딩 되어 토큰과 셀에 대한 행별(row-wise) 인코딩을 생성함 (C) 모든 행별 인코딩은 vertical self-attention layer V로 처리되어 열 representation을 생성함
모델
3.1 자연어 발화와 테이블 스키마에 대한 representation 계산
Figure 1의 예시와 같이 자연어 질의 u와 표가 주어질 때 TaBERT는 먼저 T에 대한 내용 스냅샷을 생성한다. 이 스냅샷은 표 내용 중 인풋 질의와 가장 관련이 높은 행을 샘플링한 것으로 구성된다. 이후 각 행을 선형으로 이어붙인 후 각 행과 인풋 질의를 concat하여 Transformer(BERT)을 통해 질문 토큰과 셀에 대한 행별 인코딩 벡터를 얻는다. 각 행에 대한 인코딩은 vertical self-attention layer에 집어넣는데, 이 레이어는 열 별로 같은 열에 있는 벡터에 대해 연산을 한다. 마지막으로 pooling layer을 통해 각 질의 토큰과 열에 대한 representation을 생성한다.
Content Snapshot
- TaBERT의 가장 큰 특징은 단순히 열 이름 뿐만 아니라 표의 내용을 이용한다는 점
- 이는 열에 대한 정보는 단순히 열 이름만 사용하는 것보다 훨씬 많은 정보를 포함하기 때문
- 그러나 DB 표는 열의 개수가 많을 수 있고, 그 중 몇 개 만이 인풋 발화를 답변하는 데에 관련 있는 정보를 가짐
> 따라서 인풋 질의와 가장 관련이 높은 몇 개의 열만 이용해 셀 값들로부터 필요한 것만 계산
> n-gram overlap을 통해 열들 중 관련이 높은 top-K개 열만을 선택 (n-gram 룰을 사용한 부분이 아쉽 ㅠㅠ...)
> K=1일 경우, 정보를 최대한 많이 포함하기 위해 각 열에서 n-gram 기준으로 가장 많이 겹치는 셀들을 모아 한 행을 구성
> 이는 WikiTableQuestions 특성상 질문과 관련이 있는 정보를 여러 열에서 끌어올 수 있는 데에서 기인한 것으로 보임
Row Linearization
- 인풋 질문, 열이름, 그리고 그에 해당하는 셀 값을 concat 하여 transformer 인풋에 넣음
- 이때 셀의 데이터 타입을 그 실제값과 함께 concat하여 정보를 줌
- 예를 들어 Figure 1에서 (2,1) 셀은 다음과 같이 인코딩 됨:
- 열에 대한 linearization은 위의 정보에 대한 인코딩을 concat 하여 생성하되, 각 정보는 [SEP] 토큰으로 분리해 넣음
- 이후 선형화 된 행을 인풋 질의와 concat 해 Transformer 인풋으로 넣음
Vertical Self-Attention Mechanism
- TaBERT의 기본 Transformer 모델은 각 행의 셀 & 질문에 대한 인코딩을 아웃풋으로 리턴
- 이러한 행 단위의 벡터는 독립적으로 계산되기 때문에, 다른 행간의 정보를 교환하기 위해 vertical self-attention을 이용
- 위의 그림에서 볼 수 있듯 V층의 stacked vertical 단위의 self-attention layer을 가진다.
> vertical attention에 대한 align 된 인풋을 생성하기 위해, (i, j) 위치에 있는 각 셀에 대한 고정된 길이의 initial vector 계산
> 이 벡터는 각 셀에 대한 열 이름 [SEP] 데이터 타입 [SEP] 셀 값 [SEP] 의 Transformer 아웃풋을 mean-pooling 하여 만듦
> 이후 자연어 질의에 있는 토큰 벡터의 시퀀스를 셀 벡터와 concat 하여 vertical attention layer의 인풋으로 사용한다.
> 각 vertical attention layer은 Transformer layer과 같은 파라미터를 사용하지만, vertical 하게 align 된 (같은 질문 토큰과 열에 해당하는 자연어 질의와 셀) 벡터에 대해서만 작동
Utterance and Column Representations
- 열 c_j에 대한 representation은 vertically aligned 셀 벡터들에 대한 mean-pooling을 이용해 계산
- 또한 자연어 질의의 각 토큰 x_j에 대한 토큰도 비슷한 방식으로 계산
- 이 representation들은 다운스트림 자연어 처리 태스크에 사용
- 또한 [CLS] 토큰을 통해 표에 대한 고정된 representation T를 얻을 수 있고, 이는 여러 DB 표에 대한 parser로 사용 가능
3.2 사전학습 과정
데이터
잘 구축된 자연어 택스트와 구조화 테이블에 대한 대량의 코퍼스를 얻기 힘들기 때문에, 웹에 존재하는 semi-structured 테이블을 사전학습 데이터로 사용한다. 첫 번째로 영어에 대한 parallel 데이터를 수집하였는데, 영문 위키피디아와 WDC WebTable Corpus에 대해 표와 그 주변에 있는 자연어 텍스트를 수집하였다. 이 데이터는 매우 noisy 하기 때문에, relational table이 아닌 표(header가 없는 표), HTML 스니팻 등 불필요한 데이터를 aggressive 하게 클렌징하여 사용하였다.
사전학습용 데이터는 총 26.6백만 코퍼스를 포함한다.
목적함수
- 자연어 텍스트: Masked LM을 통해 사전학습
- 열 representation:
> 이 결과물은 △열에 대한 일반적인 정보(열 이름/ 데이터 타입 등..) △자연어 텍스트와 관련 있는 셀 값을 포함해야 함
> Masked Column Prediction(MCP) - 마스킹된 열의 이름과 데이터 타입을 복원하는 태스크
. 컬럼 중 랜덤하게 20%의 열을 선택하고, 각 행의 linearization에 대해 열 이름과 데이터 타입 부분을 마스킹
. Column representation c_j가 주어질 때, TaBERT는 마스킹된 토큰에 대해 multi-label classification 수행
> Cell Value Recovery(CVR) - vertical self-attention 이후에 컨텐츠에 대해 필요한 정보가 남아있게 하기 위한 태스크
. 마스킹된 컬럼 c_j에서 CVR은 셀 벡터에 조건부로 생성된 content 스냅샷으로부터 각 셀의 원래 토큰 s_{i,j}을 복원해야 함
. 예를 들어 셀 s_{2,1}에 대해 셀 벡터를 이용해 그 값 2005를 복원해야 함
. 하나의 셀에는 여러 개의 토큰이 포함되어 있을 수 있으므로, span기반의 predictiopn objective를 적용
. 즉, 셀 토큰 s_{i,j}_k를 예측하기 위해, 이 셀에 대한 위치 임베딩 e_k와 셀 representation 벡터 s_{i,j}를 두 층의 네트워크 f(.)에 GeLU activation을 사용해 통과시키고, f(.)네크워크의 결과로 나온 아웃풋에 softmax를 태워 원래 토큰 s_{i,j}_k를 예측하게 함.
결과
WikiTableQuestions & SPIDER 데이터셋에 적용
'AI' 카테고리의 다른 글
[OpenAI] Image GPT - 이미지 분야에 트랜스포머 활용하기 (0) | 2020.08.10 |
---|---|
Transformer 위치 인코딩이 가지는 성질 & 의미 (0) | 2020.07.29 |
[논문리뷰] Longformer: The Long-Document Transformer (3) | 2020.07.21 |
Transformer로 텍스트를 생성하는 다섯 가지 전략 (0) | 2020.07.20 |
GPT-3, 이런 것도 된다고? (0) | 2020.07.20 |