#인공지능 

자연어처리 AI 모델 PaLM을 소개합니다.

2022년 4월 구글에서 PaLM이라는 AI 모델을 소개했습니다. PaLM은 언어 생성 및 이해 능력, 추론 능력, 코딩 작성 및 오류 수정 능력 등에서 기존의 NLP 모델보다 더 높은 성능을 보이고 있습니다. 이 콘텐츠에서는 PaLM을 소개합니다.

2022-10-31 | 박은지

2022년 4월은 놀라운 인공지능 모델 2개가 소개된 달이었습니다. 그건 바로 OpenAI의 DALL-E 2와 구글의 PaLM이었습니다. 하지만 시각적으로 멋진 결과를 보여주었던 DALL-E 2가 대중의 시선을 끌어서 상대적으로 PaLM은 사람들에게 많이 알려지지 않을 것 같습니다. 하지만 PaLM은 DALL-E 2에 못지 않을 정도로 놀라운 성능을 가지고 있고, 특히 태스크에 관계 없이 모든 문제를 풀 수 있는 모델입니다. 어쩌면 일반 인공지능(AGI, artificial general intelligence)으로 나아갈 수 있는 첫 단추라고 볼 수 있는 모델이죠. 지금부터 PaLM을 설명하고 PaLM이 할 수 있는 태스크와 성능을 알아보고자 합니다.

 

PaLM이란?

2022년 4월 구글은 5400억 개의 파라미터를 사용하여 많은 언어 이해 및 생성 태스크에서 좋은 성능을 보인 PaLM이라는 모델을 공개했습니다. PaLM은 2021년 구글에서 발표한 Pathways를 위한 비전, 즉 다양한 도메인과 태스크를 효율적으로 해결할 수 있는 단일 모델을 개발하기 위한 첫걸음이라고 볼 수 있습니다.

 

PaLM – 5400억개의 파라미터 & Transformer 구조 사용

PaLM은 5400억개의 파라미터를 사용하였고, 단일 모델을 효과적으로 학습하도록 하는 Pathways system으로 학습하고 고밀도(dense) decoder만 이용한 Transformer 모델입니다. PaLM으로 수백 개의 언어 이해 및 생성 태스크를 평가했을 때, 대부분의 태스크에서 뛰어난 성능을 보였다고 합니다. 참고로 Pathway는 차세대 인공지능(AI) 아키텍처로, 하나의 AI 알고리즘에 영상, 오디오, 텍스트, 이미지 등 다양한 데이터 형식을 포괄하는 다중 학습모드를 지원할 수 있도록 하는 아키텍처입니다.

아래 이미지와 같이 모델이 커질수록, 즉 파라미터가 많아질수록 수행할 수 있는 태스크 종류가 많아지고 성능도 높아지는 것을 볼 수 있습니다. PaLM은 위에서 언급했듯 Pathway system을 대규모로 사용한 첫번째 모델입니다. PaLM은 데이터 학습을 위해 가장 큰 TPU 기반의 시스템 구성인 6,144개의 칩을 사용했습니다. 이전의 NLP 모델들과 달리 2개의 클라우드 TPU v4 Pod에서 모델 병렬성을 사용하였다고 합니다. 모델 병렬성 전략과 병렬성을 사용하기 위해 트랜스포머를 개조하였기 때문에 학습 효율성이 높아졌고 속도도 빨라졌다고 해요.

모델이 커질수록 다양한 태스크를 수행할 수 있는 능력이 커집니다.

모델이 커질수록 다양한 태스크를 수행할 수 있는 능력이 커집니다.

 

PaLM의 데이터셋과 전처리과정

PaLM은 고품질의 웹 문서, 책, 위키피디아, 대화문, 깃헙 코드 등으로 구성된 영어와 다국어 데이터를 조합하여 학습되었습니다. 특히 코드에서 중요한 공백을 포함시키고, 어휘집에 없는 유니코드는 바이트 단위로 나누고, 숫자를 각 자리 수마다 각각의 토큰으로 나누는 “무손실(lossless)” 어휘집을 만들었다고 합니다. 기존의 NLP 전처리 과정에서 제거되는 정보를 최대한 살리려고 노력한 것 같습니다. 이런 노력의 결과로 PaLM은 기존 NLP 모델보다 더 좋은 성능을 보이고 심지어 평범한 사람들보다 언어 이해/처리 능력이 뛰어날 수 있었던 것 같습니다. 🙂

 

