트랜스포머의 엔티티 중 가장 중요한 셀프 어텐션(Self Attention)과 멀티 헤드 어텐션(Multi-head Attention)에 대해 알아보겠습니다.
이번 포스팅에서는 어텐션, 셀프 어텐션, 멀티 헤드 어텐션에 대해서 대략적으로 설명하고, 셀프 어텐션과 멀티 헤드 어텐션의 동작 과정은 다음 포스팅에서 자세하게 설명하겠습니다.
어텐션 (Attention)
어텐션(Attention)은 시퀀스 데이터를 처리하는 데 사용되는 기계 학습 기법입니다.
이 방법은 특히 시퀀스 형태의 데이터, 예를 들어 자연어 문장이나 시계열 데이터와 같은 연속된 정보를 다룰 때 효과적입니다.
어텐션 메커니즘은 시퀀스 내 각 요소(예: 문장 속의 각 단어)의 중요도를 평가하고, 이 중요도에 기반해 각 요소에 가중치를 부여합니다. 이를 통해 모델은 전체 데이터의 맥락을 더 잘 이해하고, 특정 작업에 필요한 중요 정보에 집중하게 해줍니다.
- 어텐션의 특징
- 시퀀스 입력에 수행하는 기계 학습 방법
- 시퀀스 요소 가운데 중요한 요소에 집중하고, 그렇지 않은 요소는 무시하여 성능을 끌어올리는 방법
- Query, Key, Value 세 가지 요소로 작동
- Query: 현재 처리하고 있는 출력의 일부
- Key: 입력의 각 부분에 대응하는 값으로, Query와 비교
- Value: Key에 대응하는 입력의 부분으로, 어텐션 가중치에 따라 결합되어 최종 출력을 생성
셀프 어텐션 (Self Attention)
셀프 어텐션(Self Attention)은 입력 시퀀스 내의 요소들 사이에서 이루어지는 어텐션 메커니즘의 한 형태입니다. 셀프 어텐션은 입력된 시퀀스(예: 문장) 내의 각 요소(단어나 문자)가 서로에게 어떻게 영향을 미치는지를 분석하고, 이러한 상호작용을 바탕으로 정보를 재조정합니다.
셀프 어텐션의 핵심은 각 요소가 시퀀스 내의 모든 요소(자기 자신을 포함)와의 관계를 계산한다는 점입니다. 이를 통해 모델은 각 단어가 전체 문맥 속에서 어떤 역할을 하는지, 어떤 단어들과 밀접한 관련이 있는지를 파악합니다. 이는 특히 복잡한 문장 구조를 해석하거나, 문맥적 의미를 추출하는 데 유용합니다.
- 셀프 어텐션 특징
- 자 자신에게 수행하는 어텐션으로 입력 시퀀스 내 정보를 동적으로 재조정
- 입력 시퀀스 모두 어텐션 계산 수행
- 시퀀스 내의 각 단어가 자기 자신을 포함한 다른 모든 단어와의 관계를 평가하여 한 단어가 문장 내에서 어떻게 다른 단어와 상호 작용하는지를 이해함
- 시퀀스의 장거리 의존성을 이해하는데 유용함
멀티 헤드 어텐션 (Multi-head Attention)
멀티 헤드 어텐션(Multi-head Attetion)은 기본적인 셀프 어텐션 메커니즘을 확장한 개념으로, 셀프 어텐션을 여러 "헤드"를 통해 동시에 여러 번 수행하는 방식입니다. 이는 모델이 다양한 방식으로 데이터를 분석할 수 있도록 하여, 입력 시퀀스의 정보를 더욱 풍부하고 세밀하게 추출합니다.
각 헤드는 독립적으로 셀프 어텐션 계산을 수행하며, 서로 다른 가중치 행렬을 사용하여 입력 데이터의 다른 특징들을 포착합니다. 이렇게 하면, 모델은 같은 데이터를 여러 각도에서 바라보고, 다양한 관점의 정보를 동시에 고려할 수 있습니다.
멀티 헤드 어텐션의 결과는 각 헤드에서 얻어진 정보를 종합하여 하나의 통합된 출력으로 만들어냅니다.
- 멀티 헤드 어텐션 특징
- 셀프 어텐션을 동시에 여러 번 수행하는 것
- 수행 순서
- 각 헤드는 독립적으로 셀프 어텐션을 수행. 각 헤드는 동일한 입력에 대해 다른 Q,K,V 가중치 행렬을 사용하여 셀프 어텐션 계산
- 모든 헤드의 셀프 어텐션 출력 결과를 이어 붙여 각 헤드의 분석결과 통합
- 도출한 결과에 최종 가중치 W0를 곱하여 최종 출력 만듦
- 결과적으로 결과는 각각의 헤드가 분석한 결과의 총 합
- 차원의 계산
- 단어수 2개, 차원 수 4, 헤드 3개 → 2x24 * 24x4 = 2X4
- 각 헤드의 차원 수가 24(즉, 원래 차원 4를 헤드 수 3으로 나눈 값)이고, 이를 모두 합친 후 최종 차원 수 4로 줄이는 것을 의미
- 멀티 헤드 어텐션은 입력 데이터를 다양한 관점에서 분석할 수 있고, 복잡한 단어 간 관계를 포착하는데 강점이 있음
- 수행 순서
- 셀프 어텐션을 동시에 여러 번 수행하는 것
어텐션, 셀프 어텐션, 멀티 헤드 어텐션
어텐션 (Attention)
- 시퀀스 입력에 대한 집중: 어텐션은 연속된 데이터, 예를 들어 문장과 같은 시퀀스 데이터를 처리하는데 사용됩니다. 이 기법은 모델이 입력된 시퀀스의 각 요소(단어나 문자 등)에 주주목하고, 중요한 정보에 집중하며, 상대적으로 덜 중요한 정보는 무시하도록 합니다. 이를 통해 모델은 시퀀스 내에서 각 요소의 중요도를 평가하고, 특정 작업을 보다 효과적으로 수행하게 됩니다.
- 중요한 요소에 가중치 부여: 어텐션은 입력 시퀀스의 각 요소에 가중치를 할당하여 모델의 성능을 향상 시킵니다. 모델은 이 과정에서 중요한 요소에 더 높은 가중치를 부여하고, 그렇지 않은 요소는 상대적으로 적게 고려하도록 가중치를 조절합니다. 이를 통해 모델은 입력 데이터에서 특정 작업에 더 중요한 부분에 집중하여 보다 정확하고 효과적인 처리를 할 수 있습니다.
- Query,Key, Value 구조: 어텐션 메커니즘은 Query, Key, Value라는 세 가지 주요 요소를 활용합니다. Query는 현재 처리하고 있는 단어나 시퀀스 부분을 나타내며, Key는 비교 대상인 다른 단어나 시퀀스 부분입니다. Value는 최종적으로 가중치를 적용 받는 단어나 시퀀스 부분으로, 이들 간의 상호작용을 통해 모델이 어떤 정보에 집중할지 결정합니다.
셀프 어텐션 (Self-Attention)
- 자기 자신에게 수행하는 어텐션: 셀프 어텐션은 동일한 입력 시퀀스 내의 요소들 간의 관계를 분석하는 기법입니다. 이 메커니즘은 시퀀스의 각 요소가 자신을 포함하여 시퀀스 내의 다른 모든 요소들과 어떻게 상호작용 하는지를 평가합니다. 이를 통해 모델은 각 요소가 서로 어떻게 연관되어 있는지 이해하고, 시퀀스 내에서 각 단어의 역할과 그들 사이의 관계를 더 깊게 파악할 수 있습니다. 셀프 어텐션은 모델이 입력 데이터의 문맥을 더 효과적으로 해석하는 데 중요한 역할을 합니다.
- 입력 시퀀스의 모든 요소에 대한 계산: 셀프 어텐션은 입력 시퀀스의 모든 요소에 대해 어텐션 계산을 수행합니다. 이 과정에서 시퀀스 내의 각 단어는 자신을 포함해 다른 모든 단어들과의 관계를 평가하게 됩니다. 셀프 어텐션은 모든 위치에서 이러한 계산을 진행함으로써, 각 단어가 전체 문맥에서 어떤 역할을 하는지, 어떻게 다른 단어들과 상호 작용하는지를 모델이 파악할 수 있도록 합니다. 이를 통해 모델은 입력 데이터의 복잡한 구조와 문맥을 더 깊이 이해할 수 있습니다.
- 시퀀스 내 상호작용 이해: 셀프 어텐션을 통해 모델은 시퀀스 내의 각 단어가 문장 전체에서 어떻게 다른 단어들과 상호 작용하는지를 이해할 수 있습니다. 이는 특히 문장 내의 장거리 의존성(멀리 떨어진 두 단어 사이의 관계)을 이해하는 데 유용합니다.
- Query, Key, Value: 셀프 어텐션 역시 Query, Key, Value 개념을 사용합니다. 다만 여기서는 모든 Query, Key, Value가 동일한 시퀀스(즉, 자기 자신)에서 파생됩니다. 이는 각 단어가 자기 자신과 다른 단어들과의 관계를 계산하는 데 사용됩니다.
멀티 헤드 어텐션 (Multi-Head Attention)
- 셀프 어텐션의 병렬 수행: 멀티 헤드 어텐션은 하나의 셀프 어텐션을 여러 헤드로 나누어 동시에 수행하는 방식입니다. 이는 모델이 입력 데이터를 여러 각도에서 분석할 수 있게 하여, 정보를 더 풍부하게 처리합니다.
- 다양한 관점에서의 분석: 각 어텐션 헤드는 독립적인 가중치 세트를 가지고, 입력 시퀀스를 다르게 해석합니다. 이를 통해 모델은 데이터의 여러 측면을 동시에 파악하고, 다양한 관점에서 정보를 수집합니다.
- Query, Key, Value 가중치 분리: 각 헤드는 자체 Query, Key, Value 가중치 행렬을 가지며, 이를 통해 각기 다른 데이터 표현을 생성합니다. 이는 입력 데이터를 다양한 서브스페이스로 투영하며, 복잡한 패턴과 관계를 포착하는 데 유리합니다.
- 통합된 결과 생성: 각 헤드에서 얻어진 결과는 연결(concatenation)되고, 추가적인 가중치 행렬을 통해 최종 출력으로 통합됩니다. 이 과정을 통해, 멀티 헤드 어텐션은 입력 데이터에 대한 깊은 이해를 바탕으로 보다 정확한 표현을 제공합니다.
- 효율적인 문맥 파악: 멀티 헤드 어텐션을 통해 모델은 문장 내 단어들 사이의 복잡한 관계를 더욱 효과적으로 파악할 수 있으며, 특히 장거리 의존성과 같은 문맥적 특성을 잘 포착합니다.
요약하자면, 어텐션은 시퀀스 내의 중요한 부분에 집중하는 데 모델을 지원하며, 셀프 어텐션은 시퀀스 내 각 요소들이 서로 어떻게 연관되어 있는지 깊이 파악하는 데 중점을 둡니다. 어텐션은 모델이 중요한 정보에 집중하도록 도와주고, 셀프 어텐션은 요소들 사이의 상호작용을 이해하는 데 기여합니다. 이러한 기법을 통해 모델은 입력 데이터의 다양한 특성을 효과적으로 이해하고, 더 정확한 결과를 생성할 수 있습니다.
멀티 헤드 어텐션은 이러한 어텐션 메커니즘을 확장합니다. 여기서는 여러 개의 어텐션 "헤드"가 동시에 동작하여, 각각 다른 방식으로 시퀀스 데이터를 분석합니다. 이를 통해 모델은 데이터의 다양한 측면을 동시에 고려하며, 복잡한 패턴과 의존성을 더 효과적으로 포착합니다. 각 헤드는 독립적인 가중치 행렬을 사용해 다른 서브스페이스에서 데이터를 투영하고, 이들 결과는 결합되어 더 풍부하고 포괄적인 데이터 표현을 생성합니다. 멀티 헤드 어텐션은 특히 복잡한 문맥과 장거리 의존성을 이해하는 데 강점을 가지며, 모델이 더 정확하고 세밀한 해석을 가능하게 합니다.
이번 포스팅에서는 어테션, 셀프 어텐션, 멀티 헤드 어테션에 대해서 알아보았습니다.
다음 포스팅에서는 셀프 어텐션과 멀티 헤드 어텐션의 상세한 동작 과정에 대해서 설명 할 예정 입니다.
트랜스포머
2. 트랜스포머 구조 (Transformer High-level Architecture)
3. 트랜스포머 구조 상세 (Transformer Detailed Architecture)
4. 트랜스포머 훈련과 예측 단계 (Transformer Learning and Inference Step)
5. 트랜스포머 입력과 출력 (Transformer Input and Output)
6. 어텐션, 셀프 어텐션, 멀티 헤드 어텐션 개요 (Transformer Attention, Self Attention, Multi-head Attention)
7. 셀프 어텐션 상세 동작 과정 (Transformer Self Attention Detailed Process)
8. 멀티 헤드 어텐션 상세 동작 과정 (Transformer Multi-head Attention Detailed Process)
BERT
Comment