NL-085, Pooled Contextualized Embeddings for Named Entity Recognition (2019-NAACL)

■ Comment

  • 원래는 NER 옛날 것부터 좀 읽으려고 했지만.. 최신 트렌드를 알기 위해 최신 논문중 피인용수 높은 이 논문을 선택했다.
  • 이 논문이전에 Akbik (2018)에서 BiLSMT+CRF 모델의 성능좋은 NER 연구가 있었다.
    • Akbik는 character-level embedding으로 단어의 첫과 끝의 embedding을 활용하여 NER 예측을 한 것이다.
    • 여기서 character-level embedding으로 모델을 태우고 난 뒤의 character-level contextualized embeddings을 contextual string embeddings라고 부른다.
  • 이 논문에서는 Akbik 모델을 따르는 pre-trained contextual string embedding을 사용하는 것을 baseline으로 잡는다.
    • 또한 여기에 word embedding (Glove or FastText)을 결합하여 성능을 높여준다.
    • word embedding을 결합한 실험이 table 1, 빼고 실험한 것이 table 2이다.
    • 여기까지는 baseline으로 볼 수 있고
  • 이 논문에서 성능을 높이기 위해서 등장한 개념이 pooled contextualized embedding이다.
    • 이것은 memory 개념인데, 학습할 때, 코퍼스에서 등장하는 단어에 해당하는 embedding을 저장해나간다.
    • 당연히, 학습 중간에 embedding matrix가 바뀔테니, 이 메모리는 epoch 단위로 reset이 되면서 진행된다.
    • 그림 2가 전체적인 그림인데, "홍길동"이란 단어가 등장했을 때, 메모리에서 "홍길동" embedding 을 가져와서 pooling을 시켜 현재 embedding과 결합시킨다는 것이다.
    • 즉, 현재 컨텍스트에서만 "홍길동"의 embedding을 뽑는 것이 아니고 지금까지 봐왔던 컨텍스트 모두에서 뽑은 "홍길동"을 활용하겠다는 것이다.
    • 이렇게하면 character-level embedding에서 보이던 rare word에 대한 단점을 보완할 수 있다는 것이다.
    • 테스트할 때는, 학습 마지막에 저장되었던 memory을 활용하고 테스트하면서도 memory에 word embedding을 저장해나간다.
  • pooling의 방법
    • avg / min / max가 있고 avg가 가장 좋을 것 같지만 min도 좋은 결과를 보여준다.
  • 성능은 SoTA을 달성하고 이 방법이 BERT보다 더 좋은 성능을 보여주는 게 인상적이었다.
    • 일반적인 CoNLL에서 성능 수치의 절대적 차이는 크지 않다.
    • 개인적인 생각으로는, WNUT-17인 새로운 엔티티 감지 (emerging entity detection)에서 성능 차이가 중요할 것 같다.
    • 이 논문에서는 BERT로 WNUT-17 실험을 안했지만, 실제 application에서는 WNUT-17처럼 못보던 단어들이 많이 보일 것이기 때문에 contextualized 정보를 BERT가 더 잘잡아낼지, pooled가 효과적일지가 궁금하다.
    • 아니면, 이 논문에서 쓰는 BiLSTM-CRF대신 BERT을 써서 메모리 저장하는 것도 하나의 방법이 될 것이다.
    • memory의 힘이겠지만, 모델자체로는 BERT보다 훨씬 적은 크기일 것이기 때문에 이 방법이 효과적인 상황도 많을 것이라 생각이 된다.

 0 Abstract

  • Contextual string embeddings은 최근 contextualized word embedding의 타입들이고 이것은 많은 시퀀스 레이블링 테스크에서 SoTA을 야기했다.
  • 그들은 character-level language models을 기반으로하고 이것은 character에 대한 distribution으로써 text을 다루고 어떠한 textual context 안에서도 characters의 스트링에 대해 embeddings을 생성할 수 있다.
    • 즉 character-level은 어떠한 text에 대해서도 처리가 가능하다는 말인 듯
  • 그러나, 순수하게 character-based 방법은 만약 희귀한 문자열이 있는 rare string이 있을 경우 의미있는 embeddings을 생성하는데 쉽지 않다.
  • 이러한 단점을 설명하기 위해, 우리는 만나는 각 unique string에 대한 contextualized embeddings을 동적으로 모으는 방법을 제시한다.
  • 우리는 그리고나서 pooling operation으로 모든 contextualized 인스턴스로부터 global word represenation을 distill한다.
  • 우리는 이러한 CoNLL-03 and WNUT와 같은 일반적인 NER 테스크에 대한 pooled contextualized embeddings을 평가하고 우리의 접근법인 SoTA임을 보여준다.
  • 우리는 우리의 코드와 pre-trained models을 커뮤니티에 제공한다.

