[논문리뷰]Recent Trends in Deep Learning Based Natural Language Processing(1)

장우솔·2022년 4월 1일
0

NLP

목록 보기
3/17

NLP 공부를 하고 있는데 기본을 알아야하지 않나 싶고 요즘 트렌드도 알아야한다 생각해서 기사읽고 블로그 찾아보고 리뷰논문 읽고 있다...! 'Recent Trends in Deep Learning Based
Natural Language Processing' 제목에서 알 수 있듯 딥러닝 기반 자연어처리 기법연구에 대한 최근 연구트렌드를 정리해놓은 논문으로 중요하다 생각하는 부분 번역하고 정리해 놓는다!

이게 리뷰논문이다 보니 양이 엄청 많다..~일단 2-3번에 걸쳐서 정리할 것 같다. 정리하는 순서는 논문의 순서와 같다.




요약

딥러닝 기법은 데이터의 계층적인 표현(hiarchical representation)을 학습하는 다층 레이어(multiple processing layer)를 사용한다. 그리고 딥러닝은 많은 도메인에서 최첨단(state-of-the-art) 결과를 내고 있다. 최근 다양한 모델 디자인과 기법들이 자연언어처리(Natural Language Processing) 분야에서 꽃피고 있다. 본 논문에서는 수많은 NLP 과제에 적용된 의미 있는 딥러닝 모델과 기법을 검토하고, 이들의 성취에 관해 자세히 설명한다. 또한 다양한 모델들을 비교, 대조함으로써 딥러닝 기반 NLP 기법의 과거, 현재, 미래에 대해 이해할 수 있도록 할 것이다.

  • 계층적 표현의 의미 : 딥러닝은 연속된 층(layer)에서 점진적으로 의미 있는 표현을 배우는 데 강점이 있는 기법이므로 계층적인 표현이라 나타낸다.




1. 서론

자연언어처리(NLP)는 인간 언어 분석과 표현(representation)을 자동화하기 위한 계산 기법이다.
지난 수십년간 NLP 문제를 풀기 위한 머신러닝의 접근은 고차원이면서 sparse한 피처(feature)를 학습한 ‘얕은 모델(shallow models, 예시) SVM, 로지스틱 회귀)’에 기반한 것이다. 최근 수 년간 dense vector representation에 기반한 뉴럴 네트워크가 다양한 NLP task에서 우수한 성능을 보여줬다.

딥러닝은 자동화된 피처 추출 및 표현(multi-level automatic feature representation learning)을 가능하게 한다. 그러나 전통적인 머신러닝에 기반한 NLP 시스템은 사람이 직접 추출한(hand-crafted) 피처에 강하게 의존한다. 사람이 직접 추출한 피처들은 추출하는 데 시간이 많이 소요되고 많은 경우 불완전하다.

그 이후 수많은 복잡한 딥러닝 기반의 알고리즘이 어려운 NLP 문제를 풀기 위해 제안되었다. CNN, RNN, 재귀신경망(Recursive Neural Network)등 주요 딥러닝 모델을 검토한다. 어텐션(attention) 매커니즘, 강화학습(reinforcement learning)과 심층생성모델(Deep generative model)에 대해서도 다룰 것이다.





2. 분산표현(분산표상, distributed representation)

이전에 Sparse embedding(원핫인코딩)으로 벡터 간 내적값은 0이 되기에 단어 간 유사도, 관계를 파악하기 어려웠다. 차원 수도 너무 늘어나(‘차원의 저주(curse of dimensionality) ’라 불리는) 지나치게 큰 연산비용이 들었다. 다시 말해, 언어모델(Language model)은 결합확률 함수를 학습해야 했기 때문이다. 따라서 이 문제는 저차원 벡터공간에 존재하는 단어의 분산표상(distributed representation)을 학습하는 연구의 동기가 되었다.

Dense embedding으로는 NLM, word2vec, Glove 등이 있다.
contextualized word embedding으로는 ELMo, Transformer, Bert 등이 있다.


A. 단어임베딩

