최첨단 인공지능 솔루션들 : (1) 구글 BERT, 인간보다 언어를 더 잘 이해하는 AI 모델

AI Network Dev Team
12 min readNov 12, 2018

--

최근 인공지능 기술이 기업 활동이나 실생활에 적용되는 사례들이 하나둘씩 늘어나고 있습니다. 예를 들어 항공, 금융, 의료 및 제약, 채용 및 HR, 음악, 출판 등이 대표적인 분야들입니다(참조링크). 이러한 응용분야의 확장은 기본적으로 그 엔진에 해당하는 인공지능 솔루션들의 성능향상에 기초하고 있습니다.

AI Network팀은 인공지능 솔루션들의 최신 트렌드를 이해하는데에 도움을 드리기 위해서 ‘최첨단 인공지능 솔루션들 (State-Of-The-Art AI Solutions)’이라는 시리즈 연재를 준비했습니다. 오늘은 그 첫 포스팅으로 최근 일부 성능평가에서 인간보다 더 높은 정확도를 보여서 화제를 모았던 구글의 인공지능 언어모델인 BERT (Bidirectional Encoder Representations from Transformers)에 대한 내용을 준비했습니다(참조링크).

BERT개발팀은 2018년 10월 11일 논문을 먼저 웹사이트에 공개하고 약 3주 후 약속대로 소스코드와 모델을 공개했습니다(참조링크). 이러한 BERT 결과물들의 공개는 흥미롭게도 주변의 NLP관련 개발자 또는 연구자들에게 ‘흥분’과 ‘고민’을 함께 던져준 듯 했습니다. 물론 흥분은 그 놀라운 성능에 대한 것인데요, 고민은 BERT개발팀의 접근방식이 기존의 연구개발 방식과 다소 다른 방향성을 가진다는 데에 기인합니다. BERT개발팀은 범용 모델 아키텍처와 범용 학습데이터를 사용하여 flexibility를 높임과 동시에 많은 머신리소스를 투자하는 방식으로 성능까지 높였습니다. BERT 공개 이후 인공지능 언어모델을 연구하는 사람들은 자연스럽게 연구 방향성에 대한 고민과 함께 연구 환경을 어떻게 구축할 것인가 하는 고민을 함께 해야할 듯 합니다.

본 포스팅에서는 먼저 BERT의 개발자들이 취하고 있는 접근방식과 아이디어들, 그리고 성능평가 결과들을 간략히 살펴보고 이런 내용들이 자연어 처리 커뮤니티와 인공지능 관련 개발자들에게 던지고 있는 메시지는 무엇인지, 그리고 AI Network와는 어떤 관련이 있는지를 살펴보고자 합니다.

BERT는 어떤 솔루션인가?

접근 방식

논문(참조링크)과 Reddit 포스팅(참조링크)에서 읽을 수 있는 BERT 개발자들의 접근방식은 기본적으로 (1) 범용 솔루션을 (2) 스케일러블 한 형태로 구현해서 (3) 많은 머신리소스로 훈련해서 성능을 높인다입니다.

논문에서 성능평가를 위해서 사용된 NLP 과제들은 모두 11개인데요, 각각의 과제에 특화된 모델을 만들어서 사용하지 않고 하나의 pre-trained 모델을 공통적으로 사용하고 있습니다. 대신 과제를 수행하기 전에 각각의 과제에 대한 약간의 fine-tuning을 적용하고 있습니다.

모델 아키텍처는 구글이 2017년에 발표한 범용 딥러닝 모듈 아키텍처인 Transformer를 사용하고 있습니다. Transformer의 가장 큰 장점은 병렬처리를 통한 학습 속도의 향상에 있다고 할 수 있습니다(참조링크). 논문에서 사용된 BERT 모델의 크기는 아래와 같습니다.

수억개(110M, 340M)의 parameter를 가지는 ANN은 실로 엄청난 크기입니다. 예를 들어 비교하자면 AlphaGo의 Policy Network(참조링크)은 약 4.6M개의 parameter로, image recognition 분야에서 유명한 ANN인 ResNet-50(참조링크)은 약 25M개의 parameter로 구성되어있다고 알려져 있습니다.

모델 아키텍처와 함께 학습 데이터도 범용 코퍼스를 사용하고 있습니다. 논문의 pre-training에 사용한 데이터는 BooksCorpus (800M 단어)와 English Wikipedia (2,500M 단어)라고 밝히고 있습니다. 만일 특정 과제에 대한 성능을 극대화할 목적으로 그 과제에 특화된 데이터를 사용한다면 논문에 제시된 결과보다 훨씬 더 좋은 성능을 보여주리라 기대할 수 있는 부분입니다.