1 Introduction

  • 많은 NLP 접근법에서 word embeddings은 중요한 컴포넌트인데 왜냐하면 그들이 단어들의 latent semantic을 캡쳐하고 그래서 모델이 더 좋은 학습과 일반화를 할 수 있게 하기 때문이다.
  • 최근 연구들은, contextualized embedding models을 조사하는 패러다임으로 one word는 one embedding으로부터 좀 떨어져있다.
  • 이러한 접근법들은 같은 단어에 대해 context에 의존하여 다른 embeddings을 만들며 그래서 모호한 단어들의 latent contextualized semantics을 캡쳐한다.
  • 최근에 Akbik (2018)은 character-level contextualized embeddings 접근법을 제안하여 contextual string embeddings을 구한다.
  • 그들은 pre-trained character-level language models을 활용한다.
    • 이 모델은 각 단어들의 처음과 끝 character 위치에서 hidden state을 추출하여 문장의 context안에 어떠한 string에 대해서도 embeddings을 생성한다.
    • "내 이름은 홍길동"에서 charcter contextual embedding을 통해 "홍"과 "동"에 대한 embedding을 통해 "홍길동"에 대한 embedding을 구한다?
  • 그들은 NER 또는 품사 (PoS) 태깅과 같은 시퀀스 라벨링 작업에 사용될 때 SoTA 결과를 산출하기 위해 이러한 embeddings을 보여준다.
  • Underspecified contexts. 
    • 그러나, 이러한 contextualized character-level models은 정의되지 않는 컨텍스트에 있는 rare words을 만날 때, 고유의 단점으로부터 고통받는다.
    • 그림 1에서 보여주듯이 text segment 예제를 고려하자:

    • 만약 우리가 "Indra"가 rare하다고 고려하면  (즉 word embeddings을 만들 때 사용되는 코퍼스에서 잘 안등장했다면), 불명확한 컨텍스트는 이 단어가 person 혹은 organization으로 해석될 수 있다.
    • 이것은 불명확한 embedding이 궁극적으로 "Indra"을 organization으로 잘못된 분류를 야기할 수 있다.
  • Pooled Contextual Embeddings. 
    • 이 논문에서, 우리는 간단하지만 효과적인 접근법으로 이 이슈를 해결한다.
    • 우리는 entities이 독자에게 알려질 것으로 예상될 때, 엔티티들이 일반적으로 불명확한 contexts에서만 사용된다는 것을 생각했다.
    • 즉, entities가 이전의 문장에서 소개된 좀 더 명확하거나 독자가 갖고있을 일반적인 in-domain 지식안에 있다.
    • 실제로 CONLL-03 데이터의 문자열 "Indra"는 이전 문장 "Indra Wijaya (인도네시아) beat Ong Ewe Hock"에서도 나타납니다.
    • 이것에 기반하여, 우리는 데이터세트를 프로세싱할 때 만나는 각 unique string에 대한 contextualized embeddings을 동적으로 모았다.
    • 우리는 그러고나서, pooling operation을 하여 모든 contextualized instances으로부터 global word representation을 추출하여 우리가 현재 contextualized representation의 조합으로 새로운 word embedding으로써 사용한다.
    • 따라서 우리의 접근 방식은 동일한 단어의 더 많은 인스턴스가 데이터에서 관찰됨에 따라 시간이 지남에 따라 변화하는 진화하는 word representations을 생성합니다.
    • 우리는 CoNLL-03 (영어, 독일어, 네덜란드어)와 WNUT에서 NER에 대해 우리의 embedding 접근법을 평가한다.
    • 우리늬 접근법은 SoTa을 달성하고 이러한 결과의 재현성을 보장하기 위해 접근 방식과 모든 사전 훈련 된 모델을 오픈 소스 FLAIR 프레임 워크 (Akbik et al., 2019)에 기여합니다.
    • 즉 contextualized character-level models만을 사용하면 한계가 있다. 
    • 왜냐하면 rare word에 대해서는 제대로 대처를 못하기 때문...
    • 근데 생각해보면 rare word을 만날 때, 그 단어는 이전의 문장과 같은 곳에서 나타난다. (즉 rare word가 한번만 나타나고 끝나는게 아니란 말인듯)
    • 이렇게 생각한 이유는 "홍길동"이 갑자기 등장하는 것이 아니라 "홍길동"이 뭔지를 그 코퍼스에서 설명을 하는 식으로 있을 것이란 관점 때문에??
    • 위의 예시로 말하면 "Fung Permadi (Taiwan) v Indra" 라는 문장이 나올 때 앞의 문장을 보면 "Indra Wijaya (인도네시아) beat Ong Ewe Hock"가 있었다는 것이다.
    • 따라서 rare word가 발견되었을 때, 그 인스턴스의 pooling contextualized representation을 통하여 word embedding으로 활용하겠다.

