분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
데이크루 5기
GPT4가 알려주는 Transformer_3(기초부터 심화까지)
Transformer_1 : https://dacon.io/competitions/official/236091/talkboard/408068?page=1&dtype=recent
Transformer_2 : https://dacon.io/competitions/official/236091/talkboard/408069?page=1&dtype=recent
저번 시간에는 간단하게
Transformer가 무엇인지
설명만 하려다
Self-Attention, 키-쿼리-밸류, 임베딩까지 알아보았는데요
이번 시간부터 Transformer를 체계적으로 공부해봅시다!
GPT에게 Transformer 모델을 체계적으로 공부하는 방법을 물었더니
라고 하네요!
저희는 첫 시간에 딱 알맞게도 저 순서대로 진행을 했었네요.
이제부터 이 순서대로 계속 진행을 해보겠습니다!
먼저 저번 시간 배웠던
임베딩에 대해 기억하시나요?
한번 더 환기하고 가자면
임베딩은 범주형 변수(예: 단어, 문자)를 고정된 크기의 연속 벡터로 변환하는 과정입니다.
자연어 처리에서 단어와 같은 범주형 데이터를 모델이 처리하기 쉽게 만들 수 있으며,
단어 간의 의미적 관계를 나타낼 수 있습니다.
임베딩 레이어는 일반적으로 행렬(임베딩 행렬)로 표현되며,
각 행은 단어의 고유한 정수 ID에 대응하는 벡터를 나타냅니다.
초기에는 임베딩 행렬이 무작위 값으로 채워져 있지만,
모델이 학습되면서 이 행렬은 데이터로부터 의미 정보를 포착하는 벡터로 업데이트 됩니다.
그래서 저희는 저번 시간에 코드로
"I love AI"가
이렇게 값이 변환되는 것을
보았어요!
그 다음
오늘 처음 배우는
은 무엇이고, Transformer에서 어떻게 사용되는지 알아봅시다.
Transformer는 순환(recurrent) 및 합성곱(convolutional) 연산을 사용하지 않기 때문에,
입력 시퀀스의 순서 정보를 주입할 방법이 필요합니다.
Positional Encoding은 이러한 순서 정보를 제공하는 방법 중 하나로,
고정된 벡터를 각 단어의 임베딩 벡터에 더하여 위치 정보를 포함시키는 방식입니다.
Positional Encoding은 다음과 같은 특징을 갖습니다:
Positional Encoding을 생성하기 위해, 다음 공식을 사용합니다:
여기서 pos는 위치, i는 차원 인덱스, d_model은 임베딩 차원입니다.
이렇게 생성된 Positional Encoding 벡터는 입력 시퀀스의 각 단어에 해당하는 임베딩 벡터와 합산되어,
모델이 위치 정보를 활용할 수 있게 됩니다.
여기서 왜 sin, cos을 사용하고 10000이라는 숫자를 사용하는지 의문이 또 드실 텐데요.
충분히 의문이 해소되었나요?
이로 인해 아래와 같은 부분들이 개선되었습니다.
Transformer의 기본 구조는 위치에 대한 정보를 전혀 포함하지 않습니다.
이는 모델이 문장이나 시퀀스의 구조를 파악하는 데 어려움을 겪을 수 있음을 의미합니다. Positional Encoding을 추가함으로써,
모델은 위치 정보를 인식하고 이를 학습과정에 활용할 수 있게 됩니다.
Positional Encoding이 적용되면,
Transformer 모델은 문장 내 단어들의 순서와 문맥을 파악하는 데 도움을 받을 수 있습니다.
이를 통해 문장을 더 정확하게 분석하고 처리할 수 있게 됩니다.
Positional Encoding은 단어들 사이의 상대적 위치를 인코딩하기 때문에,
모델은 시퀀스 내에서 단어 간의 관계를 학습하는 데 도움을 받을 수 있습니다.
이는 문장 내 단어들의 의존 관계를 이해하는 데 큰 도움이 됩니다.
Positional Encoding을 추가함으로써
Transformer 모델은 입력 시퀀스의 단어들 사이의 상대적 위치 정보를 활용하여 문장 구조와 문맥을 더 정확하게 파악할 수 있게 되어,
전반적인 성능이 향상됩니다.
그래서 Transformer_2에서 알려드린 코드에
이 부분만 추가한다면
혹시 모르는 부분이 있으면 댓글 주시면 함께 알아봐요!
처음부터 지금까지 배운 것을 정리해보겠습니다.
Transformer: Transformer는 인코더와 디코더로 구성된 구조를 가지며, 자연어 처리 분야에서 뛰어난 성능을 보여주는 모델입니다.
이 모델은 기존의 RNN 및 LSTM에 비해 병렬 처리가 가능하여 학습 속도가 빠르고, Self-Attention 메커니즘을 통해 문맥 정보를 효과적으로 학습합니다.
Self-Attention: Self-Attention은 입력 시퀀스 내의 각 단어가 다른 단어와 얼마나 관련되어 있는지를 측정하여 문맥 정보를 포착하는 메커니즘입니다.
이를 위해 Query, Key, Value 행렬을 사용하며, 스케일드 닷 프로덕트 어텐션을 계산하여 최종 결과를 얻습니다.
쿼리-키-밸류(Query-Key-Value): 쿼리, 키, 밸류는 Self-Attention 메커니즘에서 사용되는 행렬로, 각각 다른 가중치 행렬을 곱해 생성됩니다.
쿼리와 키의 행렬곱을 통해 어텐션 점수를 계산하고, 이를 밸류 행렬에 적용하여 최종 어텐션 결과를 얻습니다.
임베딩(Embedding): 임베딩은 범주형 변수(예: 단어, 문자)를 고정된 크기의 연속 벡터로 변환하는 과정입니다.
임베딩을 사용하면 단어와 같은 범주형 데이터를 모델이 처리하기 쉽게 만들고, 단어 간의 의미적 관계를 나타낼 수 있습니다.
Positional Encoding: Positional Encoding은 Transformer 모델에 입력 순서 정보를 제공하는 방법입니다.
임베딩 벡터에 위치 정보를 포함한 벡터를 더함으로써, 모델이 입력 시퀀스의 순서를 고려할 수 있게 됩니다.
Positional Encoding은 주로 사인과 코사인 함수를 사용하여 계산되며, 이를 통해 입력 시퀀스의 위치 정보를 학습하게 됩니다.
다음 시간에는
Multi-Head Attention에 대해 알아 보아요!
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved