[AI 모델 탐험기] #7 한글 버전의 GPT-2, KoGPT2

Changyeop·2021년 5월 18일
14
post-thumbnail

해당 글은 제가 커먼컴퓨터에서 재직 중에 작성한 글이며 회사 공식 블로그에도 올라오고 있으며, 커먼컴퓨터 엔지니어 이호섭, 이은지님과 함께 작성한 글입니다.


제가 오늘 소개드릴 모델은 SKT-AI의 KoGPT2입니다.

SKT-AI는 대부분의 언어 모델들이 영어로 만들어진 모델로 한국어로는 성능이 온전히 구현되지 않아 이에 한국어 범용언어지능모델을 개발하여 한국어 AI 생태계에 기여하는 것을 목표로 삼고있다고 합니다.

이에 얼마전 SKT-AI에서 GPT-2의 한국어성능 한계 개선을 위해 KoGPT2를 개발해주셔서 이를 가지고 글을 작성해보겠습니다. KoGPT2 뿐만 아니라 KoGPT2를 활용한 KoGPT2-Chatbot, KoGPT2-Dino 또한 소개드릴 예정입니다.

프로젝트를 바로 확인해 보시고 싶으신 분은 다음 링크를 참조해 주세요.

KoGPT2 Demo : https://link.ainize.ai/2RWvH1T

KoGPT2 API : https://link.ainize.ai/3ys9rxR

KoGPT2 Gihub : https://link.ainize.ai/2QqpXNp

GPT-2는 자연어 처리 모델로 입력받은 텍스트를 기반으로 이어지는 텍스트를 생성하는 모델입니다. 이 모델이 공개 되었을 때 많은 사람들이 충격에 휩싸였습니다. GPT-2로 생성된 글을 보았을 때 사람이 쓴 글과의 구분이 어려웠기 때문입니다.

하지만 아쉬운 점이 있었습니다. 바로 언어 부분이죠. GPT-2는 영어를 기반으로 한 모델이기 때문에 한국어로 문장을 생성할 수 없었습니다. 이에 한국어성능 한계 개선을 위한 모델이 개발되었고 KoGPT2가 공개 되었습니다.

GPT-2의 한글판 : KoGPT2

KoGPT2는 이름에서 볼 수 있는 거처럼 GPT-2 모델을 Fine-Tuning한 한국어 언어모델이며 SKT-AI에서 한국어성능 한계 개선을 위해 개발하였습니다. 이번에 나온 KoGPT2 2.0은 2020년 2월에 개발된 KoGPT2 1.0의 업그레이드 버전입니다.

1.0에서는 단일 문장 생성에 최적화 되었지만 2.0에서는 문맥을 유지하며 다중 문장 생성에 최적화 되어 의미적으로 연관된 문단을 생성할 수 있습니다. 학습에 사용된 데이터로는 한국어 위키 백과, 청와대 국민청원 등을 포함한 데이터 셋으로 구성되었으며, 1.0에 비해 두배 이상의 데이터 셋을 학습에 사용했습니다.

언어 모델의 평가 방법중 하나인 PPL(Perplexity)은 헷갈리는 정도를 뜻하는데, 1.0에서는 45.4이었지만 2.0에서는 24.6로 PPL 측면에서 큰 향상이 있었습니다. 이 수치는 언어 모델이 문장을 생성할 때 다음 단어로 올 여러 후보군 중 어떤 단어를 선택할 지 고민하는 수치로 낮을수록 모델의 성능이 좋다는 것을 의미합니다.

하지만 2.0 버전이 모든 점에서 개선된 것은 아닙니다. KorSTS 수치가 1.0에서는 80.1이었지만, 2.0에서는 78.4로 하락했습니다. KorSTS는 카카오 브레인이 발표한 두 문장 사이의 유사성을 평가하는 밴치마크 데이터 셋으로 높을 수록 모델 성능이 우수하다는 것을 의미합니다.

KoGPT2에서 사용된 tokenizer는 지난번 대학교 커뮤니티 글 생성 모델에서 설명해드린 BPE(Byte Piece Encoding)가 사용되었고, 대화에 자주 쓰이는 이모티콘, 이모지등을 추가하여 토큰의 인식 능력을 높였다고 합니다.

이 모델은 GPT-2와 마찬가지로 논문 Attention Is All You Need에서 제시한 인코더+디코더 구조에서 인코더 블록을 제거하고 디코더 블록만 사용한 모델입니다. 디코더 블록에 대한 자세한 내용은 link에서 확인할 수 있습니다.

출처 : https://jalammar.github.io/illustrated-gpt2/

Usage

  • DEMO 사용하기

우선 Ainize가 제공하는 DEMO를 통해 KoGPT2를 사용해보겠습니다.

Base text를 입력 후 버튼을 누르면 문장 생성 결과를 확인해볼 수 있습니다. 해당 Demo는 link에서 확인할 수 있습니다.

  • Ainize가 제공하는 API 사용하기

이번에는 Ainize에서 제공하는 KoGPT2 API를 사용하여 KoGPT2 모델을 사용해보겠습니다. API에 관한 내용은 link에서 확인할 수 있습니다.

KoGPT2를 활용한 서비스