2 Method

  • 그림 2의 우리접근법은 contextualized embeddings의 메모리를 동적으로 구축하여 pooling operation을 적용하여 each word에 대한 global contextualized embedding을 추출한다.

    • 여기서 메모리에 해당하는 것이 Indra가 나왔던 문장들에서 Indra embedding을 가져온다는 것이다.
  • 문장 컨텍스트에 있는 주어진 단어에서 contextualized embedding을 생성하는 embed() 함수가 필요하다. (ELMo, BERT와 같은 것을 쓰면 안되나?)
  • 또한 각 unique 단어에 대해 이전의 모든 contextual embeddings을 기록하는 메모리와 embedding vectors를 풀링하는 pool() operation이 필요합니다.
    • 즉 unique 단어가 나타날 때 마다 메모리에 pooling 결과를 기록해둔 다는 것
  • 알고리즘에 1에 설명이 되어있다.
    • word을 embedding 시키기 위해, 
    • 1) embed() 함수를 호출 (2번 줄)
    • 2) 이 단어에 대해 embedding 결과를 메모리에 추가 (3번 줄)

    • "Indra"로 생각해보면, "Indra"가 있는 문장에서 embed("Indra")을 구한다.
    • 이것이 emb_context가 되는 것이고 이것을 memory["Indra"]에 추가해준다.
    • 추가된 memory["Indra"]을 pooling을 해서 emb_pooled을 구한다.
    • 최종 word_embedding=concat(emb_pooled, emb_context)가 되는 것
    • 즉 emb_pooled는 이때까지 "Indra"가 나온 문장들로부터 단어 의미를 담은 것이고 emb_context는 현재 문장에서 의미하는 단어 의미를 담은 것이라 볼 수가 있다.
    • (4번줄) 우리는 메모리에있는 단어에대해 모든 contextualized embeddings에 대해 pooling operation을하여 pooled contextualized embedding을 계산한다.
    • 최종적으로, 우리는 original conetxtul embedding을 pooled representation과 concat하여 local가 global 둘 다 표현하도록 한다.
    • 이 뜻은, pooled contextualized embedding은 original embedding의 dimension의 2배가 된다.
  • Pooling operations.
    • 우리는 다른 pooling opertation으로 실험한다.
    • mean pooling으로 word의 contextualized embedding vectors을 평균내기
    • min and max-pooling으로 모든 element-wise minimum or maximum values으로 vector 계산하기
    • avg가 나을 것 같은데..?
  • Training downstream models. 
    • NER와 같은 다운스트림 테스크 모델을 학습할 때, 우리는 일반적으로 학습 데이터를 여러 번 통과한다. (epochs을 말하는 듯)
    • 알고리즘 2에서 보듯이, 우리는 학습 데이터를 통과시키는 첫부분에서 메모리를 리셋하여 매 epoch마다 처음부터 설계되도록 한다.
    • 즉 학습되면서 embedding 값이 계속 달라질텐데, 이것을 저장하는 메모리를 epoch 단위로 초기화시키면서 진행한다는 것
  • 이 접근법은 다운스트림 테스크 모델이 시간이 지남에 따라, 구축되는 pooled embeddings을 활용하는 것을 배운다.
  • 그것은 또한 학습 동안, pooled embeddings이 오직 학습 데이터로부터 계산이 되는 것을 보장한다.
  • 학습이 끝난 후, (예. NER 예측), 우리는 embedding을 초기화 시키지 않고 대신에 우리의 접근법이 메모리를 계속 확장하고 embeddings을 계속 진화시키도록 한다.
    • 즉, 마지막 학습 epoch에서 저장되는 메모리는 테스트시에도 가져간다.
    • 테스트를 진행하면서도 메모리를 확장하면서 embedding을 발전시킨다.