다양한 자연어처리(NLP) 태스크에서 높은 성능을 보이는 PaLM

PaLM은 다양한 태스크에서 높은 성능을 보이지만 특히 주목할만한 태스크는 1) 언어 이해 및 생성 2) 추론 3) 코드 생성과 코드 오류 수정입니다. PaLM이 각각의 태스크를 어떻게 해결하는지 함께 보실까요?

언어 이해 및 생성능력

PaLM은 29개의 영어 자연어 처리 문제 중 28개의 문제에서 다른 모델(GLaM, GPT-3, Gopher, LaMDA 등)보다 더 높은 성능을 보였다고 합니다. 아래의 그래프는 PaLM 540B가 대표적인 문제에서 어떤 성능을 보였는지 보여주고 있어요.

영어 NLP 태스크에서 SOTA를 얻은 PaLM 540B

영어 NLP 태스크에서 SOTA를 얻은 PaLM 540B

 

영어 뿐 아니라 번역과 같은 다국어 NLP 벤치마크에서도 PaLM 540B는 높은 성능을 보였는데, 이는 영어가 아닌 다국어 코퍼스가 22%만 있었기 때문에 더 놀라운 결과입니다. 😮

아래 그래프는 BIG-bench(Beyond the limitation Game Benchmark) 중 58개 태스크에서 PaLM의 성능을 다른 모델인 Gopher, Chinchilla, 그리고 사람들과 비교한 것인데, PaLM의 성능이 다른 모델이나 보통 사람들보다 높다는 것을 볼 수 있습니다. 아마도 평범한 사람인 저보다 PaLM이 더 똑똑할 것 같네요. 🧐

  • BIG-bench: 대규모 모델을 평가, 파악하기 위해 만든 벤치마크로, 최근 200개 이상의 새로운 태스크를 발표하였습니다.

 

58 Big-bench task에서의 PaLM의 성능

58 Big-bench task에서의 PaLM의 성능

 

또한 PaLM은 원인과 결과를 구별하기, 적당한 상황에서 개념적인 설명하기, 이모지로부터 영화를 추측하기, 유사어 찾기, 역설 찾기 등의 다양한 BIG-bench 태스크에서 상당한 성능을 보였습니다. 아래의 이미지는 PaLM이 이런 태스크를 어떻게 수행하는지를 잘 보여주고 있습니다. 여러분들도 함께 문제를 풀어보세요. 여러분들은 PaLM보다 문제를 잘 해결하실 수 있겠죠?

 

PaLM이 해결한 다양한 BIG-bench 태스크의 예시

PaLM이 해결한 다양한 BIG-bench 태스크의 예시

 

추론 능력

사고 사슬(chain-of-thought) 프롬프트를 사용한 PaLM은 다단계의 산술 계산이나 상식 추론 문제에서 획기적인 성능을 보였다고 해요. 사고 사슬 프롬프트는 사람이 사고하는 것과 비슷하게 추론 문제를 해결할 때 중간 추론 단계를 넣는 것이에요. PaLM 540B은 3개의 산술 데이터와 2개의 상식 추론 데이터를 통한 사고 사슬 프롬프트를 이용하였습니다. 그래서  8천 500개의 수준 높은 초등학교 수학 문제로 구성된 GSM8K의 58%를 해결했다고 해요. 이는 55%의 성능을 보인 GPT-3 175B보다 높은 결과이고, 9-12세 아이들의 평균 점수의 60%와 비슷한 수준이라고 합니다.

아래의 이미지는 PaLM이 사고 사슬을 이용해 초등학교 수학 문제를 해결하는 예시에요. 왼쪽은 일반적인 프롬프트이고, 오른쪽은 사고 사슬을 이용한 프롬프트이죠. PaLM은 문제를 정확히 맞출 뿐 아니라 정답의 이유까지 명확하게 제시하고 있어요.

초등학교 수학 문제를 chain-of-thougt를 사용하여 해결하는 PaLM

