이 논문은 XMC를 BERT를 이용하여 푸는 모델에 대한 논문이다.
회사에서 BERT를 이용하여 text classification을 하려했는데 예제들을 보니 클래스가 많아봤자 5개 정도라 클래스가 많은 경우에는 어떻게 하나 싶어서 찾아보다가 이 논문을 찾았다. 하고자하는 task가 클래스가 1000개가 좀 넘기때문에 XMC라고 볼 수 있어 이 논문을 읽고 코드까지 보고 적용가능성을 판단하려고 한다.
Abtract
Extreme multi-label text classification(XMC)는 input text를 매우 많은 labels 중 가장 적절한 label로 태깅하는 것을 말한다. 최근, BERT와 같은 pre-trained language representation models은 많은 NLP task에서 우수한 성능을 보여줘왔다.
하지만, BERT를 XMC problem으로 확장시키는데에는 어려움이 있었다.
예를 들자면,
- 다른 source에서 온 label들 사이의 dependency나 correlation을 잡아내는 것에 대한 어려움
- extreme label setting으로 스케일링하기에 어려움.(Softmax bottleneck으로)
이러한 문제들을 극복하기 위해, 이 논문에서는 X-BERT를 제안한다. 이는 BERT를 XMC problem으로 fine-tuning한 첫번째 solution이다.
특히, X-BERT는 label과 input text를 모두 이용하여 label representation을 만든다. 이를 통해 label dependecy를 더 잘 모델링할 수 있다. 또한 X-BERT에서 가장 중요한 것은 input text와 induced label cluster사이의 문맥적 관계를 파악하기 위해 BERT를 fine-tuning하는 부분이다.
결과적으로, 다른 BERT 모델들을 앙상블한 결과가 논문에서의 최고의 결과를 보여주며 SOTA XMC방법이 되었다.
특히, 0.5milion의 label을 가진 Wiki dataset에서 XBERT의 the precision@1은 67.87%를 기록하며 기존의 fastText와 Parabel의 성능을 월등히 뛰어넘었다.
Introduction
XMC는 주어진 text를 엄청나게 많은 label들 중 가장 적절한 label로 태그하는 식을 말한다.
여기서의 총 라벨 수는 백만 또는 그 이상이 될 수 있다.
최근, XMC는 e-commerce에서의 상품 분류화와 같은 다양한 산업 응용분야에서 web-scale data가 성장하면서 상당한 관심을 끌고 있다.
하지만 XMC는 효과적이고 효율적인 분류를 개발하는데에 computational cost가 큰 것에 대해 어려움이 있다.
위의 표는 Wiki-500K의 long-tail label distribution에 대해 보여준다.
XMC problem에서 이러한 scalability와 label sparsity에 대한 문제를 해결하기 위해 많은 연구가 있어왔다.
다음 세 가지가 XMC problem을 위해 제안되어진 방법들이다.
1) one-vs-all(OVA) : 종종 큰 성능을 보여줬다. 하지만 OVA 접근법은 scalability issue를 여전히 가지고 있다.
(label class하나 늘어나면 다시 훈련시켜야함)
2) tree-based method : 성능은 낮지만 빠른 classification tree의 앙상블에 대해 다루었다. 하지만 큰 model size를 가지게 된다.
3) Label-partitioning : 균형잡힌 label trees를 만들어 leaf node만이 one-vs-all classifiers로 학습되는 방식이다. 이는 상당한 정확도를 보여줬지만 computionaional speed가 느리다는 단점이 있다.
💢 이 방법들에 대한 간단한 설명은 아래의 Related work에서 볼 수 있다.
대부분의 XMC의 전통적인 방식들은 text representation을 위해 더 높은 차수의 문맥 dependency를 무시한채 bag-of-word(BOW)의 변형방식을 사용한다. 이는 text 데이터에 있는 더 깊은 semantic 정보를 잡아내지 못한다.
딥러닝 모델은 XMC problem뿐만 아니라 text classification을 위한 강력한 represenation을 위해 제안되어왔다.
이 논문이 출판될 시(2019년) NLP계에서는 사전학습된 deep언어 representation models으로 파라다임이 옮겨가는 모습이 보였다. 사전학습 모델들이 SOTA의 성능을 보여주었기 때문이다.
이 중, BERT는 사전학습 언어모델 중 가장 최근의 모델이며 전의 모델(ex. ELMo, GPT...)들을 성능으로 다 제쳤다.
하지만, BERT model를 XMC에서 fine-tuning하는 것은 쉽지 않다. 이유로는 label dependency를 파악하기 쉽지 않고, label을 스케일링 하는 것이 쉽지 않기 때문이다.(추가적인 softmax layers 필요)
이 논문에서 소개하는 X-BERT는 BERT와 같은 사전학습된 언어모델을 XMC에 맞게 fine-tuning하는 방식을 사용한 모델이다. 논문의 기여는 다음과 같다.
- X-BERT를 제안하였다. X-BERT는 세 부분, semantic label Indexing component, Deep Neural Matching component, Ensemble Ranking component로 구성되어 있다.
(즉, label의 semantic 정보를 알아내고 input text를 이 Label에 매칭시키고 결과들을 앙상블하여 통합하는 식이다.)
- 논문에서는 input keywords뿐만 아니라 label text description를 사용하여 label representation을 만들었다. 이는 semantic label cluster를 구성하게 된다. 이 label cluster에서 encoded된 label dependency를 이용하여 BERT를 fine-tuning하게 된다. 이로써 input text를 label cluster의 한 set으로 매칭시키게 된다. 마지막으로 다양한 설정의 X-BERT의 앙상블을 통해 성능을 개선시킨다.
- X-BERT는 XMC에서 새로운 SOTA 결과를 보여준다.
- 데이터셋, 코드 그리고 사전학습된 모델들 모두 github에 공개되어 있다.
Related Work
1. Extreme Multi-label Classification
XMC 알고리즘에 대한 분류는 다음의 네 가지로 나눌 수 있다.
- One-vs-all approaches(OVA)
- Partitioning methods
- embedding-based approaches
- deep learning approaches
1> One-Vs-All (OVA) approaches
Naive OVA방법은 각 label을 binary classification problem처럼 독립적으로 다룬다. (해당 Label인지 아닌지로 구분)
OVA 방법들은 높은 정확도를 보여줘왔지만 라벨의 수가 매우 많아지면 학습과 예측에 높은 computation이 든다.
그러므로, 몇가지 테크닉들이 속도를 올리기 위해 제안되어 왔다.
대표적으로 PDSparse/PPDSparse는 예측뿐만 아니라 학습의 속도를 올리기 위해 primal과 dual sparsity를 소개했다.
또한 DiSMEC, ProXML과 PPDSparse는 모델의 크기를 줄이고 알고리즘의 속도를 올리기 위해 병렬화와 sparsity를 도입하였다.
2> Partitioning methods
$Y \in\{0,1\}^{N \times L}$ 와 같은 라벨 행렬을 생각해보자. 여기서 N은 학습 데이터의 수, N은 라벨의 수를 뜻한다.
Partitioning을 사용하는 방법에는 두 가지가 있다. 하나는 Y의 행들(input space)을 partitioning하는 방식이고 다른 하나는 Y의 열들(label space)을 partitioning하는 방식이다.
Label matrix Y가 매우 sparse할 때, input partition은 라벨의 일부만을 가지고 있고 label partition은 instance의 일부만을 가지고 있다. 또한, label partition에 tree-based 방식을 적용함으로써 label size에 대해 sublinear time predition이 가능해진다.
3> Embedding-based approaches
Embedding 모델들은 Label matrix에 대해 Low-rank representation를 사용함으로써 label에 대한 유사도검색이 Low-dimension에서 수행될 수 있다. 즉, embedding-based methods는 label space가 low-dimensional latent space(비슷한 라벨이면 비슷한 latent representation을 가지는 space)로 represent될 수 있다는 것을 가정한다.
하지만 실전에서 비슷한 computational speedup을 위해서는, embedding-based 모델들은 sparse OVA방법들과 비교하여 낮은 성능을 보여준다.
4> Deep Learning Approaches
Text inputs에 대해, 딥러닝 representation은 BOW feature(ex. TF-IDF)보다 input에서 semantic 정보를 더 잘 포착할 수 있다.
예를 들어, XML-CNN은 CNN모델을 사용하여 text를 represent하고 AttentionXML와 HAXMLNET은 어텐션 모델을 사용하여 텍스트로부터 Embedding을 뽑아냈다.
최근 BERT, ELMo 그리고 GPT와 같은 모델들은 다양한 NLP task에서 좋은 성능을 보여준다. 하지만 아직 이 모델들을 XMC 해결에 사용한 경우는 없었다.
X-BERT
X-BERT의 아이디어는 Information Retrieval(IR)관점에서 영감을 받았는데, 목표는 쿼리가 주어졌을 때 매우 큰 set에서 적절한 documents를 찾는것이다. 많은 document를 다루기 위해, IR engine은 전형적으로 다음과 같은 스텝으로 검색을 수행한다.
1) indexing
2) matching
3) ranking
XMC problem은 다음과 같이 IR problem으로 연결될 수 있다.
👉🏻 많은 수의 레이블은 검색 엔진에 의해 색인된 많은 수의 문서와 유사하게 볼 수 있다.
👉🏻 라벨링된 instance는 쿼리와 같은 맥락이라 볼 수 있다.
이렇게 IR와 연결지어 만든 X-BERT는 다음의 단계를 거친다.
1. Semantically indexing the labels
2. Matching the label indices using deep learning
3. ranking the labels from the retrieved indices and taking an ensemble of different configurations from previous steps.
1. Problem Definition
Multi-label classification은 한마디로 함수 $f$를 학습하는 것과 같은데,
$f$는 한 input x를 target $\mathbf{y}=\left[y_{1}, y_{2}, \cdots, y_{L}\right] \in \mathcal{Y}=\{0,1\}^{L}$로 매핑하는 함수이다. 여기서 L은 unique label수이다.
만약 우리가 N개의 학습 샘플들 $\begin{equation}
\left\{\left(\mathbf{x}_{i}, \mathbf{y}_{i}\right)\right\}_{i=1}^{N}, \text { where }\left(\mathbf{x}_{i}, \mathbf{y}_{i}\right) \in \mathcal{X} \times\{0,1\}^{L}
\end{equation}$ 을 가정해보자. 그러면 Y의 i번째 행 $\mathbf{y}_{i}^{\top}$ 은 i번째 학습 샘플에 대한 label vector라 할 수 있다.
특별한 데이터셋의 경우에, 예를 들어, Wikipedia dataset의 각 라벨은 단어로 이름지어져있는데 (ex. Zoos in Mexico, Bacon drinks) 이 라벨들에 대한 feature representation으로
$\begin{equation} \left\{\mathbf{z}_{j}\right\}_{j=1,2, \cdots, L} \in \mathcal{Z}^{L}
\end{equation}$ 을 사용한다.
확률관점에서 보자.
인덱싱 후 label를 K개의 cluster로 묶었다고 생각해보자.
$\begin{equation}
\left\{\mathcal{I}_{k}\right\}_{k=1,2, \cdots K}, \text { where each } \mathcal{I}_{k} \text { is a subset of the label indices }
\end{equation}$
한 instance $x$가 주어졌을 때, $x$와 관련있는 $l$번째 라벨 $y_l$ 의 확률 $ P\left(y_{l} \mid \mathbf{x}\right) $ 는 다음과 같이 표현될 수 있다.
$ \begin{equation}
P\left(y_{l} \mid \mathbf{x}\right)=\sum_{k=1}^{K} P\left(y_{l} \mid \mathcal{I}_{k}, \mathbf{x}, \Theta_{r}\right) P\left(\mathcal{I}_{k} \mid \mathbf{x}, \Theta_{m}\right)
\end{equation} $
여기서 $P\left(\mathcal{I}_{k} \mid \mathbf{x}, \Theta_{m}\right)$ 는 파라미터로 $ \Theta_{m} $를 가진 매칭모델이며, $P\left(y_{l} \mid \mathcal{I}_{k}, \mathbf{x}, \Theta_{r}\right)$ 는 $ \Theta_{r}$을 파라미터로 가진 랭킹모델을 뜻한다.
이 랭킹모델에 대해, 다음과 같이 설명할 수 있다. 라벨 사이즈가 클 때, 그룹화된 많은 비슷한 라벨들이 있을 것이라는 직관으로부터 나왔다.
$\begin{equation}
P\left(y_{l}=1 \mid \mathcal{I}_{k}, \mathbf{x}, \Theta_{r}\right)=0, \text { if } l \notin \mathcal{I}_{k}
\end{equation}$
만약 라벨 $l$이 k번째 클러스터에 없다면 $y_l$이 1이 될 확률이 0이 되는 것이다.
즉, 랭킹 단계에서 클러스터의 라벨들만 고려가 된다.
이 프레임워크에는 다음과 같은 장점들이 있다.
1. 다양한 라벨 representation으로 matching과 ranking model을 향상시켰다. 이를 통해 더 나은 retrieval system을 만들 수 있다.
2. 유도된 cluster space에 의해, BERT의 12개의 layers는 계산측면에서 실현가능한 선택지가 된다.
3. Label set을 일부의 set으로 ranking을 제한시키는 것은 불필요한 라벨을 제외시키는데에 도움이 된다.
2. Semantic Label Indexing
검색 엔진에서 문서들을 인덱싱하는 것은 많은 텍스트 정보를 요구한다.
하지만 XMC의 라벨들은 보통 이러한 정보가 부족하기 때문에, semantic indexing system을 만들기 위해 의미있는 라벨 representation을 찾아야 한다.
Label embedding via label text
Label의 ID를 사용하는 것 대신 라벨에 대한 semantic information이 필요하다.
짧은 설명과 같은 라벨에 대한 텍스트 정보가 주어졌을 때, 이 설명을 통해 label을 represent할 수 있다.
이 연구에서는 Label representation을 위해 SOTA word representations인 ELMo를 사용하였다.
하지만, Fine-tuning없이, BERT의 token embedding나 변형모델들은 클러스터링 문제에 적합하지 않을 수 있음을 유의해야한다.
라벨에 대한 설명의 몇몇 단어의 embedding를 이용하여 mean pooling한 형태로 해당 라벨을 embedding하게 된다.
예를 들어,
$l$번째 라벨의 word sequence를 $\(\left\{w_{1}, \ldots, w_{k}\right\}\)$라 하면,
$l$번째 라벨의 embedding은 $\(\mathbf{z}_{l}=\frac{1}{k} \sum_{t=1}^{k} \phi_{\mathrm{ELMo}}\left(w_{t}\right)\)$가 된다. 여기서 $\phi_{\mathrm{ELMo}}\left(w_{t}\right)$ 는 t번째 단어의 contextual word representation을 말한다.
Label embedding via keywords from positive instances
하지만, 위와 같이 라벨에 대한 짧은 설명은 충분한 정보를 가지고 있지 않고 그 안의 단어들은 모호하거나 노이즈가 많을 수 있다. 그러므로, 다른 label representation을 고려해볼 수 있는데,
instances의 sparse text embedding이 그 중 하나다. 특히, 라벨 embedding $z_l$은 label $l$에 관련된 모든 instances의 sparse TF-IDF features의 합이 된다.
$\begin{equation}
\mathbf{z}_{l}=\mathbf{v}_{l} /\left\|\mathbf{v}_{l}\right\|, \mathbf{v}_{l}=\sum_{i: y_{i l}=1} \phi_{\mathrm{TF}-\mathrm{IDF}}\left(\mathbf{x}_{i}\right), \quad l=1, \ldots, L
\end{equation}$
이런 label embedding 타입을 Positive Instance Feature Aggregation이라고 한다.(줄여서 PIFA)
Label indexing
위의 label representations으로 label을 클러스터링함으로써 인덱싱 시스템을 만들게 된다.
이 논문에서는 간단함을 위해, balanced k-means clustering을 default setting으로 고려하였다.
직접적이고 정보를 가지고 있는 label representation이 부족하기 때문에, XMC의 indexing system은 IR problem의 indexing system보다 노이즈가 많아진다.
그래도 운좋게 XMC의 인스턴스는 보통 정보를 많이 가지고 있으므로 이 정보를 이용하여 강력한 matching system을 만들 수 있게 된다.
3. Deep Neural Matching
XMC의 matching단계는 적절한 clusters를 각 instance에 지정하는 것이다.
성공적인 검색 엔진의 키포인트는 high-reall matching model인데, 다음 ranking단계가 이 matching단계에서 retrieved된 문서들에 기반하여 이루어지기 때문이다.
강련한 MLC matching system을 만들기 위해, input text로부터 구분자(discriminative information)를 추출해야한다.
이를 위해 많은 딥러닝 모델들이 MLC problem을 풀기 위해 제안되어왔다. (ex. Seq2Seq, CNN 그리고 self-attention models)
😂 하지만, 이러한 딥러닝 모델은 높은 계산 복잡도라는 큰 단점이 있는데 X-BERT에서 클러스터의 수는 사람에 의해 제어될 수 있어 MLC-matching problem의 스케일을 조절할 수 있다. 즉, 계산하는데 걸리는 시간 측면에서 그리 오래걸리지 않는다.
라벨 clustering후에, 라벨들은 K개의 클러스터 $\(\left\{\mathcal{I}_{k}\right\}_{k=1}^{K}\)$ 로 나눠진다.
Deep neural matching 단계는 instance embedding $u = g(x) $를 만들기 위해 encoder $g$를 찾고 instance embedding $u$를 적절한 클러스터로 매핑하는 것이 목표다. 구체적으로 instance가 k번째 cluster에서 positive label을 가지면 그 cluster가 instance $x_i$와 관련이 있다고 말할 수 있다. (i.e., $ \(\left.y_{i l}=1, \exists l \in \mathcal{I}_{k}\right)\ $)
1> X-ttention
Deep neural models이 많은 NLP분야에서 큰 성공을 보여주고 있기에 self-attention mechanism을 encoder $g$로 고려했다.
또한, word embeddings의 한 sequence $\(D=\left\{w_{1}, \ldots, w_{T}\right\}\)$ 로 표현된 T개의 tokens을 가진 한 인스턴스가 주어졌을 때, text에서의 고차원 dependecy를 추출하기 위해 BiLSTM을 고려하였다.: $H=\left(\mathbf{h}_{1}, \ldots, \mathbf{h}_{T}\right)$, $\mathbf{h}_{t}=\left(\overrightarrow{\mathbf{h}}_{t}, \overleftarrow{\mathbf{h}}_{t}\right)$, 여기서 $H \in \mathbb{R}^{2 m \times T}$와 $\overrightarrow{\mathbf{h}_{t}}, \overleftarrow{\mathbf{h}_{t}} \in \mathbb{R}^{m}$ 는 token t에 대한 biLSTM의 hidden state이다. 고정된 사이즈의 임베딩을 위해, X-ttention은 H에서의 T개의 hidden states를 결합하기 위해 self-attention weights를 학습하게 된다. 구체적으로, self-attention 매커니즘은 H를 input으로하고 vector $a$를 output으로 한다.
$\begin{equation}
\mathbf{a}=\operatorname{softmax}\left(\mathbf{w}_{s 2} \tanh \left(W_{s 1} H\right)\right)
\end{equation}$
한 multi-head attention은 weight matrix $W_{s 2} \in \mathbb{R}^{r \times d_{a}}$를 통해 문서의 r개의 semantic aspects을 모델링함으로써 self-attention을 확장시킨다. : $A=\operatorname{softmax}\left(W_{s 2} \tanh \left(W_{s 1} H\right)\right)$
마침내, 인스턴스 임베딩 $\mathbf{u} \in \mathbb{R}^{2 r m}$는 $\mathbf{u}=g\left(\mathbf{x} ; W_{s 2}, W_{s 1}, \boldsymbol{\theta}_{\mathrm{BiLSTM}}\right)=\operatorname{vec}\left(H A^{T}\right)$ 이 된다.
2> X-BERT
앞서 설명한 바와 같이 사전학습 언어모델인 BERT는 많은 NLP task에서 뛰어난 성능을 보여줘왔다.
이에 이 논문에서는 BERT를 XMC-matching problem에 맞춰 fine-tuning하는 모델인 X-BERT를 제안한다.
4. Ensemble Ranking
앞의 matching단계 후로, label cluster의 작은 부분이 걸러지고 남아있는 task는 label cluster에서 label을 ranking하는 것이다. Ranking model에서 목적은 instance와 retrieved label사이의 관련성을 모델링하는 것이다.
즉, label $l$와 instance $x$가 주어졌을 때, instance feature $x$와 label $l$을 score로 mapping하는 $h(x, l)$을 찾는 것이 목표다.(둘 사이의 연관도를 점수로 표현)
이 논문에서 저자들은 주로 linear one-vs-all(OVA)방법론을 사용하였는데, 각각의 라벨을 instance로 지정하는 하는 것을 독립적인 binary classification problem으로 다루는 방식이다. class label은 그 인스턴스가 클러스터에 속하면 positive, 아니면 negative이다. 만약 instance feature가 텍스트라면, linear classifier에 input은 TF-IDF feature가 될 수도 있다.
다른 semantic-aware label cluster에서 학습된 X-BERT 모델로부터 나온 score(위의 식 사용하여 계산됨)를 ensemble하여 사용하게 된다.
Empirical Results
<Datasets and Preprocessing>
논문에서는 널리 쓰인 datasets으로 실험을 하였다. Eurlex-4K, Wiki10-28K, AmazonCat-13K 그리고 Wiki-500K 네 가지 datasets이다.
위의 표에서 구체적인 데이터셋의 인스턴스 수를 확인할 수 있다.
<Algorithms and Hyperparameters>
다른 모델들과 비교 시 Precision과 Recall 측면에서 모두 성능이 향상됨을 확인할 수 있다.
Conclusion
이 논문에서는 BERT를 XMC 문제를 푸는데 처음으로 사용하였다.
정량적으로는 Wiki-500K dataset에서 precision @1는 기존 60.91%(Parabel)에서 67.87%로 증가하였음을 확인하였다.
사실 이 XMC에 대해서 찾아본 계기는 기존의 text classification은 감성분석(binay)나 5개정도의 작은 클래스 수에 대해 분류를 하기 때문이였는데 (사용하고자 하는 데이터셋은 600여개의 데이터셋이 있다.)
한 class당 document는 평균 324여개, 최소 6개, 최대 2072개이다.
이런 imbalance를 위해 text upsampling은 불가피할 것이다.
데이터 증강, 토큰화, 문장 분리 등의 전처리를 거쳐 X-BERT를 학습시키고 label로 fine-tuning 시키는 과정까지 해 볼 생각이다.
(github.com/guoqunabc/X-BERT 에서 소스코드를 확인할 수 있다.)
댓글