3 Experiments

  • 우리는 제안한 접근법을 4개의 NER 테스크에서 검증해본다.
    • CONLL-03 공유 작업 (Tjong Kim Sang and De Meulder, 2003)의 영어, 독일어 및 네덜란드어 평가 설정을 사용하여 고전적인 뉴스 와이어 데이터에 대한 접근 방식을 평가하고 새로운 엔티티 감지에 대한 WNUT-17 테스크에서 반복적인 엔티티 언급이 거의없는 noisy user-generated data 설정에서 접근 방식을 평가합니다.

3.1 Experimental Setup

  • 여기서 open source FLAIR 프레임워크로 실험을 하였다.
  • standard BiLSTM-CRF 시퀀스 레이블링 구조로 실행을 했고 많은 언어에 대해 pre-trained contextual string embeddings을 포함한다.
  • FLAIR에서 proposed pooled contextualized embeddings 구현을 추가한다.
  • Hyperparameters.
    • 우리의 실험에서, 우리는 Akbik의 학습과 평가 과정을 따르고 대부분 hyperparameter은 깊게 연구된 Reimers and Gurevych (2017)을 따른다.
    • 즉, LSTM은 256 hidden states와 one layer을 가지고, dropout value는 0.5, word dropout은 0.05, 그리고 SGD with annealing rate of 0.5와 patience(?) 3을 가진다.
    • 우리는 learning rate ∈ {0.01, 0.05, 0.1}, mini-batch size ∈ {8, 16, 32}으로 모델 선택을 수행하고 가장 좋은 validation set에서 F-measure가 가장 좋은 모델을 고른다.
    • Peters et al. (2017)에 따라, 우리는 5번의 다른 random seeds로 실험을 반복하고 train과 development set 둘 다로 학습하여 평균 성능과 test set에 대한 standard deviation을 최종 성능으로 리포트한다.
  • Standard word embeddings.
    • Akbik et al. (2018)의 디폴트 구성은 contextual string embeddings을 기존의 word embeddings과 조합하라고 추천한다.
      • 많은 task에서 이런식으로 구성했던 것이 기억이 난다.
    • 우리는 영어 task에 대해 GLOVE embeddings을 사용하고 newswire 테스크에 대해 FASTTEXT embeddings을 사용한다.
  • Baselines.
    • 우리의 베이스라인은 pooling없는 contextual string embeddings이다. (기존의 Akbik et al. (2018) 방식)
      • Akbik 논문은 안읽었지만, 아마 BiLSTM-CRF 만을 쓴 것이겠지?
    • 베이스라인가 비교하여, 우리는 pooled contextualized embeddings의 영향을 분리한다.
  • In addition, we list the best reported numbers for the four tasks. 
    • 여기에는 Devlin의 양방향 변환기를 사용하는 최근 BERT 접근 방식
    • Clark의 semi-supervised multitask learning 접근 방식
    • Peters의 ELMo word-level language modeling 접근 방식
    • WNUT-17 및 독일어 및 네덜란드어 CONLL-03에 대해 가장 많이 발표 된 수치가 포함됩니다.

3.2 Results 

  • Our experimental results are summarized in Table 1 for each of the four tasks.
  • New state-of-the-art scores.
    • 우리의 접근 방식은 이전에 발표 된 모든 결과를 능가하여 영어에서 CONLL-03의 최신 점수를 93.18 F1 점수 (↑ 0.32 pp vs. 이전 최고), 독일어는 88.27 (↑ 0.86 pp)로 높였습니다. 네덜란드어를 90.44 (↑ 0.28pp)로 설정합니다.
    • contextual string embeddings baseline에 대한 일관된 개선은 우리의 접근 방식이 일반적으로 시퀀스 레이블링에 엔티티를 embedding하는 실행 가능한 옵션임을 나타냅니다.
    • 일단 BiLSTM-CRF(Akbik) 자체가 BERT에 비해 나쁘지 않다.
    • 물론 하나의 데이터세트 자체로만 단정짓긴 어렵지만 말이다.
    • 또한 BiLSTM-CRF에다가 pooled contextualized embeddings을 추가하면 어떤 방식이든 다들 좋아지는 결과를 보여준다. (WNUT데이터 빼고.. 이 부분은 아래에서)
  • Less pronounced impact on WNUT-17.
    • 그러나 우리는 또한 새로운(emerging) 엔티티에 대한 WNUT-17 작업에서 중요한 개선 사항을 찾지 못했습니다.
    • 풀링 작업에 따라 기준과 비슷한 결과를 찾습니다.
    • 대부분의 엔터티가 이 데이터 세트에 몇 번만 나타나기 때문에 이 결과가 예상되므로 우리의 접근 방식은 집계 및 풀에 대한 증거가 거의 없습니다.
    • 그럼에도 불구하고 최근 작업은 아직 WNUT에서 컨텍스트 임베딩을 실험하지 않았기 때문에 부차적 인 결과로 새로운 최신 49.59 F1과 이전 최고보고 수치 인 45.55를보고합니다 (Aguilar et al., 2018).
  • Pooling operations.
    • 섹션 2에서 논의한 풀링 작업을 비교하면 일반적으로 유사한 결과를 찾습니다.
    • 표 1에서 볼 수 있듯이 최소 풀링은 영어와 독일어 CoNLL에서 가장 잘 수행되는 반면 평균 풀링은 네덜란드어와 WNUT에서 가장 좋습니다.