초등학교 수학 문제를 chain-of-thougt를 사용하여 해결하는 PaLM

 

또한 PaLM은 다단계 논리적 추론, 세계 지식, 깊은 언어의 이해가 필요한 상황을 명시적으로 설명을 할 수 있습니다. 예를 들면 웹 상에서 찾을 수 없는 참신한 농담도 수준 높게 설명을 할 수 있다고 해요.

아래의 예시를 보면 “구글이 TPU 팀을 위해 말을 잘하는 고래를 채용했다. 그 고래는 두 개의 다른 pods 사이에 소통하는 법을 알려주었다.”라는 농담이 나옵니다. 이게 무슨 뜻일까요?

아무리 봐도 이해하기 어려운 내용인데요, PaLM은 저보다 농담을 잘 해석하네요. 😝 이 농담은 TPU 그룹과 고래 그룹이라는 뜻을 가진 pods라는 단어의 이중적인 뜻을 이용한 것이었어요. 맥락을 알지 못하는 이해하기 어려운 농담을 PaLM은 이해하기 쉽게 잘 설명을 하는 것을 볼 수 있었습니다.

 

2 shot 프롬프트로 농담을 설명하는 PaLM

2 shot 프롬프트로 농담을 설명하는 PaLM

 

코드 생성 및 코드 오류 수정

PaLM 540B는 사전 학습 데이터셋에 겨우 5%만 코드가 있었지만 자연어로부터 코드 생성, 언어간 코드 번역, 컴파일 오류 수정 등의 코딩 및 자연어 작업에서 좋은 성능을 보였습니다. 뿐만 아니라 50배 적은 파이썬 코드로 학습하였지만 OpenAI의 Codex 120B와 동등한 수준의 성능을 보였어요. 이는 다른 프로그래밍 언어와 자연어 데이터로부터 학습이 더 잘 전달되기 때문에 더 큰 모델이 작은 모델보다 효율적이라는 주장을 공고히 한다고 해요. 그래서 파라미터가 점점 더 큰 모델이 계속 나오고 있는 것 같아요.

우리가 일상적으로 사용하는 언어를 사용해 지시 사항(프롬프트)을 쓰면 PaLM 540B가 알아서 코드를 생성해주는 것이 신기하지 않나요? 앞으로는 인공지능을 활용하면 코드를 쉽게 작성할 수 있을 것 같아요. Copilot처럼요.

PaLM의 코드생성 예시

PaLM의 코드생성 예시

 

아래의 이미지는 파이썬 코드 데이터만 사용하여 PaLM을 미세조정(fine-tuning)한 PaLM-Coder가 코드 오류를 해결한 모습을 보여주고 있어요. PaLM-Coder는 딥러닝을 사용한 C 언어 오류 수정 작업(DeepFix)을 높은 성능으로 수행한다고 해요. 앞으로 PaLM-Coder를 사용하면 더 복잡한 코드 오류 문제도 쉽게 해결할 수 있을 것 같습니다. 😊

PaLM-DeepFix Code 수정 태스크

PaLM-DeepFix Code 수정 태스크

 

마무리하며

지금까지 PaLM이 수행할 수 있는 대표적인 태스크를 살펴 보았습니다. 훌륭한 성능을 보여주고 있는 PaLM을 통해 구글은 Pathways로 가기 위한 첫걸음을 한발짝 내딛었는데요, 구글의 비전처럼 하나의 모델로 수만 가지 태스크를 수행하고 다양한 데이터를 이해할 수 있는 자연어 처리 모델이 언젠가 나올 수 있기를 바라면서 글을 마치겠습니다.

참고: PaLM 논문을 쓴 저자 중에는 한국인도 포함된 것 같습니다. 구글 인공지능 팀에 한국인이 많아져서 언젠가 구글에서 한국어 태스크도 잘 수행할 수 있는 모델이 나왔으면 좋겠습니다. 😊

구글에 입사할 수 있는 실력을 갖추고 싶으신가요? 함께 탐험하며 성장하면서 인공지능을 학습할 수 있는 AI학교 AIFFEL아이펠(AIFFEL) 내움배움클래스를 살펴보세요!

 

#인공지능 #PaLM #NLP # 자연어처리모델 #딥러닝

참고 자료