본문 바로가기
Computer Science/기계학습

[Transformer] 1

by 큌 2024. 6. 18.
반응형

NN에 의한 표현 학습

• MLP, CNN 또는 RNN이 학습하는 내용:

– 일부 작업에 대해 입력 표현을 잠재 표현으로 가장 잘 변환하는 가중치 집합(예: 예측)

• MLP: 행렬 곱셈

• CNN: 컨벌루션

• RNN: MLP와 유사하지만 순차적인 처리와 추가가 가능합니다

• 일련의 관련 요소(문장의 토큰과 같은)로 분할할 수 있는 순차적 입력, 또는 보다 일반적으로 입력에 대한 더 나은 표현을 학습하는 방법 반복에 의한 시퀀스 모델링

• 반복을 이용한 RNN 모델 시퀀스 종속성

• 재발을 완전히 제거하여 병렬화하고 더 긴 의존 관계를 처리할 수 있습니까 트랜스포머: "관심만 있으면 됩니다", NIPS 2017

• 어텐션 메커니즘을 통해 시퀀스 내 또는 시퀀스 간(입력 및 출력) 글로벌 종속성을 모델링할 수 있습니다

• 다양한 다른 모델(RNN 또는 CNN 기반)보다 성능이 뛰어납니다

• 전체 아키텍처

– 인코더

– 디코더

– 위치 부호화

고전적인 풍경: "커뮤니티" 당 하나의 아키텍처

트랜스포머 인수: 한 번에 하나의 커뮤니티

두 번째 큰 인수: 컴퓨터 비전

이미지의 가치는 16x16 워드: 규모에 맞는 이미지 인식을 위한 트랜스포머 이미지를 16px²의 패치로 잘라 "토큰화"하고, 각 패치를 토큰으로 취급합니다 세 번째 대규모 인수: 스피치

Conformer: 음성 인식을 위한 컨볼루션 증강 트랜스포머 컴퓨터 비전과 대체로 같은 이야기입니다. 하지만 이미지 대신 스펙트로그램을 사용합니다.

컨볼루션을 사용하여 세 번째 유형의 블록을 추가하고 블록의 순서를 약간 바꾸지만 전체적으로 매우 트랜스포머와 유사합니다.

인코더-디코더 변형 또는 CTC 손실이 있는 인코더 전용 변형으로 존재합니다.

트랜스포머의 공동체 통일

토큰화할 수 있는 모든 것을 트랜스포머에 공급할 수 있습니다 각자의 방식으로 서로 다른 양식을 토큰화하여 모두 트랜스포머에 공동으로 보냅니다. 현재 이 작업을 수행하는 작업이 폭발적으로 증가하고 있습니다!

자기 주의 메커니즘

자기주의에 의한 표상학습

• 토큰 간의 글로벌 종속성을 반영하는 잠재 표현을 얻는 방법 주의기능

• 주의 함수는 쿼리(q)와 키 값 쌍(K,V) 집합을 출력에 매핑합니다 – 출력 = 값의 가중 합 vi

– weight(ai) = 각 키 ki와의 쿼리(q)의 유사도(attention) 점수 자기주의

• 단일 시퀀스의 서로 다른 위치와 관련된 주의 메커니즘 – 일문일답의 주의

– 쿼리(Q), 키(K) 및 값(V)이 동일한 소스에서 추출됩니다 트랜스포머의 자기 주의: 주요 아이디어

• 자기 주의를 통해 입력 표현 [x1,x2,...,xT]를 더 나은 표현 [z1,z2,...,zT]으로 변환 보다 정확하게는 쿼리, 키 및 값을 계산하기 위해 훈련 가능한 가중치 매개변수(행렬)(𝑊Q, 𝑊K, 𝑊V)를 도입합니다: (scaled 도트 제품 주의)

자기주의: 예

입력 순서: "나는 학생입니다"

1. Q, K, V 계산

2. 크기 조정된 도트 제품 주의(단일 쿼리) 자기주의 : 일괄계산

• 실제로는 행렬 표기법을 사용하여 n개의 쿼리에 대한 점수를 동시에 계산할 수 있습니다 종합 트랜스포머 아키텍처: 인코더

나머지 질문:

 모델 교육 방법(대상 작업 & 손실)  트랜스포머 블록에서 자기 주의만?

 입력 토큰의 순서를 무시해도 되겠습니까?

예측을 위한 토큰 집계

• 평균 풀링

– 전체 토큰 임베딩의 평균을 취한 다음 그 위에 분류기 또는 회귀기를 훈련하여 대상 작업을 해결합니다 • 분류토큰

– 더미 토큰([CLS])이 입력 시퀀스에 추가되어 집계된 임베딩으로 사용됩니다 시퀀스 생성(예: 번역)의 경우:

• 모든 입력 토큰 임베딩은 교차 주의를 통해 디코더에서 주의 기능에 사용됩니다

트랜스포머: 모델 아키텍처

• 인코더-디코더 구조

• 인코더는 입력(x1, ..., xn)을 z=(z1, ..., zn)에 매핑합니다 • z=(z1, ..., zn)가 주어지면 디코더는 출력 y=(y1, ..., yT)를 생성합니다

