Transformer는 다양한 머신러닝 작업에 인기 있는 선택이 되었고 좋은 결과를 얻었습니다. 그렇다면 또 어떻게 사용할 수 있을까요? 상상력이 뛰어난 연구자들은 실제로 이를 사용하여 프로그래밍 가능한 컴퓨터를 설계하고 싶어합니다!
이 논문의 저자는 프린스턴 대학교와 위스콘신 대학교 출신입니다. 제목은 "프로그래머블 컴퓨터로서의 루프형 트랜스포머"이며, 트랜스포머를 사용하여 일반 컴퓨터를 구현하는 방법을 탐구하는 것을 목표로 합니다.
구체적으로 저자는 변압기 네트워크를 특정 가중치로 프로그래밍하고 루프에 배치하여 범용 컴퓨터로 사용하기 위한 프레임워크를 제안합니다. 이 프레임워크에서 입력 시퀀스는 데이터 읽기/쓰기를 위한 명령과 메모리로 구성된 펀치 카드 역할을 합니다.
저자는 일정한 수의 인코더 레이어가 기본 계산 블록을 시뮬레이션할 수 있음을 입증했습니다. 이러한 빌딩 블록을 사용하여 소규모 명령어 세트 컴퓨터를 시뮬레이션했습니다. 이를 통해 반복 알고리즘을 루프형 13층 변환기로 실행할 수 있는 프로그램에 매핑할 수 있었습니다. 이 변환기는 입력에 따라 역전파를 사용하여 기본 계산기, 기본 선형 대수 라이브러리 및 상황 내 학습 알고리즘을 시뮬레이션할 수 있는 방법을 보여줍니다. 이 작업은 어텐션 메커니즘의 다양성을 강조하고 얕은 변환기라도 완전한 범용 프로그램을 수행할 수 있음을 보여줍니다.
Transformer(TF)는 다양한 기계 학습 작업에 널리 사용되는 선택이 되었으며 자연어 처리 및 컴퓨터 비전과 같은 분야의 많은 문제에 대해 최첨단 결과를 달성했습니다. Transformer가 성공한 주요 이유는 주의 메커니즘을 통해 고차원 관계와 장기적인 종속성을 포착하는 능력입니다. 이를 통해 TF는 상황별 정보를 모델링하고 기계 번역 및 언어 모델링과 같은 작업에서 이를 더욱 효과적으로 만들 수 있습니다. 여기서 Transformer는 지속적으로 다른 방법보다 성능이 뛰어납니다.
GPT-3(175B 매개변수) 및 PaLM(540B 매개변수)과 같이 수천억 개의 매개변수가 있는 언어 모델은 많은 자연어 처리 작업에서 최첨단 성능을 달성했습니다. 흥미롭게도 이러한 대형 언어 모델(LLM) 중 일부는 상황 내 학습(ICL)을 수행하여 짧은 프롬프트와 몇 가지 예를 기반으로 즉석에서 특정 작업을 조정하고 수행할 수도 있습니다. LLM의 ICL 기능은 교육하지 않고도 사용할 수 있으며 이러한 대형 모델이 가중치를 업데이트하지 않고도 새로운 작업을 효율적으로 수행할 수 있도록 해줍니다.
놀랍게도 LLM은 ICL을 통해 알고리즘 작업과 추론을 수행할 수 있으며, [Nye et al. [2021], Wei et al. [2022], Wei et al. Zhou et al. [2022]] 등이 그 타당성을 입증했습니다. [Zhou et al. [2022] ]의 연구에서는 LLM이 다중 비트 추가 알고리즘과 일부 추가 예제가 제공될 때 알려지지 않은 사용 사례에 대한 추가 작업을 성공적으로 수행할 수 있음을 보여줍니다. 이러한 결과는 LLM이 마치 자연어를 코드로 해석하는 것처럼 알고리즘 원리를 기반으로 추론 시 주어진 입력에 대해 사전 지시된 명령을 수행할 수 있음을 보여줍니다.
Transformer가 Attention 레이어 사이에 충분한 깊이 또는 재귀 링크를 사용하여 Turing 머신을 시뮬레이션할 수 있다는 증거가 있습니다 [Pérez et al. [2021], Wei et al. 이는 입력에 의해 지정된 알고리즘 지침을 정확하게 따르는 Transformer 네트워크의 잠재력을 보여줍니다. 그러나 이러한 구성은 상대적으로 일반적이며 특정 알고리즘 작업을 수행할 수 있는 변환기를 만드는 방법에 대한 깊은 이해를 제공하지 않습니다.
그러나 보다 전문적인 디자인을 통해 TF는 더욱 발전된 프로그램을 수행할 수 있습니다. 예를 들어, [Weiss et al. [2021]]은 간단한 선택 및 집계 명령을 입력 토큰을 색인화하는 계산 모델과 프로그래밍 언어를 설계했습니다. 이 언어는 토큰 계산, 정렬, 히스토그램 생성 및 Dyck-k 언어 식별과 같은 다양하고 흥미로운 알고리즘을 만드는 데 사용할 수 있습니다. 그런 다음 RASP(제한된 액세스 시퀀스 처리 언어)로 작성된 프로그램을 Transformer 네트워크에 매핑할 수 있습니다. 이 네트워크의 크기는 일반적으로 프로그램 크기에 따라 확장됩니다.
또 다른 연구에서는 선형 회귀 모델을 동적으로 학습하기 위한 최적화 알고리즘으로 사용할 Transformer 모델 가중치를 선택하고 훈련 데이터를 입력으로 주어진 추론 시간에 암시적 훈련을 수행하는 방법을 보여줍니다. 이러한 방법에는 일반적으로 학습 알고리즘의 반복 횟수에 비례하는 여러 레이어가 필요하며 단일 손실 함수와 모델 앙상블로 제한됩니다.
Turing 기계의 추상 계산, RASP와 같은 언어에 대한 특수 명령, ICL에 대한 특정 알고리즘을 에뮬레이션하기 위해 Transformer 모델을 프로그래밍하는 기능은 다용도로 프로그래밍 가능한 컴퓨터로서 Transformer 네트워크의 잠재력을 강조합니다.
저자의 연구 목표는 이러한 유망한 전망을 탐구하고 Attention 메커니즘이 명령어 세트 아키텍처에서 영감을 받은 범용 컴퓨터를 어떻게 시뮬레이션할 수 있는지 밝히는 것입니다.
이 기사에서 저자는 Transformer 네트워크가 특정 가중치로 하드코딩하고 루프에 배치하여 복잡한 알고리즘과 프로그램을 시뮬레이션할 수 있음을 보여줍니다. 저자는 입력 시퀀스, 비선형 함수, 함수 호출, 프로그램 카운터 및 조건 분기에 대한 편집 작업과 같은 기본 계산 블록을 시뮬레이션하기 위해 리버스 엔지니어링 Attention을 통해 이를 수행했습니다. 저자의 논문은 단일 루프 또는 재귀를 사용하여 Transformer의 출력 시퀀스를 다시 입력에 연결함으로써 심층 모델의 필요성을 피하는 것의 중요성을 보여줍니다.
문서 주소: https://arxiv.org/pdf/2301.13196.pdf
저자는 단일 명령으로 작성된 범용 버전을 실행할 수 있는 Transformer를 설계하여 이를 달성합니다. 프로그램 , SUBLEQ (A,B,C)라고 하며 0보다 작거나 같으면 빼서 분기합니다. SUBLEQ는 단일 명령 집합 컴퓨터(OISC)를 정의하는 단일 명령 언어입니다. SUBLEQ는 3개의 메모리 주소 피연산자로 구성됩니다. 실행 중에 메모리 주소 B의 값을 메모리 주소 A의 값에서 빼고 그 결과를 B에 저장합니다. B의 결과가 0보다 작거나 같으면 주소 C로 점프하고, 그렇지 않으면 다음 명령을 계속 실행합니다. 그러나 이 명령어는 범용 컴퓨터를 정의합니다.
저자는 FLEQ라고 부르는 보다 유연한 단일 명령인 SUBLEQ와 같은 프로그램을 구현하는 명시적 변환기를
형식으로 구성했습니다. 여기서 f_m은 다음 집합에서 얻을 수 있습니다. 함수(행렬 곱셈/비선형 함수/다항식 등)를 네트워크에 하드코딩할 수 있습니다. FLEQ 프로그램을 실행할 수 있는 루핑 변환기의 깊이는 프로그램의 깊이나 코드 줄 수에 의존하지 않고 오히려 단일 FLEQ 명령어를 구현하는 데 필요한 깊이에 따라 달라집니다. 이는 CPU 작동 방식과 유사하게 입력 시퀀스에 대한 루프에서 Transformer를 실행하여 달성됩니다.
이 프레임워크를 사용하여 저자는 기본 계산기, 기본 선형 대수 라이브러리(행렬 전치, 곱셈, 반전, 거듭제곱 반복) 및 역전파를 구현하는 암시적 ICL을 포함하여 추론 시 다양한 기능을 시뮬레이션하는 능력을 보여줍니다. 완전히 연결된 네트워크에서. 입력 시퀀스 또는 프롬프트는 Transformer가 실행해야 하는 명령이 포함된 펀치 카드처럼 작동하는 동시에 프로그램에 사용되는 변수를 저장하고 처리하기 위한 공간을 제공합니다. 이러한 절차를 수행하는 데 사용되는 Transformer 네트워크는 모두 13 이하의 깊이를 가지며 이러한 모든 모델에 대한 가중치 행렬이 제공됩니다. 다음 정리는 저자의 주요 연구 결과를 요약합니다.
정리 1: 일반 컴퓨터(문서의 섹션 5), 기본 계산기(문서의 섹션 7)를 시뮬레이션할 수 있는 13개 미만의 레이어를 가진 순환 변환기가 있습니다. ), 근사 행렬 역산 및 거듭제곱 반복과 같은 수치 선형 대수학 방법(문서의 섹션 8) 및 신경망 기반 ICL 알고리즘(예: SGD)(문서의 섹션 9).
그림 1: 입력 시퀀스가 명령을 저장하는 루핑 Transformer 아키텍처의 개략도, 데이터를 읽고 쓰는 메모리, 중간 결과가 저장되는 스크래치 패드입니다. 입력은 네트워크에 의해 처리되고 출력은 새로운 입력으로 사용되므로 네트워크는 암시적 상태를 반복적으로 업데이트하고 복잡한 계산을 수행할 수 있습니다.
저자의 연구에서는 Attention 메커니즘의 유연성과 단일 루프의 중요성을 강조합니다. 이를 통해 복잡한 반복 알고리즘을 시뮬레이션하고 일반 프로그램을 실행할 수 있는 모델을 설계할 수 있습니다. 복잡한 수학 및 알고리즘 작업을 효율적으로 수행하는 Transformer 모델의 능력을 더욱 입증했습니다. GPT-3과 같은 최신 Transformer는 다양한 작업을 수행할 때 유사한 내부 서브루틴을 사용한다고 생각할 수 있습니다. 이러한 모델별 기술이나 알고리즘의 기능은 함수 호출과 유사하게 상황별 예와 설명이 제공되면 어느 정도 깨달을 수 있습니다. 그러나 저자가 구조를 설계한 방식은 실제 언어 모델이 훈련되는 방식과 유사하지 않으므로 이 가정은 주의해서 다루어야 합니다.
저자들은 그들의 연구가 주의 메커니즘의 잠재력과 알고리즘 명령을 실행하는 언어 모델의 능력에 대한 추가 연구를 장려하기를 희망합니다. 저자가 제안한 설계는 특정 알고리즘 작업을 수행하는 데 필요한 최소 Transformer 네트워크 크기를 결정하는 데 도움이 될 수 있습니다. 또한 저자는 자신의 발견이 특정 알고리즘 작업을 수행하기 위해 더 작은 역엔지니어링 Transformer 네트워크를 활용하여 언어 모델을 훈련하는 능력을 향상시키는 방법 개발에 영감을 주기를 바라고 있습니다.
Transformer 네트워크를 사용하여 일반 컴퓨팅 프레임워크를 구축하려면 특수 컴퓨팅 블록이 필요합니다. 이러한 블록을 조립하여 원하는 최종 기능을 만듭니다. 다음은 Transformer 계층이 수행할 수 있는 다양한 작업에 중점을 둡니다. 이러한 작업은 보다 복잡한 루틴과 알고리즘을 생성하기 위한 기반을 제공합니다. 이러한 작업은 대략적인 순열 행렬 생성 및 시그모이드 함수를 통한 일반 기능 근사화와 같은 다양한 작업을 수행하는 Attention의 기능을 활용하여 서로 상호 운용 가능하도록 설계되었습니다.
그림 2: 소형 명령어 세트 컴퓨터를 구현하기 위한 빌딩 블록으로 사용되는 세 개의 Transformer 블록의 회로도. 이러한 블록은 입력 시퀀스의 편집 작업(예: 한 블록에서 다른 블록으로 이동 또는 복사)을 처리하고, 프로그램 카운터를 추적하고, 지정된 조건이 충족되면 프로그램 카운터 점프를 수행합니다.
위치 인코딩, 프로그램 카운터 및 데이터 포인터
Transformer는 일반적으로 반복 알고리즘을 수행하거나 일련의 명령을 실행해야 합니다. 이를 달성하기 위해 작성자는 명령을 반복하는 프로그램 카운터를 사용합니다. 카운터에는 다음 명령이 저장되는 위치에 대한 코드가 포함되어 있습니다. 또한 명령에는 명령이 읽고 써야 하는 데이터 위치를 가리키는 데이터 포인터가 있을 수 있습니다. 프로그램 카운터와 데이터 포인터 모두 이전 단락에서 설명한 것과 동일한 위치 인코딩을 사용합니다.
저자의 위치 인코딩 체계는 읽기 또는 쓰기를 위해 특정 데이터 위치를 가리키는 데 사용될 수도 있으며 이에 대해서는 다음 섹션에서 설명합니다. 이는 프로그램 카운터 및 데이터 포인터에 대한 위치 인코딩과 동일한 이진 벡터를 사용하여 달성됩니다. 또한 특정 데이터 위치를 가리키는 이 기술을 통해 Transformer는 구현하기 위해 구축된 알고리즘 또는 명령 시퀀스를 실행하는 동안 데이터를 효율적으로 읽고 쓸 수 있습니다.
읽기/쓰기: 스크래치패드에 데이터 및 지침 복사
그림 3: 읽기 작업의 개략도. 화살표는 스크래치패드 명령에 할당된 입력 부분에서 복사된 명령 블록을 보여줍니다. 명령어는 포인터의 집합입니다. 위치 코드와 카운터는 어떤 콘텐츠가 어디에 복사되는지 추적하는 데 사용됩니다.
다음 기본 정리는 프로그램 카운터가 가리키는 명령이나 현재 명령의 지정된 위치에 있는 데이터를 추가 계산을 위해 스크래치 패드에 복사할 수 있음을 나타냅니다. 프로그램 카운터의 위치는 일반적으로 스크래치패드 내용 바로 아래에 있지만 임의로 변경할 수 있습니다. 계산 전반에 걸쳐 특정 위치에 유지하면 구조를 잘 정리하는 데 도움이 됩니다.
다음 보조 정리에서는 스크래치 패드에 저장된 벡터 v가 스크래치 패드 자체에 지정된 대로 메모리의 지정된 위치에 복사될 수 있음을 설명합니다. 이를 통해 추가 사용이나 저장을 위해 데이터를 스크래치패드에서 메모리의 특정 위치로 전송할 수 있습니다.
그림 4: 쓰기 작업의 회로도. 화살표는 데이터 블록이 스크래치 패드에서 메모리에 할당된 입력 섹션의 지정된 위치로 복사되고 있음을 보여줍니다. 위치 인코딩은 대상 위치를 추적하고 데이터가 올바른 메모리 위치에 기록되도록 하는 데 사용됩니다.
조건 분기
이 부분에서 저자는 조건을 평가하고 조건이 참이면 프로그램 카운터를 지정된 위치로 설정하는 조건 분기 명령을 구현합니다. 또는 조건이 거짓일 때 프로그램 카운터를 1씩 증가시킵니다.
명령의 형식은 다음과 같습니다. if mem[a]≤0인 경우 i로 이동합니다. 여기서 mem[a]는 입력 시퀀스의 메모리 부분에 있는 특정 위치의 값입니다. 이 명령은 불일치 판단과 프로그램 카운터 수정의 두 부분으로 구성됩니다.
SUBLEQ Transformer
Mavaddat와 Parhami는 1988년 초에 명령어가 있으며 모든 컴퓨터 프로그램은 다음의 인스턴스화로 구성된 프로그램으로 변환될 수 있음을 입증했습니다. 이 지시. 이 명령어의 변형은 다양한 레지스터나 메모리 위치에 액세스할 수 있는 SUBLEQ입니다.
SUBLEQ의 작동 방식은 간단합니다. 메모리에 있는 두 개의 레지스터에 액세스하여 내용의 차이를 가져와 레지스터 중 하나에 다시 저장합니다. 결과가 음수이면 미리 정의된 다른 코드 줄로 점프하거나 현재 줄의 다음 명령을 계속합니다. SUBLEQ 프로그램을 실행하기 위해 만들어진 컴퓨터를 단일 명령 집합 컴퓨터라고 하며 범용 컴퓨터입니다. 즉, 무한한 메모리에 액세스할 수 있으면 Turing Complete입니다.
다음은 특정 명령어 세트로 작성된 프로그램을 실행할 수 있는 루핑 변환기의 구성을 설명합니다. Transformer는 입력의 메모리 부분을 메모리 레지스터로 사용하고 명령 부분을 코드/명령어 라인으로 사용하여 코드 라인, 메모리 위치 및 프로그램 카운터를 추적합니다. 임시 레지스터는 각 명령어, 읽기, 쓰기, 조건 분기 작업 등과 관련된 추가 및 포인터를 기록하는 데 사용됩니다.
그림 5: 구현된 OISC 명령어 블록의 그래픽 표현. 처음 두 블록은 데이터/명령을 스크래치 패드로 전송하고, 두 번째와 세 번째 블록은 빼기를 수행하고 결과를 저장하며, 마지막 블록은 명령을 완료하는 if goto 명령을 수행합니다.
FLEQ: 더욱 유연한 Attention 기반 컴퓨터
이 섹션에서 저자는 SUBLEQ를 승격하고 보다 유연하게 축소된 명령 집합 컴퓨터를 정의하는 FLEQ를 소개합니다. 이 암시적 추가 명령어 세트는 SUBLEQ의 고급 버전을 기반으로 하며 동일한 Transformer 네트워크에서 여러 기능을 구현할 수 있습니다. 저자는 FLEQ라는 용어를 사용하여 FLEQ가 정의하는 지침, 언어 및 주의 기반 컴퓨터를 나타냅니다.
FLEQ는 단순 뺄셈보다 더 일반적인 함수를 생성하여 행렬 곱셈, 제곱근 계산, 활성화 함수 등과 같은 복잡한 알고리즘을 구현할 수 있도록 설계되었습니다.
Attention을 기반으로 한 컴퓨터 실행 주기. 루프 변환기가 반복될 때마다 프로그램 카운터를 기반으로 입력의 명령어 세트에서 명령어를 가져옵니다. 그런 다음 명령어가 스크래치패드에 복사됩니다. 구현되는 기능에 따라 다양한 기능 블록 위치를 사용하여 기능 결과를 로컬로 기록합니다. 결과가 계산되면 명령어에서 제공하는 지정된 메모리 위치에 다시 복사됩니다.
실행 주기는 이전 섹션의 OISC(단일 명령 집합 컴퓨터)와 유사합니다. 주요 차이점은 각 명령에 대해 미리 선택된 기능 목록에서 선택할 수 있다는 것입니다. 행렬, 벡터, 스칼라와 같은 배열입니다.
시퀀스의 형식을 입력하세요. 그림 6에서 볼 수 있듯이 루프 변환기의 입력 X는 일련의 FLEQ 명령어로 구성된 프로그램을 실행할 수 있습니다(X는 임시 레지스터, 메모리 및 명령어의 세 부분으로 구성됨).
Transformer 기반 기능 블록의 형식. 각 기능 블록은 그림 6과 같이 입력 X의 왼쪽 하단 부분에 있습니다.
그림 6: 입력 구조
위 내용은 Transformer를 범용 컴퓨터로 사용하면 상황 내 학습 알고리즘을 실행할 수도 있습니다. 이 연구는 매우 상상력이 풍부합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!