레플리
글 수 284


transformer-ber-ulmfit-elmo.png

 

https://jalammar.github.io/illustrated-bert/?fbclid=IwAR1tT0Z10N7fdAj0-PUYk-t3lylnUzjqYd_aRwPzYjCksM3Da3grXJ-sTyI

 

 

 

최근 인기를 끌고 있는 구글의 BERT는 사전훈련(pre-trained) 기반의 언어모델입니다. 사전훈련은 CNN 같은 이미지 분류에서는 오래전부터 많이 활용되어 왔습니다. 예를 들어, ImageNet으로 다양한 사진들을 분류하는 모델을 파인튜닝합니다. 그래서 좀 더 세부적인 이미지들을 구분하는 자신만의 모델을 만들 수 있습니다. 이렇게 하면 적은 데이터만 가지고도 성능이 높은 모델을 빠르게 학습시킬 수 있습니다.

 

2018년에는 자연어처리에서도 이런 사전훈련을 도입한 논문들이 많이 발표되었습니다. 이 글에서는 ELMo, OpenAI Transformer 등을 거쳐 BERT로 이어진 과정을 자세히 설명하고 있습니다.

 

 

 

물론 기존에도 Word2Vec이나 GloVe 같이 비지도학습 방식의 사전훈련 모델이 있었습니다. 하지만 단순히 단어의 임베딩을 생성하는데 그쳤습니다. 그리고 모든 단어가 동일한 벡터값을 가지기 때문에 문맥에 따라 다른 의미를 가진 단어들을 표현할 수 없었습니다. 예들 들어, "눈이 와서 너무 좋다"와 "너의 눈이 너무 예쁘다"에서 '눈'은 다른 뜻을 가지고 있습니다. 하지만 Word2Vec으로 변환하면 모두 같은 임베딩을 가집니다.

 

이런 문제점을 해결하여 단어마다 각각 다른 임베딩을 부여하는 방법이 ELMo입니다. 이를 위해 사전훈련을 사용합니다. Bidirectional LSTM을 사용하여 문장에서 단어들이 주어지면 다음 단어를 예측하도록 학습합니다. Ngam 언어모델과 유사합니다. 이렇게 학습된 모델에서 해당 단어위치의 히든레이어 벡터들을 조합하여 단어의 임베딩을 구합니다.

 

OpenAI Transformer는 단어 차원이 아니라 문장 단위로 활용하는 모델입니다. ELMo와 동일한 방법으로 다음 단어를 예측하도록 사전훈련합니다. Transformer에서 디코더 부분만 사용하는데 문장의 한쪽 방향으로만 학습이 가능하다는 한계가 있습니다.

 

 

 

BERT의 가장 큰 특징은 Bidirectional로 문장의 양쪽으로 학습하여 정확도가 더 높다는 것입니다. OpenAI가 디코더를 쓰는 것과 달리 Transformer의 인코더만 사용합니다. 하지만 다음 단어를 예측하는 방법은 Bidirectional에서는 적용하기 불가능합니다. 그래서 문장에서 일정 확률로 임의의 단어를 마스킹하여 그 단어를 예측하는 새로운 학습방법을 고안하였습니다. 그와 함께 두 문장이 서로 연결되는 의미인지 분류하는 방식도 함께 사용합니다.

 

올해에는 이런 사전훈련을 적용한 자연어처리 모델이 더욱 발전하지 않을까 예상됩니다.

엮인글 :
List of Articles
제목 글쓴이 날짜 조회 수sort
한글전용 초거대AI가 필요한 이유 [2] 깊은바다 2023-03-18 630
딥러닝을 이용한 자연어처리의 연구동향 깊은바다 2018-10-04 631
대화 인공지능 대회 - ConvAI file 깊은바다 2019-03-25 631
포자랩스의 작사/작곡 인공지능 file 깊은바다 2018-08-31 641
구글 듀플렉스(Duplex) 상용화 시작 [2] 깊은바다 2018-11-26 644
ChatGPT 플러그인 구현 방법 - manifest와 OpenAPI Spec file 깊은바다 2023-03-28 653
인터넷 검색을 하고 장기기억을 저장하는 페이스북의 챗봇 - Blenderbot 2 file 깊은바다 2021-07-19 654
LLM Multi Agent: Customer Service를 기깔나게 자동화하는 방법 file [1] 깊은바다 2023-10-09 656
사람의 말로 표현하는 페이지(PAIGE) - 자연어생성 깊은바다 2018-08-04 660
GPT3 튜링 테스트 깊은바다 2020-07-23 668
카카오미니의 명령어 분류 방법 - GloVe와 CNN 사용 깊은바다 2018-05-07 674
딥러닝 자연어처리 강의 - Natural Language Processing with PyTorch 깊은바다 2019-07-06 687
새로운 자연어처리 벤치마크 - SuperGLUE 깊은바다 2019-08-15 703
워드 임베딩에 대한 아주 쉬운 설명 - The Illustrated Word2vec 깊은바다 2019-04-09 704
GPT-3를 헬스케어 서비스에 적용했을 때의 문제점들 깊은바다 2020-11-04 707