KoGPT2를 활용한 예제들에 대해 소개해드리겠습니다.

KoGPT2-Chatbot

KoGPT2-Chatbot은 공개된 한글 챗봇 데이터와 KoGPT2를 이용하여 간단한 대화를 나눌 수 있는 챗봇 모델입니다.

학습에 사용된 데이터는 감정 상태에 따라 라벨링이 되어있는데, 내용이 일상다반사라면 0, 이별(부정)라면 1, 사랑(긍정)은 2로 라벨링 되어있습니다. 이러한 데이터의 특성에 적합하게 Hello! GPT-2를 응용하여 모델 구조를 설계했다고 합니다.

출처: https://github.com/haven-jeon/KoGPT2-chatbot

각각의 데이터 필드에 매핑하여 P(<챗봇의 응답> | <사용자의 발화>, <감정 라벨>)의 값이 최대가 되는, 즉 이전 내용과 감정 폭을 기반으로 가장 가능성이 높게 도출될 수 있는 <챗봇의 응답>이 챗봇의 응답이 되도록 합니다.

Usage

  • Demo 사용하기
    위 과정을 거쳐 모델을 생성하였고, opyrator를 이용해 유저가 Chatbot 모델인 컴컴이에게 말을 걸면 컴컴이가 답하는 구조의 사이트를 간단하게 생성하였습니다.

    심심하시다고요? link에서 컴컴이와 대화해보세요.

  • API 사용하기
    Ainize가 제공하는 API를 이용하여 KoGPT2-Chatbot을 사용해보겠습니다. API에 관한 내용은 link에서 확인할 수 있습니다.

KoGPT2-DINO

이번에는 GPT 모델을 이용해 데이터 세트를 만드는 Datasets from Instructions (이하 DINO 🦕) 와 KoGPT2 모델을 이용한 KoGPT2-DINO를 소개 해 드리겠습니다.

KoGPT2-DINO는 soeque1님께서 KoGPT2와 DINO를 이용하여 개발되었으며, 이를 통해 새로운 한글 데이터 세트를 만들어낼 수 있습니다. 샘플 job으로는 동일 의미의 문장, 유사 의미의 문장, 다른 주제의 문장이 만들어 집니다.

Usage

Label은 생성된 text의 유형을 나타내며 0은 다른 주제 문장, 1은 유사 의미 문장, 2는 동일 의미 문장을 나타냅니다.

  • DEMO 사용하기

Ainize가 제공하는 Demo를 이용하여 KoGPT2-DINO를 사용해보겠습니다.


ADD 버튼을 통해 입력 문장을 더 추가할 수 있습니다. 3개의 문장을 입력하고 Submit 버튼을 눌러 결과를 확인해 보았습니다. 모든 문장이 새로운 데이터를 만들어 낸 것은 아니지만, 여러가지의 새로운 데이터가 만들어졌습니다. 해당 Demo는 link에서 확인할 수 있습니다.

  • API 사용하기

이번엔 Ainize의 KoGPT2-DINO API를 사용해보겠습니다.

이런 방식으로 API를 호출하여 사용할 수 있습니다. 여기서 text_a는 입력받은 문장이고, text_b는 생성된 문장입니다. API는 link에서 확인해 볼 수 있습니다.

GPT-2의 한국어 버전이 있다니 신기하지 않나요? 지금까지 소개드린 모델들을 무한으로 즐겨보세요! 이후에 KoGPT2를 활용한 다른 모델이 나온다면 소개해 드리겠습니다. 긴 글 읽어주셔서 감사합니다~

레퍼런스

  1. SKT AI
  2. The Illustrated GPT-2 (Visualizing Transformer Language Models)
  3. KoGPT2 Github
  4. KoGPT2 Ainize
  5. KoGPT2 Chatbot Github
  6. KoGPT2 Chatbot Ainize
  7. Chatbot Data
  8. Opyrator Github
  9. KoGPT2 Dino Github
  10. KoGPT2 Dino Ainize

AI 네트워크는 블록체인 기반 플랫폼으로 인공지능 개발 환경의 혁신을 목표로 하고 있습니다. 수백만 개의 오픈 소스 프로젝트가 라이브로 구현되는 글로벌 백엔드 인프라를 표방합니다.

최신 소식이 궁금하시다면 아래 커뮤니케이션 채널을 참고해주시기 바랍니다. 다시 한 번 감사합니다.

AI네트워크 공식 홈페이지: https://ainetwork.ai/

공식 텔레그램: https://t.me/ainetwork_kr

아이나이즈(Ainize): https://ainize.ai

유튜브: https://www.youtube.com/channel/UCnyBeZ5iEdlKrAcfNbZ-wog

페이스북:https://www.facebook.com/ainetworkofficial/

포럼:https://forum.ainetwork.ai/

AIN Price chart: https://coinmarketcap.com/currencies/ai-network/onchain-analysis/

profile
성창엽(26)/???

3개의 댓글

comment-user-thumbnail
2021년 5월 18일

비트코인한다고 챗봇이 우네요ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

1개의 답글
comment-user-thumbnail
2022년 8월 27일

이해가 완벽히 됐어요! (사실 1분도 안 봄)

답글 달기