이 게시물의 개요
Transformer는 매우 강력한 시퀀스 모델이지만 시퀀스의 길이에 따라 시간과 메모리가 두 배 이상 소요된다는 단점이 있습니다.
이 기사에서는 변환기의 시간 복잡도를 $O(n \sqrt{n})$로 줄이는 어텐션 매트릭스의 희소 분해를 소개합니다.
또한 논문에서는 다음과 같은 내용을 소개하였다.
- 더 깊은 네트워크 훈련 모델의 구조그리고 기본값으로 재설정변경했다
- 어텐션 매트릭스를 다시 계산하여 메모리를 절약하십시오.
- 빠른주의는 훈련에 사용됩니다.
이러한 변화가 있는 모델 경제적인 변압기이 모델을 호출하기로 결정한 것은 수백 개의 레이어가 있는 수만 개의 시퀀스를 모델링할 수 있음을 보여주었습니다.
그런 다음 동일한 모델을 사용하여 이미지, 오디오 및 텍스트를 모델링했습니다.
작업에서 우리는 글로벌 일관성과 다양성을 입증하는 무조건적 샘플을 생성하고 100만 개 이상의 모델 시퀀스에 대해 자기 인식을 사용하는 것이 가능함을 보여줍니다.
목차
1. 소개
2. 배경
3. 요인화된 자기 인식
3-1 학습된 주의 패턴의 정성적 평가
3-2 요인화된 자기 인식
3-3 2차원적 요인주의
4. 스파스 변압기
4-1 팩터링 어텐션 헤드
4-2 수백 가지 수준으로 확장
4-3 다양한 데이터 유형의 모델링
4-4 주의 가중치를 다시 계산하여 메모리 절약
4-5 혼합 정밀 교육
5. 교육
6. 실험
1. 소개
복잡한 고차원 데이터 분포를 측정하는 것은 비지도 학습의 핵심 문제입니다.
또한 비지도 학습의 중요한 구성 요소로 간주됩니다.
신경 자동회귀 방법은 결합 확률 분포를 조건부 분포의 곱으로 분해합니다.
이러한 조건부 분포를 모델링하는 것은 매우 어렵지만 그 자체로 복잡하고 광범위한 종속성을 가지며 학습할 적절한 표현 모델이 필요합니다.
그럼에도 불구하고 Transformer는 여러 NLP 작업에서 뛰어난 성능을 보여줍니다.
이는 부분적으로 일정한 수의 레이어에서 임의의 종속성을 모델링하는 기능 때문일 수 있습니다.
각 자기 인식 계층에 전역 수용 필드가 있는 것처럼 네트워크는 표현 능력을 입력 도메인의 가장 유용한 부분에 할당할 수 있습니다.
따라서 아키텍처는 고정된 연결 패턴을 가진 네트워크보다 다양한 유형의 데이터를 생성하는 데 더 유연할 수 있습니다.
그러나 변환기에 필요한 메모리 및 계산의 양은 시퀀스의 길이에 따라 두 배로 증가합니다.
따라서 변환기는 긴 시퀀스의 사용을 배제합니다.
이 논문의 주요 기여는 성능을 희생하지 않고 시퀀스 길이에 따라 시간 복잡도 $O(n \sqrt(p){n})를 갖는 어텐션 매트릭스의 여러 희소 분해를 도입하는 것입니다.
이러한 작업은 전체 어텐션 계산을 여러 개의 더 빠른 어텐션으로 분할하여 작동하며, 결합되면 조밀한 어텐션 계산에 근접할 수 있습니다.
이 작업에서 자기 인식은 길이를 알 수 없는 시퀀스에 적용되었습니다.
또한 이 논문은 Transformer에 다음과 같은 변경 사항을 적용했습니다.
- 나머지 블록 재구성 및 가중치 초기화
- 스파스 주의 커널은 주의 매트릭스의 하위 집합을 효율적으로 계산합니다.
- 역 순회에서는 주의 가중치가 다시 계산되어 메모리 사용량을 줄입니다.
작업에서는 이렇게 확장된 모델이 자연어, 오디오 및 이미지 생성 및 압축에서 SOTA를 구현할 수 있음을 실험적으로 검증하였다.
아키텍처의 단순성으로 인해 많은 작업에 유용할 것이라고 믿게 됩니다.
2. 배경
이 작업에서 우리는 autoregressive 시퀀스를 생성하는 작업을 고려합니다.
여기서 $x = {x_1, x_2, \cdots, x_n}$ 시퀀스의 일반적인 조건부 확률은 조건부 확률 분포의 곱으로 모델링되고 네트워크 $\theta$에 의해 매개변수화됩니다.
이미지, 텍스트 및 오디오를 별도의 토큰으로 취급해야 합니다.
네트워크 $\theta$는 일련의 토큰을 입력으로 받고 가능한 $v$ 값의 범주 분포를 다음 토큰으로 출력합니다.
여기서 $v$는 어휘의 크기입니다.
교육 목표는 $\theta$에 대한 데이터의 로그 확률을 최대화하는 것입니다.
$\theta$ 모델에 대한 간단하고 강력한 선택은 디코더 전용 변환기입니다.
이러한 모델은 전체 시퀀스에 대해 다중 헤드 자기 인식 블록을 사용하여 입력 시퀀스를 변환한 다음 각 시퀀스 요소에 대해 조밀한 변환을 수행합니다.
네트워크의 자기 인식 부분은 각 $n$ 요소에 대한 $n$ 가중치를 계산해야 하지만 시퀀스의 길이가 증가함에 따라 빠르게 다루기 어려워집니다.
다음 섹션에서는 긴 시퀀스에서 Transformer 아키텍처를 적절하게 모델링하기 위해 변경한 사항을 설명합니다.
4. 요인화된 자기 인식
스파스 변환기는 전체 자기 인식 작업을 아래 그림 1의 b 및 c에 표시된 것처럼 여러 수준의 관심으로 나눕니다.
3-1 학습된 주의 패턴의 정성적 평가
그림 2에서 128계층의 자기 인식 네트워크가 학습한 주의 패턴은 CIFAR-10으로 표현됩니다.
육안 검사는 대부분의 레이어가 대부분의 데이터 포인트에서 희박한 관심 패턴을 가지고 있음을 보여주었습니다.
이는 성능을 크게 저하시키지 않고 어떤 형태의 희소성이 도입될 수 있음을 보여줍니다.
그림 2c에서 다중 레이어는 전역 패턴을 명확하게 보여주고 그림 2d는 데이터 종속 희소성을 보여줍니다.
그리고 둘 다 모든 주의 매트릭스에 주어진 희소성 패턴의 도입에 의해 영향을 받습니다.
3-2 요인화된 자기 인식
자기 인식 계층은 입력 임베딩 행렬 $X$를 연결 패턴 $S = {S_1,\cdots,S_n}$로 매개변수화된 출력 행렬에 매핑합니다.
여기서 $S_i$는 $i$번째 출력 벡터가 가리키는 입력 벡터의 인덱스 집합을 나타냅니다.
출력 벡터는 변환된 입력 벡터의 가중 합입니다.
여기서 $W_q, W_k 및 W_v$는 각각 $\mathbf{x}_i$입니다.
쿼리, 키, 값로 변환되는 가중치 행렬을 지정합니다.
여기서 $d$는 쿼리 및 키의 내부 차원입니다.
각 위치의 출력은 키와 쿼리의 스케일 내적에 의해 가중된 값의 합입니다.
자동 회귀 모델에 대한 완전한 자기 인식은 $S_i = {j: j \leq i}$를 정의하므로 각 요소는 분기의 모든 위치와 자체 위치를 참조할 수 있습니다.
팩터링된 자기 인식에는 대신 별도의 주의 헤더 $p$가 있습니다.
여기서 $m$ 헤더는 인덱스 $A_{i}^{(m)} \subset {j : j \leq i}$의 하위 집합을 정의하고 $S_i = A_{i}^{(m)}$는 이를 허용합니다.
작업에서 우리는 부분 집합 $A$에 대한 효율적인 선택에 주로 관심이 있습니다.
여기서 $|A_{i}^{(m)}| \propto \sqrt(p){n}$.
당분간 우리는 모든 입력 위치가 주의 단계 $p$를 통해 모든 향후 출력 위치에 연결되는 $A$의 유효한 선택도 고려합니다.
모든 $j \leq i$ 쌍에 대해 논문은 $i$가 최대 길이 $p + 1$의 경로를 통해 $j$를 참조할 수 있도록 모든 $A$를 설정합니다.
특히, $j \in A_{a}^{(1)}, a \in A_{b}^{(2)} if $(j, a, b, c, \cdots, i)$ is the 인덱스 경로. , b \in A_{c}^{(3)}$.
이 두 가지 기준을 통해 변압기는 전체 계산 비용을 $에서 $O(n \sqrt(p){n} )로 줄이면서 고정된 단계 수로 모든 입력 위치에서 모든 출력 위치로 신호를 전파하는 기능을 유지할 수 있습니다.
줄인. 논문은 타당성 기준의 완화가 특정 영역에 유용한 귀납 편향이 될 수 있다고 제안합니다.
3-3 2차원적 요인주의
팩터링된 주의 패턴을 2차원으로 정의하는 자연스러운 방법은 하나의 머리가 이전 $l$ 장소를 가리키고 다른 머리가 모든 $l$ 장소를 가리키는 것입니다.
여기서 $l$는 단계$\sqrt{n}$ 근처에서 선택해야 합니다.
이 방법 단계 주의를 불렀다.
형식적으로 표현하면 $t = max(0, il)$ 및 $A_{i}^{( 2 )에 대해 $A_{i}^{(1)} = {t, t+1, \cdots, i}$입니다.
} = {j : (i – j) mod l = 0}$. 이 패턴은 위의 그림 3b에 나와 있습니다.
이 공식은 데이터가 다음과 같이 자연스럽게 단계에 적합한 구조를 가질 때 유용합니다.
B. 이미지 또는 음악 유형. 주기적 구조가 없는 데이터, 예: 페이싱 패턴을 사용하는 네트워크에서는 텍스트와 같은 메시지를 제대로 전달할 수 없습니다.
항목에 대한 공간 좌표가 항목이 미래에 참조할 가능성이 가장 높은 위치와 반드시 상관관계가 있는 것은 아닙니다.
이 경우, 단단히 주의 패턴 $($c$ in Figure 3)$를 사용합니다.
이것은 특정 셀이 이전 위치를 요약하고 이 정보를 미래의 모든 셀에 전달하는 곳입니다.
공식적으로 $A_{i}^{(1)} = {j : (\left \lfloor j/l \right \rfloor = \left \lfloor i/l \right \rfloor)}$로 표현됩니다.
여기서 대괄호는 바닥 기능. 그리고 $A_{i}^{(2)} = {j : j mod l \in {t, t+1, \cdots, l}}$, 여기서 $t = l – c$ 및 $c$는 하이퍼파라미터.
단계가 128이고 $c = 8$이면 모든 미래 포지션은 128보다 크며 포지션 120-128을 참조할 수 있습니다.
모든 위치가 256보다 큰 경우 248-256을 참조할 수 있습니다.
$c=1$ 고정 주의 패턴은 네트워크의 많은 표현이 단 하나의 블록에서 사용되고 소수의 위치가 모든 블록에서 사용되기 때문에 네트워크의 의미를 심각하게 제한합니다.
그래서 논문에서는 $l \in {128, 256}$의 값이 있을 때 $c \in {8, 16, 32}$를 사용하는 것이 적절하다고 했습니다.
이 방법은 단계 제어 주의에 비해 $c$의 계산 노력을 증가시킵니다.
우리는 또한 여러 헤드를 사용할 때 동일한 하위 블록을 참조하는 것보다 크기가 l인 블록 내에서 길이가 c인 별도의 하위 블록을 참조하는 것이 더 낫다는 것을 발견했습니다.
4. 스파스 변압기
4-1 팩터링 어텐션 헤드
일반적인 Dense Attention은 단순히 위 Attention 함수의 선형 변환을 수행합니다.
여기서 $W_p$는 주의 후 가중치 행렬을 나타냅니다.
팩터링된 자기 인식을 통합하는 가장 간단한 기술은 각 잔차 블록에 주의 유형을 사용하고 순차적으로 또는 하이퍼파라미터 결정 부분에 중첩하는 것입니다.
여기서 $r$은 현재 나머지 블록의 인덱스이고 $p$는 팩터링된 어텐션 헤드의 수입니다.
두 번째 방법두 개의 팩터링된 헤드에 의해 참조되는 픽셀의 위치에서 참조되는 헤드를 갖는 것입니다.
그만큼 합병 머리를 의미합니다.
이것은 계산적으로 더 집약적이지만 상수 요인에 의해서만 가능합니다.
세 번째 방법멀티 헤드 어텐션을 사용하는 것입니다.
여기서 $n_h$ 주의 제품은 병렬로 계산된 다음 기능 차원과 함께 합산됩니다.
여기서 $A$는 별도의 어텐션 패턴, 병합된 패턴 또는 참석 기능과 같은 보간된 패턴일 수 있습니다.
또한, Attend 함수에서 가중치 행렬의 차원은 $1/n_h$의 계수만큼 감소하므로 $n_h$의 값에 따라 매개변수의 개수가 변경되지 않습니다.
이 논문은 일반적으로 여러 헤드가 잘 작동하지만 매우 긴 시퀀스의 경우 한 번에 하나씩 순차적으로 수행하는 것이 더 가치가 있음을 발견했습니다.
4-2 수백 가지 수준으로 확장
우리는 트랜스포머가 여러 수준에서 학습하는 데 문제가 있음을 발견했습니다.
측면 손실을 포함하는 대신 다음과 같은 구조적 변경이 적용되었습니다.
첫째, 종이는 활성화 전에 잔여 블록을 사용했습니다.
따라서 $N$ 수준의 네트워크는 다음과 같이 정의되었습니다.
여기서 embed는 다음 절에서 설명하는 함수, $W_{out}$는 가중치 행렬, $resblock(h)$는 어텐션 블록과 위치별 피드포워드 네트워크의 입력을 다음과 같은 방식으로 정규화합니다.
norm 함수는 평면 정규화 및 $ff(x) = W_{2}f(W_{1}x + b_{1}) + b_{2}$를 나타냅니다.
$f$ Gaussian Error의 경우 $f(X) = X \odot sigmoid(1.702 \cdot X)$ 형식으로 사용되는 선형 단위 $($GELU$)$가 사용되었습니다.
달리 정의되지 않는 한 $W_{1}$의 출력 차원은 입력 차원의 4.0배입니다.
$H_{N}$는 $a$ 및 $b$ 함수의 $N$ 응용 프로그램의 합계이므로 각 함수 블록은 출력 레이어에서 직접 기울기를 가져옵니다.
이 문서에서 $W_2$ 및 $W_{p}$의 초기화는 $\frac {1}{\sqrt{2N}}$에 의해 조정되지만 잔여 블록 조정에 대한 입력 임베딩 조정의 비율은 $N에서 불변입니다.
$ 값 . 그대로 유지
4-3 다양한 데이터 유형의 모델링
입력 기호를 포함하는 것 외에도 위치 인코딩은 일반적으로 변환기 및 기타 위치 독립적 아키텍처에서 데이터의 공간 관계를 인코딩하는 데 사용됩니다.
데이터의 구조 또는 요인화된 주의 패턴을 인코딩하는 학습된 임베딩의 사용은 모델의 성능에 매우 중요합니다.
논문에서는 각 입력 위치에 임베딩 $n_{emb} = d_{data}$ 또는 $n_{emb} = d_{attn}$를 추가합니다.
여기서 $d_{data}$는 데이터의 차원 수이고 $d_{attn}$는 팩터링된 주의의 차원 수입니다.
$\mathbf{x}_{i}$가 시퀀스에서 요소 $i$의 원-핫 인코딩된 값인 경우 $\mathbf{o}_{i}^{(j)}$는 $j $입니다.
두 번째 차원에서 $\mathbf{x}_{i}$의 원-핫 인코딩 위치를 나타냅니다.
이미지의 경우 $d_{data} = 3$는 열, 행 및 채널을 나타내는 데 사용되고 텍스트 및 오디오의 경우 $d_{attn} = 2$는 어텐션의 2차원 임베딩에 사용됩니다.
4-4 주의 가중치를 다시 계산하여 메모리 절약
체크포인트 기울기는 심층 신경망을 훈련하는 데 필요한 메모리를 줄이는 효과적인 방법으로 간주됩니다.
이 기술은 실제로 작동하지 않지만 긴 시퀀스를 처리할 때 자기 인식 수준에서 특히 효과적입니다.
이는 이러한 계층의 계산 비용에 비해 메모리 사용량이 높기 때문입니다.
재계산만으로 시퀀스 길이가 16,384인 수백 개의 레이어가 있는 조밀한 주의 네트워크를 훈련할 수 있습니다.
그렇지 않으면 최신 하드웨어에서 실행되지 않습니다.
실험에서 어텐션 및 피드포워드 블록은 리버스 패스 동안 다시 계산되었습니다.
구현을 단순화하기 위해 어텐션 블록 내부에 드롭아웃을 적용하지 않고 대신 각 나머지 추가 끝에 적용했습니다.
이것은 그림 3에 나와 있습니다.
4-5 혼합 정밀 교육
작업에서 네트워크의 가중치는 단정밀도 부동 소수점 숫자로 저장되며, 그렇지 않으면 네트워크 활성화 및 기울기가 반정밀도로 계산됩니다.
학습 속도가 빨라집니다.
5. 교육
모든 임베딩에는 일반적으로 {256, 512, 1024} 중 하나인 상수 차원 d가 있습니다.
기본적으로 모든 선형 변환은 입력을 4d로 투영하는 피드포워드 네트워크를 제외하고 동일한 차원을 갖습니다.
또한 때때로 쿼리 및 키 변환의 크기를 절반으로 줄입니다.
6. 실험
이 작업은 이미지, 자연어 및 오디오를 사용하여 밀도 모델링 작업에 대한 아키텍처를 평가했습니다.
이러한 결과의 요약은 아래 표 1에 나와 있습니다.
원천
https://arxiv.org/abs/1904.10509
https://sh-tsang.medium.com/review-sparse-transformer-80cbba4ebaa4