[HAN] Hierarchical Attention Networks for Document Classification (Paper)
1. 서론
자연어 처리에서 Document 의 분류는 굉장히 근본적인 문제로 스팸분류, 기사 분류 등 다양한 용도로 사용 될 수 있다. 과거에는 Keyword 를 기반으로 문서를 분류하는 원시적인 방법부터, 최근에는 CNN 이나 RNN 을 사용하는 방법까지 발전되어 왔는데, 딥러닝의 활용은 성능적인 측면에서 꽤나 좋은 성과를 거두었다. 여기서는 문서를 해석하는 순서적인 방법에 있어서 새로운 방법을 제안하고 있다.
2. Idea
우리가 분류하고자 하는 문서는 문장으로 이루어져 있고, 문장은 단어로 이루어져 있으며, 각각의 단어는 동일한 단어라고 하여도, 어떤 문장에서 사용했냐에 문맥적으로 다른 의미로 사용될 수 있다는 것이다. 즉, Bad 라는 단어가 모든 문장에서 나쁜 의미로 사용되지는 않을 수도 있다는 것이다. 이러한 Hierarchical 개념은 CNN-GRNN, LSTM-GRNN 에서도 적용된 개념으로, 여기에서도 동일하게 사용된다. 여기에 추가적으로 Attention 개념을 추가하고 있는데, Word 를 GRU 를 활용하여 Enconding 하고 단어의 중요도를 추출하는 Attention 을 추가하는 그런식이다. 결론적으로 단계적인 문서의 해석과 단어의 중요도 파악을 위한 Attention Layer 의 추가가 그 핵심 아이디어라고 볼 수 있다.
3. Architecture
아키택쳐 구성을 보면 크게, 4개의 구획으로 나누어 지는 것을 볼수가 있다.
(1) Word Encoder
첫번재 구획은 단어를 Encoding 하는 구간으로, 별도의 W2V 알고리즘을 사용하여 모델을 훈련하였으며, Representation Vector 의 사이즈는 200으로 단어의 표현은 200 사이즈의 Vector 로 이루어 진다. Word Encoder 는 단어를 Sequence 를 입력으로 받아서 BiDirectionalGRU (각, GRU Cell 의 Hidden Size 는 50를 이용하여 Feature 를 추출하며 Word Attention 으로 결과를 넘긴다.
(2) Word Attention
(1) 에서 BiDirectionalGRU 의 결과 두 가지를 Concat 하여 h 를 만들면, 문장을 구성하는 단어의 길이 만큼의 h Vector 가 구해질 것이다. (실제로는 GRU 에 정의된 Max Length) Word Attention 에서는 각 단어별로 해당 문장의 의도를 결정하는데 얼마나 영향을 주는지 가중치를 관리하는 Attention Layer 를 훈련한다. Attention Layer 의 결과는 GRU 를 통과한 각 단어 Vector 에 Attention Layer 의 단어별 가중치를 적용하여 Sum 을 한 값으로 Sentence 를 표현하는 Vector 가 된다.
(3) Sentence Encoder
앞서 (1) 에서는 Word 를 인풋으로 받아서 Sentence 를 표현하였다면, 이번에는 Sentence 를 인풋으로 Document 를 표현하는 것이 그 목적이다.
앞서와 마찬기지로 BiDirectional GRU 를 활용하여 s (Stence Vector) 를 Input 으로 Encoding 을 진행한다.
(4) Sentence Attention
앞서와 마찬가지로 단어 단위로 가중치를 훈련하는 Layer 를 추가하고 최종적으로 단어별 가중치 * 각 단어의 Representation Vector 를한 후 Sum 을 하여 V 를 구한다.
(5) Document Classification
마지막 레이어는 전형적으로 클래스별 가중치 W * V((4)에서 구한 백터) 를 Sofrmax하여 확률로 표현하는 형태가 된다.
Loss 는 맞는 레이블에 대하여 Negative Log Likelihood 를 활용한다.
(d 는 도큐먼트 , j 는 레이블이다.)
4. 결론
아래는 테스트 데이터 셋의 종류와 클래스 수, 도큐먼트 수 등 속설 정보이다.
비교 대상 알고리즘들과 동일한 데이터 셋으로 테스트를 하였을때, 아래오 같이 훨씬 좋은 결과를 보여 주고 있음을 알 수 있다.
추가적으로, Attention Layer 를 삽입하였기 때문에 해당 Layer 를 분석하여 왜 그렇게 문서가 분류 되었는지, 설명할 수 있다는 장점도 존재한다.
끝.