사용한 머신리소스의 규모에 대해서는 소스 & 리소스 절에서 더 자세히 알아보도록 하겠습니다.

* 본 논문에서 소개된 내용들은 그림과 표를 포함하여 대부분 BERT 논문(참조링크)과 Reddit 포스팅(참조링크)을 참조한 것입니다. 더 자세한 내용은 원문을 참조하세요.

주요 특징들

Bidirectional Model

Fig 1(논문에서 발췌)은 BERT, OpenAI GPT, ELMo 각각에서 사용된 pre-training 모델 아키텍처를 도식화해서 보여주고 있습니다. OpenAI GPT에서는 left-to-right Transformer를, ELMo에서는 독립적인 left-to-right, right-to-left 모델을 결합해서 사용하는데 반해서 BERT에서는 하나의 bidirectional 모델을 사용해서 좌우 컨텍스트를 동시에 보는 구조를 가지고 있습니다.

Masked LM

Fig 2. Masked LM (논문에서 발췌).

앞에서 설명한 deep bidirectional 모델만을 사용하게 되면 모델 내부에 사이클이 만들어져서 training 자체가 무의미해질 수 있는 문제가 있습니다. 일반적으로 Neural Network에서 hidden layer의 수가 input parameter의 수 보다 많아질 경우 학습된 결과가 Identity Function 즉, 출력값이 입력값과 같아질 가능성이 높습니다. BERT 개발자들은 Denoising Autoencoder에서 입력값을 의도적으로 왜곡함으로써 이런 문제를 해결하는 데에(참조링크) 착안하여 Masked LM이라는 기법을 고안하였습니다(Fig 2 참조). 즉 입력 단어 배열에서 무작위적으로 단어를 선택해서 80%의 확률로 [MASK]로 치환하거나 10%의 확률로 임의의 단어로 치환하거나 나머지 10%의 확률로 바꾸지 않고 그대로 사용하게 됩니다.

Next Sentence Prediction

Fig 3. Next sentence prediction (논문에서 발췌).

성능평가에 사용된 과제들 중 많은 수가 문장들의 관계를 이해할 필요가 있는 것들이기 때문에 BERT 개발자들은 문장들의 관련성을 예측하는 모델도 학습해서 사용하고 있습니다. Fig 3에서 보는 것 처럼 monolingual corpus로부터 문장들을 추출하여 문장 쌍이 실제 연결된 문장들인 경우 IsNext로 labeling하고 무작위로 선택된 문장들인 경우 NotNext로 labeling해서 입력데이터로 사용하였습니다.

성능 평가

GLUE

GLUE (General Language Understanding Evaluation) 데이터셋은 다양한 자연어처리 과제들를 모아놓은 것으로 자연어 처리 솔루션들을 객관적으로 비교 평가하기 위한 목적으로 만들어졌습니다.

Table 1(논문에서 발췌)은 GLUE 데이터셋에 대한 평가결과를 보여주고 있습니다. 결과를 요약하자면 모든 과제에서 현존하는 가장 우수한 솔루션들보다 좋은 결과를 보여주었습니다. 이때 BERT-Base와 BERT-Large는 각각 평균 4.4%와 6.7%의 성능향상을 보이고 있습니다.

SQuAD

SQuAD (Standford Question Answering Dataset)는 크라우드소싱한 100k여개의 질문/답변 쌍으로 이루어져 있습니다. 과제는 문단과 질문이 주어졌을 때 문단 내에서 주어진 질문의 답에 해당하는 부분을 찾아내는 것입니다.

Table 2(논문에서 발췌)는 SQuAD에 대한 평가결과를 보여주고있습니다. 요약하면 가장 성능이 좋은 시스템들을 앙상블 및 싱글 환경에서 각각 앞서는 결과를 보여주었습니다. 이는 또한 Human의 결과보다 앞서는 결과입니다.

CoNLL-2003

CoNLL-2003 데이터셋은 200k개의 학습 단어들로 구성되어있는데 각각의 단어들은 Person, Organization, Location, Miscellaneous, or Other (non-named entity)로 annotate되어있습니다.

Table 3(논문에서 발췌)은 CoNLL-2003에 대한 평가결과를 보여주고 있습니다. BERT-Large가 다른 시스템들 보다 우수한 성능을 보여주고 있음을 확인할 수 있습니다.

SWAG

