SW·AI 연구활동 발표대회

  • Korean BERT Model

    팀장
    강현준 (소프트웨어학부 | 4학년)
좋아요 0
BERT 언어 모델의 한국어 적용
  • 참여 목적 및 참여 당시 활동 목표
  • PE 프로그램 참여 전 대부분의 제 프로젝트는 인공 신경망 기반의 모델을 활용하는 것이 대부분이었습니다.


    컴퓨터 비전, 추천 시스템, 그래프 분석, 자연어 처리 등의 프로젝트를 다양한 모델을 개인 머신을 활용하여 학습하는 것으로 진행했습니다.

    그 중 자연어 처리는 구글, 네이버 등에서 BERT, Clova 등의 대형 모델을 개발하여 진행하는 만큼 현재 활발히 연구되는 분야입니다 .


    하지만 개인 머신에서 진행한 프로젝트인 만큼 부족한 사양으로 인해 한정된 자원에서의 프로젝트만을 진행해왔습니다.

    또한 사용할 수 있는 모델에도 제한이 있었고, 진행할 수 있는 범위 또한 제한적이었습니다.

    따라서 이번 PE 프로그램을 통하여 고성능의 머신과 더불어 대용량 언어모델의 구현을 진행하면서 다양한 경험을 쌓는 것을 목표로 했습니다.


  • 연구ㆍ학습활동 결과
  • 이번 PE 프로그램은 뉴스 데이터를 활용한 BERT 모델의 구현을 위주로 진행되었습니다.

    크게 두 가지 방향으로 진행이 되었습니다. BERT모델에 대한 pre-training, fine-tuning이 그것입니다.


    1. BERT 모델

    자연어 처리는 컴퓨터가 인간의 언어를 이해, 분석을 할 수 있도록 하는 인공지능의 한 분야입니다. 

    검색 시스템, 번역기, 음성 어시스턴트, 텍스트 분석에 사용되는 자연어 처리는 인간의 소통 수단인 언어를 처리하는 중요한 분야입니다.

    따라서 이에 관해 전통적인 기법부터 현대에 딥러닝 기법까지 수많은 기법들이 자연어처리의 발전 과정에서 개발되었습니다.


    그 중 attention layer를 활용한 transformer가 주축이 되는 구글의 BERT(Bidirectional Encoder Representations from Transformers) 모델은

    OpenAI의 GPT-3와 함께 최신 기법, 기술로 사용되고 있습니다.

    02) 버트(Bidirectional Encoder Representations from Transformers, BERT) - 딥  러닝을 이용한 자연어 처리 입문 

    BERT 모델은 구글에서 기존의 seq2seq 모델에서 데이터를 보정하기 위해서 사용한 attention layer를 seq2seq 모델 자체로 활용한 모델입니다.

    Transformer는 Multi-Head Attention과 embedding layer를 주로 활용한 모델로, BERT에서는 이를 직렬로 쌓아 사용합니다.

    Attention layer는 문장 내에 각 단어들 간의 연관 관계를 나타내어 각 단어의 embedding vector를 더욱 확실히 하는 것을 목표로 합니다.



    2. Pre-training


    1-1. 뉴스데이터 수집

    한국어를 BERT에 학습하기 위한 데이터셋으로는 네이버 뉴스 api를 활용한 인터넷 뉴스 기사 데이터입니다.

    현재 오픈소스로 공개되어있는 데이터셋이 없으므로 api를 활용하여 직접 10년치 데이터를 수집했습니다.

    데이터 수집의 경우 postgresql을 활용하여 자체 데이터베이스에 저장 후 학습에 활용하는 만큼 조회하여 사용했습니다.


    1-2. BERT 모델 학습

    BERT 모델의 경우 먼저 tokenizer를 먼저 제작하였습니다. Tokenizer란, 컴퓨터에게 단어를 입력하기 위해 단어에 숫자를 메기는 것으로, 인코딩이라고도 불립니다.

    Tokenizer의 경우 뉴스 데이터에서 가장 빈도수가 높은 단어를 찾는 기본적인 Tokenizer부터 형태소 분석을 활용하여 대용량으로 만든 Tokenizer까지 활용했습니다.


     

    이후 BERT 모델의 학습에는 두가지 방법을 사용했습니다.

    우선 기본적인 Masked Token Prediction은 문장의 단어를 임의로 숨긴 뒤, 숨긴 단어를 예측하는 것으로 Embedding, Attention layer를 학습합니다.

    그 다음은 ALBERT에서 사용되는 Sentence order Prediction으로, 문장의 순서를 맞추는 방법입니다. 이 방법으로 단어뿐만 아니라, 문장 전체의 임베딩 또한 학습합니다.

    위 두 방법으로 구한 loss를 합한 것을 최종 loss로, 이를 줄이는 방법으로 모델을 학습했습니다.

     

    위는 pre-training을 진행한 여러 모델 중 몇 가지를 골라 loss를 시각화 한 것으로, loss의 감소를 눈으로 확인할 수 있습니다.

    학습은 기본적으로 GFORCE RTX 3090 4기를 활용하여 이루어졌으며, 추후 설명할 TPU 환경에서도 진행했습니다.


    1-3. TPU 환경 활용

    TPU 환경의 활용은 Google Cloud Platform에서 이루어졌습니다. 해당 플랫폼은 구글의 잉여 GPU/TPU를 체험 기간 동안 활용할 수 있는 플랫폼입니다.

    모델의 용량이 매우 큰 BERT의 경우 학습이 어렵기 때문에 Local 환경에서 학습의 경우 최상급의 성능 GPU 4개를 활용하여 학습 해야 하는 수준입니다.

    TPU의 경우 그래픽 카드의 성능 지표 VRAM이 100GB에 달하기에, 대용량 모델의 학습에 특화되어있습니다.


     

    GCP에서 제공해주는 서버에 ssh 연결을 진행한 뒤, TPU node를 발급 받아 진행합니다.

    따라서 서버와의 지연으로 인한 핑은 발생하지만, TPU 자체의 학습에는 영향이 없기에 안정적인 학습이 가능합니다.


    2. Fine-tuning


    Fine-tuning의 경우에는 한국어 모델의 NSMC, Naver NER, KorQuaD, PAWS, KorSTS 등이 학습할 만한 데이터셋으로 알려져있습니다.

    해당 데이터셋들은 대회를 열어 정확도를 비교할 만큼 한국어 모델의 bench-mark라고 하여도 됩니다.

    저는 이중 NSMC, Naver NER, KorQuaD v.1에 fine-tuning하였습니다.

     

    좌 상단부터 Naver NER의 f1 score, KorQuaD의 학습 과정, NSMC의 accuracy와 loss 입니다.

    모든 데이터셋에서 SOTA 성능, 혹은 그에 버금가는 성능을 나타내었습니다.



  • 참여 소감 및 향후 계획
  • PE 프로그램 참여 전에는 간단한 NN 모델을 개인 환경에서 학습하는 것이 프로젝트의 한계였습니다.

    하지만 연구실에서의 자원을 활용하여 상위급의 그래픽카드와 서버 사양을 통해 대형 모델을 활용하면서 고사양 환경에서의 컴퓨팅을 경험했습니다.

    또한 2, 3년 이내의 논문들을 읽고, 해당 논문들의 Github 코드를 공부하며 논문의 기술을 습득하는 것은 개발자로서 뿐만 아니라 과학자로서의 경험 또한 풍부해졌습니다.

    이후 학부 과정을 이수하면서 이 경험은 프로젝트 진행에 큰 도움이 될 것입니다.

  • 증빙자료
  • 프로젝트의 특성 상 코드를 공개하기 어려운 점 양해부탁드립니다.


     

    프로젝트의 진행 사항을 확인하기 위한 WanDB 대쉬보드입니다. 진행하는 프로젝트들의 진행사항, 결과들을 확인 할 수 있습니다.