• 각 단계는 자동 회귀적입니다. y1, y2, …, yt-1 및 z가 주어지면 yt를 생성합니다

자기주의

• 전체 입력 시퀀스는 쿼리, 키 및 값을 만드는 데 사용됩니다(주의 기능에서)

• 각 토큰은 전체 입력을 "주위"하고 표시된 내용에 따라 표현을 업데이트하는 방법을 결정할 수 있습니다 멀티 헤드 어텐션

• 다양한 학습된 선형 투영을 사용하여 쿼리, 키 및 값을 시간 단위로 투영합니다

• 그런 다음 쿼리, 키 및 값의 각 예상 버전에 대해 주의 기능을 병렬로 수행합니다

• 이들을 연결하여 다시 한 번 투영(W^O 사용)하여 최종 값을 산출합니다 인코더: 피드 포워드

위치별 MLP

각 토큰에 개별적으로 적용되는 간단한 MLP: 선형 변환은 여러 위치에서 동일하지만 각 층마다 다른 매개 변수를 사용합니다 대부분의 매개변수가 포함되어 있습니다.

인코더 – 입력 표현

입력(토큰화 및) 임베딩

입력 텍스트는 먼저 "토큰" 조각으로 나뉩니다: "탐정이 수사했다" -> [the_] [탐정_] [수사] [igat] [ed_] 토큰은 "어휘"의 인덱스입니다:

[the_] [형사_] [수사] [igat] [ed_] -> [3721 68 1337 42] 각 vocab 항목은 학습된 모델 차원 벡터에 해당합니다.

위치 인코딩

주의는 순열 불변입니다. 순서는 네트워크에 전혀 영향을 미치지 않습니다! 각 단어의 위치를 인코딩해야 합니다. 무엇인가를 추가하십시오.

위치 부호화

• 트랜스포머에서 재발 또는 컨벌루션 없음

• 이러한 정보를 활용하려면 시퀀스에서 토큰의 상대적 또는 절대적 위치에 대한 정보를 주입해야 합니다

• 인코더 및 디코더 스택 하단의 입력 임베딩에 "위치 인코딩" 추가

디코더

• 인코더 출력 z=(z1, ..., zn) 및 y1, ..., yt-1이 주어지면 디코더는 다음 출력 yt를 생성합니다

• N개의 동일한 층의 스택으로 구성됨

• 각 레이어에는 3개의 하위 레이어(Masked Multi-head Self-attention)가 있습니다. (y1, ..., yt-1)

– 인코더 스택의 출력에 대한 멀티 헤드 어텐션(교차 어텐션)

– 위치별 완전 연결 피드포워드 네트워크

• 잔류 연결 및 계층 정규화

교차 주의

• 각각의 디코딩된 토큰은 인코더의 출력을 "바라보게" 할 수 있습니다: – Q: 디코더 상태(예: 주스의 임베딩) – K 및 V: 인코더 상태(학생임)

• 자기 주의는 매우 널리 사용되기 때문에 사람들은 그것을 "주의"라고 부르기 시작했습니다.

• 따라서 이제 우리는 종종 이것을 "교차 주의"라고 명시적으로 부를 필요가 있습니다

디코더: 출력 레이어

출력층

이미 K개의 토큰을 생성했다고 가정하고 다음 토큰을 생성합니다.

단순: 선형 투영 후 소프트맥스 활성화 트랜스포머 아키텍처: 요약

• 인코더-디코더 아키텍처

– 인코더 또는 디코더는 실제로 개별적으로 사용할 수 있습니다

• 멀티 헤드 셀프 어텐션은 입력 시퀀스와 출력 시퀀스를 나타내는 데 사용됩니다

• 트랜스포머의 잔류 연결과 레이어 정규화는 모두 매우 심층적인 모델을 훈련하는 데 중요합니다

• 위치별 MLP는 동일한 MLP를 사용하여 모든 시퀀스 위치에서 표현을 변환합니다

사전 교육된 변압기

트랜스포머 기반의 사전 훈련된 모델

• BERT: 언어 이해를 위한 심층 양방향 트랜스포머 사전 교육 [Devlin et al.NAACL 2018] (구글 AI Language 개발)

• GPT-3: 언어 모델은 퓨샷 학습자 [Brown et al. NeurIPS 2020] (OpenAI 개발)

• 비전 트랜스포머(ViT): 이미지는 16x16 워드의 가치가 있습니다: 이미지를 위한 트랜스포머 규모에 따른 인지도 [ICLR 2021] (구글 리서치 제공)

• 그리고 다양한 도메인을 위한 다른 많은 것들 BERT

언어이해를 위한 심층 양방향 트랜스포머 사전교육 [Devlin et al., 2018]

• 트랜스포머 인코더 사용

• 사전 교육 대상:

– 북스 코퍼스 (8억 단어)

– 영어 위키백과 (25억 단어)

• 64 TPU 칩으로 4일간 사전 교육

• 단일 GPU에서 실용적이고 일반적인 미세 조정

• "한 번은 미리 훈련하고, 여러 번은 미세한 운을 뗀다."

