현재의 과대광고에도 불구하고 언어 모델은 새로운 것이 아닙니다. 우리는 수년 동안 휴대폰에 자동 완성 기능을 탑재해 왔습니다. 그리고 철자법을 익히는 데 몇 초는 절약될 수 있지만 누구도 이를 "스마트" 또는 " 지각력 있는 "이라고 부르지 않습니다.
기술적으로 모든 언어 모델은 토큰의 확률 분포일 뿐입니다. 그들은 이전 단어나 기호를 고려하여 토큰화된 다음 가능한 단어나 기호를 결정하도록 훈련되었습니다. 그러나 언어 번역 및 질문 답변과 같은 다른 작업을 위해 미세 조정될 수도 있습니다.
언어 생성은 알고리즘에 임의의 단어를 제공하여 훈련 데이터에서 학습한 확률을 기반으로 다음 단어를 생성한 다음 지속적으로 자체 출력을 제공하는 프로세스입니다. 예를 들어, 모델에 "I"가 표시되면 "am", "fine" 등을 생성할 것으로 예상됩니다.
의미 있는 문장을 만드는 능력은 참조 창의 크기에 따라 달라집니다. 휴대폰에서 볼 수 있는 것과 같은 오래된 기본 모델은 한두 단어만 뒤로 볼 수 있기 때문에 근시안적이며 중간에 도달할 때 문장의 시작 부분을 잊어버립니다.
변환기 이전에 연구자들은 짧은 메모리 문제를 해결하기 위해 순환 신경망(RNN)을 사용했습니다. 너무 자세히 설명하지 않고도 그들의 비결은 입력 문장의 모든 노드에 대한 정보가 포함된 숨겨진 상태 벡터를 생성하고 도입된 각각의 새로운 토큰으로 업데이트하는 것이라고 말할 수 있습니다.
아이디어는 확실히 기발했지만 숨겨진 상태는 항상 가장 최근 입력에 크게 편향되었습니다. 따라서 기본 알고리즘과 마찬가지로 RNN은 비록 빠르지는 않지만 여전히 문장의 시작을 잊어버리는 경향이 있습니다.
나중에 LSTM(Long Short-Term Memory) 및 GRU(Gated Recurrent Unit) 네트워크가 도입되었습니다. 바닐라 RNN과 달리, 여기에는 생성되는 출력과 멀리 떨어져 있더라도 관련 입력의 메모리를 유지하는 데 도움이 되는 내장 메커니즘(게이트)이 있습니다. 그러나 이러한 네트워크는 본질적으로 여전히 순차적이었고 아키텍처가 너무 복잡했습니다. 비효율적이었고 병렬 계산이 금지되었기 때문에 여러 컴퓨터에서 동시에 실행하여 빛처럼 빠른 성능을 얻을 가능성이 없었습니다.
2017년에 Google은 이 문서 에서 변환기를 처음으로 설명했습니다. LSTM 및 GRU와 달리 주어진 단계에서 처리와 관련된 세그먼트를 적극적으로 선택하고 추정 시 이를 참조할 수 있는 기능이 있었습니다. 그들은 더 빠르고 효율적이며 주의 원칙에 기반한 더 단순한 아키텍처를 갖고 있었습니다.
지금 이 작품을 읽어보면 그 당시에는 많았던 기계번역에 관한 평범한 논문처럼 들리는 것이 웃긴다. 저자는 아마도 AI 역사상 가장 중요한 아키텍처 중 하나를 발명했을 수도 있다는 사실을 깨닫지 못했을 것입니다.
기계 학습의 맥락에서 어텐션은 시퀀스에서의 위치 및 다른 입력 요소에 대한 중요성에 대한 정보를 포함하는 각 토큰에 할당된 벡터를 나타냅니다. 모델은 직렬 처리 없이 예측을 할 때 이를 사용할 수 있습니다. 조금 더 명확하게 설명하기 위해 분해해 보겠습니다.
Transformer 이전에는 신경 언어 번역과 같은 시퀀스 간 처리에 대한 전통적인 접근 방식은 RNN을 사용하여 모든 입력을 단일 숨겨진 상태로 인코딩한 다음 다른 RNN을 사용하여 대상 시퀀스를 디코딩하는 것이었습니다. 인코딩 종료 시 중요한 것은 최종 상태였습니다.
2014년 Bahdanau et al. 모든 숨겨진 상태를 디코더 네트워크에서 사용할 수 있게 만들고 그 중 어느 것이 현재 출력을 생성하는 데 가장 중요한지 결정할 수 있도록 하는 훌륭한 아이디어를 제안했습니다. 네트워크는 관련 부분 에만 주의를 기울이고 나머지는 무시했습니다.
4년 후, 구글의 논문이 공개되었습니다. 이번에 저자는 RNN을 완전히 버리고 인코딩 및 디코딩 단계에만 주의를 기울일 것을 제안했습니다. 그렇게 하기 위해 그들은 원래의 주의 메커니즘을 수정해야 했고, 이는 자기 주의 의 발달로 이어졌습니다.
아마도 self-attention을 단일 시퀀스의 노드 간 통신 메커니즘으로 생각하는 것이 가장 쉬울 것입니다. 작동 방식은 모든 입력 토큰에 초기 임베딩의 다양한 측면을 나타내는 쿼리(Q), 키(K) 및 값(V)의 세 가지 벡터가 할당된다는 것입니다.
쿼리 벡터(Q)는 입력이 찾고 있는 내용을 나타냅니다. YouTube 검색창에 입력하는 문구라고 생각하세요.
키 벡터(K)는 입력에 대한 식별자 역할을 하여 쿼리와 일치하는 항목을 찾는 데 도움이 됩니다. 이는 관련 제목이 포함된 YouTube 검색 결과와 비슷합니다.
값 벡터(V)는 각 토큰의 실제 콘텐츠를 나타내며 모델이 쿼리와 관련하여 관련 노드의 중요성을 결정하고 출력을 생성할 수 있도록 합니다. 검색 결과에서 클릭할 동영상을 결정하는 데 도움이 되는 미리보기 이미지와 동영상 설명으로 생각할 수 있습니다.
참고: self-attention에서는 모든 Q, K, V가 동일한 시퀀스에서 나오는 반면 Cross-attention 에서는 그렇지 않습니다.
self-attention 공식은 다음과 같습니다: Attention(Q,K,V) = softmax((QK^T) / sqrt(d_k)V 그리고 간단히 말해서 절차는 다음과 같습니다.
Transformer는 처음에는 인코딩 시퀀스를 위한 RNN의 간단한 대안으로 발명되었지만 지난 5년 동안 컴퓨터 비전을 포함한 다양한 AI 연구 분야에 적용되었으며 종종 최첨단 모델을 능가했습니다.
하지만 2018년에 우리는 그들이 수백만 개의 매개변수를 사용하여 크게 만들고, 충분한 컴퓨팅 성능을 제공하고, 웹에서 방대하고 다양하며 레이블이 지정되지 않은 텍스트 말뭉치를 훈련하면 얼마나 강력해질 수 있는지 알지 못했습니다.
이들 기능의 첫 번째 모습은 OpenAI가 개발한 GPT(Generative Pre-trained Transformer) 에서 나타났습니다. 이 GPT는 1억 1,700만 개의 매개변수를 갖고 있으며 레이블이 지정되지 않은 데이터에 대해 사전 훈련되었습니다. 이러한 알고리즘은 작업을 위해 특별히 훈련되었고 GPT는 그렇지 않았음에도 불구하고 NLP 작업 12개 중 9개에서 차별적으로 훈련된 모델보다 성능이 뛰어났습니다.
그런 다음 GPT-2 모델 (15억 개의 매개변수를 가진 가장 큰 모델)이 나왔고 그 뒤를 이어 많은 다른 변압기가 나왔습니다. 그리고 2020년에 OpenAI는 마침내 GPT-3를 출시했습니다. 가장 큰 버전에는 1,750억 개의 매개변수가 있었고 아키텍처는 대부분 GPT-2와 동일했습니다.
OpenAI의 목표는 모델을 더 크게 만들고 더 많은 텍스트와 성능을 제공함으로써 모델에서 얼마나 높은 수준의 성능을 끌어낼 수 있는지 결정하는 것 같았습니다. 결과는 놀라웠습니다.
참고: 1,750억 개의 매개변수는 오늘날의 표준에 따르면 매우 작은 것으로 간주됩니다.
GPT-3는 소설, 시, 매뉴얼, 대본, 뉴스 기사, 보도 자료, 이미지 캡션, 노래 가사, 이메일, 대화 응답 등 다양한 스타일과 형식의 텍스트를 생성할 수 있습니다. 코드 작성, 요약, 정보를 바꾸고, 단순화하고, 분류하는 등 다양한 작업을 수행할 수 있습니다. 모든 기능을 나열하려면 문자 그대로 완전히 다른 기사가 필요할 것입니다. 그럼에도 불구하고 이 괴물의 핵심은 여전히 단순한 자동 완성 시스템입니다.
자, 우리는 믿을 수 없을 만큼 강력한 언어 모델을 갖고 있습니다. 그냥 챗봇으로 사용해도 될까요? 아니요.
GPT-3과 그 유사품은 여전히 시퀀스 완료를 위한 도구일 뿐이며 그 이상은 아닙니다. 적절한 지시가 없으면 그들은 귀하의 질문에서 선택한 주제에 대해 장황하게 말하고 유창하고 응집력 있고 문법적으로 흠잡을 데 없는 것처럼 보일 수 있는 가짜 기사, 뉴스, 소설 등을 만들지만 거의 유용하지 않습니다.
실제로 도움이 되는 챗봇을 만들기 위해 OpenAI는 모델의 업데이트 버전인 GPT-3 또는 GPT 3.5에 대한 광범위한 미세 조정을 수행했습니다. 아직 정확히 알 수는 없습니다. 이 프로세스에 대한 자세한 내용은 아직 많이 공개되지 않았지만, 우리는 이 봇이 형제 모델인 InstructGPT 와 거의 동일한 방식으로 훈련되었다는 것을 알고 있습니다. 그리고 우리는 후자가 이 백서 에 설명된 DeepMind의 아직 출시되지 않은 '스마트 대화 에이전트' 버전인 Sparrow와 여러 면에서 유사하다는 사실도 발견했습니다.
따라서 모든 변환기 기반 알고리즘이 사실상 동일한 아키텍처를 갖는다는 것을 알면 OpenAI의 블로그 게시물을 읽고 이를 Sparrow 논문과 비교한 다음 ChatGPT 내부에서 무슨 일이 벌어지고 있는지에 대해 지식에 근거한 추측을 할 수 있습니다.
기사의 미세 조정 프로세스는 세 단계로 구성되었습니다.
어시스턴트가 어떻게 행동해야 하는지 AI에 표시하는 데이터를 축적합니다. 이 데이터 세트는 질문 뒤에 정확하고 유용한 답변이 나오는 텍스트로 구성됩니다. 운 좋게도 사전 훈련된 대규모 언어 모델은 샘플 효율성이 매우 높기 때문에 프로세스가 그다지 오래 걸리지 않았을 것입니다.
모델이 쿼리에 응답하도록 하고 동일한 질문에 대해 여러 답변을 생성한 다음 사람이 각 답변을 평가하도록 하여 모델을 시험해 봅니다. 동시에 바람직한 반응을 인식하기 위한 보상 모델을 훈련합니다.
OpenAI의 Proximal Policy Optimization을 사용하여 분류기를 미세 조정하고 ChatGPT의 응답이 정책에 따라 높은 점수를 받도록 보장합니다.
Sparrow 논문에서는 유사한 방법을 설명하지만 몇 가지 추가 단계가 있습니다. DeepMind의 모든 대화 에이전트와 마찬가지로 Sparrow는 항상 프로그래머가 모델에 제공하고 사용자가 볼 수 없는 입력 역할을 하는 특정 손으로 만든 프롬프트를 기반으로 합니다. ChatGPT는 이러한 종류의 '보이지 않는' 프롬프트에 따라 안내될 수도 있습니다.
효과적인 보조자로 만들기 위해 Sparrow는 질문을 받았으며 DeepMind가 제시한 유용성의 일반 원칙과 윤리적 규칙(예: 공손함 및 정확성)을 기반으로 인간이 평가한 응답을 생성했습니다. 인간이 적극적으로 참새를 실패하게 만들려고 하는 적대적 훈련도 있었습니다. 그런 다음 평가를 위해 두 개의 신경망 분류기를 훈련했습니다. 하나는 유용성 측면에서 답변의 점수를 매기고, 하나는 답변이 DeepMind의 규칙에서 얼마나 벗어나는지 결정합니다.
ChatGPT는 이제 공격적인 콘텐츠를 생성하지 않는다는 것을 알고 있지만 출시 후 때때로 무감각한 답변을 생성했습니다. OpenAI가 유해한 텍스트를 통과하지 못하도록 특별히 설계된 또 다른 모델을 추가했을 수도 있다고 생각합니다. 하지만 물론 아직 확실히 알 수는 없으며 ChatGPT 자체도 이에 대해 의문을 제기하고 있습니다.
ChatGPT와 달리 Sparrow는 출처를 인용하고 Google 검색에 액세스하므로 말하는 내용을 뒷받침하는 증거를 제공할 수도 있습니다. 모델이 이를 수행할 수 있도록 하기 위해 연구원들은 초기 프롬프트를 업데이트하고 검색 쿼리와 검색 결과라는 두 가지 페르소나를 추가로 도입했습니다.
참고: Google이 최근 발표한 ChatGPT의 경쟁자인 Bard에도 동일한 원칙이 적용될 가능성이 높습니다.
ELI5 데이터 세트 와 Sparrow의 이전 반복 답변을 사용하여 두 개의 분류기로 교육한 후 모델은 각 질문에 대해 정확하고 잘 연구된 여러 답변을 생성할 수 있습니다. 사용자에게 표시되는 답변은 항상 유용성 분류기에서 가장 높은 점수를 받고 규칙-편차 분류기에서 가장 낮은 점수를 받은 답변입니다.
LaMDA 언어 모델을 기반으로 한 Google의 챗봇인 Bard가 2월 6일 발표되었습니다. 이미 화제를 모으고 있지만 훈련에 대한 구체적인 세부 사항은 아직 나오지 않았습니다. Sparrow의 베타 버전도 2023년에 출시될 예정입니다. 이 봇 중 하나가 ChatGPT만큼 인기를 얻게 될지는 아직 두고 볼 일입니다. 둘 다 새로운 최고의 챗봇이 될 수 있는 잠재력을 제공하는 고유한 기능을 가지고 있지만 OpenAI가 슈퍼스타 채팅 도우미 업데이트 및 개선을 중단할 것이라고 생각하지 않습니다.
아마도 우리는 곧 새롭고 더 나은 기능을 갖춘 ChatGPT를 보게 될 것입니다. 시장 지배력 측면에서 어느 기업이 1위를 차지할지 예측하는 것은 불가능하다. 그러나 경쟁에서 승리하는 사람은 AI 기술로 달성할 수 있다고 인식되는 것의 경계를 훨씬 더 넓힐 것이며 확실히 흥미로울 것입니다.