Situations With Adversarial Generations (SWAG) 데이터셋은 113k개의 ‘문장쌍 만들기 문제들’로 이루어져 있습니다. 과제는 주어진 첫 문장 뒤에 왔을 때 가장 자연스러운 문장을 주어진 4개의 선택지 중에서 고르는 것입니다.

Table 4(논문에서 발췌)는 SWAG 데이터셋에 대한 평가결과를 보여주고 있습니다. 결과는 BERT-Large가 ESIM+ELMo를 27.1%나 향상시킨 결과를 내고 있음을 볼 수 있습니다. 이는 Human (expert)의 결과보다 앞서는 결과입니다.

학습량과 성능

BERT 개발팀은 학습량(# of Steps)이 성능에 미치는 영향을 알아보기 위해서 Masked ML 및 Left-to-Right 아키텍처 기반 BERT-Base를 각각 다양한 학습량으로 pre-training한 결과로 성능을 평가해 보았습니다.

위의 그래프(논문에서 발췌)는 그 결과를 나타냅니다. 이 실험이 시사하는 바는 아래와 같이 요약됩니다.

  1. 질문: 그렇게 많은 학습량(128,000 words/batch * 1,000,000 steps)은 BERT의 성능에 필수적인가?
    답변: 그렇다(수렴 그래프에서 확인 가능).
  2. 질문: Masked LM은 Left-to-Right 모델보다 수렴 속도가 더 느린가?
    답변: 그렇다(그래프에서 확인 가능). 하지만 절대 성능에 있어서는 초반을 제외하고 항상 Masked LM이 Left-to-Right 모델을 앞서는 결과를 보여준다.

소스 & 리소스

BERT개발팀은 논문에 제시된 실험결과들을 얻기 위해서 다음과 같은 규모의 머신리소스를 사용했고 pre-training을 마치기 까지 4일 정도 소요되었다고 밝히고 있습니다.

  • BERT-Base: 4 Cloud TPUs (16 TPU chips total)
  • BERT-Large: 16 Cloud TPUs (64 TPU chips total)

이 리소스는 엄청난 양인데요, 개발자들은 만약 8개의 TESLA P100을 사용했다면 1년 넘게 걸렸을 수도 있다고 얘기하고 있습니다.

앞에서 언급했듯이 BERT 개발자들이 보여준 기본철학은

  • 범용 솔루션을 설계하고
  • 스케일러블 한 형태로 구현해서
  • 많은 머신리소스로 훈련해서 성능을 높인다

입니다. 이런 접근방식의 성공은 NLP 연구/개발 분야에서의 한가지 중요한 변화를 의미합니다. 즉 NLP를 위한 AI 솔루션 개발은 이제 더이상 NLP 전문가들의 전유물이 아니라 기본적인 코딩 능력과 머신리소스의 운영 능력을 가진 모든 사람들에게 개방된다는 의미를 가집니다. 또한가지 중요한 점은 BERT-Base와 BERT-Large의 성능 차이에서 쉽게 확인되듯이 모델 사이즈(또는 리소스규모)와 성능 사이의 비례 공식은 결국 머신리소스에 대한 인공지능 솔루션의 의존도가 점점 커짐을 의미한다는 점입니다. 앞으로 막대한 양의 머신리소스를 효율적으로 확보/운영할 수 있느냐가 연구기관 또는 기업들의 경쟁력을 높이는 필수 조건이 되지 않을까라고 예상해 볼 수 있는 대목입니다.

앞서 언급했듯이 BERT개발팀이 이미 소스코드와 학습된 모델을 공개했기 때문에 (참조링크) 이제 원한다면 누구나 BERT를 사용할 수 있습니다. 하지만 누구나 새로운 모델을 학습시킬 수 있다는 의미는 아닙니다. 그만한 리소스가 필요합니다. AI Network에서 기여하고자 하는 바는 바로 이 부분입니다. AI Network이 궁극적으로 지향하는 바는 (1) 원한다면 누구나 cost-effective한 리소스를 제공받을 수 있고 (2) 자신이 가진 소스코드에 맞는 실행환경을 직접 구축하지 않더라도 쉽게 빌려 쓸 수 있게 하는 리소스 공유 서비스 플랫폼(aka Open Resource Platform)을 제공하는 것입니다. Open Resource에 대한 좀 더 자세한 소개는 아래 포스팅을 참고하세요.

오늘 포스팅은 여기서 마칩니다. 앞으로도 AI Network(ainetwork.ai)에 대한 많은 관심 부탁드립니다. 감사합니다.

관련 링크들

--

--