• 광범위한 NLP 작업을 위해 최소한의 아키텍처 변경이 필요합니다 BERT 아키텍처

• 사전 훈련된 BERT

• 확장 – RoBERTa, SpanBERT, DistilBERT...

사전 교육 작업

1) 마스킹 언어 모델링(MLM)

한국에 위치한 아주대학교

토큰의 무작위 15% 예측

– 입력된 단어를 [MASK]로 대체하는 시간이 80%입니다

– 입력된 단어를 10%의 임의 토큰으로 대체 – 입력된 단어를 변경하지 않고 10% 그대로 두십시오

2) 다음 문장 예측(NSP)

– 입력: 한 쌍의 문장 – 출력: 다음 문장 여부

자연어용 SSL

• 워드 임베딩(예: word2vec) – 주어진 컨텍스트에서 중심 단어 예측 • 마스크드 언어 모델(예: BERT) – 마스크드 단어 예측 • 자동 회귀 언어 모델(예: GPT) – 다음 단어 예측 GPT: 언어모델의 생성적 사전훈련

• 트랜스포머 디코더 사용

• GPT-1 (2018): 생성적 사전교육을 통한 언어이해력 향상 • GPT-2 (2019) : 언어모델은 비지도 멀티태스킹 학습자 • GPT-3 (2020): 언어 모델은 몇 번의 기회를 얻지 못하는 학습자 – ChatGPT (2022년 11월) • • GPT-4 (2023)

ChatGPT

• OpenAI 개발 (2022년 11월 launched) • 대규모 언어 모델의 GPT-3.5 아키텍처 위에 구축됨 • 인터넷의 텍스트 데이터를 이용한 교육(45TB) • 인간의 대화를 시뮬레이션하도록 설계되었으며 광범위한 질문에 대해 인간과 같은 반응을 생성할 수 있습니다 GPT-4 [2023년 3월 14일]

• GPT-4는 테스트 takers 중에서 더 높은 근사 백분위수에서 점수를 획득하여 미국 변호사 시험을 능가합니다 – 상위: 하위 10%(GPT-3.5: 하위 10%) – 생물 올림피아드: 상위 1%(GPT-3.5: 하위 31%) • 텍스트뿐만 아니라 이미지를 처리할 수 있습니다 • GPT-4는 허용되지 않는 콘텐츠에 대한 요청에 응답할 가능성이 82% 낮고 사실적인 내용을 생성할 가능성이 40% 높은 것으로 보고되었습니다 GPT-3.5 이상의 응답

• GPT-4o (2024년 5월)

비전 트랜스포머(ViT)

이미지의 가치는 16x16 워드: 규모에 맞는 이미지 인식을 위한 트랜스포머 이전의 많은 작품들은 픽셀 수준에서 자기 주의를 도입하려고 시도했습니다.

따라서 대부분의 작업은 로컬 픽셀 이웃 또는 탐지 위에 높은 수준의 메커니즘으로 주의를 제한합니다.

독립형으로 이미지에 전체 트랜스포머 아키텍처를 사용하는 데 있어서 핵심적인 돌파구는 이미지를 16px²의 패치로 잘라내고 각 패치를 토큰으로 취급하여 입력 공간에 포함시키는 것이었습니다.

멀티모달 애플리케이션

• 이미지 캡션: [image -> 캡션] 토큰화할 수 있는 모든 것을 트랜스포머에 공급할 수 있습니다 각각의 방식으로 서로 다른 양식을 토큰화하여 트랜스포머에 공동으로 전송합니다 효율적인 변압기에 관한 참고사항

시퀀스 길이 N에 대해 자기 주의 연산 복잡도는 O(N²)입니다.

큰 N을 사용하고 싶습니다:

전체 기사 또는 책

풀 비디오 영화

고해상도 이미지

완전한 자기 주의에 대한 많은 O(N) 근사치가 제안되었습니다 그들은 항상 속도와 품질 사이에서 균형을 이룹니다 요약

• 트랜스포머는 자기 주의를 활용하여 데이터를 병렬로 처리함으로써 효율성과 상황에 대한 이해를 향상시킵니다 • NLP이상의 분야에서 성공적으로 적용

• BERT, GPT 및 ViT와 같은 사전 훈련된 모델은 최소한의 미세 조정으로 다양한 작업에 적응할 수 있습니다 • 모델 효율성과 교육 방법의 지속적인 개선으로 접근성과 효과가 확대되고 있습니다 요약된 DNN

• 심층 신경망

– 입력->출력 엔드투엔드 최적화

– 레고처럼 쌓을 수 있는/합성할 수 있는 – 쉽게 전이 학습 및 멀티모달 학습을 지원합니다 – 일을 아주 잘합니다

반응형

'Computer Science > 기계학습' 카테고리의 다른 글

[Unsupervised learning] 2  (0) 2024.06.18
[Unsupervised learning] 1  (0) 2024.06.18
[Recurrent neural network]  (0) 2024.06.18
[Convolutional neural network] 2  (0) 2024.06.18
[Convolutional neural network] 1  (0) 2024.06.18