딥러닝이 충분히 탐구하지 못한 언어 관련 5가지 태스크

■ Comment

  • 카카오 브레인의 리포트에서 제목만 보아도 딥러닝 연구자들이 한 번 읽어보게끔 만든다.
  • NLP 관련 내용이 많으며, https://kakaobrain.com/blog/36 에 잘 정리되어있으니 따로 정리할 필요는 없어 보인다.
  • 이 리포트는 2018-10-02에 쓰였기 때문에 그 당시 기준이다.

1. 첫 번째, 비지도 기계 번역(unsupervised machine translation)

  • 번역을 할 때, 한국어 vs 영어 와 같이 쌍을 구축되어 있는 경우는 parallel dataset이다.
  • parallel dataset을 이용하면 번역 문제가 조금 더 수월하지만, 만약 non-parallel dataset이라면 번역을 제대로 하지 못한다는 얘기이다.
  • 물론 방법이 아예 없는 것은 아니다.
  • 내가 아는 방법으론 back-translation을 이용하는 방법도 있다.
  • 크게 말하면, semi-supervised / unsupervised 와 같은 방법을 사용한다는 것인데 이 리포트에서 말하는 방법은 unsupervised cross-lingual embeddings이다.
  • 이러면 word2vec이 가지는 문제점 때문에 힘들다고 얘기하는 것이다.
  • 하지만 현재 2020-03 기준으로는 이런 문제점을 여러 방법으로 해결할 수가 있다.
  • 대표적으로 ELMo, BERT 등의 contextualized embeddings을 이용하면 되지 않을까 싶다.

2. 두 번째, 맥락 인지 기계 번역(context-aware machine translation)

  • 이것도 위에서 말한 문제와 비슷하다.
  • context-aware MT을 해야 제대로된 번역이 된다는 것이다.
  • 즉 동의어든지, 두 개 의미를 가지는 단어라든지 처리를 하려면 문맥적인 요소가 필요하다는 것이다.
  • 하지만 이도 이제는 어느 정도는 해결되는 문제가 아닐까 싶다.

3. 세 번째, 맞춤법/문법 검사기(grammar checker)

  • 기본적으로 문법을 검사할 때 5가지가 대표적으로 쓰인다고 한다.
  • (1) 지식 베이스(knowledge base)에 존재하는 지식과 비교ㆍ대조한다. 매칭되는 결과가 없다면 사용자 입력값에 오류가 있다고 인지한다. 대표적으로 철자 오류는 어휘 사전에 존재하지 않으므로 단순한 형태소 분석을 통해서도 그 오류의 검출 및 교정이 비교적 간단하다고 볼 수 있다.
  • (2) 대량의 말뭉치에 기반한 통계치를 바탕으로 주어진 문장의 구문을 분석하는 통계(statistics) 기반 분석 방법이 있다. 예를 들어, 사람들이 자주 틀리는 표현을 구문 분석에 활용하는 방식이다.
  • (3) 몇 번의 추가 편집으로 단어 A를 단어 B로 만들 수 있는지를 측정하는 편집 거리(edit distance, Levenshtein distance)를 이용하기도 한다. 철자 오류와 편집 거리가 작은 단어를 추출하고, 이를 철자 오류가 발생한 단어와 치환하는 식이다.
  • (4) 주어진 문장에서 문맥상 다음에 나올 적절한 글자, 단어 또는 문장을 예측하는 언어 모델(language model)을 만드는 방법도 있다. 예를 들어, ‘요금 결재’에서 ‘결재’는 (1)에서 등록된 올바른 단어이지만 함께 쓰인 ‘요금’이라는 문맥을 고려해 ‘결제’가 되도록 바꾼다.
  • (5) 전문가가 만든 규칙(human-generated rules)을 통해 문법적 오류를 수정하는 방법도 있다. 이를 이용하면 언어에 대한 상세한 구조를 정확하게 파악할 수 있다. 규칙이 많을수록 성능을 높일 수 있는 이유다.
  • 지금까지는 룰 기반의 방법이 더 성능이 좋지만 이런 것을 구축하기 위해 전문가가 투입되는 비용과 시간이 만만치 않다는 문제점이 있다.
  • 따라서 딥러닝을 이용한 방법으로 LM을 이용한다거나 강화학습을 이용할 수 있다고 한다.
  • 내가 접해본 방법으론 GPT등을 이용한 PPL을 계산하는 방법이 있다.
  • (강화학습을 이용한 방법은 정확히 어떻게 사용되는지는 모르겠음.)
  • 근데 아직도 문법 검사기를 딥러닝을 이용해서 완벽에 가깝게 믿을만한 것이 있는지는 모르겠다.. 즉 아직 해결 못한 문제가 아닐까 싶다.

4. 네 번째, 한정된 자원을 활용한 음성합성(speech synthesis with limited resources)

  • 음성 분야는 잘은 모르나 자원이 한정된 상황에서 음성합성을 해야하는 경우가 많나보다.
  • 구글의 타코트론2가 이 당시 가장 좋은 성능을 내는 것 같은데 현재는 어느 정도 해결되지 않았을까 싶다
  • 왜냐하면 이 리포트 이후에도 few-shot, meta-learning 혹은 pre-trained 모델을 이용하는 등 많은 방법론들이 적은 데이터에서의 상황을 해결하는 연구가 많았기 때문이다.

5. 다섯 번째, 제주어 재활성화(jejueo revitalization)

  • 여기서는 제주어를 들지만, 제주어가 아니더라도 소멸위기에 처한 모든 언어에 대한 문제이다.
  • 소멸 위기에 처할수록 데이터를 구하기 힘들어서 딥러닝이 충분히 탐구하지 못했다고 하는 것일까?
  • 사라지는 언어의 특성을 잘 담는 LM을 만들면 여러 방면으로 knowledge base로 효과를 얻을 수 있지 않을까 싶다.
  • LM을 지식창고로 쓰는 것에 대해서는 링크를 참고하길 바란다.
  • 최근에는 카카오 브레인에서 제주어에 관한 논문을 발표하기도 했다. 

댓글