분산표현으로 표현된 벡터(Distributional vectors) 또는 단어 임베딩(Word Embedding)은 근본적으로는 distributional hypothesis를 전제로 한다. 이 가정은 비슷한 의미를 지닌 단어는 비슷한 문맥에 등장하는 경향이 있을 것이라는 내용이 핵심이다. 분산표현은 분포가설을 이용하여 텍스트를 학습하고, 단어의 의미를 벡터의 여러 차원에 분산하여 표현한다.

따라서 이 벡터들은 이웃한 단어의 특징을 잡아내고자 한다. 분산표현 벡터의 주된 장점은 이 벡터들이 단어 간 유사성을 내포하고 있다는 점이다. 코사인 유사도 같은 지표를 사용함으로써 벡터간 유사성을 측정할 수 있다.
단어 임베딩은 문맥 유사도를 잡아내는데 효율적이라는 사실이 증명되었다. 또한 임베딩 벡터의 차원이 작은 덕분에 계산이 빠르고 효율적이다. 단어 임베딩은 딥러닝 모델의 첫번째 데이터 처리 계층에 자주 사용된다.

NLM

NLM(언어모델)은 기존의 통계기반의 n-gram과 같은 모델이 아닌 최초로 딥러닝 네트워크 구조로 만들었다. 미리 지정한 window size 내 단어를 통해서 그 다음 위치할 단어를 예측한다.
원핫인코딩 된 단어에 가중치행렬이 선형결합연산을 통해서 Hidden layer output 즉, 임베딩 벡터가 된다. 이는 단어 인덱스와 동일한 순서로 나온다. 동일한 단어벡터로 concatenation이 돼서 tanh activation 이후에 softmax함수를 통해서 다음단어가 올 확률분포가 output으로 나온다.

  • Embedding Weight Matrix=Lookup table

임베딩 연산 과정(figure 3 첫 번째 과정)

  • NLM의 한계
    window size를 통해 입력 길이가 고정되어 있어 모든 단어를 고려하지 못한다.
    classification에서 연산되는 파라미터가 다수 존재해서 계산 복잡도 증가 및 과적합 가능성이 우려된다.



B. Word2Vec

단어 임베딩은 CBOW(continous-bag-of-words)와 skip-gram모델을 제안한 Mikolov et al.에 의해 비약적인 발전을 이뤘다.

NLM과 이전단어들을 참고하여 다음단어를 예측하지 않고 주변단어를 통해 중심단어를 예측했다. 또한 불필요한 파라미터를 사용하지 않기 위해 임베딩 행렬로만 은닉층 하나의 네트워크를 구성했다.


1. CBOW

k개만큼의 주변 단어가 주어졌을 때 중심 단어의 조건부확률을 계산한다.

  • CBOW 순서
  1. window size 내의 주변 단어로 중심단어를 예측한다. 중심으로 정한단어 주변의 단어들의 원핫 벡터들을 input layer에 넣는다.
  2. input layer에있는 input vector랑모든 단어들이 공유하는 가중치행렬과 선형결합한다.
  3. 임베딩 벡터들의 값을 평균내고 동일 차원에 단일 벡터를 만든다.(h1~hN)
  4. 이 단일벡터는 다시 은닉층의 입력으로 활용해서 또다른 가중치 행렬을 만나서 계산하고 output vector가 생성된다.
  5. 마지막으로 output vector는 정답인 원핫벡터와 cross entropy를 통해 파라미터를 업데이트한다.



2. skip-gram

CBOW와 정반대로, 중심단어가 주어졌을 때 주변단어를 예측한다. 중심 단어에 대해서 주변 단어를 예측하므로 투사층에서 벡터들의 평균을 구하는 과정은 없다.
계층적 소프트맥스와 네거티브 샘플링 방법을 추가해서 NLM에 비해 학습 속도에서 강점을 가진다.

일반적으로 skip-gram이 CBOW보다 성능이 좋다. 왜냐하면 CBOW는 주변정보를 분산하는데 skip-gram은 합산해서 성능이 좋다. output layer에 한 단어씩 gradient를 흘려보내기에 합산된다.


계층적 소프트맥스란?

