Wolfram 언어의 아버지인 Stephen Wolfram이 다시 ChatGPT를 지지하게 되었습니다.
지난 달 그는 ChatGPT와의 완벽한 조합을 바라며 자신의 컴퓨팅 지식 검색 엔진 WolframAlpha를 특별히 추천하는 기사를 쓰기도 했습니다.
일반적인 의미는 "당신의 컴퓨팅 능력이 표준에 미치지 못한다면 나의 '초능력'을 거기에 주입할 수 있다"는 것입니다.
Stephen Wolfram은 "ChatGPT란 무엇인가"와 "왜 그렇게 효과적인가?"라는 두 가지 질문에 대해 간단한 용어로 자세한 설명을 제공하기 위해 한 달여 만에 다시 한 번 10,000 단어의 긴 기사를 게시했습니다. "
(독서 경험을 보장하기 위해 다음 내용은 Stephen Wolfram이 1인칭으로 설명합니다. 기사 끝에 부활절 달걀이 있습니다!)
ChatGPT는 사람이 쓴 것과 유사한 텍스트를 자동으로 생성할 수 있는데, 한 가지 점은 매우 놀랍고 예상치 못한 것입니다. 그렇다면 어떻게 달성됩니까? 의미 있는 텍스트를 생성하는 데 왜 그렇게 잘 작동합니까?
이 기사에서는 ChatGPT의 내부 작동 방식에 대한 개요를 제공하고 ChatGPT가 만족스러운 텍스트를 생성하는 데 성공한 이유를 살펴보겠습니다.
ChatGPT의 전반적인 메커니즘에 초점을 맞춰 기술적인 세부 사항을 언급하겠지만 깊이 들어가지는 않을 것입니다. 동시에, 내가 말한 내용은 ChatGPT뿐만 아니라 현재의 다른 "대형 언어 모델"(LLM)에도 적용된다는 점을 강조해야 합니다.
먼저 설명해야 할 것은 ChatGPT의 핵심 작업은 항상 "합리적인 지속"을 생성하는 것, 즉 기존 텍스트를 기반으로 인간의 글쓰기 습관에 맞는 다음 합리적인 콘텐츠를 생성하는 것입니다. 소위 "합리적"이라는 것은 수십억 개의 웹 페이지, 디지털 서적 및 기타 인간이 작성한 콘텐츠의 통계적 패턴을 기반으로 다음에 나타날 콘텐츠를 추론하는 것을 의미합니다.
예를 들어 "AI의 가장 좋은 점은 그 힘입니다"라는 텍스트를 입력하면 ChatGPT는 수십억 페이지에 달하는 인간 텍스트에서 유사한 텍스트를 찾아 다음 단어가 나타날 확률을 계산합니다. ChatGPT는 텍스트 자체를 직접 비교하는 것이 아니라 "의미 일치"라는 특정 의미를 기반으로 한다는 점에 유의해야 합니다. 궁극적으로 ChatGPT는 가능한 단어 목록을 생성하고 각 단어에 확률 순위를 부여합니다.
ChatGPT가 기사 작성과 같은 작업을 완료할 때 실제로는 반복해서 요청하고 다시 묻는다는 점에 주목할 가치가 있습니다. over: "기존 텍스트를 기반으로 다음 단어는 무엇이어야 합니까?" - 그리고 단어가 추가될 때마다(더 정확하게는 설명했듯이 "토큰"이 추가됩니다. 이는 단지 단어의 일부일 수 있습니다. 이것이 때때로 "새로운 단어를 생성"하는 이유입니다.)
각 단계에서 확률이 있는 단어 목록을 얻습니다. 하지만 작성 중인 기사(또는 다른 것)에 추가하려면 어떤 단어를 선택해야 할까요?
'가장 높은 순위' 단어(즉, 가장 높은 '확률'이 할당된 단어)를 선택해야 한다고 생각할 수도 있습니다. 그런데 여기서 신비한 일이 일어나기 시작합니다. 왜냐하면 어떤 이유에서든 – 아마도 언젠가 우리는 과학적 이해를 갖게 될 것입니다 – 만약 우리가 항상 가장 높은 순위의 단어를 선택한다면, 우리는 일반적으로 어떤 창의성도 보여주지 않는 매우 "단조로운" 기사로 끝나기 때문입니다(때로는 축어적으로 반복되기도 합니다). 때때로 (무작위로) 낮은 순위의 단어를 선택하면 "더 흥미로운" 기사를 얻을 수도 있습니다.
여기서 무작위성이 존재한다는 것은 동일한 프롬프트를 여러 번 사용하면 매번 다른 기사가 나올 가능성이 높다는 것을 의미합니다. 부두교 개념에 따라 프로세스에는 낮은 순위의 단어가 사용되는 빈도를 결정하는 소위 "온도" 매개변수가 있으며, 이 "온도"는 0.8로 설정하는 것이 가장 좋습니다. 여기서는 "이론"이 사용되지 않고 실제로 적용되는 것으로 입증된 사실일 뿐이라는 점을 강조할 가치가 있습니다. 예를 들어, "온도"라는 개념은 지수 분포(통계 물리학의 친숙한 분포)가 우연히 사용되었기 때문에 존재하지만 적어도 우리가 아는 한 둘 사이에는 "물리적" 연결이 없습니다.
계속하기 전에 프레젠테이션을 위해 대부분의 경우 ChatGPT의 전체 시스템을 사용하지 않고 대신 훌륭한 기능을 갖춘 더 간단한 GPT-2 시스템을 사용한다는 점을 설명해야 합니다. 표준 데스크톱 컴퓨터에서 실행할 수 있을 만큼 작습니다. 따라서 제가 보여드리는 거의 모든 내용에는 컴퓨터에서 바로 실행할 수 있는 명시적인 Wolfram 언어 코드가 포함되어 있습니다.
예를 들어, 아래 그림은 위의 확률표를 구하는 방법을 보여줍니다. 먼저 기본 "언어 모델" 신경망을 검색해야 합니다.
나중에 이 신경망에 대해 자세히 알아보고 작동 방식에 대해 논의하겠습니다. 하지만 지금은 이 "네트워크 모델"을 텍스트에 블랙 박스로 적용하고 모델이 따라야 한다고 생각하는 확률을 기반으로 상위 5개 단어를 요청할 수 있습니다.
결과를 얻은 후 이를 명시적으로 형식화된 "데이터 세트"로 변환합니다.
다음은 반복적으로 "모델을 적용"할 때 발생하는 상황입니다. 각 단계에서 확률이 가장 높은 단어를 추가합니다(모델 "결정"에서와 같이 이 코드에 지정됨). "):
계속하면 어떻게 되나요? 이("0도") 상황에서는 상당히 혼란스럽고 반복적인 상황이 빠르게 전개될 수 있습니다.
하지만 항상 "상위" 단어를 선택하는 대신 때때로 "상위가 아닌" 단어를 무작위로 선택한다면 어떨까요("임의성"은 "온도" 0.8에 해당함)? 계속해서 텍스트를 다시 작성할 수 있습니다.
그리고 이 작업을 수행할 때마다 무작위 선택이 달라지고 해당 텍스트도 달라집니다. 예를 들어 다음 5가지 예는 다음과 같습니다.
첫 번째 단계에서도 기존 텍스트를 기반으로 선택할 수 있는 "다음 단어"가 많이 있다는 점을 지적할 가치가 있습니다(온도의 경우). 아래 0.8), 확률은 빠르게 감소하지만(예, 이 로그 도표의 직선은 언어의 일반적인 통계 특성인 n-1 "멱법칙" 붕괴에 해당합니다):
그래서 우리가 계속 글을 쓰면 어떻게 될까요? 다음은 임의의 예입니다. 가장 높은 순위의 단어(0도)를 사용하는 것보다 약간 낫지만 여전히 약간 이상합니다.
이 작업은 가장 간단한 GPT-2 모델(2019년부터)을 사용하여 수행되었습니다. 더 큰 최신 GPT-3 모델을 사용하면 결과가 더 좋습니다. 다음은 동일한 "힌트"를 사용하지만 가장 큰 GPT-3 모델을 사용하여 생성된 최고 순위 단어(0도)를 사용하는 텍스트입니다.
다음은 "온도는 0.8"의 임의의 예입니다.
ChatGPT는 항상 확률에 따라 다음 단어를 선택합니다. 그런데 이러한 확률은 어디서 오는 걸까요?
더 간단한 질문부터 시작해 보겠습니다. 영어 텍스트를 단어 단위가 아닌 문자 단위로 생성하는 것을 고려할 때 각 문자의 확률을 어떻게 결정합니까?
가장 간단한 방법은 영어 텍스트 샘플을 채취하여 그 안에 있는 다양한 문자의 빈도를 세는 것입니다. 예를 들어, 다음은 "cat"에 대한 Wikipedia 기사의 문자 수입니다(계산 결과는 여기서 생략됨):
이것은 "dog"의 경우입니다:
The 결과는 비슷하지만 꼭 그런 것은 아닙니다(결국 "o"는 "dog"라는 단어 자체에 나타나기 때문에 "dogs" 기사에서 더 일반적입니다). 그러나 충분히 큰 영어 텍스트 샘플을 취하면 결국 적어도 상당히 일관된 결과를 얻을 것으로 기대할 수 있습니다.
다음은 다음 확률을 사용하여 문자 시퀀스를 생성하는 샘플입니다.
We "단어 길이"의 분포가 영어와 일치하도록 강제하여 "단어"를 더 잘 분할할 수 있습니다. ”:
여기에서는 "실제 단어"가 생성되지 않았지만 결과는 다음과 같습니다. 조금 더 나아 보입니다. 그러나 더 나아가려면 각 문자를 무작위로 선택하는 것보다 더 많은 작업이 필요합니다. 예를 들어, "q"가 나타나면 다음 문자는 기본적으로 "u"여야 한다는 것을 알고 있습니다.
이것은 문자 자체에 대한 확률도입니다.
이것은 일반적인 영어 텍스트의 문자 쌍("2-gram")에 대한 확률도입니다. 가로 축은 가능한 첫 번째 문자이고 세로 축은 두 번째 문자입니다(여기서 확률 도표는 생략됨).
여기서 "u" 열에 "q" 열이 추가된 것을 볼 수 있습니다. 라인을 제외하고 나머지는 모두 공백입니다(확률 0). 이제 문자별로 "단어"를 생성하는 대신, 한 번에 두 글자씩 "2그램" 확률을 사용하여 단어를 생성합니다. 다음은 결과 샘플입니다. 일부 "실제 단어"가 포함되어 있습니다.
충분한 영어 텍스트가 있으면 단일 문자 또는 문자 쌍(2- 그램), 더 긴 문자 조합의 확률도 추정할 수 있습니다. "임의의 단어"를 생성하기 위해 점진적으로 더 긴 n-gram 확률을 사용하면 점차적으로 "더 현실적"이 된다는 것을 알게 될 것입니다.
하지만 이제 ChatGPT와 마찬가지로 문자가 아닌 전체 단어를 다루고 있다고 가정해 보겠습니다. 영어에는 약 40,000개의 일반적인 단어가 있습니다. 많은 양의 영어 텍스트(예: 수백억 개의 단어가 포함된 수백만 권의 책)를 살펴보면 각 단어의 빈도를 추정할 수 있습니다. 이 추정을 사용하여 각 단어가 말뭉치에 나타날 확률과 동일한 확률로 무작위로 독립적으로 선택되는 "문장" 생성을 시작할 수 있습니다. 다음은 우리가 얻은 것의 샘플입니다.
당연히 이것은 말도 안되는 소리입니다. 그렇다면 더 나은 문장을 생성하려면 어떻게 해야 할까요? 문자와 마찬가지로 단어뿐만 아니라 단어 쌍 또는 더 긴 n-gram의 확률에 대해서도 생각할 수 있습니다. 단어 쌍의 경우 다음 5가지 예가 있습니다. 모두 "cat"이라는 단어로 시작합니다.
이 조금 "더 의미 있게" 보입니다. 충분히 긴 n-그램을 사용할 수 있다면 본질적으로 "ChatGPT를 얻는 것"을 상상할 수 있습니다. 즉, "올바른 전체 기사 확률"로 긴 텍스트 시퀀스를 생성하는 것을 얻게 됩니다. 하지만 문제는 이 확률을 추론할 수 있을 만큼 실제로 작성된 영어 텍스트가 충분하지 않다는 것입니다.
웹 크롤러에는 수백억 개의 단어가 있을 수 있고, 디지털화된 책에는 수백억 개의 단어가 더 있을 수 있습니다. 하지만 공통 단어 40,000개로도 가능한 2-튜플의 수는 이미 16억 개, 가능한 3-튜플의 수는 무려 60조 개에 달합니다. 그러므로 우리는 기존 텍스트에서 이러한 가능성의 확률을 추정할 수 없습니다. 20단어의 "에세이 조각"을 생성해야 할 때쯤이면 가능성의 수는 이미 우주의 입자 수를 초과하므로 어떤 의미에서 모두 기록할 수는 없습니다.
그럼 우리는 어떻게 해야 할까요? 핵심 아이디어는 우리가 보고 있는 텍스트 코퍼스에서 이러한 시퀀스를 명시적으로 본 적이 없더라도 시퀀스가 발생해야 하는 확률을 추정할 수 있는 모델을 구축하는 것입니다. ChatGPT의 핵심에는 이러한 확률을 매우 잘 추정하기 위해 구축된 소위 "대형 언어 모델"(LLM)이 있습니다.
(공간상의 이유로 "모델이란 무엇인가", "신경망", "기계 학습 및 신경망 훈련", "신경망 훈련의 실습과 지식", "임베딩 개념" 등의 장을 편집했습니다. 관심 있는 독자는 원문을 직접 읽으셔도 됩니다.)
결국 거대한 신경망이라는 것은 의심의 여지가 없으며 현재 버전은 1750억 개의 가중치를 가진 GPT-3 네트워크입니다. . 여러 면에서 이 신경망은 우리가 논의한 다른 신경망과 매우 유사하지만 언어를 처리하도록 특별히 설계된 신경망입니다. 가장 눈에 띄는 특징은 '트랜스포머(Transformer)'라고 불리는 신경망 아키텍처다.
위에서 논의한 첫 번째 유형의 신경망에서 특정 계층의 각 뉴런은 본질적으로 이전 계층의 모든 뉴런에 (적어도 어느 정도의 가중치를 가지고) 연결됩니다. 그러나 알려진 특정 구조로 데이터를 처리하려는 경우 이러한 완전히 연결된 네트워크는 아마도 과잉일 것입니다. 따라서 이미지 처리의 초기 단계에서는 뉴런이 실제로 이미지 픽셀과 유사한 격자에 배열되고 픽셀 근처의 뉴런과만 상호 작용하는 소위 컨벌루션 신경망("convnet")을 사용하는 것이 일반적입니다. 그리드가 연결되었습니다.
Transformer의 아이디어는 적어도 텍스트를 구성하는 토큰 시퀀스와 유사한 작업을 수행하는 것입니다. 그러나 Transformer는 연결이 이루어질 수 있는 고정된 영역을 정의할 뿐만 아니라 "주의" 개념도 도입합니다. 즉, 시퀀스의 특정 부분에 다른 부분보다 더 초점을 맞추는 "주의" 개념입니다. 아마도 언젠가는 훈련을 통해 모든 사용자 정의가 포함된 일반 신경망을 시작하는 것이 합리적이 될 것입니다. 그러나 실제로는 적어도 현재로서는 트랜스포머와 마찬가지로 사물을 모듈화하는 것이 중요하며 아마도 우리의 두뇌도 마찬가지입니다.
그렇다면 ChatGPT(또는 더 정확하게는 ChatGPT의 기반이 되는 GPT-3 네트워크)는 실제로 무엇을 할까요? 전반적인 목표는 훈련에서 본 내용을 기반으로 "합리적으로" 계속해서 텍스트를 작성하는 것입니다(여기에는 웹과 그 너머의 수십억 페이지에서 텍스트를 보는 것이 포함됩니다). 따라서 특정 순간에 특정 양의 텍스트가 있고 목표는 다음 토큰에 대한 적절한 선택을 선택하는 것입니다.
ChatGPT는 세 가지 기본 단계를 기반으로 작동합니다. 먼저, 현재 텍스트에 해당하는 토큰 시퀀스를 획득하고 이를 나타내는 임베딩(즉, 숫자 배열)을 찾습니다. 그런 다음 "표준 신경망 방식"으로 이 임베딩에 대해 작동하여 네트워크의 연속 레이어를 통해 값이 "변동"하여 새로운 임베딩(즉, 새로운 숫자 배열)을 생성합니다. 다음으로, 해당 배열의 마지막 부분을 가져와 다양하고 가능한 다음 토큰의 확률로 변환되는 약 50,000개의 값을 포함하는 배열을 생성합니다(예, 일반적인 영어 단어와 동일한 수의 토큰이 있지만, 3000개의 토큰은 완전한 단어이고 나머지는 조각입니다. )
핵심은 이 파이프라인의 각 부분이 신경망에 의해 구현되고 해당 가중치는 네트워크의 엔드투엔드 훈련에 의해 결정된다는 것입니다. 즉, 전체 아키텍처를 제외하고 실제로는 아무것도 "명시적으로 설계"되지 않습니다. 모든 것이 훈련 데이터에서 "학습"됩니다.
그러나 아키텍처가 구축되는 방식에는 다양한 경험과 신경망 지식을 반영하는 많은 세부 사항이 있습니다. 이것은 확실히 세부적인 문제이지만, 적어도 ChatGPT를 구축하는 데 필요한 것이 무엇인지 이해하기 위해 이러한 세부 사항 중 일부를 논의하는 것이 유용할 것이라고 생각했습니다.
첫 번째는 임베딩 모듈입니다. 다음은 Wolfram 언어로 표현된 GPT-2의 개략도입니다:
이 텍스트는 세 가지 주요 단계로 구성된 "임베딩 모듈"이라는 모듈을 소개합니다. 첫 번째 단계에서는 텍스트가 토큰 시퀀스로 변환되고, 각 토큰은 단일 레이어 신경망을 사용하여 길이가 768(GPT-2의 경우) 또는 12288(ChatGPT의 GPT-3의 경우)인 임베딩 벡터로 변환됩니다. . 동시에 모듈에는 토큰의 정수 위치를 임베딩 벡터로 변환하는 데 사용되는 "보조 경로"도 있습니다. 마지막으로 토큰 값과 토큰 위치의 임베딩 벡터를 더해 최종 임베딩 벡터 시퀀스를 생성합니다.
토큰 값과 토큰 위치의 임베딩 벡터를 추가해야 하는 이유는 무엇인가요? 특별히 과학적인 설명은 없는 것 같습니다. 방금 여러 가지 다른 것을 시도했는데 이것이 효과가 있는 것 같습니다. 그리고 신경망의 전통에 따르면 초기 설정이 "거의 정확"하고 충분한 교육을 받으면 세부 사항은 실제로 "신경망이 어떻게 설계되었는지 이해"하지 않고도 자동으로 조정될 수 있습니다.
이 "임베딩 모듈" 모듈의 기능은 텍스트를 일련의 임베딩 벡터로 변환하는 것입니다. "hello hello hello hello hello hello hello hello hello bye bye bye bye bye bye bye bye bye"라는 문자열을 예로 들면, 각 토큰 정보를 포함하여 길이가 768인 일련의 임베딩 벡터로 변환될 수 있습니다. 값과 위치에서 추출됩니다.
각 토큰 임베딩 벡터의 요소가 여기에 표시됩니다. 일련의 "hello" 임베딩이 가로로 표시되고 그 뒤에 일련의 "bye" 임베딩이 표시됩니다. 위의 두 번째 배열은 위치 임베딩으로, 무작위로 보이는 구조가 우연히 학습되는 것입니다(이 경우 GPT-2).
좋아, 임베딩 모듈 다음에는 Transformer의 "주요 부분"인 소위 "주의 블록" 시리즈(GPT-2의 경우 12개, ChatGPT GPT-3의 경우 96개)가 나옵니다. 그것은 복잡하고 일반적으로 이해하기 어려운 대규모 엔지니어링 시스템 또는 생물학적 시스템을 연상시킵니다. 그러나 다음은 GPT-2의 단일 "주의 블록"에 대한 다이어그램입니다.
각 주의 블록에는 "주의 헤드" 세트가 있습니다(GPT-2에는 12개, ChatGPT의 GPT -3에는 12개가 있습니다). 96), 각 어텐션 헤드는 임베딩 벡터에서 서로 다른 값을 가진 블록에 독립적으로 작동합니다. (예, 우리는 임베딩 벡터를 여러 부분으로 분할할 때의 이점이나 서로 다른 부분이 무엇을 의미하는지 모릅니다. 이는 효과가 있는 것으로 밝혀진 기술 중 하나일 뿐입니다.)
그렇다면 어텐션 헤드의 기능은 무엇일까요? 기본적으로 이는 일련의 토큰(즉, 이미 생성된 텍스트)을 "뒤돌아보고" 다음 토큰을 쉽게 찾을 수 있도록 유용한 형식으로 기록 정보를 "패키징"하는 방법입니다. 위에서 우리는 이전 토큰을 기반으로 단어를 선택하기 위해 이진 확률을 사용하는 것에 대해 언급했습니다. Transformer의 "주의" 메커니즘을 사용하면 이전 단어에 대한 "주의"를 허용하여 예를 들어 동사가 문장에서 여러 단어 앞에 나타나는 명사를 참조하는 방식을 포착할 수 있습니다.
구체적으로 어텐션 헤드의 역할은 서로 다른 토큰과 관련된 임베딩 벡터의 블록을 재결합하고 특정 가중치를 할당하는 것입니다. 예를 들어, GPT-2의 첫 번째 어텐션 블록에 있는 12개의 어텐션 헤드는 위의 "hello, bye" 문자열에 대해 다음과 같은("토큰 시퀀스를 처음부터 다시 살펴보기") "재그룹 가중치" 패턴을 갖습니다. :
주의 메커니즘에 의해 처리된 후 "재가중 임베딩 벡터"(GPT-2의 경우 길이 768, ChatGPT GPT-3의 경우 길이 12,288)를 얻은 다음 표준 "전체 임베딩 벡터"를 통과합니다. "연결" 신경망 레이어. 이 레이어가 무엇을 하는지 이해하기 어렵습니다. 그러나 여기에 사용되는 768×768 가중치 매트릭스의 플롯이 있습니다(여기서는 GPT-2).
64×64 이동 평균을 사용하면 일부(랜덤 워크와 같은) 구조가 나타나기 시작합니다.
이 구조를 결정하는 것은 무엇입니까? 이것은 인간 언어의 특성을 "신경망 인코딩"으로 표현한 것일 수 있습니다. 그러나 지금까지는 이러한 특성이 알려지지 않았을 수도 있습니다. 실제로 우리는 ChatGPT(또는 적어도 GPT-2)의 "두뇌를 열고" 있으며, 그 안에는 우리가 이해하지 못하는 많은 복잡성이 있다는 사실을 발견하고 있습니다. 인간의 말.
자, 어텐션 모듈을 통과한 후 새로운 임베딩 벡터를 얻은 다음 다른 어텐션 모듈을 연속적으로 통과합니다(GPT-2의 경우 총 12개, GPT-3의 경우 96개). 각 주의 모듈에는 고유한 "주의" 및 "완전히 연결된" 가중치 패턴이 있습니다. 다음은 "hello, bye" 입력(GPT-2의 경우)에 대한 첫 번째 Attention 헤드에 대한 Attention 가중치 시퀀스입니다.
다음은 완전 연결 레이어의 "행렬"입니다(이동 평균 이후). ) :
흥미롭게도 이러한 "가중치 행렬"은 다양한 어텐션 블록에서 매우 유사해 보이지만 가중치 크기의 분포는 다를 수 있습니다(항상 가우스 분포는 아님).
그래서, 이러한 모든 주의 차단 이후 Transformer의 최종 효과는 무엇입니까? 기본적으로 토큰 시퀀스의 원래 포함 세트를 최종 세트로 변환합니다. ChatGPT가 작동하는 구체적인 방식은 세트의 마지막 임베딩을 선택하고 이를 "디코딩"하여 다음 토큰의 확률 목록을 생성하는 것입니다.
이것이 ChatGPT 내부의 개요입니다. 복잡해 보일 수도 있지만(이러한 선택 중 다수는 피할 수 없고 다소 임의적인 "엔지니어링 선택"임) 실제로 궁극적으로 관련된 요소는 매우 간단합니다. 궁극적으로 우리는 "인공 뉴런"으로 구성된 신경망만을 다루고 있기 때문에 각 신경망은 일련의 수치 입력과 일부 가중치를 결합하는 간단한 작업을 수행합니다.
ChatGPT에 대한 원래 입력은 숫자 배열(지금까지 토큰의 임베딩 벡터)이며, ChatGPT가 새 토큰을 생성하기 위해 "실행"될 때 이 숫자는 단순히 신경망 계층을 통해 "전파"됩니다. 각 뉴런은 "자신의 일을" 수행하고 그 결과를 다음 계층의 뉴런에 전달합니다. 루프나 "역추적"이 없습니다. 모든 것은 네트워크를 통한 "피드포워드"일 뿐입니다.
이것은 동일한 계산 요소를 통해 결과를 반복적으로 "재처리"하는 Turing 기계와 같은 일반적인 컴퓨팅 시스템과 완전히 다릅니다. 여기서는 적어도 주어진 출력 토큰을 생성하는 측면에서 각 계산 요소(예: 뉴런)가 한 번만 사용됩니다.
하지만 ChatGPT에는 계산된 요소에서도 재사용되는 "외부 루프"라는 느낌이 여전히 있습니다. ChatGPT가 새 토큰을 생성하려고 할 때 ChatGPT 자체에서 이전에 "작성한" 토큰을 포함하여 이전에 나타난 전체 토큰 시퀀스를 항상 "읽기"(즉, 입력으로 사용)하기 때문입니다. 이 설정은 각 반복이 생성된 텍스트에 나타나는 토큰으로 명시적으로 표시되지만 ChatGPT가 가장 바깥쪽 수준에서 최소한 "피드백 루프"를 포함한다는 의미로 생각할 수 있습니다.
ChatGPT의 핵심인 각 토큰을 생성하는 데 사용되는 신경망으로 돌아가 보겠습니다. 어떤 수준에서는 매우 간단합니다. 동일한 인공 뉴런의 모음입니다. 네트워크의 일부 부분은 뉴런의 ("완전히 연결된") 레이어로만 구성되며, 해당 레이어의 모든 뉴런은 이전 레이어의 모든 뉴런에 (일정의 가중치를 가지고) 연결됩니다. 그러나 특히 Transformer 아키텍처에서 ChatGPT는 특정 레이어의 특정 뉴런만 연결되는 보다 구조화된 부분을 가지고 있습니다. (물론 여전히 "모든 뉴런이 연결되어 있다"고 말할 수 있지만 일부 뉴런은 가중치가 0입니다.)
또한 ChatGPT 신경망의 일부 측면은 가장 자연스러운 "동종" 레이어가 아닙니다. 예를 들어, 어텐션 블록 내에는 수신 데이터의 "여러 복사본"이 만들어진 위치가 있으며, 각 복사본은 나중에 다시 조립되기 전에 다른 수의 레이어를 포함하는 다른 "처리 경로"를 통과합니다. 이것이 편리한 표기 방법일 수 있지만, 적어도 원칙적으로는 레이어를 "조밀하게 채우는" 것을 고려하고 일부 가중치를 0으로 두는 것이 항상 가능합니다.
ChatGPT에서 가장 긴 경로를 보면 약 400개 정도의 레이어(코어 레이어)가 있는데 어떤 면에서는 그리 많은 숫자는 아닙니다. 그러나 수백만 개의 뉴런, 총 1,750억 개의 연결, 즉 1,750억 개의 가중치가 있습니다. 한 가지 알아야 할 점은 ChatGPT가 새 토큰을 생성할 때마다 각 가중치와 관련된 계산을 수행해야 한다는 것입니다. 구현 측면에서 이러한 계산은 GPU에서 쉽게 완료할 수 있는 고도로 병렬적인 배열 작업으로 구성될 수 있습니다. 그러나 생성된 각 토큰에는 여전히 1,750억 개의 계산이 필요합니다(최종적으로는 조금 더 필요함). 따라서 ChatGPT로 긴 텍스트를 생성하는 데 시간이 걸리는 것은 놀라운 일이 아닙니다.
그러나 궁극적으로 우리는 이러한 모든 작업이 어떻게든 함께 작동하여 텍스트를 생성하는 "인간과 같은" 작업을 수행한다는 점에 유의해야 합니다. (적어도 우리가 아는 한) 이와 같은 것이 작동해야 하는 "궁극적인 이론적 이유"가 없다는 점을 다시 강조해야 합니다. 사실, 앞으로 논의하겠지만, 저는 이것을 잠재적으로 놀라운 과학적 발견으로 생각해야 한다고 생각합니다. ChatGPT와 같은 신경망에서는 인간 두뇌가 언어를 생성하는 과정을 포착하는 것이 가능합니다. 그것을 할 수 있습니다.
(원본 기사가 길기 때문에 관심 있는 친구는 기사 끝 부분의 링크를 클릭하여 전체 텍스트를 읽을 수 있습니다.)
아마도 이 기사를 열 때 몇몇 친구들은 미묘한 점을 발견했을 것입니다. 변경 사항:
예, 이 글의 핵심 내용 편집자는 다름 아닌 ChatGPT입니다!
또한 Stephen Wolfram의 기사에 대한 견해를 이야기합니다:
참조 링크:
[1] https://www.php.cn/link/e3670ce0c315396e4836d7024abcf3dd
[2]https://www.php.cn/link/b02f0c434ba1da7396aca257d0eb1e2f
[3]https://www.php.cn/link/76e9a17937b75b73a8a430acf210fe af
위 내용은 ChatGPT가 강력한 이유: WolframAlpha의 아버지가 작성한 10,000 단어 길이의 기사에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!