목차
NLP, CV 및 CG 분야에서 Transformer 모델의 인기로 어텐션 메커니즘(Attention Mechanism)은 점점 더 많은 학자들에 의해 주목받고 있으며 성능 향상을 위해 다양한 딥 러닝 작업에 도입되고 있습니다. Tsinghua University의 Hu Shimin 교수 팀은 최근 CVM에 대한 Attention 리뷰[1]를 발표하여 이 분야의 관련 연구 진행 상황을 자세히 소개했습니다. 포인트 클라우드 애플리케이션의 경우 어텐션 메커니즘을 도입하고 새로운 딥 러닝 모델을 설계하는 것은 당연히 연구 핫스팟입니다. 이 기사는 어텐션 메커니즘을 대상으로 삼고, 포인트 클라우드 애플리케이션 분야에서 개발 및 성공적인 적용을 설명하고, 이 연구 방향에서 돌파구를 만들 것으로 기대하는 학생들을 위한 몇 가지 참고 자료를 제공합니다.
1. 주의 메커니즘의 기원
Attention 메커니즘에 대한 소개는 Mr. Li Mu의 심층 학습 교과서 [2]를 참조하십시오.여기에 Attention 메커니즘에 대한 간단한 설명이 있습니다. 주의 메커니즘은 인간의 시각적 인식을 시뮬레이션하고 수신 및 처리를 위해 정보를 선택적으로 선별하는 메커니즘입니다. 정보를 선별할 때 자율적 프롬프트가 제공되지 않는 경우, 즉 사람이 아무 생각 없이 텍스트를 읽거나 장면을 관찰하거나 오디오를 들을 때 주의 메커니즘은 흑백 장면과 같은 비정상적인 정보에 편향됩니다. 빨간색 소녀, 단락의 느낌표 등 특정 명사와 관련된 문장이나 다양한 대상과 관련된 장면을 읽고 싶을 때와 같이 자율 프롬프트가 도입되면 주의 메커니즘이 이 프롬프트를 도입하고 정보를 선별할 때 이 정보에 대한 민감도를 높입니다. 위의 프로세스를 수학적으로 모델링하기 위해 어텐션 메커니즘은 쿼리, 키 및 값이라는 세 가지 기본 요소를 도입합니다. 이 세 가지 요소가 어텐션 모듈의 기본 처리 단위를 구성합니다. 키(Key)와 값(Value)은 정보의 입력과 출력에 해당하고 쿼리(Query)는 자율 프롬프트에 해당합니다. 주의 모듈의 기본 처리 단위는 아래 그림과 같습니다.
어텐션 메커니즘은 어텐션 풀링을 통해 쿼리와 키를 결합하여 값의 선택 경향을 실현합니다. 키와 값은 알려진 데이터 분포 또는 범주 대응인 교육 작업의 입력 및 출력과 마찬가지로 쌍을 이룹니다. 어텐션 메커니즘은 어텐션 풀에 쿼리를 입력하고 쿼리에서 각 키에 대한 가중치 코드를 설정하고 쿼리와 키 간의 관계를 얻은 다음 해당 값의 출력을 안내합니다. 즉, 쿼리가 키에 가까울수록 쿼리의 출력은 키에 해당하는 값에 더 가깝습니다. 이 프로세스는 어텐션 준수 출력을 안내하기 위해 쿼리에 더 가까운 키-값 대응에 어텐션을 도입합니다. 질의와 키에 해당하는 2차원 관계 행렬을 설정하면 값이 같으면 1, 다르면 0으로 시각화 결과는 다음과 같이 나타낼 수 있다. :
2. Nadaraya-Watson 커널 회귀
다음은 어텐션 메커니즘의 기본 작동 논리를 이해하기 위한 고전적인 어텐션 메커니즘 모델인 Nadaraya-Watson 커널 회귀 [3] [4]입니다. 함수 f에 의해 제어되는 키-값 대응 데이터 세트 {(x1,y1),(x2,y2),...(xi,yi)}가 있다고 가정하고, 학습 작업은 f를 설정하고 새로운 x 키의 평가. 이 작업에서 (xi, yi)는 키와 값에 해당하고 입력 x는 쿼리를 나타내며 목표는 해당 값을 얻는 것입니다. 어텐션 메커니즘에 따르면 x와 키 값 대응 데이터 세트의 각 키 값 사이의 유사성 관계를 조사하여 해당 값의 예측을 설정해야 합니다. 입력 x가 특정 xi 키에 가까울수록 출력 값은 yi에 더 가깝습니다. 여기에서 키-값에 대한 가장 간단한 추정기는 평균입니다.
분명히 이것은 좋은 생각이 아닙니다. 평균 풀링은 키-값 분포에서 샘플의 편차를 무시하기 때문입니다. 키-값 차이가 평가 과정에 도입된다면 결과는 자연스럽게 좋아질 것입니다. Nadaraya-Watson 커널 회귀는 이러한 아이디어를 사용하여 가중치 평가 방법을 제안합니다.
K는 커널로 간주됩니다. 즉, 차이로부터의 편차를 측정하기 위한 가중치로 이해됩니다. 위의 수식을 입력과 키의 차이 가중치에 따라 다시 쓰면 다음과 같은 자체 수식을 얻을 수 있습니다.
위의 가중치를 가우시안 커널에 의해 구동되는 가우시안 가중치로 대체하면 함수 f는 다음과 같이 표현할 수 있습니다.
평균 풀링(왼쪽 패널) 및 가우시안 커널 기반 어텐션 풀링(오른쪽 패널)에서 파생된 샘플 키-값 쌍에 대한 서로 다른 f의 적합도를 비교하기 위한 도식이 여기에 제공됩니다. 후자의 피팅 성능이 훨씬 우수함을 알 수 있습니다.
위의 모델은 비모수적 모델이며, 학습 가능한 매개변수가 있는 경우 [2]의 어텐션 메커니즘 장을 읽는 것이 좋습니다. 여기에 사용된 가우시안 커널과 해당 가우시안 가중치는 쿼리와 키 간의 관계를 설명하는 데 사용됩니다. 주의 메커니즘에서 이 관계의 정량적 표현은 주의 점수입니다. 쿼리 값에 대한 예측을 설정하는 위에서 언급한 프로세스는 쿼리에 대한 키-값 쌍을 기반으로 점수를 설정하고 쿼리 값을 얻기 위해 점수에 가중치를 할당하여 다음과 같이 표현될 수 있습니다.
여기서 α는 가중치, q는 쿼리, kv는 키-값 쌍을 나타냅니다. 교과서[2]에서는 어텐션 점수를 정의하기 위해 사용되는 쿼리와 키 길이 불일치 시간 및 스케일링 내적 어텐션의 가산 어텐션 처리 방법을 다루는 방법도 소개하고 있으며 여기서는 자세히 설명하지 않습니다.
3. 멀티헤드 어텐션과 셀프 어텐션
1) 멀티헤드 어텐션
멀티 헤드 어텐션은 쿼리와 하위 공간 표현을 서로 다른 키 값으로 결합하고 어텐션 메커니즘을 기반으로 다양한 동작의 구성을 실현하여 구조화된 지식과 데이터 종속성을 학습하는 데 사용됩니다. 쿼리, 키 및 값을 변환하기 위해 서로 다른 선형 프로젝션을 독립적으로 학습합니다. 그런 다음 변환된 쿼리와 키-값을 어텐션 풀에 병렬로 보낸 다음 여러 어텐션 풀의 출력을 함께 연결하고 학습할 수 있는 다른 선형 프로젝션으로 변환하여 최종 출력을 생성합니다. 이 디자인을 multi-head Attention이라고 합니다[5]. 아래 그림은 학습 가능한 다중 헤드 주의 모델을 보여줍니다.
각 어텐션 헤드의 수학적 정의는 다음과 같습니다. 쿼리 q, 키 k 및 값 v가 주어지면 각 어텐션 헤드 h의 계산 방법은 다음과 같습니다.
여기서 f는 부가적인 주의 및 스케일링된 내적 주의일 수 있습니다. 다중 헤드 어텐션의 출력은 더 복잡한 기능을 모방하기 위해 다중 어텐션 메커니즘의 출력을 연결하기 위해 또 다른 선형 변환을 거칩니다.
2) Self-attention 및 위치 부호화
어텐션 메커니즘을 기반으로 NLP 문제의 어휘 시퀀스를 어텐션 풀에 입력하고 어휘 요소 그룹을 쿼리와 키 값으로 동시에 사용합니다. 각 쿼리는 모든 키-값 쌍에 주의를 기울이고 주의 출력을 생성합니다. 쿼리와 키 값은 모두 동일한 입력 집합에서 나오므로 이를 셀프 어텐션 메커니즘이라고 합니다. self-attention 메커니즘을 기반으로 한 코딩 방법이 여기에 주어질 것입니다.
토큰 입력 시퀀스 x1,x2,...,xn이 주어지면 해당 출력은 동일한 시퀀스 y1,y2,...,yn입니다. y는 다음과 같이 표현됩니다.
처음에는 이 공식을 잘 이해하지 못했습니다. 그러나 텍스트 번역이라는 특정 작업과 결합하면 이해하기 쉽습니다. 여기서 의미는 토큰의 특정 위치에 있는 요소가 입력 및 출력에 해당한다는 것입니다. 즉, 키-값은 요소 자체입니다. 각 단어와 토큰의 모든 단어의 가중치를 학습하여 가치 예측을 구축하는 기능을 학습해야 합니다.
토큰을 다룰 때 Self-Attention의 병렬 계산이 필요하기 때문에 순차적인 연산을 포기합니다. 시퀀스 정보를 사용하기 위해 입력 표현에 위치 인코딩을 추가하여 절대 또는 상대 위치 정보를 주입할 수 있습니다. 동일한 모양의 위치 임베딩 행렬을 입력 행렬에 추가하여 절대 위치 인코딩을 달성함으로써 행과 열에 해당하는 요소는 다음과 같이 표현됩니다.
행렬 요소의 위치 임베딩에 대한 이 삼각법 기반 표현은 직관적이지 않습니다. 인코딩된 차원과 삼각 함수에 의해 구동되는 곡선의 빈도 사이에 관계가 있다는 것만 알 수 있습니다. 즉, 각 어휘 단위 내부의 다른 차원의 정보는 그림과 같이 해당 삼각 함수 곡선의 빈도가 다릅니다.
각 기본형의 차원이 증가함에 따라 해당 간격에 해당하는 빈도가 감소하는 것으로 보입니다. 이 주파수 변화와 절대 위치 사이의 관계를 명확히 하기 위해 여기에서는 예를 들어 설명합니다. 이것은 0-7의 이진 표현을 출력합니다(주파수 히트맵은 오른쪽에 있음).
여기서 상위 비트는 하위 비트보다 덜 자주 교체됩니다. 위치 부호화를 사용하여 주파수 변환을 기반으로 한 다른 차원의 어원 부호화를 실현한 다음 위치 정보를 추가합니다. 상대위치 코딩은 여기서는 자세히 설명하지 않는다.
4. 변압기 모델
드디어 흥분할 시간입니다! 위의 지식을 이해한 후 Transformer 학습을 위한 기초를 마련했습니다. 입력 표현을 구현하기 위해 여전히 순환 신경망에 의존하는 이전의 Self-Attention 모델과 비교하여 Transformer 모델은 컨볼루션 계층이나 순환 신경망 계층 없이 완전히 Self-Attention 메커니즘을 기반으로 합니다.
Transformer 모델은 코덱 아키텍처이며 전체 아키텍처 다이어그램은 다음과 같습니다.
트랜스포머는 인코더와 디코더로 구성되어 있으며 self-attention 모듈을 기반으로 구축되어 소스(입력) 시퀀스와 타겟(출력) 시퀀스 임베딩 표현에 위치 인코딩이 추가되어 입력된다. 각각 인코더와 디코더. 인코더는 각각 두 개의 하위 계층이 있는 여러 개의 동일한 계층을 쌓아서 구축됩니다. 첫 번째 하위 계층은 다중 헤드 자체 주의 풀링이고 두 번째 하위 계층은 위치 기반 피드포워드 네트워크입니다. 인코더 레이어에서 계산한 쿼리, 키 및 값은 이전 레이어의 출력에서 가져옵니다. 각 하위 계층은 잔여 연결을 사용합니다. 인코더 와 유사하게 디코더도 여러 개의 동일한 레이어로 구성되며 잔여 연결 및 레이어 정규화를 사용합니다. 인코더에 설명된 두 개의 하위 계층 외에도 디코더는 인코더-디코더 주의 계층이라는 중간 하위 계층을 추가합니다. 이 레이어의 쿼리는 이전 디코더 레이어의 출력에서 가져오며 키와 값은 전체 인코더의 출력에서 가져옵니다. 디코더 self-attention에서 쿼리, 키 및 값은 모두 이전 디코더 레이어의 출력에서 파생됩니다. 디코더의 각 위치는 모든 이전 위치만 고려할 수 있습니다. 이 마스킹된 주의는 자동 회귀 속성을 보존하여 예측이 생성된 출력 토큰에만 의존하도록 합니다. 다른 모듈의 구체적인 구현은 자세히 설명하지 않습니다.
참고: 주의 메커니즘에 대한 위의 용어 설명, 원리 소개 및 공식은 주로 Li Mu 교사 [2]의 교과서를 참조합니다.
위에서 언급한 어텐션 메커니즘 원리를 기반으로 포인트 클라우드 처리 작업을 위한 어텐션 메커니즘 딥 러닝 모델을 제안합니다. 다음 블로그에서 관련 작업을 자세히 소개하겠습니다. 계속해서 제 블로그에 관심을 가져주세요.
참조
[1] 엠. 구오, 텍사스, 쑤, JJ. Liu, et al. 컴퓨터 비전의 주의 메커니즘: 설문조사[J]. 전산영상미디어, 2022, 8(3): 331-368.
[2] A. Zhang, ZC. Lipton, M. Li 및 AJ. Smola. 딥 러닝에 대해 자세히 알아보기 [B] https://zh-v2.d2l.ai/d2l-zh-pytorch.pdf .
[3] 에아. 나다라야. 회귀 추정[J]. 확률 이론 및 응용, 1964, 9(1): 141-142.
[4] GS. 왓슨. 부드러운 회귀 분석. Sankhyā: 인도 통계 저널, 시리즈 A, pp. 359-372.
[5] A. Vaswani, N. Shazeer, N. Parmar 등. 주의가 필요합니다. 신경 정보 처리 시스템의 발전, 2017,5998‒6008.