1. 계층적 소프트맥스 개념

기존 softmax의 계산량을 현격히 줄인, softmax에 근사시키는 방법론이다. Word2Vec 훈련 시에는 output의 개수가 Vocabulary에 있는 단어의 개수만큼 있고, 단어의 개수만큼 softmax의 exponential 연산을 수행하는 것은 엄청난 computational cost를 요구한다. 따라서 개선된 방법이 필요했다.
Word2Vec에서 vocabulary에 있는 모든 단어들을 잎으로 갖는 Huffman tree를 만든다. Huffman tree는 데이터의 등장 빈도에 따라서 배치하는 깊이가 달라지는 이진 트리이다. Word2Vec에서는, 자주 등장하는 단어(frequent word)는 얕게, 가끔 등장하는 단어(rare word)는 깊게 배치한다.

2. 예시

skip-gram에서, 가운데 단어가 asinine이고 문맥의 단어가 cost라고 가정을 한다. asinine을 입력으로 넣었을 때 cost를 출력하도록 가중치를 잘 설정하는 것이다.

맨 먼저, 뿌리 노드(6번 노드)부터 시작한다. asinine 단어의 원-핫 벡터를 6행의 행벡터와 내적한다. 그 값을 sigmoid 함수에 넣는다.
시그모이드 함수의 출력은 0과 1 사이의 값이다.
계산한 값이 0.24라고 하자. 계산된 값은 6번 노드에서 오른쪽으로 갈 확률이다. 그렇다면 다음과 같은 상황이 된다.

다른 잎 노드에 대해서도 똑같이 계산할 수 있고, 모든 노드에 대해서 확률을 다 더하면 1이 나오므로 확률분포를 이룬다. 이 확률분포를 이용하면 일반적인 소프트맥스처럼 활용할 수 있다.

이진 트리를 사용했으므로, Vocabulary의 크기가 V라고 했을 때 밑이 2인 로그를 사용해서 연산량을 log(2)V로 줄일 수 있다.

여기서 asinine을 입력으로 받아서 cost를 출력하는 output matrix를 훈련하기 위해서는 6번, 4번과 3번 노드의 가중치만 업데이트하면 된다. 이처럼 연산에 관련된 노드만 훈련하는 것은 negative sampling 방법과 비슷한 특징이다.



3. GloVe

Word2Vec 한계-고정된 윈도우 내의 단어만 고려하기 때문에 전체 corpus 동시 등장 정보를 반영하기 어렵다. Word2Vec과 같은 예측 기반의 방법론과 단어 동시 등장 여부를 추가로 고려했다.

예시

solidgaswaterfashion
p(k:ice)1.9*10^-46.6*10^-53.0*10^-31.7*10^-5
p(k:steam)2.2*10^-57.8*10^-42.2*10^-31.8*10^-5
p(k:ice)/p(k:steam)8.98.5*10^-21.360.96
  • solid는 steam보다 ice랑 더 연관되어 있어 등장확률이 크다.
  • water는 모두 관련되어있기에 등장확률 비율이 1에 가깝다.
  • fashion는 모두 관련 없기에 등장확률 비율이 1에 가깝다.

임베딩된 단어 벡터 간의 내적 값은 동시 등장 확률의 로그값과 같도록 학습한다.
하지만 모든 단어의 동시 등장 빈도행렬을 구축해야하기에 단어 수가 많아지면 계산 복잡도가 급격하게 증가한다.