3.3 Ablation: Character Embeddings Only

  • 제안된 접근 방식의 영향을 더 잘 분리하기 위해 classic word embeddings을 사용하지 않고 contextual string embeddings에만 의존하는 실험을 실행합니다.
  • 표 2에서 볼 수 있듯이, 이 설정에서 기준 접근 방식에 대한 풀링의 더 뚜렷한 개선을 관찰합니다.
  • 이는 pooled contextualized embeddings이 기본적으로 classical word embeddings과 유사한 global semantics 단어를 캡처함을 나타냅니다.
  • 표 1과 표 2를 비교해보면, 표 1이 성능이 좀 더 좋다.
    • 즉 표 2에서는 word embedding(Glove, Fasttext)을 사용하지 않은 것이다.
    • word embedding을 빼고 pooled 방식의 유무에 따른 실험결과를 보면, 더욱 성능 차이가 두드러진다는 것이다.
    • 또한 이것으로, pooled contextualized embeddings이 classical word embeddings과 유사하게 전역 정보를 캡쳐한다는 것이다.
    • 또한 introduction 부분보면 Akbik에서 contextual embedding을 할 때는, character-level embedding을 쓰는 것 이다.
    • 이 논문의 모델은 character-level embedding의 pre-trained model을 사용한다고 한다.

4 Discussion and Conclusion 

  • 우리는 간단하지만, 효과적인 접근법으로 구체적이지 않은 contexts안에있는 rare 문자열을 embedding하는 문제를 설명한다.
  • 우리의 실험 평가는 이 접근법이 CONLL-03 NER and WNUT emerging entity detection에서 SoTA을 달성한다.
  • 이러한 결과는 우리의 embedding 접근법이 NER에 적합함을 나타냅니다.
  • Evolving embeddings.
    • 우리의 dynamic aggregation approach은 정확히 동일한 컨텍스트에서 사용되더라도 동일한 단어에 대한 임베딩이 시간이 지남에 따라 변경된다는 것을 의미합니다. 
    • 엔티티 이름이 구체적인 컨텍스트에서 더 자주 사용된다고 가정하면 더 많은 데이터가 처리 될수록 풀링 된 임베딩이 향상됩니다.
    • 따라서 임베딩 모델은 다운 스트림 NER 모델의 학습이 완료되고 예측 모드에서 사용 된 후에도 데이터에서 계속 "학습"합니다.
    • 우리는 끊임없이 진화하는 표현에 대한이 아이디어를 매우 유망한 연구 방향으로 간주합니다.
  • Future work.
    • 우리의 pooling operation은 이전의 모든 단어 인스턴스가 똑같이 중요하다는 개념을 단순화합니다.
    • However, we may find more recent mentions of a word - such as words within the same document or news cycle - to be more important for creating embeddings than mentions that belong to other documents or news cycles.
    • 따라서 향후 작업에서는 이전 언급의 가중치 풀링을 학습하는 방법을 검토 할 것입니다.
    • 또한 제안된 임베딩이 NER 이외의 작업에 적용되는지 조사 할 것입니다.
  • Public release. 
    • We contribute our code to the FLAIR framework. 
    • 이를 통해이 논문에 제시된 모든 실험을 완전히 재현하고 research community가 다운스트림 작업 모델을 훈련하기 위해 임베딩을 사용할 수 있습니다.
Reference

댓글