이미 읽어봤던 논문들의 주요 내용들을 주재걸 교수님의 강의로 직접 들으니 그 의미를 또다른 시각에서 해석할 수 있어서 매우 좋았습니다. 특히 모델들에 관한 지식은 있었지만 성능 측정 방법에 대해서는 논문을 읽을 때 이해하지 못해서 항상 넘어가곤 했는데, 이번에 BLEU score의 개념을 명확히 이해할 수 있었습니다. 또, 자연어 처리에서 precision, recall의 의미 및 한계를 이해하고 이를 극복하기 위한 다양한 score를 공부하다보니, 자연어 처리가 얼마나 어려운 태스크이고 이것을 효과적으로 측정하는 것조차 쉽지 않다는 것을 알게 되었습니다.
첫번째로 새로운 시각을 갖게 된 것은 one-hot encoding의 해석에 관한 것이었습니다. 이전까지는 단순하게 $n$개의 단어를 one-hot vector로 표현하기 위해서는 $n-1$개의 차원이 필요하겠다는 정도만 알고 있었습니다. 그러나 one-hot vector가 메모리상 문제 뿐만 아니라, index를 제외한 다른 정보는 아무것도 못 갖는다는 단점이 있다는 것을 알게 되었습니다. 모든 one-hot vector의 길이(norm)는 $1$이고, 서로 다른 두 one-hot vector의 거리는 $\sqrt2$입니다. 뿐만 아니라, 서로 다른 두 one-hot vector의 내적값은 모두 $0$으로, 서로 orthogonal하다는 특성이 있습니다. 이는 수만개의 단어를 처리해야 하는 자연어처리의 특성상 적절하지 못하다는 것은 이제는 당연한 판단으로 자리잡는 것 같습니다.
가장 신선했던 시각은 f1-score 계산에서 조화 평균을 이용하고, BLEU score에서는 기하 평균을 이용하는 이유에 관한 것이었습니다. 교수님은 산술 평균 ≥ 기하 평균 ≥ 조화 평균의 관계가 성립하기 때문에, f1-score는 precision과 recall 중에서 좋지 않은 것에 더 가중치를 두는 점수로 해석할 수 있다고 하셨습니다. 일반적으로 소금물의 농도, 속도, 주파수 등의 평균 등 주로 "비울"에 관한 분야에 주로 사용되는 조화평균을 좋지 않은 것을 더 가중해서 보겠다는 의미를 담고 있다는 해석에서 신선했습니다. 그러나 BLEU score에서는 너무 좋지 않은 쪽에만 집중하는 경향이 존재하므로, 이를 보완하기 위해 기하 평균으로 대체한다고 설명해주셨습니다.
한편, 여기서 본인이 들었던 의문은 한국어-영어와 같이 수식 관계나 술어의 어순이 전혀 반대인 경우에는 attention이 어떠한 형태로 적용될 지가 궁금했습니다. 영어-독어 혹은 영어-불어 번역에서는 어순이 일치하여 어렵지 않고, 어구 일부에만 순서가 역순이 되긴 했지만, 영어-한국어의 경우에는 이러한 패턴이 더 자주 나타날 것이라고 조심스럽게 예측했습니다.
과제 수행은 어렵지 않았고, subword tokenization을 해야 하는 이유를 명확히 이해할 수 있게 되었습니다. word-level tokenization에 비해 훨씬 parameter 수를 줄일 수 있고, 이 덕분에 embedding 차원도 효과적으로 줄일 수 있을 것입니다. 그렇다고 character-level은 너무 fine-grained하기 때문에, 너무나도 많은 case들을 모델링하기 쉽지 않다고 합니다. 특히, 오피스아워에서 멘토님의 과제 의도를 들었을 때는 많이 도움되었습니다.
피어세션에서는 제 주도로 논문 읽기고 돌아가면서 발표하는 것을 수행했습니다. 기존 팀원들과는 서로 분야가 달라서 특정 분야의 논문을 읽자는 논의 자체가 힘들었는데, 이제는 같은 방향으로 나아가고자 하는 사람들끼리 모여 이것이 훨 수월했습니다. 논문은 자연어 처리 관련 논문 리스트들 중에서 제가 직접 선정하였습니다. 목록과 발표자는 아래와 같습니다. (회색 음영 처리된 인원이 선정된 발표자입니다.)
논문은 자연어 처리의 전반을 이해할 수 있도록 순서대로 구성하였습니다. 따라서 Word Embedding, RNN family, RNN-based Machine Translation, Introduction to Attention, Attention Model 순서대로 모델이 발전되고 개선된 역사와 함께 전체적인 파이프라인도 볼 수 있습니다.
제가 발표했던 **"GloVe: Global Vectors for Word Representation"**과 "Effective Approaches to Attention-based Neural Machine Translation" 발표 자료는 아래에 있습니다. 그리고 논문을 읽다보니 얻게 된 팁들도 공유했습니다. 제 노하우 중 대표적인 것은 서로 다른 notation들을 가장 본인에게 익숙한 notation으로 통일해서 정리하는 것입니다. 이를 위해서는 구조를 완벽히 이해해야 하고, 이를 바탕으로 재구성을 하는 것이므로 쉬운 작업이 아니라는 것을 알 수 있었습니다. 또한, 나중에 정리된 것을 보더라도 익숙한 Notation으로 이루어져 있기 때문에 새로운 것을 보는 느낌이 아닙니다...ㅎㅎ
GloVe: Global Vectors for Word Representation
effective_attention_based_NMT.pdf
이번 주 과정 중에서 논문들을 리뷰하며 기존의 Seq2Seq with Attention 모델과 Effective Attenion-based Model이 차이가 나는 지점을 알 수 있었던 게 가장 큰 성과라고 할 수 있습니다. 논문에서 "기존의 모델의 $h_{t-1} \rightarrow \cdots \rightarrow y_t$가 되는 과정을 본인의 모델에서 $h_t \rightarrow \cdots \rightarrow y_t$가 되는 과정으로 바꿔 효율적"이라는 단 한마디 문장을 그러려니하고 넘겼는데, 이후 발표 준비를 하면서 계속 곱씹다보니 마침내 그 의미를 해석해서 이를 발표에 추가할 수 있었습니다. 즉, 기존 모델은 이전의 hidden state를 가지고 단어를 형성할 뿐만 아니라 RNN을 거쳐야 해서 복잡한 과정을 거치며 훈련이 덜 될 수도 있는데, 개선된 모델은 $h_t$를 직접 이용하여 $y_t$를 계산하는 것이었습니다.
이렇게 연구자들이 품은 의문이 무엇이고, 이를 실험으로 증명해내는 과정을 통해 많이 배울 수 있던 것 같습니다. 따라서 저도 이러한 의문들을 직접 몸소 실천하고 다양한 실험을 하면서, 효율적이면서 효과적인 자연어 처리 모델을 만들고 싶다고 생각했습니다.