워드 임베딩 한계

  1. 개별 단어 임베딩의 한가지 한계는 두개 이상의 단어(예: ‘hot potato’ 같은 숙어, ‘Boston Globe’ 같은 개체명)의 조합이 개별 단어 벡터의 조합으로 표현될 수 없다는 것이다.

  2. 주변 단어의 작은 window 내에만 기반한 임베딩을 학습하는 데서 비롯된다. 때때로 good과 bad 같은 단어가 거의 같은 임베딩을 공유한다(Socher et al., 2011b). 이는 감성분석 같은 task에서는 문제가 된다(Wang et al., 2015a). 때로는 이러한 임베딩은 상반된 극성을 갖는 단어가 의미상 유사한 단어로 클러스터링된다. 이는 감성분석에 사용되는 다운스트림 모델이 이러한 대조적인 극성을 구별하지 못하게 만들어 성능 저하로 이어진다. Tang et al. (2014)는 sentiment specific word embedding(SSWE)을 제안함으로써 이러한 문제를 해결했다. 그들은 임베딩을 학습하는 동안 손실함수에 정답 극성을 포함시켰다.

  3. 문맥에 따른 단어의미의 차이를 고려하지 못한다, 가중치 하나씩과 임베딩연산을 하기에 단어당 한 개의 임베딩 벡터와 매핑돼서 다양한 문맥에 단어 정보를 담지 못하기 때문이다.




C. character embedding

단어 임베딩은 문법적, 의미적 정보를 잡아낼 수 있다. 또한 품사태깅이나 개체명인식 같은 태스크에서는 단어 내부의 형태 정보 또한 매우 유용하다. 문자 수준의 자연어이해(Natural Language Understanding) 시스템 구축은 어느 정도 관심을 끌고 있다(Kim et al., 2016; Dos Santos and Gatti, 2014; Santos and Guimaraes, 2015; Santos and Zadrozny, 2014). 특정 NLP 태스크에 있어서는 형태적으로 복잡한 언어에 대한 개선된 결과가 보고된다. Santos and Guimaraes (2015)는 단어 임베딩과 함께 문자 수준 임베딩을 개체명인식 문제에 적용해 포르투갈어와 스페인어 말뭉치에서 state-of-the-art 수준의 결과를 냈다. Kim et al. (2016)은 문자 임베딩만 사용한 neural language model을 구축해 긍정적인 결과를 보였다. Ma et al. (2016)은 개체명인식에서 사전 학습된 레이블 임베딩을 학습하기 위해 문자 trigram을 포함해 몇몇 임베딩 기법을 활용했다.

문자 임베딩은 미등재단어(the unknown word) 이슈에 자연스럽게 대처하게 된다. 워드 임베딩과는 다른 방법으로 단어의 벡터 표현 방법을 얻는 문자 임베딩으로 사람의 이러한 이해 능력을 흉내내는 알고리즘이다. 임베딩을 단어에 대해서 하는 것이 아니라 문자에 대해서 하는 것이다. 1D CNN, BiLSTM을 이용한 문자 임베딩 등이 있다.





D. contextualized word embedding

문맥을 고려할 수 있는 contextualized word embedding 기법들이 나왔다.
ELMo, Transformer, Bert 등이 있다.


ELMo(Embeddings from language model)

1.ELMo 개념

RNN 계열의 sequential 임베딩을 수행하고 Bidirectional Language Model이다. 사전 훈련된 언어 모델을 사용한다.
순방향언어모델과 역방향 언어모델이 따로 학습을 하고 가중치를 공유하지 않는다.

순방향 언어모델: 해당 단어 이전에 등장한 단어 문맥을 고려한다.
역방향 언어모델: 해당 단어 이후에 등장한 단어 문맥을 고려한다.

ELMo 순서

  1. 시퀀스 내의 모든 단어를 고려하고 character Embedding 시 각 단어별로 임베딩 하는데, 철자별로 임베딩을 한다. 그 후에 LSTM 1,2 layer를 지난다.
  2. 각 언어모델에서 나온 output 벡터(hidden state)를 층에 맞게 concat 후 가중치를 곱해서 가중합벡터를 도출한다.
  3. 벡터크기를 조절하는 파라미터를 곱해서 최종적인 워드임베딩 벡터를 생성한다.















참고자료
https://arxiv.org/pdf/1708.02709.pdf
https://www.youtube.com/watch?v=B3qd3LgsTRY
https://uponthesky.tistory.com/15?category=993742
https://towardsdatascience.com/what-the-heck-is-word-embedding-b30f67f01c81

profile
공부한 것들을 정리하는 블로그

1개의 댓글

comment-user-thumbnail
2023년 8월 19일

좋은 정리해주셔서 감사합니다. 잘 봤어요 :)

답글 달기