작성자: 숭실대학교 산업정보시스템공학과 이수민
Phonetics 음성학
사람의 말소리를 연구하는 학문
Phonology 음운론
※ 범주적 지각 (Categorical perception)
사전적 의미는 연속체를 따라 변수에 점진적인 변화가 있을 경우의 구별 범주에 대한 지각 현상
광범위한 음향 신호를 제한된 수의 소리 범주로 지각되는 결과를 낳을 때, 즉 우리에게 실제로 들리는 말소리는 소리 주파의 연속적인 변화인데도 우리가 이를 '말소리 범주'로 지각하는 것을 말합니다.
- 범주 내의 차이 (differences within the categories) 축소
- 범주 간의 차이 (differences across the categories) 확대
Morphology 형태론
voice started time
의미를 갖지 않고 소리만 나는 "pah"나 "bah", 또는 "a"와 "e" 보다는, 다음 level인 형태소(morpheme)가 의미를 갖는 최소 단위라고 여겨집니다. 그래서 많은 단어들이 복잡한 조각들(parts of words)로 구성되지만 하나하나 의미를 가지고 있게 되는 것입니다.
Unfortunately라는 단어를 쪼개서 살펴보면
이렇게 단어 조각들과 작은 단위들이 모두 의미를 갖게 되는 것.
하지만 이런 형태소 단위의 단어들을 딥러닝에 사용하는 경우는 거의 없습니다. 단어를 또 의미 있는 단어(형태소)들로 쪼개는 과정 자체가 어렵고, 굳이 이 방법을 사용하지 않고 character n-grams를 사용하더라도 중요한 의미 요소들을 충분히 잘 잡아낼 수 있고, 결과적으로 좋은 결과를 낼 수 있기 때문.
[논문] On learning the past tenses of English verbs
Writing system
사람의 언어 표기 체계 (writing system) 는 나라마다 다르고, 하나로 통일되어 있지 않다.
1) No word segmentation: 단어에 대한 segmentation, 즉 띄어쓰기 없이 붙여 쓰는 경우가 있다는 것
중국어: 美国关岛国际机场及其办公室均接获
프랑스어: Je vous ai apporté des bonbons
아랍어: فقالناھا
2) Compound Nouns
영어
합성어를 사용할 때 각 명사 사이에 공백을 두기 때문에 white board, high school같이, 띄어쓰기가 되어 있음에도 불구하고 하나의 명사로 인식됩니다.
독일어
합성어가 띄어쓰기 없이 한 단어로 표현되기 때문에 만약 여기서 띄어쓰기를 하게 되면 다른 단어로 인식됩니다.
ex) Lebensversicherungsgesellschaftsangestellter = life insurance company employee
word-level models를 만들게 되면 커버해야할 단어가 너무 많기 때문에 무한한 단어 공간이 필요하고 비효율적입니다.
character-level model (문자 기반 모델)은 단어가 가지고 있는 의미 정보를 포기하는 대신 두 가지 이점을 제공합니다.
1) 단어 임베딩은 문자 임베딩으로부터 구성할 수 있다. 즉, 어떤 문자 시퀀스에 대해서도 단어 표현 생성이 가능해집니다.
2) sequence of characters 기반으로만 언어를 처리하기 때문에 합성어와 같은 connected language에 대해서도 분석이 가능합니다.
Machine Translation
초기에 character 기반으로 구축한 기계번역 시스템은, word 기반 모델 뿐만 아니라 neural network 등장 이전보다도 못한 성능을 보였지만, 발전된 연구가 이루어지기 시작하면서 점차 성공적인 문자 기반 디코더를 만들 수 있게 되었습니다.
English-Czech WMT 2015 Stanford NLP group
이후 연구 (2017)
Fully Character-Level Neural Machine Translation without Explicit Segmentation
논문
앞선 모델보다 더 나은 성능을 보이는 character-level model이 등장했습니다. 이 모델에서는 character 단위의 input을 받아 convolution layer를 거쳐 max pooling과 single layer GRU를 거치는 구조를 가집니다. 구조 자체는 더 복잡하지만, 앞선 모델보다 나은 성능을 보였습니다.
Encoder: 단어에서 시작하는 게 아닌 문장 전체에서 바로 character-level 임베딩을 진행하는 방식으로, 필터 사이즈를 다르게 해서 convolution 연산을 진행하게 됩니다. Max pooling을 stride 5로 주고 진행하게 되고, 각각의 컨볼루션에 대해서 max-pulled representation을 얻게 됩니다. 해당하는 각각의 임베딩에 대해서 highway network를 통과하고, bidirectional GRU를 통해 source representation을 얻을 수 있게 됩니다.
Decoder: 일반적인 character level sequence model
결과적으로 앞선 모델보다 BLEU score가 더 높은 것을 확인할 수 있습니다.
highway network
깊이가 증가할수록 최적화가 어려워지기 때문에 모델을 깊게 만들면서도 정보의 흐름을 통제하고 학습 가능성을 극대화할 수 있도록 해주는 역할
이후 연구 (2018)
Stronger character results with depth in LSTM seq2seq model
논문
Bi-LSTM Sequence-to-sequence 모델을 적용한 결과
두 가지 방법
딥러닝과는 거리가 먼 간단한 아이디어임에도 성공적인 방법론
compression algorithm
해당 아이디어를 기반으로 BPE 알고리즘 등장
[논문] Neural Machine Translation of Rare Words with Subword Units
작동 방식
결과적으로 이 vocabulary 안에는 모든 single letter들과, 'ES'와 'EST'같은 문자 시퀀스, 그리고 'THAT','TO'와 'WITH'와 같은 평범한 단어들도 우리의 vocabulary에 들어오게 됩니다.
Google's neural machine translation (GNMT)
pre-segmentation을 통해서 단어의 출현 빈도수를 기반으로 단어를 추가해준 뒤 BPE를 적용하는 기법. Transformer, ELMo, BERT, GPT-2가 모두 word piece model에 해당됩니다.
BERT
BERT에서는 non-initial word pieces가 ##로 표현되면서 hypatia = h ##yp #ati #a 로 분리해서 hypatia라는 단어를 표현합니다.
Google (2018)
[논문] Subword Regularization: Improving Neural Network Translation Models with Multiple Subword Candidates
github 코드
단어로 구분이 어려운 언어가 있기 때문에 (ex. 중국어), 이 모델의 경우에는 raw text에서 바로 character-level로 나눠집니다. 공백에 대해서 token을 따로 지정해줘서 (_) BPE와 유사한 방식을 수행하게 됩니다. 다만 완전히 같은 방식으로 진행되지는 않고 BPE 방식이 변형되어 진행됩니다.
[논문] Learning Character-level Representations for Part-of-Speech Tagging
Bi-LSTM builds word representations
Purely character-level NMT models
2015년도에 순수하게 character 단위로 NMT task를 진행한 모델을 살펴보겠습니다. 논문
Can we build a good language model by starting out from characters?
가장 먼저 input 단어에 대해서 character embedding을 진행합니다. 이후 filter size 여러 개를 사용해서 convolution을 진행하고 각각에 대해 max pooling을 진행해서 feature를 뽑습니다. 즉, 어떤 ngram들이 단어의 뜻을 가장 잘 나타내는지 고르는 과정이며, 이 과정이 끝나면 output representation을 얻게 됩니다. Output representation은 highway network를 거치게 되고, 최종적으로 임베딩 벡터 값이 나오면 word-level LSTM network를 통해 예측 task를 수행하게 됩니다. 결과적으로 앞서 살펴본 모델들보다도 perplexity를 최소화하면서 비슷한 성능을 낼 수 있게 됩니다.
Quantitative Results
Highway network를 통과하기 전에 character-level로 진행한 모델에서는 character 단위로 진행하다보니까 낸 결과들이 의미가 아닌 철자가 유사한 단어들
Highway network를 통과한 후에는 사람 이름들을 결과값으로 내는 것을 볼 수 있습니다. 즉, semantic을 반영해서 조금 더 의미있는 단어들을 학습하게 되는 것입니다.
대부분의 경우 word level model을 사용하고, 필요 시에 character level model을 사용합니다.
2-stage Decoding
즉, Hybrid NMT의 경우에는 모델의 기본 구조에 따라 decoder에서도 기본적으로 word level beam search를 사용하고 unknown word에 대해서만 character-level beam search를 사용하게 되는 것입니다.
위 결과를 보면, word-level model 사용 시 unknown word를 copy 기법으로 처리했을 때, 이름은 문제없이 옮기지만 나이 같은 경우 번역이 안 된 상태로 들어가서 제대로 번역이 되지 않은 문장이 만들어진다는 것을 알 수 있습니다.
반면 hybrid에서는 나이는 정확하게 번역을 하지만 이름 번역 과정에서 오류가 생기는 걸 볼 수 있습니다.
논문 A Joint Model for Word Embedding and Word Morphology
논문 Enriching Word Vectors with Subword Information
https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1194/slides/cs224n-2019-lecture12-subwords.pdf
https://wikidocs.net/22592
https://velog.io/@tobigs-text1314/CS224n-Lecture-12-Subwords
https://youtu.be/64FxDORoHm0
투빅스 14기 한유진
word, 언어에 집중한 모델을 배울 수 있었던 강의였습니다. 좋은 강의감사합니다!
투빅스 15기 강재영
투빅스 15기 조준혁
언어의 특성을 고려한 NLP의 기초를 배울 수 있었던 강의였습니다.
투빅스 15기 조효원
투빅스 15기 이윤정
투빅스 14기 정재윤
초창기 모델들은 word-level model을 사용했으나 이 모델은 단어를 표현할 때 너무 많은 공간을 사용한다는 점에서 굉장히 비효율적이었다. 이 후, 발전된 형태로 나온 모델이 Character-Level model로 OOV 문제를 효과적으로 해결할 수 있었다. 하지만 의미 정보를 포기했기에 완벽하다고는 말할 수 없다.
bpe는 byte pair encoding을 의미하며, 단어를 최소 단위로 나눠서 임베딩을 진행하는(?) 방식을 의미한다. BPE 방식으로는 크게 2가지가 있는데, wordpiece 방식과 Sentencepiece 방식이 존재한다. 이 중 wordpiece 방식은 최근 NLP model 들로 유명한 bert, transformer, gpt-2 등에 사용됩니다.
Hybrid Model은 main model은 word기반, 필요시에 character기반을 추가한 모델로, 각각의 장점들을 뽑은 모델이긴 하지만 여전히 일부 고유명사들을 잘 번역하지는 못합니다.
투빅스 15기 김동현
14기 박준영
좋은 강의 감사합니다!!
투빅스 15기 김재희
subword model은 처음 접했는데, 생각보다 다양하고 재밌는 분야인 것 같습니다.
투빅스 14기 정세영
심화된 nlp 모델들에 기반이 되는 subword model의 개념을 잘 쌓을 수 있는 강의였습니다.