2022년 11월 30일 인공지능 역사에 한 획을 긋는 대사건이 벌어집니다. 나아가 인류의 역사에 큰 변동을 불러일으켰다고 해도 과언이 아닐지도 모릅니다. 아마 예상했을 수도 있지만 이 날은 ChatGPT의 공식 출시일입니다. ChatGPT는 OpenAI에서 개발한 인공지능 챗봇입니다. ChatGPT는 Google이 2017년 발표한 논문 Attention is all you need에서 제안한 트랜스포머 아키텍처를 기반으로 한 GPT(Generative Pre-Trained Transformer) 모델을 입력된 프롬프트에 대해 사람과 같은 채팅 형식의 텍스트를 생성하도록 미세조정한 것입니다.
ChatGPT는 출시한지 5일만에 100만명의 사용자를 달성하여 큰 화제가 되었습니다. 세계적인 인기를 끌고 있는 서비스들이 출시된지 몇 달, 또는 몇 년이 걸려 100만 사용자를 확보하였다는 사실과 비교하면 놀라운 성과입니다. 물론 최근 출시된 서비스일수록 사용자 확보가 유리하긴 하지만, 본격적으로 코로나 19가 확산된 2020년 1분기에 넷플릭스의 구독자가 1500만명 증가하였고, ChatGPT는 출시 이후 두 달 만에 사용자 수가 1억을 달성했다는 사실을 감안하면 정말 혁명적인 사건입니다.
ChatGPT의 거대한 성공은 이내 인공지능에 대한 세계적인 관심으로 이어집니다. 실제로 2022년 말을 기점으로 AI에 대한 검색 횟수는 급격하게 증가합니다. 이와 인공지능에 대한 투자와 연구도 더욱 활발하게 이루어지고 있습니다.
인공지능의 연구 분야는 다양합니다. 그 중 유명한 몇 가지를 꼽는다면, 거의 항상 컴퓨터 비전과 자연어 처리 분야가 포함될 것입니다. 그런데 인공지능의 역사를 생각해보면, 컴퓨터 비전이 자연어 처리보다 한 발 앞서 발전한 것 같다고 느껴집니다. 실제로 NLP에서 사용하는 여러 기법이 CV에서 영감을 받은 경우가 많이 있습니다. 대표적인 예시가 전이학습(transfer learning)인데, ImageNet의 사전 학습 - 파인튜닝(pretraining and fine-tuning) 패러다임은 컴퓨터 비전 분야에서 크게 성공한 후, 이에 영감을 받아 NLP에서도 contextualized representations의 지식 전이를 활용한 CoVe, BERT와 같은 개념이 제안되었습니다.
조금 더 구체적인 통계적 근거도 존재합니다. 다음과 같이 인공지능의 각 분야에 대한 논문이 출판된 개수를 보면 그동안 컴퓨터 비전이 자연어 처리보다 활발하게 연구되어 온 것을 알 수 있습니다.
그렇다면 왜 컴퓨터 비전이 자연어 처리 분야보다 빠르게 발전하였을까요? 그 이유는 여러가지가 있을 것입니다. 아마 딥러닝을 공부한 사람은 가장 먼저 데이터의 성격을 떠올릴 것입니다. 조금 더 일반적인 경우는 눈으로 보는 것과, 이를 표현하는 것의 차이를 생각할 것입니다. 이를 비롯한 다양한 이유를 하나씩 살펴보겠습니다.
NLP와 CV의 데이터가 갖는 특성
딥러닝에 입문자가 따르는 전형적인 학습 순서가 있습니다. 전통적인 머신러닝 개념이나 선형 모델, 피드포워드 신경망 등을 배우고 나면 합성곱 신경망(CNN)에 대해서 학습합니다. CNN은 보통 이미지 분류 문제와 연관지어 설명하기도 하고, CV에서 주로 사용되는 신경망의 한 형태입니다. 그리고 나서야 시퀀스를 다루는 모델인 RNN에 대해서 학습합니다. 인공지능 교육계의 거장이신 Andrew Ng 교수님의 강의도 이와 같은 커리큘럼을 따릅니다. 이 커리큘럼은 인공지능 모델의 발전사와도 어느정도 관련이 있습니다.
그런데 RNN의 등장과 관련해서 항상 듣는 이야기가 있습니다. 바로 입력이 일정하지 않은 데이터를 처리하기 위한 모델이라는 것입니다. 여기서 바로 NLP가 CV보다 뒤늦게 발전하게 된 원인이 등장합니다. 바로 텍스트는 이미지와 다르게 형식이 일정하지 않다는 것입니다. 이미지는 일정한 형식을 갖습니다. 예를 들어서, 항상 모델은 일정한 크기의 이미지를 입력으로 받아 학습할 수 있습니다. 반면 텍스트는 그렇지 않습니다. 문장의 길이는 항상 일정하지 않고 강제로 일정하게 만들기도 불가능에 가깝습니다. 심지어 기계 번역과 같은 일부 태스크에서는 출력의 크기가 어떻게 될지도 미리 알 수가 없습니다. 따라서 이런 일정하지 않은 형식을 갖는 데이터는 NLP의 발전에 문제가 되었습니다.
학습 데이터의 불균형
그렇다면 데이터의 형식이 일정하지 않으면 어떤 문제가 발생할까요? 모델 학습 관점은 배제하고 여기서도 데이터 관점에서 생각해보겠습니다. 일단 어떤 기준에 따라 데이터 세트를 구축하기 어렵다는 문제가 있습니다. 온라인에서는 방대한 양의 이미지를 손쉽게 수집할 수 있습니다. 물론 더 많은 양의 텍스트가 존재하지만, 학습 데이터로 사용할 수 있느냐를 따져보면 그 양은 상당히 줄어들 것입니다. 텍스트 데이터는 레이블을 생성하기도 매우 어렵습니다.
이에 대해서 조금 더 생각해보겠습니다. 이미지 데이터는 한 번 수집하면 다양한 목적으로 재사용하기 용이합니다. 예를 들어서 분류를 위해서 수집한 데이터를 객체 탐지(object detection)을 위한 데이터셋을 생성하는 데 사용할 수도 있습니다. 텍스트 데이터도 아예 불가능한 것은 아니지만, 그 난이도가 너무 높습니다. 해결하려는 문제에 따라 데이터의 특성이 크게 달라질 여지가 많기 때문입니다. 예를 들어서 문법 오류를 탐지하는 문제는 문법 오류를 포함한 데이터가 필요할텐데, 이 데이터를 다른 태스크에 사용하기는 조금 어렵습니다. 반면 고양이 이미지는 분류 뿐만 아니라 앞서 말했듯 객체 탐지 문제에도 사용될 수 있습니다. 딥러닝 모델의 성능에서 데이터가 갖는 중요성을 생각해볼 때, 데이터 부족 문제가 한 분야의 발전에 얼마나 치명적일 지 알 수 있을 것입니다.
데이터의 특징과 하드웨어 성능
하드웨어의 성능이 두 분야의 발전 속도에 차이를 가져왔다고 하면 조금 의아할 수 있습니다. 이는 하드웨어가 비전 분야에 유리하게 발전했다기보다는, GPU의 특징과 관련이 있습니다. GPU는 행렬 연산을 병렬화하여 처리하는 데 특화되어 있습니다. 그런데, 데이터 형식에 따라 연산을 병렬적으로 수행할 수 있을 수도, 없을 수도 있습니다. 먼저 CV에서 주로 사용하는 CNN인 손쉽게 병렬화가 가능합니다. 예를 들어서 커널을 사용하여 이미지를 필터링하는 등의 합성곱 연산은 서로 다른 이미지 패치에 대하여 병렬적으로 수행될 수 있습니다. 반면 NLP에서는 주로 RNN 계열의 모델을 사용했습니다. RNN은 본질적으로 순차적으로 입력을 처리하는 모델입니다. 즉 입력된 시퀀스의 한 부분을 처리하고 나서야 다음 부분을 처리할 수 있습니다. 따라서 병렬화가 효율적으로 이루어지기 어렵습니다. 물론 현재는 대부분 트랜스포머 기반 모델을 사용하지만, 이는 NLP가 상당히 발전한 이후의 이야기입니다.
데이터의 형식에 따라 메모리에 접근하는 방식에도 차이가 있습니다. 예를 들어 이미지는 주로 연속적이며 규칙적인 패턴을 같습니다. 이런 규칙성은 GPU가 메모리에 효율적으로 접근할 수 있게 합니다. 반면 텍스트는 길이가 일정하지 않기 때문에 GPU 메모리 관점에서 덜 효율적입니다.
또한 데이터의 불규칙성은 배치를 처리하는 데도 문제가 될 수 있습니다. 텍스트의 경우 길이가 일정하지 않기 때문에 배치를 생성하기 위해서는 패딩을 추가하거나 입력의 일부를 잘라내야(truncation)할 수도 있습니다. 이런 추가적인 연산 자체가 하드웨어에 더 많은 부담을 줄 수 있습니다. 이런 부분은 추후 Bucketing과 같은 특수한 기법으로 어느정도 완화되긴 합니다.
언어가 갖는 복잡한 성질
여러 명의 사람이 개에 대한 이미지를 보고 있다고 생각하겠습니다. 각각이 어느 나라 사람이든 다 같은 것을 보고 자신이 본 대상이 개라는 사실에는 이견이 없을 것입니다. 하지만 이를 글로 표현하면 문제가 생깁니다. 모두 자신이 사용하는 언어로 정답을 이야기하려 할 것입니다. 이는 단순히 언어의 차이만을 의미하는 것이 아닙니다. 물론, 언어의 차이 때문에 하나의 공통된 데이터셋을 구축하는 데 어려움을 겪은 것도 사실입니다. 하지만 이는 같은 개념에 대해 모든 사람의 생각이 같지 않기 때문에 문제가 발생합니다. 이처럼 언어는 그 자체로 복잡한 성질을 내재하고 있습니다.
어떤 문장, 심지어는 단어조차도 그 의미가 다양합니다. 흔히 드는 예로 배가 있습니다. 배라는 단어를 보면 신체의 일부인지, 과일인지, 교통수단인지에 따라서 전체 의미를 다르게 생각할 것입니다. 인공지능 모델의 입장에서는 더욱 복잡합니다. 사실 각 단어를 어떤 벡터에 매핑하는 것 자체도 매우 어렵고 제안된지 오래되지 않은 개념입니다. 그런데 처음에는 하나의 단어에 똑같은 벡터를 할당하였습니다. 예를 들어서 위에서 언급한 모든 배가 같은 벡터로 나타납니다. 그러면 모델은 이를 어떻게 이해할지를 결정하기가 어렵습니다. 나중에 contextualized representations 개념이 등장하며 이 문제가 해결되었으나, 자연어 처리의 역사를 되짚어보면 비교적 최근의 일입니다. 여기서는 모델이 단어를 어떻게 벡터로 매핑하는지, 그리고 같은 단어라도 문맥에 따라 어떻게 다른 벡터를 생성하는지에 대한 이야기는 너무 방대하기 때문에 넘어가겠습니다.
물론 같은 이미지를 보고도 의견이 갈릴 수는 있습니다. 하지만 일반적인 경우 이런 일은 언어에 대해서 훨씬 많이 발생할 것이라고 직관적으로 알 수 있습니다.
평가하기 어려운 언어
언어의 복잡성은 곧 이를 평가하는 지표의 개발을 어렵게 만듭니다. 언어에는 정해진 정답이 없습니다. 따라서 어떤 일관적인 기준으로 평가하기 어렵습니다. 조금 더 기술적인 관점에서 생각해보겠습니다. 먼저 CV는 평가 지표가 비교적 직관적입니다. 많은 경우 정확도를 바탕으로 문제를 잘 해결하였는지를 평가할 수 있습니다. 반면 NLP는 태스크에 따라 정말 독특한 평가 지표를 가집니다. 예를 들어 번역이나 요약과 같은 태스크는 정해진 정답이 없기 때문에 정확도를 바탕으로 평가할 수 없습니다. 이렇게 universal ground truth가 합의되기 어려운 문제에 대해서는 평가 지표를 개발하기가 정말 어렵습니다. 레이블을 생성하기도 어려워 평가 지표 개발과 더불어 데이터셋을 구축하기도 어려워집니다. 이 경우 자동으로 정답을 평가하는 지표 뿐만 아니라 보통 사람의 평가(human evaluation)를 요구하기 때문에 비용 면에서도 부담이 커집니다.
어디에서나 사용되는 언어
언어는 모든 순간 모든 장소에서 사용됩니다. 따라서 자연어와 관련된 문제는 그 종류도 정말 많지만 관련 도메인까지 생각하면 정말 방대해집니다. 때때로 자연어 처리 문제는 언어학, 인지 심리학, 사회학 등 다양한 분야에 걸친 지식을 요구하기도 합니다. 심지어 상황에 따라서 단어나 문장이 일반적인 상황과는 전혀 다른 의미를 갖기도 합니다. 사람이라도 상황에 따른 단어의 의미를 모두 구분하기 쉽지 않을텐데, 이러한 상황을 모두 고려하여 언어를 모델링하는 것은 정말 난도가 높은 문제입니다.
심지어 전문적인 도메인을 다루는 상황이 아니어도, 방언, 속담, 풍자 등 다양한 언어학적 현상 때문에 발생하는 어려움들이 정말 많습니다. 이러한 어려움들은 기본적으로 언어를 어떤 벡터로 매핑하는 언어 모델링을 어렵게 하기 때문에, NLP의 발전에서 걸림돌이 될 수밖에 없습니다.
컴퓨터 비전에 이루어진 투자와 인프라
컴퓨터 비전을 응용한 대표적인 실사례로는 의료 분야와 자율 주행이 있습니다. 예를 들어 객체 탐지 기술을 활용하여 질병을 진단할 수 있습니다. 실제 응용 사례가 많다는 것은 그만큼 투자가 많이 이루어졌다는 것을 의미하기도 합니다. 자율 주행, 보안, 헬스케어 분야에 이루어진 투자는 CV가 빠르게 발전하는 원동력이 되었습니다. 실제로 NLP와 CV의 시장 규모를 보아도 NLP의 시장 규모가 커진 것은 정말 최근의 일입니다.
투자가 많이 이루어지면 자연스럽게 인프라도 발달합니다. 딥러닝의 초기 프레임워크는 주로 컴퓨터 비전에 초점이 맞추어져 있었습니다. 예를 들어 Caffe나 Theano 같은 라이브러리는 CNN을 위한 추상화 클래스를 제공하였습니다. 반면 시퀀스 처리, 어텐션 메커니즘과 같은 NLP를 위한 기능을 포함한 프레임워크인 TensorFlow나 PyTorch는 비교적 나중에 개발되었습니다.
전이학습에 대하여
마지막으로 NLP와 CV 각각에서 전이학습이 갖는 의미를 생각해보겠습니다. 컴퓨터 비전에서 ImageNet과 같이 대규모의 데이터셋으로 학습한 모델은 특정 태스크에 대하여 적은 데이터로도 파인튜닝 될 수 있습니다.
반면 언어의 의미는 문맥에 의존적이기 때문에 전이학습이 이루어지기 쉽지 않습니다. CV 모델은 기본적인 패턴에 대한 지식을 여러 태스크에서 일반적으로 사용할 수 있는 반면, 언어 태스크에서 지식의 전이가 같은 정도로 이루어질 것이라고 기대할 수는 없습니다. 현재는 NLP에서도 전이 학습이 이루어지긴 하지만 이는 2018년 BERT가 제안된 이후부터 본격적으로 이루어졌다는 점에서 CV에 비해서는 그 시기가 뒤처졌다고 볼 수 있습니다.
이처럼 NLP는 다양한 이유 때문에 CV에 비해서 발전이 늦어졌습니다. 앞서 언급한 원인들 이외에도 정말 다양한 이유가 있을 수 있는데, 결국 전부 언어가 갖는 성질에 의한 것입니다. 언어에는 정답이 없습니다. 사람들은 모두 같은 것을 보지만, 그것에 대해 갖는 생각은 모두 다릅니다. 그리고 그 생각을 표현하는 것이 바로 언어입니다. 그렇기 때문에 자연어 처리 문제를 모델링하고 해결하는 것은 정말 어렵습니다. 다행히 획기적인 기법들이 많이 제안되었고, 수많은 전문가들의 노력 덕분에 NLP도 매우 빠르게 발전하고 있습니다. ChatGPT의 등장 이래 LLM에 대한 관심이 커지면서 자연어 처리에 대한 인기도 나날이 치솟고 있습니다. 그리고 그 덕분에 더 많은 NLP 문제를 해결하여 실생활에 적용할 수 있을 것입니다. 하루가 멀다하고 새로운 기술이 등장하는 시대에, 앞으로 인공지능은 어떤 역할을 수행하게 될지 정말 기대가 됩니다.
'Features' 카테고리의 다른 글
Gemini의 시대로 여러분을 초대합니다. (2) | 2023.12.07 |
---|---|
GPT-5에 대한 다양한 소식 (0) | 2023.10.16 |
왜 그렇게 많은 인공지능 시스템들이 머펫의 이름을 갖게 되었을까? (0) | 2023.09.24 |
댓글