전문은 총 1.8w 단어로 구성되어 있으며, 예상 읽는 시간은 약 60분 | 유용한 정보가 가득하니 모아두시는 걸 추천드려요!
1. 소개
2020년 가을, GPT-3는 소셜 미디어를 통한 바이러스 확산으로 큰 관심을 끌었습니다. 1억 7,500만 개가 넘는 매개변수와 초당 100만 달러의 운영 비용을 갖춘 이 대형 언어 모델(LLM)은 자연어 처리(NLP) 분야에 새로운 시대를 열었습니다.
이 단계에서 대규모 사전 훈련 모델의 출현으로 NLP의 연구 및 적용 환경이 완전히 바뀌었습니다.
대규모 언어 모델은 레이블이 지정되지 않은 대량 데이터의 잠재력을 완전히 활용하여 모델에 더 강력한 언어 이해 및 일반화 기능을 제공합니다. 사전 훈련 및 미세 조정 전략을 사용하는 대규모 모델은 여러 NLP 작업에서 전례 없는 성과를 달성하여 모델 정확도, 일반화 능력 및 복잡한 작업 처리 측면에서 탁월한 성능을 보여주었습니다. 이는 대규모 투자를 유치했을 뿐만 아니라 NLP 분야의 새로운 발전과 연구 방향을 탄생시켰다.
동시에 대형 모델의 적용 임계값과 사용 임계값이 점차 낮아짐에 따라 ChatGPT, 언어 간 코드 편집 도구 Cursor, Github 공식 코드 작성 도구 CopilotX, Gamma AI 등 수많은 대형 모델 제품이 계속해서 등장하고 있습니다. 원클릭으로 PPT 콘텐츠 생성, 패밀리마트에 구성된 오피스 코파일럿, 이미지를 널리 생성하는 포토샵, MidJourney, Stable Diffusion에 구성된 채우기 기능... 이러한 애플리케이션은 비즈니스 운영 방식을 변화시켰을 뿐만 아니라 사람들의 삶과 업무에도 큰 영향을 미쳤습니다.
2. 대규모 언어 모델 개발
대형 모델 얘기가 나와서 말인데, 가장 흥미로운 일 중 하나가 2021년에 일어났습니다. 한 개발자가 GPT-3를 사용하여 "Project 12월"이라는 텍스트 채팅 게임을 만들었습니다. 이 게임은 Facebook에서 수집한 텍스트 데이터와 Samantha라는 이름의 사망한 여성(Samantha는 2012년 사망)의 개인 문자 메시지를 사용합니다. 놀랍게도 남자친구는 이 게임을 이용해 사만다를 흉내낸 AI와 문자 메시지 채팅을 했고, 대화는 별다른 특이점을 발견하지 못한 채 수개월간 지속됐다. 이 사건은 수많은 윤리적, 도덕적 질문을 제기했습니다.
이번 사건은 대형 모델의 강력한 잠재력을 드러냈을 뿐만 아니라 향후 발전 방향을 예고하기도 했다. 과거 로봇에 대한 우리의 인상은 단순하고 기계적인 상호 작용 방식이었고, 지속적으로 최적화된 자연어 처리 기술의 지원에도 불구하고 로봇의 반응 대부분은 여전히 미리 설정되고 고정되어 깊이와 사실성이 부족했습니다. 그러나 현대 기술은 이러한 한계를 깨뜨렸습니다.
영화 '유랑지구2'에서 눈길을 끄는 550w처럼 미래의 로봇은 인간에 가까운 감정과 사고 능력을 발휘하게 될 것이다.
ChatGPT는 이러한 변화의 선구자입니다. 복잡한 텍스트를 정확하게 이해하고 생성할 수 있을 뿐만 아니라 고급 오디오 및 비디오 기술과 원활하게 작동하여 거의 자기 인식에 가까운 놀라운 디지털 생명체를 구성할 수 있습니다. 영화의 Yaya처럼요.
이 변경 중에 기본 애플리케이션 계층은 아래와 같이 지속적으로 기술 반복을 구현합니다.
초기 작업 중심 지능형 비서(예: Siri 및 Baidu 스마트 스피커)를 시작으로 인공 지능은 일련의 중요한 변화를 겪었습니다. 이러한 초기 제품은 다양한 데이터와 모델을 기반으로 구축되었으며 기능 확장성 측면에서 우수한 성능을 발휘하지만 기능이 특정 작업 및 시나리오로 제한되는 "유사" 인공 지능에 가깝습니다.
이후 Bert 모델의 등장은 중요한 전환점이 되었다. 이전 작업 중심 모델과 달리 Bert는 사전 학습 및 미세 조정 과정을 통해 인간의 언어를 더 깊이 이해할 수 있습니다. 이는 미세 조정을 통해 다양한 다운스트림 작업에 적용할 수 있는 비작업 지향 사전 학습 접근 방식을 채택합니다. 그럼에도 불구하고 모델 미세 조정의 복잡성은 여전히 극복할 수 없는 장애물로 남아 있습니다.
현재 GPT 모델의 혁신은 '즉각적' 디자인 아이디어에 있습니다. 사전 훈련 규모가 버트의 500배 이상일 뿐만 아니라,
GPT는 또한 모델 자체를 수정하지 않고 입력 프롬프트를 변경하는 것만으로 알 수 없는 다양한 작업에 적응하기 위해 자동으로 언어를 생성할 수 있습니다 . 이러한 진전은 인공 지능에 대한 우리의 초기 기대와 열망에 부합하며, 더욱 지능적이고 유연한 새 AI 시대의 도래를 예고합니다.
따라서 인공지능에 대한 우리의 기대는 다음과 같아야 합니다.
이것이 우리에게 익숙한 ChatGPT이며, 더 깊이 파고들면 그 추론 과정은 다음과 같습니다.
명확하게 알아야 할 사항: GPT(Generative Pre-trained Transformer) 모델은 자동 회귀 모델로, 핵심 아이디어는 기존 텍스트 시퀀스를 기반으로 다음으로 가능성이 높은 단어를 생성하는 것입니다. 이는 모두 인간처럼 논리적인 추론이나 사고가 아닌 통계적 학습과 추론에 기반을 두고 있습니다.
GPT(Generative Pre-trained Transformer)는 전체 추론 프로세스에서 핵심 역할을 하는 Transformer 아키텍처를 기반으로 구축되었습니다. OpenAI는 GPT 모델의 모든 훈련 세부 사항과 데이터를 완전히 공개하지는 않지만, 핵심 메커니즘은 여전히 여러 학술 논문과 기술 문서에 설명되어 있는 Transformer를 기반으로 합니다. 따라서 Transformer의 기본 원리를 이해하는 것은 GPT 모델이 텍스트를 생성하는 방법을 이해하는 데 도움이 될 뿐만 아니라 다른 자연어 처리 작업 및 개발 작업에도 큰 가치가 있습니다.
즉, 기본을 아는 것이 변화를 드러내며, 이는 발전에 있어서 매우 중요합니다.
3. GPT 시리즈 모델 아키텍처에 대한 자세한 설명
자연어 처리(NLP) 기술의 발전 역사는 점진적인 반복과 최적화의 과정입니다. Transformer 아키텍처가 등장하기 전에 이 분야는 수동 규칙 및 지식 기반에 의존하던 것에서 통계 및 딥 러닝 모델을 사용하는 것으로 전환되었습니다. 이후 Transformer의 등장은 특히 자연어 이해 및 생성 기능을 획기적으로 향상시킨 BERT 및 GPT와 같은 모델의 출시로 새로운 시대를 열었습니다. 이제 대형 모델 시대에 돌입했다고 할 수 있으며, Transformer 아키텍처를 기반으로 한 애플리케이션은 유례없는 폭발적인 시기를 경험하고 있습니다.
우리는 ChatGPT와 같은 채팅 모델에 익숙해졌을 수 있으며, 질문을 받자마자 대답하는 것이 정상인 것 같습니다. 그러나 그 이면에서 어떻게 작동하는지 깊이 생각해 보면 실제로 놀라운 일이라는 것을 알게 될 것입니다. 그래서 나는 모든 사람에게 트랜스포머란 정확히 무엇이며, 트랜스포머가 어떻게 그러한 혁명적인 영향력을 얻었는지에 대한 질문을 명확히 하고 싶습니다.
3.1 Transformer 아키텍처에 대한 자세한 설명
ChatGPT의 백엔드는 GPT(Generative Pre-trained Transformer) 모델을 기반으로 하며, GPT 모델은 대규모 텍스트 데이터에 대한 비지도 사전 학습을 통해 언어의 통계적 특징과 의미적 표현을 학습합니다 . 이전에 생성된 단어를 기반으로 다음 단어를 예측 하는 자동회귀 접근법을 사용하여 단어 간의 의미적, 문법적 관계는 물론 문장과 텍스트의 전반적인 문맥 정보를 학습합니다.
GPT 모델 자체는 Transformer 구조를 기반으로 구축되었으므로 생성적 대형 모델이 왜 그렇게 강력한지 완전히 이해하려면 Transformer 아키텍처가 없어서는 안 될 핵심 포인트입니다.
그렇다면 이 아키텍처는 텍스트 생성 및 의미 이해와 같은 고급 기능을 어떻게 달성합니까?
Transformer의 가장 고전적인 논문 [Attention Is All You Need], 최고 중 하나, 주소: https://arxiv.org/abs/1706.03762
**Transformer는 인코더(Encoder)와 디코더(Decoder)로 구성되며, 인코더는 입력 시퀀스의 표현을 학습하는 데 사용되고 디코더는 출력 시퀀스를 생성하는 데 사용됩니다. GPT는 주로 변환기의 디코더 부분을 사용하여 언어 모델을 구축합니다. **구성은 다음과 같습니다.
NLP 알고리즘의 기초가 없으면 조금 혼란스러워 보일 수 있지만 모든 세부 사항을 완전히 마스터할 필요는 없습니다. 두 가지 핵심 개념만 명확히 하면 됩니다.
- Transformer의 주의 메커니즘이 작동하는 방식
- 디코더 부분 의 생성 출력은 정확히 무엇을 의미합니까?
이 복잡한 아키텍처에서 입력 데이터가 어떻게 흐르고 처리되는지 분석해 보겠습니다.
3.1.1 Transformer 아키텍처 분해
- 텍스트 표현
Transformer 모델에서는 입력 텍스트가 먼저 처리되어 적절한 표현을 얻습니다.
왜 그러한 전환이 이루어졌는가?
다음 시나리오를 생각해 보십시오. "AI + 프로그래밍 세트 항해"라는 문장을 입력하면 컴퓨터가 이를 직접 이해할 수 있습니까? 아니면 ChatGPT와 상호작용할 때 실제로 사용자가 말하는 모든 단어를 "듣나요"? 그렇지 않다.
ChatGPT는 자연어를 직접 처리하지 않습니다. 우리의 입력을 이해할 수 있는 데이터 형식으로 변환해야 합니다. 즉, 각 단어나 문자를 특정 벡터 형식으로 인코딩합니다.
이 인코딩 프로세스의 구체적인 단계는 다음과 같습니다.
- 단어 임베딩(Word Embedding): 텍스트의 각 단어를 고차원 벡터로 변환합니다. 이 변환은 일반적으로 사전 훈련된 단어 임베딩 모델(예: Word2Vec, GloVe 등)을 통해 수행됩니다.
- 위치 임베딩: 표준 Transformer 모델에는 시퀀스 순서 인식 기능이 내장되어 있지 않으므로 위치 정보를 추가해야 합니다. 이는 단어 임베딩과 동일한 차원을 가지며 단어 임베딩에 추가되는 위치 임베딩을 통해 수행됩니다.
예를 들어 "AI+프로그래밍이 항해를 시작합니다"라는 문장을 생각해 보세요.
위치 임베딩이 없으면 문장이 "AI+ 프로그래밍, 돛 올리기" 등으로 잘못 구문 분석될 수 있으며, 이로 인해 문장의 원래 순서와 의미가 파괴됩니다.
위치 임베딩의 목적은 인코딩된 단어 벡터가 문장의 단어 순서를 정확하게 반영하여 전체 문장의 원래 의미를 유지하도록 하는 것입니다.
- 추가: 텍스트 정보와 위치 정보를 포함하는 새로운 임베딩 표현을 얻기 위해 단어 임베딩과 위치 임베딩이 추가되었습니다.
입력의 최종 Transformer 표현은 x이므로 모델은 각 단어가 무엇인지뿐만 아니라 시퀀스에서의 위치도 알 수 있습니다.
예를 들어:
이러한 처리 과정을 통해 모델은 '돛'과 같은 입력을 인식할 수 있다.
Transformer의 입력 처리 부분은 아키텍처 다이어그램에서 보면 인코더와 디코더 부분 모두 입력이 있는데 어떻게 이해하시나요?
이는 Transformer 모델에서 인코더(Encoder)와 디코더(Decoder)가 각각 독립적인 입력을 갖기 때문입니다 . 일반적으로 지도 학습의 맥락에서 인코더는 입력 샘플 처리를 담당하고 디코더는 해당 레이블을 처리합니다. 이러한 태그도 다음과 같아야 합니다.
적절한 전처리가 필요합니다. 이러한 설정을 통해 모델은 특정 작업에 대해 구체적으로 훈련될 수 있습니다.
이 개념은 간단한 기계 번역 작업을 통해 설명됩니다. 다음과 같은 영어-프랑스어 번역 쌍이 있다고 가정합니다.
- 영어(입력 샘플): “Hello, world”
- 프랑스어(태그): “Bonjour, monde”
이 예에서 인코더는 "Hello, world"라는 문장을 입력으로 받습니다. 이 문장은 먼저 단어 벡터 또는 문자 벡터 집합으로 변환된 다음 처리를 위해 인코더에 입력됩니다.
동시에 디코더는 "Bonjour, monde"에 해당하는 라벨을 입력으로 수신합니다. 다시 말하지만, 이러한 레이블은 먼저 기계가 이해할 수 있는 표현(예: 단어 벡터 또는 문자 벡터)으로 변환된 다음 디코더에 입력됩니다.
인코더가 입력 샘플을 처리한 후 해당 출력은 디코더의 입력과 어떤 형태로든 결합되어 최종 번역 출력을 생성합니다. 이 메커니즘을 통해 지도 학습 환경에서 모델을 훈련하여 기계 번역과 같은 특정 작업을 완료할 수 있습니다.
- 인코더(인코더부)
Transformer의 인코더 부분은 입력 시퀀스의 표현을 학습하는 데 사용되며 위치는 아래 그림과 같습니다.
Transformer 모델의 인코더(빨간 점선 상자) 부분에서 데이터 처리 흐름은 다음과 같습니다.
먼저, 입력 데이터(예: 텍스트)는 처리를 위해 어텐션 메커니즘으로 전송됩니다. **데이터의 모든 요소(예: 각 단어 또는 단어)에 점수가 부여되어 어느 것이 더 중요한지 결정합니다. , **"주의 메커니즘" 단계 후에 일부 새로운 데이터가 생성됩니다.
그런 다음 "추가" 작업이 실행되고 어텐션 메커니즘에서 생성된 새 데이터가 처음에 입력된 원본 데이터와 결합됩니다. 이 병합은 실제로 단순한 추가입니다. "추가"는 잔여 연결을 의미하며, 주요 이 작업의 목적은 주의를 기울여 처리된 데이터의 효과가 최소한 원본 데이터를 직접 입력한 것만큼 좋은지 확인하는 것입니다.
그 후, 데이터는 주로 데이터를 보다 안정적으로 만들고 후속 처리를 용이하게 하기 위해 "레이어 정규화"(Norm)라는 간단한 수학적 프로세스를 거칩니다.
그런 다음 데이터는 2계층 피드포워드 신경망에 들어갑니다. 여기서 목표는 주의를 기울여 처리된 데이터를 후속 처리를 위해 원래 차원으로 다시 매핑하는 것입니다. 이는 인코더가 여러 번 쌓이게 되므로 다음 인코더를 입력하기 전에 데이터의 차원이 일치하는지 확인해야 하기 때문입니다.
간단히 말하면, 이전에 처리된 데이터를 원래의 모양과 크기로 되돌리는 것입니다.
그림의 인코더 왼쪽에 있는 Nx 로고에 주의하세요. 이는 여러 인코더가 쌓여 있음을 의미합니다.
마지막으로 다음 인코더(있는 경우)에 입력할 데이터를 준비하기 위해 데이터는 "Add" 및 "Norm" 작업을 다시 거쳐 신중하게 계산되고 재구성된 단어 벡터 표현을 출력합니다.
이 설계는 모델이 여러 인코더 계층 간에 정보를 효과적으로 전송하고 처리하는 동시에 보다 복잡한 계산 및 디코딩 단계를 준비할 수 있도록 보장합니다.
간단히 말해서 Transformer의 인코더는 이러한 단계를 사용하여 입력 데이터를 이해하고 처리한 다음 이해하기 쉬운 새로운 데이터 형식을 출력합니다. 그림과 같이:
- 디코더(디코더부)
Transformer의 디코더 부분은 출력 시퀀스를 생성하는 데 사용되며 위치는 아래 그림과 같습니다.
Transformer 모델의 디코더(보라색 점선 상자) 부분에서 데이터 처리 흐름은 다음과 같습니다.
디코더 부분에서 데이터는 먼저 마스크된 어텐션 메커니즘에 들어갑니다. 이 마스크의 기능은 디코더가 이전에 생성한 단어에만 주의를 기울일 수 있도록 보장하고 이후 단어는 볼 수 없도록 하는 것입니다.
그런 다음 이 레이어에서 출력되는 정보는 인코더 부분의 출력과 융합됩니다. 구체적으로, 이 두 부분의 정보는 다시 어텐션 메커니즘에 의해 처리되어 인코딩 및 디코딩 내용을 종합적으로 고려하게 됩니다.
이 과정 이후 디코더의 작동은 인코더 부분과 거의 동일합니다. 데이터는 레이어 정규화, 피드포워드 신경망, 다시 레이어 정규화를 거쳐 최종적으로 단어 벡터 표현을 출력합니다.
출력 단어 벡터는 먼저 선형 레이어(Linear)를 통과합니다. 이 단계의 목적은 벡터를 미리 정의된 사전 크기에 매핑하여 단어 예측을 준비하는 것입니다.
마지막으로 소프트맥스 함수를 사용하여 각 단어의 생성 확률을 계산합니다. 마지막으로 확률이 가장 높은 단어가 그 순간의 출력으로 선택됩니다.
예를 들어:
이제 "사과", "바나나", "체리"라는 세 단어만 있는 작은 사전이 있다고 상상해 보세요. 선형 레이어는 이 3D 벡터를 다른 3D 벡터("사전" 크기에 해당)로 변환합니다.
변환된 벡터가 이라고 가정합니다
[2.5, 1.0, -0.5]
.소프트맥스 함수를 통해 이 벡터는 예를 들어 확률 분포로 변환됩니다
[0.8, 0.18, 0.02]
.이는 모델이 다음 단어가 "사과"일 확률은 80%, "바나나"일 확률은 18%, "체리"일 확률은 2%라고 생각한다는 의미입니다.
이러한 방식으로 디코더의 고차원 출력에서 실제 단어를 예측할 수 있습니다.
이런 방식으로 Decoder는 이전 디코딩에서 생성된 단어를 고려할 뿐만 아니라 Encoder의 문맥 정보를 통합하여 다음 단어를 보다 정확하게 예측합니다.
GP와 관련된 가장 큰 점은 디코더 아키텍처를 사용하여 언어 모델을 구축한다는 것입니다 .
3.1.2 어텐션 메커니즘
주의 메커니즘, 정확히 무엇에 주의를 기울이고 있나요? 인간의 경우, 무언가를 시작할 때 일반적으로 특정 핵심 정보에 초점을 맞추고 관련성이 낮은 다른 정보는 무시합니다.
예를 들어:
운전하여 교차로에 접근할 때 신호등, 보행자, 다른 차량의 움직임에 특별한 주의를 기울이고 도로의 풍경이나 광고판과 같이 관련성이 덜한 정보는 무시할 수 있습니다. 이렇게 하면 운전을 멈추거나 계속 운전하는 등 자신의 행동에 대해 올바른 결정을 내릴 수 있습니다.
그렇다면 컴퓨터의 경우 상황별 정보를 어떻게 구문 분석하고 다양한 의미 간의 관계를 이해합니까?
이 다이어그램은 대명사 "it"이 어떤 명사 (이 경우 "The Animal")를 가리키는지 결정하는 데 주의가 어떻게 사용되는지 보여주기 위해 자주 사용됩니다.
원문: "동물은 너무 피곤해서 길을 건너지 않았습니다." 번역: 동물이 너무 피곤해서 길을 건너지 않았습니다. "it"은 "The Animal"을 의미합니다. 그러나 문장에서 한 단어를 바꾸고 "tired"를 "narrow"로 바꾸면 결과적으로 새로운 문장은 "The Animal't cross the street through it was tooarrow"가 됩니다. , 해석: 거리가 너무 좁아서 동물들이 길을 건너지 못했습니다. 이 새로운 문장에서 "it"은 "거리"를 의미합니다.
따라서 모델은 입력 문장이 변경되면 문장에 포함된 단어의 의미도 변경될 수 있음을 이해할 수 있어야 합니다. 이러한 유연성과 정확성은 Transformer 모델에서 입증되었으며, 이는 이전 모델에서는 달성할 수 없었던 것입니다.
Attention 메커니즘의 작동 원리는 다음과 같이 시각적으로 설명할 수 있습니다.
모델은 각 단어를 벡터로 인코딩한 다음 이러한 벡터를 모델에 공급합니다. 여기서 각 단어는 "우리 사이의 관계가 가까운가? 우리는 가까운가?"라는 다른 단어에 "쿼리"를 보내는 것과 같을 것입니다. 관계가 가까우면 모델이 조치를 취하고, 그 반대의 경우도 마찬가지입니다.
각 단어는 이러한 '질문'을 할 뿐만 아니라 다른 단어의 '질문'에도 응답합니다. 이러한 질의응답 상호작용을 통해 모델은 각 두 단어 사이의 밀접한 관계를 식별할 수 있습니다. 이 관계가 결정되면 모델은 단어와 더 밀접하게 관련된 단어의 정보를 "흡수"하고 더 많은 정보를 융합합니다. 예를 들어, 이러한 방식으로 번역 작업에서 모델은 해당 벡터에 "animal"이라는 단어와 밀접하게 관련된 정보가 포함되어 있으므로 "it"이 "animal"로 번역되어야 함을 정확하게 식별할 수 있습니다.
**따라서 어텐션 메커니즘의 핵심은 단어 벡터를 재구성하는 것입니다. **이 메커니즘은 다음과 같이 컴퓨터 계산 프로세스로 변환됩니다.
위의 시각적 설명에서 주의 메커니즘의 세 가지 요소를 추출할 수 있습니다.
- Q: 질의어(Query)는 질의어를 다른 단어와 비슷하게 만드는 단어로 이해될 수 있다
- K: 키(Key)는 다른 단어에 대한 질문에 답하는 단어로 이해될 수 있습니다.
- V: 가치(Value)는 단어의 실제 가치로 이해될 수 있으며, 두 단어 사이의 긴밀한 관계를 바탕으로 얼마나 많은 정보가 추출되고 통합되는지를 나타냅니다.
Transformer 모델에서 Q, K 및 V는 입력 벡터 표현 Transformer(x)와 해당 가중치 행렬 Wq, Wk, Wv에 대해 행렬 연산을 수행하여 얻습니다.
딥러닝에 익숙하다면 모델 내부의 데이터가 주로 다양한 가중치 매개변수를 사용한 행렬 곱셈이라는 것을 알아야 합니다. 이전에 기초가 없었다면 모델의 고유 모듈이자 공식화된 계산 규칙으로 간주하십시오.
이러한 가중치 행렬은 처음에는 수학적으로 초기화된 다음 여러 라운드의 모델 교육 중에 점차적으로 업데이트되고 최적화됩니다. 목표는 수신 데이터에 이러한 가중치 행렬을 곱한 후 최적화된 Q, K 및 V 행렬을 얻는 것입니다.
Q를 예로 들면, 입력 벡터 x 의 첫 번째 행과 가중치 행렬 Wq의 첫 번째 열에 대해 점 곱셈 및 합산 연산을 수행하여 첫 번째 요소를 얻습니다 .
따라서 Q 행렬의 첫 번째 행은 실제로 다음을 의미합니다. 즉, 다른 단어를 쿼리할 때 첫 번째 단어(입력 X의 첫 번째 행에 해당)에 필요한 키 정보가 포함되어 있습니다. 마찬가지로 K행렬과 V행렬의 계산논리는 이와 유사하다.
K 행렬의 첫 번째 행에는 첫 번째 단어가 다른 단어의 질의에 응답하는 데 필요한 정보가 저장됩니다. V 행렬의 첫 번째 행에는 첫 번째 단어 자체가 전달하는 정보가 포함됩니다. Q와 K를 통해 다른 단어와의 관계를 파악한 후, V에 저장된 정보를 이용하여 해당 단어의 단어 벡터를 재구성한다.
Q, K, V를 얻은 후 Attention은 다음 작업을 수행합니다.
이 공식은 묻고 답하는 과정을 포함하며, 계산 과정은 다음과 같습니다.
계산 과정도 행렬 곱셈과 덧셈이므로 얻은 QKT QK^T큐 케이T 매트릭스는 단어 간의 관계의 친밀도를 표현합니다.
이것이 단어 사이의 친밀도를 측정하는 이유는 무엇입니까?
행렬 곱셈을 계산할 때 벡터는 요소의 곱에 해당하는데, 이 계산 방법을 수학에서는 벡터의 내적이라고 합니다.
벡터의 내적은 벡터의 기하학적 의미를 표현하는데, 내적의 크기가 클수록 두 벡터 사이의 관계가 평행하다는 의미로 두 벡터가 더 유사하다는 것을 의미하며, 내적이 0일 때 두 벡터는 이다. 두 벡터가 서로 관련이 없음을 나타내는 수직 관계가 됩니다.
Attention 메커니즘의 Q와 K의 질의응답 형식은 질문하는 것이 두 단어 사이의 친밀도이므로 두 단어 사이의 유사성은 내적을 통해 측정할 수 있습니다.
이 과정에서 스스로에게 질문도 하고 스스로 답도 내놓는다는 사실을 눈치채셨을 겁니다. 왜 이런 짓을 한 걸까요?
다음 예를 들어보세요. "The Animal don't cross the street before it is too 피곤해서"는 다음과 같이 번역됩니다: The Animal didn't cross the street 왜냐하면 너무 피곤해서입니다. 일반적으로 대명사인 "it"은 "it"을 지칭하지만, 이 문장에서는 "The Animal"을 지칭하기를 원하므로 이 문장에서는 그 중요성을 나타내지 않습니다. 는 원래의 의미를 바꿀 수 없을 수도 있고, "it"의 원래 의미에서 "The Animal"을 지칭하는 의미로 바뀔 수도 없습니다.
이 작업으로 인해 Transformer의 어텐션 메커니즘을 Self-Attention(셀프 어텐션 메커니즘)이라고 합니다.
문장 간의 밀접한 관계를 측정한 결과가 나온 후, V를 어떻게 재구성할 것인가? 계산 과정으로의 전환은 다음과 같습니다.
QKT QK^T 계산 후큐 케이T 행렬 행렬 이후 첫 번째 행의 데이터가 100, 80, 20, 12라고 가정하면 다음 질문은 어떤 단어가 얼마나 많은 정보에 기여해야 하는지 정량적으로 결정하는 방법이 됩니다.
이 문제를 해결하기 위해 소프트맥스 함수를 적용하여 각 행을 정규화하여 행의 모든 요소의 합이 1이 되도록 합니다.
Softmax 처리 후 첫 번째 줄이 0.4, 0.2, 0.2, 0.1과 같은 특정 분수가 되면 이는 첫 번째 단어 정보의 40%와 두 번째 단어의 20%가 정보로 사용된다는 의미입니다. .. 목표 단어의 새로운 표현을 구성합니다. 이러한 방식으로 Softmax 연산은 본질적으로 각 단어의 정보 기여도를 정량적으로 측정하는 것입니다.
수식에서 dk \sqrt{d_k} 로 나눕니다.디케이이는 벡터 내적을 계산할 때 단순히 단어 간의 근접성 때문이 아니라 벡터 행렬의 크기가 너무 커서 계산값이 상대적으로 커지는 문제를 피하기 위함이다.
각 단어 간의 정보 기여 확률을 구한 후 V를 재구성하는 과정은 다음과 같은 계산 과정으로 전환된다.
이 프로세스를 추가로 해체하는 방법은 다음과 같습니다.
즉, 첫 번째 단어에서 정보의 40%를 꺼내고, 두 번째 단어에서 정보의 20%를 빼내고... 이런 식으로 마지막으로 Z를 얻습니다. 이 계산 형식을 통해 얻은 Z 행렬은 각각 위치에는 관련된 모든 정보가 포함되어 있습니다.
이는 Transformer의 Self-Attention 메커니즘의 계산 프로세스입니다.
3.1.3 디코더가 생성 출력을 수행하는 방법
Transformer의 디코더 부분은 인코더 부분과 많은 유사점이 있지만 몇 가지 중요한 차이점도 있습니다. 디코더는 주의력을 한층 더 높여줍니다. 또한 Decoder는 자체 입력 정보 외에도 Encoder의 출력 정보도 통합합니다. (감독 훈련 작업인 경우)
Transformer 모델에서 디코더(Decoder)의 주요 작업은 다음 출력 단어를 예측하는 것이므로 생성 모델이라고 합니다.
이 프로세스를 더 잘 이해하기 위해 기계 번역 작업을 예로 사용할 수 있습니다.
중국어-영어 이중 언어 훈련 샘플이 있다고 가정합니다
"我是一名学生" (X) --> "I am a student" (Y)
.디코더가 작동하기 시작하면 예측 프로세스를 시작하기 위해 초기 입력이 필요합니다. 그러나 첫 번째 단어 "I"를 예측하기 위해 디코더에는 이전 컨텍스트가 없습니다.
<s>
따라서 초기 입력으로 시작 문자를 도입해야 합니다 . 따라서 훈련 샘플의 목표 시퀀스는 다음과 같이 조정됩니다<s>, I, am, a, student
.디코딩 과정은 다음과 같습니다.
<s>
디코더에 시작 문자를 입력합니다 .- Attention 메커니즘을 통해 디코더는 인코더의 출력(즉, "나는 학생입니다"라는 표현)에 주의를 기울이고 이를 융합합니다.
<s>
디코더는 시작 기호와 인코더의 융합 출력을 기반으로 첫 번째 단어인 "I"를 예측합니다.- 다음으로 "I"와 "I"는 모두
<s>
알려진 정보로 사용되어 다시 디코더에 입력된다.- 디코더는 Attention 메커니즘을 통해 인코더의 출력에 계속 주의를 기울이고 다음 단어 "am"을 예측합니다.
- 이 과정은 "I am a Student"라는 문장 전체가 예측될 때까지 반복됩니다.
이 애니메이션을 보고 다음 사항을 이해해 보십시오.
http://jalammar.github.io/images/t/transformer_decoding_2.gif
요점 1: Attention in Decoder와 Attention in Encoder의 차이점은 무엇인가요?
우선 이름을 보면 서로 다르다는 것을 알 수 있습니다. Decoder에서 가장 먼저 접하게 되는 것은 "Masked Attention"입니다. 이 디자인이 왜 필요한가요? Transformer 모델의 디코딩 단계에서는 각 단어가 하나씩 생성됩니다.
예를 들어, "am"을 예측할 때 모델은 다음 "학생"을 미리 "알거나" "보아야" 해서는 안 됩니다.
이 프로세스를 타임라인으로 생각하세요. 특정 단어를 예측할 때 그 뒤에 나올 단어를 "예측"할 수 없습니다. 실제 상황에서는 해당 부분이 아직 발생하지 않았기 때문입니다. 이 시점에서 미래 단어로 인해 모델이 방해받지 않도록 하기 위해 디코더는 마스킹 작업을 사용합니다. 이러한 방식으로 모델이 특정 단어를 처리할 때 이후의 모든 단어가 차단되므로 모델은 알려진 컨텍스트를 기반으로만 예측을 수행합니다.
Decoder 내부의 계산 과정으로 분해하면 다음과 같습니다.
첫 번째: 입력 데이터 행렬(레이블과 시작 기호로 구성)과 폐색 행렬(마스크 행렬)을 준비합니다. 그림과 같이:
폐색 행렬의 설계는 계산 중에 폐색된 부분(상부 절반)이 결과에 최소한의 영향을 미치도록 더 작은 값을 얻도록 하는 것입니다.
구체적으로:
첫 번째 단어의 예측을 나타내는 폐색 행렬의 첫 번째 행을 생각해 보세요. 이때 모델은 시작 기호만 알고
, 현재 예측 단어와 이후 단어는 알 수 없습니다. 이는 모델이 첫 번째 단어를 예측할 때 첫 문자에만 의존할 수 있음을 의미합니다.마찬가지로 모델이 두 번째 단어, 즉 폐색 행렬의 두 번째 행을 예측할 때 시작 기호
와 첫 번째 단어만 알고 있습니다. 두 번째 단어와 이후의 모든 단어는 모델에 알려지지 않습니다.
이 디자인은 모델이 단어를 예측할 때 다음 단어의 방해를 받지 않고 앞의 단어에만 의존하도록 보장합니다.
그런 다음 인코더 프로세스와 동일한 Q, K, V 계산 프로세스를 진행합니다.
결과 QKT QK^T큐 케이T 행렬(단어 간 관계의 근접성을 나타내는 행렬) 뒤에 그림과 같이 미리 준비한 Mask 행렬과 비트 단위 곱셈을 수행합니다.
QKT QK^T 의 경우큐 케이T 모멘트와 마스크 행렬을 곱하는 과정입니다. 이 "곱셈"은 비트별 곱셈, 즉 해당하는 각 요소를 곱하는 것입니다.
직관적으로 이해하기 위해서는 마스크 행렬의 막힌 부분은 모두 0, 막히지 않은 부분은 모두 1이라고 상상하시면 됩니다. 그런 다음 이 비트별 곱셈 후에 결과에서 가려진 부분의 해당 위치는 모두 0이 됩니다. 예를 들어, 첫 번째 위치의 경우 시작 기호만 "밝음"(즉, 1)이고 다른 부분은 "어두움"(즉, 0)입니다.
예를 들어, 획득된 QKT QK^T큐 케이T 행렬에서 Score의 처음 두 행은 다음과 같습니다.
이 디자인의 목적은 현재 단어를 예측할 때 모델이 이전 단어에 대한 정보만 얻을 수 있고 현재 단어 자체와 그 뒤에 오는 모든 단어에 대해서는 아무것도 알 수 없도록 하는 것입니다.
QKT QK^T 계산 후큐 케이T 행렬 뒤QKT QK^T큐 케이T 에 대해 Softmax 연산을 수행합니다. 이때 각 행의 요소의 합은 1이 됩니다. 그러나 단어 0의 경우 단어 1, 2, 3, 4에 대한 주의 점수는 모두 0입니다.
마지막으로: Softmax를 통과할 Masked QKT QK^T큐 케이T 에 값 행렬 V를 곱하여 어텐션 가중치 출력을 얻습니다. 이 출력 Z는 다음과 같이 디코더의 Masked Self-Attention 부분의 결과입니다.
핵심 포인트 2: Cross Attention이 무엇인지 이해
입력이 Mask Attention을 통과하면 두 번째 Attention으로 들어가는데, 이 Attention은 더 이상 단순한 self-attention 메커니즘이 아니라 다음과 같이 Cross Attention입니다.
교차주의가 필요한 이유는 무엇입니까? **인코더는 입력 시퀀스에 대한 정보(예: "저는 학생입니다")를 보유하고 있기 때문에 디코더의 목표는 해당 입력에 대해 올바른 출력 시퀀스를 생성하는 것입니다. **이를 달성하려면 디코더는 다음 출력 단어가 무엇인지 알기 위해 인코더가 출력하는 모든 정보에 대해 어느 정도 지식이 있어야 합니다.
Cross Attention은 일반적인 Attention 메커니즘과 매우 유사하게 작동하지만 Q는 디코더의 출력에서 나오고 K와 V는 인코더의 출력에서 나옵니다. 이렇게 하면 디코더가 인코더에 입력 시퀀스에 대한 정보를 "요청"할 수 있습니다. 이 "질문과 답변" 설명은 생생하며 디코더가 인코더의 정보를 사용하여 가장 적절한 출력을 결정하는 방법을 보여줍니다.
예를 들어, "나는 학생입니다"를 "나는 학생입니다"로 번역할 때 디코더는 인코더에게 "'나'에 대한 이해를 바탕으로 다음에는 무엇을 출력해야 합니까?"라고 질문할 수 있습니다. 타겟 시퀀스의 다음 단어를 더 정확하게 예측합니다.
다음과 같이 간단하게 이해할 수 있습니다.
첫 번째 단계는 Masked Self-Attention이라고 불리는 "자신에게 말하기"와 유사합니다. 이렇게 하면 디코더가 단어를 "추측"할 때 이전 단어만 참조하게 됩니다.
그런 다음 Cross Attention 또는 "cross-talk"라고 하는 두 번째 단계가 옵니다. 여기서 디코더는 인코더에 원래 문장에 대한 정보를 "요청"합니다(예: "나는 학생입니다"). 이는 디코더가 인코더에게 "내가 다음에 뭐라고 말해야 한다고 생각하시나요?"라고 묻고 인코더가 예를 들어 "다음은 '나'여야 합니다"라고 제안하는 것과 같습니다. 이러한 방식으로 디코더는 번역 작업을 더 잘 수행할 수 있습니다.
간단히 말해, 첫 번째 단계는 디코더가 스스로에게 "대화"하고 어떤 질문을 해야 할지 결정하는 것입니다. 두 번째 단계는 코더에게 "질문"하고 답변을 얻은 후 번역을 계속하는 것입니다. 이것이 디코더의 2단계 주의 메커니즘이 작동하는 방식입니다.
디코더의 Cross Attention 이후 모델은 다중 어텐션 계산 및 피드포워드 신경망 작업을 포함하여 인코더와 부분적으로 유사한 처리 흐름을 계속 수행합니다. 디코더의 모든 단계가 완료되면 출력은 매핑을 위한 선형 레이어로 들어갑니다. 이 매핑 레이어의 기능은 디코더의 출력을 사전과 동일한 크기의 벡터로 변환하는 것입니다. 그런 다음 이 벡터는 Softmax 레이어를 통과하여 확률 분포로 변환됩니다. 마지막으로, 이 확률 분포에 따라 확률이 가장 높은 단어가 출력으로 선택됩니다.
이러한 방식으로 Transformer의 전체 작업 흐름이 완료됩니다.
3.2 GPT 시리즈 모델
일반적으로 현장에서 특정 문제를 해결하기 위해 모델이나 아키텍처를 제안하는데, GPT-1이 제안되기 이전에는 자연어 처리 분야에서 주류였던 딥러닝 방식에는 다음과 같은 두 가지 큰 한계가 있었습니다.
- 초기 딥러닝 애플리케이션에서는 지도 학습을 기반으로 하는 방법이 많았으며 이는 레이블이 지정된 대량의 데이터가 필요했음을 의미합니다 . 그러나 이 접근 방식에는 분명한 단점이 있습니다. 즉, 모델의 적응성과 유연성을 제한합니다.
기계 번역과 엔터티 인식을 예로 들어 보겠습니다.
특정 기계 번역 데이터를 사용하여 모델을 교육하는 경우 이 모델은 주로 기계 번역 작업만 수행할 수 있습니다. 마찬가지로 엔터티 인식 데이터를 기반으로 하는 모델은 엔터티 인식만 수행할 수 있습니다. 각 작업에는 주석이 달린 대량의 전용 데이터가 필요하지만 각 모델의 적용 범위는 상당히 제한됩니다.
따라서 많은 양의 데이터를 투자하더라도 결과 모델은 여전히 특정 작업에서만 좋은 성능을 발휘하며 작업 전반에 유연하게 적용할 수 없습니다. 이러한 제한으로 인해 다양한 작업에 대한 노력이 중복되어 비효율적이고 비용이 많이 듭니다.
- 주석이 달린 데이터가 많더라도 여전히 핵심 문제가 있습니다. 즉, 유용한 텍스트 표현을 학습하기 위한 일반적인 최적화 목표가 부족하다는 것입니다.
예를 들어 NLP 분야는 기계 번역, 감정 분류 등 많은 작업을 다룹니다. 각 작업에는 일반적으로 고유한 목적 함수가 있습니다. 즉, 각 작업에 대해 모델을 별도로 설계하고 조정해야 합니다. 따라서 많은 양의 리소스와 데이터가 투자되었음에도 불구하고 통합된 작업 간 최적화 목표가 부족하여 데이터의 잠재력을 완전히 발휘할 수 없으며 모델 교육 프로세스가 복잡하고 비효율적으로 만들어집니다.
이러한 현상 유지는 텍스트의 본질적인 정보를 캡처할 수 있을 뿐만 아니라 광범위한 적응성을 가질 수 있는 최적화 목표를 어떻게 발견하거나 설계할 것인가라는 딥러닝의 핵심 과제를 강력히 드러냅니다. 이에 OpenAI는 GPT1을 제안했습니다. GPT 1이 합니까? 어떻습니까?
3.2.1 GPT 1의 등장
GPT **1 참고 논문: **https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf
GPT 1은 레이블이 지정되지 않은 대규모 텍스트에서 의미 있는 표현을 효과적으로 추출하기 위해 Transformer 아키텍처를 사용하는 비지도 사전 학습 방법을 도입합니다. 이 접근 방식은 다양한 자연어 작업의 성능을 향상시킬 뿐만 아니라 주석이 달린 데이터에 대한 의존도를 크게 줄여줍니다.
핵심 포인트 1: 감독되지 않은 사전 훈련
GPT-1은 비지도 학습, 즉 라벨이 지정되지 않은 데이터를 사용하여 모델을 학습합니다. 목적은 모델이 일련의 초기 매개변수(이 초기 매개변수는 Transformer의 Wq, Wk, Wv임)를 학습하여 주어진 컨텍스트 이후에 텍스트를 계속 쓰는 기능을 익히는 것입니다.
즉, 모델이 위의 주어진 내용을 계속해서 작성할 수 있는 능력을 갖도록 하십시오.
계속 텍스트의 예:
첫째, 모델은 광범위한 비지도 학습을 거쳐 수천만 개의 기사를 읽고 언어의 기본 패턴을 익힐 수 있었습니다. GPT-1에 다음과 같이 간단한 메시지를 보냅니다. "추운 겨울날,"
계속 1: "Mary는 집에 머물면서 쿠키를 굽고 가족과 함께 벽난로 주위에 앉아 이야기와 따뜻한 순간을 나누기로 결정했습니다. 밖에는 눈송이가 떨어지고 모두가 이 아름다운 가족의 순간에 푹 빠져 평화와 따뜻함을 느꼈습니다. 겨울의.”
계속 2: "아이들은 신나게 밖으로 뛰쳐나와 큰 눈사람을 만들기 시작했습니다. 눈덩이를 굴리고 눈사람의 눈과 입에 들어갈 돌을 찾아 낡은 모자를 썼습니다. 오후 내내 눈 속에서 놀며 추위를 잊었습니다. 겨울의.”
이 모델이 왜 자연어 처리 분야의 이전 문제를 해결할 수 있는지 생각해 보세요.
기계 번역을 예로 들면, "나는 학생입니다. 영어로 번역해주세요"라고 입력하면 사전 훈련된 GPT 모델은 특히 미세 조정 후에 "나는 학생입니다"와 같은 출력을 생성할 수 있습니다. 전통적인 의미의 기계 번역 작업을 위해 설계된 모델은 아니지만 강력한 텍스트 생성 기능과 언어 구조에 대한 깊은 이해로 인해 이러한 작업을 수행할 수 있습니다.
따라서 자연어 처리의 많은 작업은 "특정 출력 생성"의 문제로 간주될 수 있으며, GPT와 같은 사전 학습 모델은 이러한 작업에 효율적이고 유연한 솔루션을 제공합니다 .
핵심 포인트 2: 타겟 콘텐츠 생성을 위해 GPT를 안내하는 방법
GPT가 탁월한 텍스트 생성 기능을 갖고 있는데 필요한 정확한 콘텐츠를 어떻게 생성할 수 있습니까?
예를 들어 "저는 학생입니다"라고 입력하면 GPT에서 "매일 제 시간에 학교에 가야 해요..."를 생성할 수 있습니다. 이 문장은 유창하지만 작업 목표가 이 문장의 영어 번역을 얻는 것이라면 어떻게 모델을 효과적으로 안내할 수 있을까요?
**GPT에서 제공하는 솔루션은 모델이 다양한 작업의 요구 사항을 충족할 수 있도록 미세 조정을 위해 해당 레이블이 지정된 데이터를 사용하는 것입니다. 이 프로세스에는 레이블이 지정된 데이터가 거의 필요하지 않습니다. **그렇다면 GPT의 구체적인 구조는 무엇인가요?
GPT 설계에서는 특히 Transformer의 디코더 부분을 사용하여 텍스트 생성 작업을 수행합니다. 이를 생성 모델이라고 부르는 것이 약간 단순화될 수 있지만 이러한 포지셔닝은 핵심 기능과 일치합니다.
원래 Transformer 구조와 달리 **GPT는 이중 주의 메커니즘을 사용하지 않으며 더 이상 인코딩 프로세스가 필요하지 않습니다. 핵심은 단어별 예측 프로세스에 있습니다. **이 목표를 달성하기 위해 GPT는 내부적으로 Masked Multi-Head Self-Attention 메커니즘을 채택하고 이를 피드포워드 네트워크와 결합합니다. 일부 일반적인 구성에서 이 메커니즘은 768차원 벡터와 12개의 주의 헤드를 가지며 전체 모델은 12개의 디코더 레이어를 스택합니다.
이 단계는 본질적으로 수많은 텍스트 말뭉치로부터 언어 정보를 학습하는 단계입니다. 수학적 원리는 대략 다음과 같이 나눌 수 있습니다.
먼저 감독되지 않은 언어 시퀀스를 정의합니다.
유 = { 유 1 , . . . , un } (1) U = \{u_1, . . . , u_n\} \tag{1}유={ 당신1,... ,유엔}( 1 )
여기서 U는 문단의 집합으로 이해될 수 있고, 포함된 요소는 단어 하나하나이다.
표준 언어 모델링 목적 함수를 사용하여 해당 문맥에서 단어의 가능성을 최대화합니다.
표준 언어 모델: 자연어 시퀀스에서 단어의 확률 분포를 예측하는 데 사용됩니다. 목표는 컨텍스트가 주어지면 다음 단어의 확률을 예측하는 것입니다.
목적 함수는 논문에서 다음과 같이 정의됩니다.
간단히 말해서 이 공식은 다음을 의미합니다. 텍스트 시퀀스의 각 단어에 대해 그 앞에 있는 k 단어 를 살펴본 다음 모델을 사용합니다(매개변수 θ \theta 로 결정됨).θ는 이 단어의 확률을 예측하기 위해 결정됩니다. 목표는 이 확률을 최대한 높이는 것입니다.
간단한 예를 들어보겠습니다:
텍스트가 "I like to eat apples"라고 가정합니다. 이제 "eat"라는 단어를 예측하고 처음 두 단어를 문맥으로 고려하고 싶다면 다음과 같이 묻습니다. 'I like'라는 두 단어가 주어졌을 때, 다음 단어는?" '먹을' 확률은 얼마입니까?" 공식은 이 확률을 찾아 최대화하는 데 도움을 주기 위한 것입니다.
θ \세타θ 는 단순히 모델로 이해되며 구체적으로 다계층 Transformer Decoder를 의미하며계산 과정은 다음과 같습니다.
다음 공식을 이해하세요.
U는 입력 행렬, We는 단어 인코딩, Wp는 위치 인코딩, Decoder 디코더를 거쳐 최종적으로 Softmax를 통해 출력을 얻습니다. 이 프로세스는 " 디코더가 수행하는 방식" 섹션 의 프로세스와 완전히 동일합니다. 생성 출력 "
이 과정을 통해 모델은 후속 텍스트를 생성하는 능력을 얻었습니다. 그러나 제작된 콘텐츠가 항상 사용자가 기대하는 것과 다를 수 있습니다.
그렇다면 GPT는 관련 콘텐츠가 생성되도록 어떻게 보장합니까? GPT에서 제공하는 지도 모델 미세 조정 방식은 다음과 같습니다.
먼저 지도 데이터 준비: x 1 , x 2 . . . . . . xmx^1,x^2 ...... x^m엑스1 ,엑스2 ......xm , yy로 표시되는 입력 열y는 레이블을 나타내고 사전 훈련된 모델에 데이터를 입력하여 아래와 같이 y의 확률을 예측합니다.
다음 공식을 이해하세요.
- x 1 , x 2 . . . . . . xmx^1,x^2 ...... x^m엑스1 ,엑스2 ......xm 은 특정 작업을 위해 준비된 레이블이 지정된 데이터의 입력 부분인 입력 시퀀스입니다.
- 응y 는 해당 레이블 또는 출력입니다.
- 흠 {h_l}^m시간내가m은 사전 훈련된 모델에 의해 처리된 후 얻은 표현이나 특징을 나타냅니다.
- W y W_y여y는 미세 조정 중에 조정해야 하는 핵심 매개변수인 가중치 행렬입니다.
미세 조정 과정에서 모델의 구조와 매개변수(사전 훈련에서 얻은 지식)의 대부분은 변경되지 않지만, 여기에서는 W y W_y와 같은 일부 특정 계층이나 가중치가 적용됩니다 .여y, 새 작업의 레이블이 지정된 데이터를 기반으로 조정됩니다.
간단히 말해서, 언어를 대략적으로 이해하는 모델이 이미 있지만 특정 작업(예: 기계 번역, 감정 분석 등)에서 더 나은 모델을 만들기 위해서는 특정 매개변수를 미세 조정해야 합니다. 이 공식에서는 가중치 행렬 W y W_y를 조정합니다.여y모델이 출력을 더 잘 예측하도록 만들기 위해 yyy。
마찬가지로, 미세 조정을 위한 지도 데이터는 하나 이상의 샘플이어야 하며 많은 샘플이 있으므로 미세 조정 작업은 이 목적 함수를 최대화하는 것이 됩니다.
미세 조정 프로세스는 다음과 같습니다.
이 과정을 이해하기 위해서는 먼저 미세 조정이 주로 그림의 "선형" 부분인 모델의 선형 레이어를 조정한다는 점을 명확히 해야 합니다. 전체 디코더의 매개변수와 비교할 때 이 부분은 매개변수가 적어서 미세 조정이 더 효율적입니다.
그렇다면 어떤 작업을 수행해야 하는지 모델에 어떻게 알릴 수 있을까요?
실제로 GPT는 태그 지정 전략을 채택합니다. 텍스트를 입력하면 특정 기호나 표시를 통해 작업 유형을 나타냅니다. 예를 들어 분류 작업의 경우 "시작" 및 "추출"과 같은 태그로 텍스트를 래핑할 수 있습니다. 포함 작업의 경우 "시작", "전제", "구분", "가설" 및 "추출"과 같은 태그를 사용하여 정보를 분류하고 레이블을 지정할 수 있습니다.
정확하게 말하면 모델은 두 단계를 거쳤습니다. 첫 번째는 감독되지 않는 사전 학습 단계로, 모델이 기본적인 언어 구조와 지식을 습득하여 언어를 생성할 수 있는 능력을 부여합니다. 그러나 이 초기 "말하기"는 충분히 정확하지 않거나 특정 작업에 국한되지 않을 수 있습니다. 따라서 다음은 모델이 특정 작업에 대해 예상한 대로 보다 정확한 콘텐츠를 생성할 수 있도록 감독되는 미세 조정 단계입니다.
이 전략을 통해 GPT 1은 12개 데이터 세트에서 평가되었으며 그 중 9개는 새로운 SOTA 효과를 달성했습니다.
3.2.2 GPT 2 제로샷 혁신
GPT 2 참조 문서 1: https://insightcivic.s3.us-east-1.amazonaws.com/언어-models.pdf
GPT 2 참고 문서 2: https://arxiv.org/pdf/2005.14165.pdf
GPT-1 이후 연구자들은 모델 크기가 증가함에 따라 정확도와 일반화 기능이 여전히 상당한 개선 가능성을 가지고 있음을 관찰했습니다. 따라서 GPT-2의 주요 개선 방향은 다음과 같이 명확하게 제시되었습니다.
- 더 크고 풍부한 데이터 세트를 활용하여 더 큰 모델을 구축하세요.
- 모델 구조를 세부적으로 조정하고 최적화합니다.
당시의 연구 현황으로 볼 때 특정 작업에 해당 작업에 특화된 데이터 세트가 필요한 경우 GPT 1에서 사용하는 비지도 사전 학습 + 지도 미세 조정으로는 이 문제를 피할 수 없어 GPT 2가 도입되었습니다. Zero-Shot 학습 아이디어는 모델 훈련이 완료되면 매개변수나 구조를 더 이상 조정하지 않고도 다양한 작업을 직접 처리하고 뛰어난 성능을 달성할 수 있다는 것을 의미합니다.
Zero-Shot의 목표는 다운스트림 작업을 처리할 때 더 이상 시작 문자, 구분 기호 및 추출기에 의존하여 GPT-1과 같은 모델별 작업을 알려주는 것이 아니라 보다 직관적인 자연어 방법을 사용하여 작업을 지정하는 것입니다. 예를 들어, 번역 작업을 수행하고 싶을 때 모델에게 직접 "'나는 학생입니다'를 영어로 번역해주세요."라고 말하면 모델은 이러한 자연어 프롬프트(Prompt)를 통해 수행해야 할 작업.
이러한 효과를 달성하기 위해 OpenAI는 데이터 품질 향상에 중점을 두었으며 소셜 플랫폼 Reddit에서 다음과 유사한 약 40GB의 콘텐츠를 크롤링했습니다.
이러한 텍스트에는 "팁", "설명", "답변"과 같은 주요 정보가 포함될 수 있습니다. OpenAI는 데이터의 양이 충분히 크고 품질이 높으면 모델이 자연스럽게 강력한 결과를 얻을 것이라고 굳게 믿습니다. 이러한 텍스트를 흡수함으로써 GPT는 인간의 대화 패턴을 배우면서 스스로 학습하는 능력을 점차 발전시킬 수 있습니다. 이 Zero-Shot 기반 훈련 전략은 효율적인 일반 언어 모델을 구축하는 것이 전적으로 가능하다는 것을 성공적으로 입증했습니다.
그러나 결과는 다음과 같습니다. GPT 2가 이러한 혁신을 제안했지만 논문에 표시된 결과는 놀랍지 않았습니다.
3.3.3 GPT 3 맥락 내 학습
GPT 3 참고 문서: https://arxiv.org/pdf/2005.14165.pdf
GPT 3에 진입한 후 GPT 2의 Zero-Shot을 기반으로 추가 연구를 수행하여 시나리오 설명을 모델에 입력하면 모델은 사용자가 제시한 시나리오 요구 사항을 기반으로 답변을 생성할 것을 제안했습니다. 과정을 상황 내 학습이라고 합니다.
이 프로세스는 그림에 표시된 대로 One-Shot 및 Few-Shot을 가져옵니다.
또한 희소 변환기는 GPT 3의 모델 구조에도 도입되어 1,750억 개의 더 큰 매개변수를 가지며, 실험 결과에 따르면 GPT 3는 매우 뛰어난 성능을 달성했습니다.
3.3.4 GPT 4 새로운 기능
GPT 4 참고 문서: https://arxiv.org/pdf/2303.08774v2.pdf
최신 GPT-4 모델은 이미지와 텍스트 입력을 수용하고 텍스트를 출력할 수 있는 첨단 멀티모달 시스템으로 개발됐다. 다양한 학술 및 전문 벤치마크에서 인간과 비슷하거나 그보다 더 높은 성능 수준을 보여줍니다.
OpenAI는 기계 학습 모델용으로 설계된 기존 벤치마크에서 GPT-4를 평가했습니다. 실험 결과에 따르면 GPT-4는 기존의 대규모 언어 모델은 물론 대부분의 SOTA 모델보다 훨씬 뛰어난 성능을 보입니다.
실제로 GPT 1에서 GPT 4로 넘어가면서 실제로 GPT 시리즈의 내용이 점점 짧아지는 것을 확인할 수 있는데, 이는 GPT의 크기 증가에 정비례합니다. 이는 또한 GPT 개발의 핵심 아이디어가 단순하고 투박하다는 점을 확인시켜 줍니다. 즉, 큰 노력은 기적을 낳을 수 있다는 것입니다.
그렇다면 대규모 언어 모델은 왜 그렇게 뛰어난 성능을 가질 수 있으며, 그 장점은 무엇입니까?
두 가지 핵심 포인트: 출현 능력과 사고 사슬. 둘 다 인간에게 계속 접근하는 대규모 언어 모델의 핵심 기능입니다.
Emergent Abilities는 원래 훈련 데이터에서 새로운 상위 수준 기능과 패턴을 자동으로 학습하고 발견하는 모델의 기능을 나타냅니다. 중국어 정의에 관한 한 창발 기능은 대규모 언어 모델에서 나타나는 새로운 기능을 의미하기도 합니다.
창발적 능력의 또 다른 중요한 표현은 다중 모드 모델의 일반화 능력입니다. 특별한 교육 없이도 GPT 4는 알려지지 않은 새로운 다중 모드 데이터 샘플로 일반화할 수도 있습니다. 이러한 일반화 능력은 주로 모델의 구조와 훈련 과정은 물론 데이터의 양과 다양성에 따라 달라집니다. 모델에 충분한 복잡성과 일반화 기능이 있는 경우 원시 데이터에서 새롭고 알려지지 않은 기능과 패턴을 발견할 수 있습니다.
다중 모드 대형 언어 모델(MLLM)은 더 나은 상식 추론 성능을 달성할 수 있습니다. 교차 모드 전송은 지식 획득에 더 도움이 되고, 더 많은 새로운 기능을 생성하며, 기능 출현을 가속화합니다. 이러한 독립 모드 또는 교차 모드의 새로운 기능, 기능 또는 패턴은 일반적으로 의도적인 프로그래밍이나 교육을 통해 획득되지 않지만 모델은 대량의 다중 모드 데이터에서 자연스럽게 학습됩니다.
Chain of Thought는 대규모 언어 모델에서 나타나는 핵심 기능 중 하나로 간주될 수 있습니다. 사고 연결은 대중이 언어 모델이 "인간과 같다"고 느낄 수 있게 해주는 ChatGPT 및 GPT 4의 핵심 기능입니다.
다중 모드 사고 체인 기술을 통해 GPT 4는 다단계 문제(예: 그래픽 추론)를 독립적으로 해결할 수 있는 중간 단계로 분해합니다. 다단계 추론 문제를 해결할 때 모델에 의해 생성된 사고 사슬은 인간의 사고 과정을 모방합니다.
이러한 GPT 4 모델에는 실제 의식이나 사고 능력이 없지만 인간의 추론과 유사한 사고 체인을 사용하여 언어 모델을 실행하므로 추론 작업에 대한 GPT 4의 성능이 크게 향상되고 미세 조정이 중단됩니다(Fine). -조정) 평평한 곡선. 다중 모드 사고 체인 기능을 갖춘 GPT 4 모델은 특정 논리적 분석 기능을 갖추고 있으며 더 이상 전통적인 의미의 어휘 확률 근사 모델이 아닙니다.
3.3 ChatGPT의 훈련 단계
모델의 규모가 지속적으로 확장되면서 다양한 작업에서 뛰어난 성능을 발휘할 수 있게 되었지만, 본질적으로 모델이 사용자의 의도를 잘 따라가지 못하게 됩니다. 예를 들어, 대규모 언어 모델은 사실이 아니며, 인간의 도덕적 기준과 사회적 규범에 맞지 않고(독성), 사용자에게 쓸모 없는 답변을 생성할 수 있으며, 일반적으로 인간과 의사소통할 수 없습니다.
출력된 답이 인간이 원하는 답이 아닌 이유는 무엇일까?
한 가지 설명은 모델 학습 시 목적 함수를 설정하는 문제인데, 대규모 언어 모델을 학습할 때 모델이 텍스트의 다음 단어를 생성하도록 하는 것이 목표인데 이는 고품질의 우수한 답변을 생성하려는 목표와 다릅니다. 지시에 따라. of. 그렇다면 모델을 인간과 어떻게 연결합니까?
이러한 기술은 ChatGPT, 즉 바이오피드백 강화 학습(인간 피드백을 통한 강화 학습, RLHF) 뒤에 사용됩니다 . 구체적인 방법은 먼저 OpenAI API에 질문 주석 데이터를 제출하고 답변을 작성하여 모델을 미세 조정한 다음, 질문에 대한 다양한 답변의 모델 순위 데이터 세트를 수집하고 수동으로 답변의 품질 순위를 매기는 것입니다. , 강화 학습 모델을 사용하여 학습합니다.
ChatGPT의 교육 과정은 다음 세 단계로 나뉩니다.
첫 번째 단계: 지도 정책 모델 훈련
GPT 3 자체는 다양한 유형의 인간 지시에 포함된 다양한 의도를 이해하기 어렵고, 생성된 콘텐츠가 고품질 결과인지 판단하기도 어렵습니다. GPT 3가 처음에 지침을 이해하려는 의도를 갖기 위해 먼저 데이터 세트에서 질문이 무작위로 선택되고 인간 주석자가 고품질 답변을 제공합니다. 그런 다음 이러한 수동으로 주석이 달린 데이터를 사용하여 GPT 3를 미세 조정합니다. 모델(SFT 모델을 얻기 위해 Supervised Fine-Tuning)
현재 SFT 모델은 다음 지침/대화에서 이미 GPT 3보다 우수하지만 반드시 인간 선호도와 일치하지는 않습니다.
두 번째 단계: 훈련 보상 모델(Reward Mode, RM)
이 단계에서는 주로 훈련 데이터(약 33K 데이터)의 수동 주석을 통해 보상 모델을 훈련합니다. 데이터 세트에서 무작위로 질문을 샘플링하고 첫 번째 단계에서 생성된 모델을 사용하여 각 질문에 대해 다양한 응답을 생성합니다. 휴먼 어노테이터는 이러한 결과를 고려하여 순위 순서를 지정합니다. 이 과정은 코칭이나 멘토링과 유사합니다.
다음으로, 이 순위 결과 데이터를 사용하여 보상 모델을 학습합니다. 여러 정렬 결과는 쌍으로 결합되어 여러 훈련 데이터 쌍을 형성합니다. RM 모델은 입력을 받아 답변의 품질을 평가하는 점수를 제공합니다. 이러한 방식으로 한 쌍의 훈련 데이터에 대해 고품질 답변이 낮은 품질 답변보다 높은 점수를 얻도록 매개변수가 조정됩니다.
세 번째 단계: PPO(Proximal Policy Optimization, Proximal Policy Optimization) 강화 학습을 사용하여 전략을 최적화합니다.
PPO의 핵심 아이디어는 Policy Gradient의 On-policy 훈련 과정을 Off-policy로 전환, 즉 온라인 학습을 오프라인 학습으로 전환하는 것인데, 이 전환 과정을 Importance Sampling이라고 합니다. 이 단계에서는 두 번째 단계에서 훈련된 보상 모델을 사용하고 보상 점수를 사용하여 사전 훈련된 모델의 매개변수를 업데이트합니다. 데이터 세트에서 질문을 무작위로 선택하고, PPO 모델을 사용하여 답변을 생성하고, 이전 단계에서 훈련된 RM 모델을 사용하여 품질 점수를 부여합니다.
보상 점수는 순차적으로 전달되어 정책 그라데이션이 발생하고 강화 학습을 통해 PPO 모델 매개 변수가 업데이트됩니다.
두 번째와 세 번째 단계를 지속적으로 반복하면 반복을 통해 더 높은 품질의 ChatGPT 모델이 학습됩니다.
4. 대형 모델 개발 방향
현재 대형 모델이 기술 붐을 일으키고, 그 응용이 봄꽃처럼 피어나고 있는 가운데, 각계각층에서 적극적으로 탐색하고 기회를 포착하고 있습니다. 비록 우리가 아직 대규모 모델을 구현하는 초기 단계에 있지만, 현재 업계에 진입하는 사람들에게 상당한 이점을 제공하는 것은 바로 이 탐색 기간입니다. 실제로 대형 모델과 관련 직위는 현재 공급이 부족하여 이 분야의 엄청난 잠재력과 전망을 보여줍니다. 개발을 위해서는 다음 세 가지 측면을 고려할 수 있다고 생각합니다.
- 기술을 제품으로 전환하고 대규모 언어 모델의 상업적 적용을 실현하는 방법은 무엇입니까?
적용대상 : 뛰어난 프로그래밍 능력 및 신속한 엔지니어링 능력
대규모 언어 모델, 특히 OpenAI의 온라인 대규모 모델과 같은 제품은 뛰어난 기술적 성능을 가질 뿐만 아니라 상업적 수익화에서도 상당한 이점을 보여줍니다. 주요 장점은 자동 번역, 지능형 보조자, 텍스트 및 감정 분석 등과 같은 다양한 기본 작업을 광범위하게 지원할 수 있는 강력한 NLP 기능에 있습니다. 또한 이러한 모델은 자연어를 통해 사용자와 원활하게 상호 작용하므로 신제품에 대한 진입 장벽이 크게 낮아집니다.
중요한 것은 OpenAI의 온라인 대규모 모델을 사용하는 데 기본 기계 학습 또는 NLP 원리에 대한 깊은 이해가 필요하지 않다는 것입니다 . 다양한 애플리케이션을 빠르고 민첩하게 개발하기 위한 '블랙박스'로 활용할 수 있습니다. 기본적인 프로그래밍 기술이 있고, 적절한 프롬프트 단어를 설정하는 방법을 알고, 산업 수준의 프롬프트 생성 프로세스를 이해하는 한, 다양하고 강력하고 사용자 친화적인 NLP 애플리케이션을 쉽게 구축할 수 있습니다. 이를 바탕으로 AI 점쟁이, AI 심리상담 등 일련의 창의적인 애플리케이션이 등장해 일상생활과 업무에서 대형 모델의 애플리케이션 시나리오를 더욱 풍부하게 만들었다.
- 사유화된 수직 분야에서 대규모 모델을 개발하고 훈련하는 방법은 무엇입니까?
지원대상 : 머신러닝, 딥러닝, 자연어처리(NLP) 등 AI에 대한 탄탄한 기본 지식을 보유하신 분
GPT 모델 시리즈의 전체 세부 사항은 아직 완전히 오픈 소스가 아니지만, 이들의 성공으로 언어 모델 성능을 향상시킬 수 있는 경로가 지적되었습니다. GPT에서 영감을 받아 전 세계 주요 기술 회사에서는 BERT, GPT 또는 기타 Transformer 조합을 기반으로 하는 대형 모델을 적극적으로 개발하고 있습니다. 국내 일류 ChatGLM 시리즈를 예로 들면, BERT와 GPT 개념을 바탕으로 개발된 중국산 대형 모델입니다. 동시에 바이오 피드백 강화 학습(RLFH), 근접 정책 최적화(PPO), 보상 기반 가중치(Reward-based Weighting), DeepSpeed 훈련 엔진 등 대규모 모델 개발 및 훈련과 관련된 기술도 있습니다. 빠르게 발전하며, 거침없는 추진력을 보여주었습니다. 더 이상 NLP 이론의 정점은 아닐지라도, 알고리즘 개발과 대형 모델의 훈련이 여전히 NLP 분야의 가장 최첨단 연구 방향 중 하나라는 점에는 의심의 여지가 없습니다.
- 대형 모델의 적용 임계값과 적용 비용을 줄이는 방법은 무엇입니까?
적용대상 : 머신러닝, 딥러닝, 자연어처리(NLP)에 대한 탄탄한 기초지식을 보유하거나, Prompt Engineering 역량이 뛰어난 분
대형 모델은 많은 양의 데이터와 컴퓨팅 리소스를 소비하므로 상용 애플리케이션에서는 비용이 많이 드는 경우가 많습니다. 이러한 장벽과 비용을 줄이기 위해 다양한 첨단 사전 훈련, 미세 조정, 대규모 코퍼스 구축 기술이 빠르게 발전하고 있습니다. 2020년부터는 SFT(Supervised Fine-Tuning), LoRA(Low Order Adaptive Fine-Tuning Method), 프롬프트 단어 접두어 미세 조정(Prefix Tuning), 경량 프롬프트 등 혁신적인 미세 조정 및 자동 코퍼스 생성 방법이 많이 등장했습니다. 말 그대로 Fine-tuning(Prompt Tuning), 효율성을 100배로 향상시키는 미세 조정 방법 P-Tuning V2, 적응형 예산 할당 미세 조정 방법(AdaLoRA) 등이 있습니다. 이러한 기술은 GPT-4.0과 같은 고급 모델의 개발을 촉진했을 뿐만 아니라 NLP의 연구 및 적용에 지대한 영향을 미쳐 해당 분야의 현상을 크게 변화시켰습니다.
마지막으로, 이 글을 읽어주셔서 감사합니다! 뭔가 얻은 것이 있다고 느끼신다면 잊지 말고 좋아요와 수집, 팔로우를 해주세요. 이것이 제가 계속 창작을 하는 원동력입니다. 질문이나 제안 사항이 있는 경우 댓글 영역에 메시지를 남겨주시면 최선을 다해 답변하고 피드백을 수용하겠습니다. 알고 싶은 특정 주제가 있는 경우 알려주시면 기꺼이 그에 관한 기사를 작성해 드리겠습니다. 여러분의 지원에 감사드리며, 여러분과 함께 성장하길 기대합니다!