안녕하세요 콥스랩(COBS LAB)입니다.
오늘 소개해 드릴 논문은 ‘LaMDA : Language Models for Dialog Applications’입니다.
해당 내용은 유튜브 ‘딥러닝 논문 읽기 모임' 중 ‘LaMDA’ 영상 스크립트를 편집한 내용으로, 영상으로도 확인하실 수 있습니다. (영상링크:https://youtu.be/re2AiBnFGGk)
LaMDA 모델 같은 경우는 2021년 Google I/O 에서 발표되었던 논문입니다.
BERT와 GPT, Transformer Chatbot을 키워드로 구성되어 있음을 알 수 있습니다. 이 논문은 단어의 시퀀스의 확률을 할당하는 Large scale LM 모델 방법과 직접 labeling 한 데이터로 Fine tuning 한 Transformer 계열의 대화 task를 위한 언어 모델이라고 이해해주시면 됩니다. 그래서 Google CEO가 직접 2021년에 발표를 했고 오른쪽 그림은 LaMDA가 이렇게 행성으로 페르소나를 가지고 서로 대화하는 모습을 Google I/O 에서 보여주셨습니다.
Language 모델은 단어의 시퀀스의 확률을 할당하여 다음에 어떤 단어가 올지를 prediction 하는 모델을 언어 모델이라고 합니다. 그래서 unlabel 된 방식의 사전학습 성능을 높이기 위해서는 보통 Large scale Language 모델을 사용하거나 데이터셋의 크기를 키우는 방법을 사용합니다. 특히 데이터셋의 사이즈는 Chatbot의 Quality에 큰 영향을 미친다고 이미 많은 논문에서 증명이 되었습니다.
GPT3 같은 경우는 Transformer의 Decoder구조로 이전의 단어들을 바탕으로 이후에 단어를 예측하는 방식으로 사전 학습합니다. NLG task에 Fine tuning 되어 있는 모델입니다.
이에 반해 LaMDA 같은 경우는 두 가지 방법을 모두 적용하여 Transformer 계열의 대화 task를 위한 Language 모델입니다. 사이즈 같은 경우는 2B에서 137B의 파라미터를 가지고 있고, 사전 학습 데이터셋 같은 경우는 public texts로 약 1.56T words를 사용하였습니다.
Related Work입니다.
기존에 Language 모델 and Dialog 모델에서 어떠한 연구가 진행되었는지, Dialog metrics에서 어떤 metric를 가지고 평가를 썼었는지, 요즘 가장 이슈가 되고 있는 Safety and safety of dialog models에서 어떻게 기존의 논문들과 어떤 비슷한 연구들이 있었는지.
마지막으로 정확도가 높아야 되니까 Groundedness metrics를 어떻게 만들었는지에 대해서 참고하고 있는 논문들에 대한 리스트, 그리고 그 논문들에 대한 간략적인 설명이 있었습니다.
대략적으로 보시면 Language 모델 같은 경우는 LM을 dialog 모델에 적용하고 scaleing만으로는 성능 향상이 어렵고, 그래서 모델이 스스로 외부 지식을 가지고 와서 함께 답변하는 방법을 찾는 연구를 찾아볼 수 있었습니다.
Groundedness metrics을 위해서 external knowldege 및 사고, 응답 unit을 분리하는 이러한 방법들에 대한 Related Work가 소개되어 있습니다.
Dialog metrics 같은 경우는 인간 중심의 평가지표를 도입해서 단순한 정량적 지표 외에 인간의 평가를 집어넣는 방향으로 많이 진행되고 있고 각각의 지표가 개별적으로 평가되도록 하고 있는 방향성이 있습니다.
Safety and safety of dialog models 같은 경우는 잘못된 데이터를 학습한 Language 모델이 위험성이 크다는 것을 뉴스를 통해서 많이 알고 있었고 이런 문제들이 있었으니까 Toxicity나 bias나 개인정보 이러한 민감한 정보들을 회피하기 위한 방법에 대한 논문들이 소개되어 있습니다.
마지막으로 Groundedness 평가를 위해 외부 crowd workers의 도움을 받는 방법에 대해서 이야기가 되어있고 여기서 crowd workers 같은 경우는 우리가 수동으로 라벨링 해주는 문장을 보고 어떤지를 라벨링해주는 분들을 crowd workers라고 생각하시면 될 것 같습니다.
LaMDA의 Pre-training object 같은 경우는 next token을 prediction 합니다. 데이터셋 같은 경우는 Public dialog 데이터와 Public web documents를 대량의 데이터를 사용하였습니다.
그리고 보통은 Dialog 데이터로만 학습하는 기존의 모델들과는 다르게 Public web documents 같은 경우도 많이 사용했다는 것이 큰 특징입니다.
1.12B dialogs, 13.39B dialog utterances, 2.97B documents, 1.56T word들을 사용했습니다.
Meena에 비교하면 약 40배 데이터셋을 사용하게 된 건데, Meena 같은 경우는 Google이 LaMDA 이전에 발표한 Language 모델입니다. dialog task를 위한 이 데이터는 약 50%는 Public forums에 있는 dialog를 사용하였고 약 12.5 % 경우는 웹 크롤링을 통해서 사용하였고 나머지 12.5퍼센트 같은 경우는 Q&A나 tutorials 같은 document에서 가지고 왔고 또 12.5%는 위키피디아, 6.25%는 영어로 된 웹 다큐멘트, 그리고 영어로 되지 않은 웹 다큐멘트에서 6.25%에 데이터를 가져와서 학습시킨 걸로 되어 있습니다.
결론적으로 약 90% 이상의 데이터는 영어 데이터를 가지고 학습시켰습니다. Tokenization 같은 경우는 byte pair encoding 알고리즘을 사용할 Tokenization 되어 있고, SentencePiece library를 사용하였습니다. Pre-training 과정에서 사용된 총 토큰수는 2.81T이고 vocabulary는 32K입니다.
Architecture는 decoder only Transformer의 구조로 되어있고 137B의 파라미터가 사용되었습니다. 이는 Google이 LaMDA 이전에 발표했던 Meena에 약 50 배 정도라고 합니다. 64개의 레이어, 8192개의 embedding dimension, 65536개의 feed-forward dimension, 128개의 ber of heads, 128개의 key, value dimension입니다.
밑에 표에 보시면 2B, 8B 137B 같이 다양한 파라미터들을 가지고 학습하여 성능을 비교한 것을 볼 수 있습니다.
Decoding Strategy는 sample and rank strategy로 먼저 후보 response를 추출하고 그다음에 top-k beam search를 통해서 정리를 하고 그중에 log-likelihood와 길이에 따른 스코어가 가장 높은 response를 채택하여 마지막으로 Decoding을 진행합니다.
기존에 발표했던 Meena에서 제안한 방법과 동일하지만 hyperparameter가 약간 다른 것을 알 수 있습니다.
이 모델을 평가하기 위한 metrics가 되게 길고 자세하게 표현되어 있습니다. 이 metrics 같은 경우는 크게 Foundation Metrics와 Role Specific Metrics에 대해 크게 두 가지로 나누게 됩니다. 그리고 Foundation Metrics 같은 경우는 Quality, Safety, 그리고 Groundness로 총 세 가지로 구분이 되어 있습니다.
Role Specific Metrics 같은 경우는 Helpfulness와 Role Consistency로 두 가지로 구성되어 있습니다.
Quality는 SSI라고 불리는 Sensibleness, Specificity, Interestingness 이 세 가지의 스코어를 평균을 내게 되는데 Sensibleness 같은 경우는 생성 모델의 발화가 문맥상으로 자연스러운지, 이전의 대화와 모순이 되지 않는지를 평가하게 되고 Specificity는 해당 문맥에서만 말이 잘 되는지를 평가합니다.
마지막으로 Interestingness 같은 경우는 상대방의 관심, 궁금증을 유발하는 좀 더 흥미 있게 대답하는지를 평가하는 지표로 Quality 같은 경우는 SSI 이 세 가지를 가지고 평가를 하게 됩니다. 그래서 0부터 1로 평가하게 되고 점수는 높을수록 좋은 스코어를 가지게 됩니다. 이러한 답변에 대한 Quality 뿐만 아니라 최근 문제가 되고 있는 Safety에서도 의도치 않은 부작용과 피해 사례를 배제하기 위해서 harm과 bias와 악의적인 이용들 이런 것들은 Google의 Ai principles에 따라서 object를 도출하게 된다고 합니다.
그래서 최근 large scale Language 모델의 윤리적인 논리와 같은 맥락으로 사용하고 있다고 합니다.
Groundness는 현지 언어 모델들은 그럴듯하지만 사실과 다른 내용을 생성하는 경우가 있기 때문에 평가하게 됩니다. 그래서 외부 소스에 근거한 cross checking을 진행하게 됩니다.
groundness는 외부 지식의 대한 주장 중 알려진 소스에 의해 뒷받침되는 주장의 비율
informativeness는 전체 중 알려진 소스에 의해 뒷받침되는 외부 지식을 포함하는 경우의 비율
citation accuracy는 외부 지식을 언급한 발화 같은 경우는 소스의 URL를 인용한 경우의 비율을 사용합니다.
Role Specific Metrics는 이 application specific role에 적합한 지에 대한 metrics를 봅니다. Helpfulness는 사용자의 정보가 일치하는 내용인지, 사용자가 실제로 도움이 된다고 느끼는지를 평가합니다.
Role Consistency는 response가 기대되는 역할에 부응하는지, 대화 내 consistency와는 별개로 대화에서 정의한 역할의 consistency를 측정합니다.
LaMDA의 Fine tuning과 evaluation data입니다.
그래서 Quality적인 측면에서는 6400개 dialogue를 직원들에게 LaMDA와의 대화를 해서 알아내도록 하고 LaMDA가 각 대답에 대해서 이게 말이 되는지, 정확한 지, 흥미로운 지에 대해서 ‘예’ ‘아니요’ ‘아마도’ 이 세 가지 종류로 label을 달도록 했습니다. 그래서 label들을 가지고 Fine tuning을 합니다.
Safety도 문제가 될 수 있는 부분 예를 들어서 위험을 불러일으킬 수 있는 문장이 들어 있는지, 특히나 문제가 되고 있는 차별적인 발언 어떠한 특정 집단에 대한 혐오나 어떤 사람이나 집단, 인종 그리고 이런 편견을 가진 어떤 장애를 가진 사람들에 대한 차별적인 정보가 있는지에 대해서 평가를 합니다.
SSI와 비슷하게 48K의 회수와 8K의 dialogue를 랜덤 하게 뽑아서 직원들이 대화를 나누고 평가 metrics를 가지고 평가를 해서 Fine tuning 하는 과정을 거칩니다.
Groundedness는 해당 정보가 외부 지식이 필요한지에 대한 평가를 합니다. 상식이 아니고 외부 지식이 필요한 답변의 경우 답변을 추가하고 외부 답변이 포함되어 있는 URL를 함께 달도록 모델링을 합니다.
Fine tuning는 Pre train 된 LaMDA를 가지고 What's up? RESPONSE not much라는 문장에 대해서 SSI. Sensibleness, Specificity, Interestingness 세 가지의 태그를 가지고 스코어를 매겨서 Fine tuning을 진행합니다. 그래서 SSI와 safety에 대한 평가를 예측할 수 있도록 Fine tuning 하고 그 안정성에 대한 threshold를 넘지 못하는 후보는 제거를 해서 최종적으로 진행 response를 만들어냅니다. 그리고 이 스코어는 SSI가 똑같이 주는 게 아니라 웨이트를 줘서 가장 높은 점수를 가진 모델이 다음 단계로 넘어가도록 선택을 합니다.
LaMDA에서 큰 특징이 있습니다. LaMDA에서는 말이 되는 듯한 답변을 내놓지만 꼭 그게 정확한 사실은 아닐 수가 있기 때문에 외부에서 믿을만한 정보가 있는지에 대해서 찾아서 다시 이 외부에 있는 데이터를 가지고 답변을 더 추가적이고, 더 세부적이고 정확하게 하는 모델을 포함하고 있습니다. 그래서 먼저 학습 데이터 양을 늘려서 매번 현재 시간과 같이 매번 업데이트되는 답변에 대한 정확한 답을 해주지 않기 때문에 추가적인 외부 정보를 가지고 학습 데이터를 늘리는 방법이 있습니다.
여기서 ts라고 불리는 Tool set을 가지고 외부의 API를 만들어 놓고 질문과 답변들을 리스트 형태로 만들어 놓아서 필요할 때마다 거기서 질문에 query를 날려서 다시 Response를 가지고 답변을 더 명확하게 하는 방법을 사용하고 있습니다.
Tool set을 사용하는 example입니다. 노란 부분이 인풋 모델, 파란색 부분이 우리가 만들고 있는 LaMDA 모델 그리고 빨간 부분이 TS. Tool Set이라고 불러서 외부에서 데이터를 가지고 오는 리스트를 만들어서 외부에서 데이터를 가지고 오는 것.
그래서 질문 보면 에펠타워가 언제 만들어졌냐고 물어봤는데 첫 번째 대답은 그냥 단순히 1887년. 외부에서 데이터를 가지고 와서 1887년 1월 28일부터 공사를 시작했다 그래서 다시 또 진행을 하면서 점점 response에 대한 답변을 좀 더 구체화하고 정확하게 만들어가는 다이어그램을 볼 수 있습니다.
foundation에 대한 result입니다. 이는 두 가지의 Fine tuning을 나눠서 평가를 하게 됩니다. Ft quality safety와 FT groundedness입니다.
Ft quality safety는 Pre train 된 모델은 Quality와 safety 라벨을 구분하는 discriminator를 학습하게 되고 LaMDA 추론 기는 먼저 safety 스코어를 보고 필터를 거쳐 weighted sum을 한 세 개의 Quality 스코어로 re-ranking을 해서 FT 스코어 safety를 만들어 냅니다.
FT groundedness는 External information을 호출하는 정보 추출 시스템을 이용하여 attribute 한 대답을 제공합니다. 그래서 이 safety Quality와 해당 정보 타입을 jointly learning을 하는 과정을 진행합니다.
기존에 단순히 Pre train만 되어 있는 PT가 있고, 이 초록 부분이 사람이고, 빨간 부분이 PT에다가 Fine tuning까지 더한 LaMDA 모델에 스코어를 보여주고 있습니다.
그래서 대부분의 스코어에서 LaMDA 모델이 기존에 GPT3 같은 모델보다 훨씬 좋은 스코어를 보여주고 있고 특정한 부분에서는 거의 사람과 비슷한 성능을 보여주고 있습니다.
그래서 LaMDA는 일부 metrics에서는 사람과 거의 비슷한 성능을 보여주고 모델 사이즈가 크면 클수록 그리고 Fine tuning을 할 때마다 더 좋은 성능을 보여주고 있습니다.
LaMDA는 도메인에 적절하게 답변을 할 수 있도록 개발되어 있는 모델입니다. Domain grounding이라고 부르는데 예를 들어서 에베레스트산과 같은 유명한 사물을 자기 자신을 의인화하여 교육적으로 답변을 해주는 경우도 있고, 음악을 추천하여 인공지능으로 역할을 하는 경우도 있습니다.
Chatbot이 단순히 대화만 해주는 그런 게 아니라 아까 Google의 CEO 같은 경우는 명왕성인 것처럼 페르소나를 Chatbot 모델에 줘서 페르소나에 맞춰서 답변을 할 수 있도록 개발되었습니다.
그래서 오히려 저희가 스코어를 비교해보면 오히려 스코어도 더 정확하고 이 role의 역할이 정확하게 모델이 만들어져 있다. 그래서 이렇게 LaMDA가 뮤직에 관련된 페르소나를 가질 때와 에베레스트 페스 소나를 가질 때 답변을 하는 게 좀 다르다는 것을 확인할 수 있습니다.
기존의 PT와 LaMDA를 비교했습니다.
질문에 대한 어떤 답변에 대해서 어떻게 비교했는지 metrics가 있습니다. PT는 에버레스트가 너무 성급히 가장 높은 산이라고 답하였습니다.
질문이 뭐였냐면 에베레스트가 얼마나 높냐고 물어보는 질문입니다. 여기에 대해서 PT는 그냥 단순히 가장 높은 산이라고만 답변했지만 LaMDA는 정확하게 2900 feet라고 대답을 했습니다.
둘 다 consistency에서는 비슷한 점수를 받았고, Music recommendation도 매우 좋은 성능을 보였습니다. 그래서 음악을 아무거나 틀어줘라고 했을 때 이러한 모호한 답변에서도 LaMDA는 문맥에 따라서 음악을 좀 더 정확하게 추천해 줬습니다.
논문의 뒷부분에는 Google 팀이 많이 노력을 했음에도 불구하고 limitation이 있었습니다.
첫 번째는 다양한 bias가 우리가 알게 모르게 들어가 있는 경우가 많아서 이것들을 detect 하는 게 쉽지 않다는 이야기가 있었고, 이것이 대화하는 모델이다 보니까 Adversarial 한 대화를 많이 넣었는데 LaMDA가 safety object를 어기는 경우가 좀 있었다고 합니다.
그리고 다양한 safety object를 하나의 metrics만 만들게 되다 보니까 이 다양한 object들을 반영하지 못하고 weighting을 가지고 object들을 관리하기가 어려웠다고 합니다.
그리고 Safety와 Quality가 minimum threshold에 만족하여야 더 많은 데이터가 필요했다고 하고, 라벨링을 하는 crowd worker도 대표성을 찾기가 어렵다고 했습니다.
실제로 이 논문에서는 이 crowd worker가 어떤 사람들로 구성되어 있는지 보여주게 되는데 Cultural responsiveness 문제를 해결하기 위해 디테일하게 이 논문에서 얘기해주고 있습니다.
LaMDA는 의인화하여 페르소나를 가지고 있기 때문에 사람과 같이 자연스럽게 대화를 하는 게 어려웠다고 합니다.
결론입니다. LaMDA는 Fine tuning에 대한 중요성을 확인하였고, Dialog 모델링에서 외부 API를 사용하여 information retrieval의 중요성을 확인하였습니다. 그리고 pre training only 기준의 모델들보다 LaMDA based application이 더 helpful 한 결과를 보여줬다고 Conclusion을 내리고 있습니다.
댓글