발전과정
시퀀스 데이터
개념
- 시퀀스 모델(Sequence Model)은 순차적으로 연속된 데이터(시퀀스 데이터)를 처리하고 분석하기 위해 설계된 모델입니다. 시퀀스 데이터는 시간이 흐르거나 특정 순서에 따라 나열된 데이터로, 예를 들어 텍스트, 음성, 동영상, 주식 가격 데이터 등이 이에 해당.
시퀀스 데이터 특징
- 순서가 중요한 데이터 처리: 시퀀스 모델은 입력 데이터의 순서를 고려합니다. 예를 들어, 문장의 단어 순서, 주식 가격의 시간순서, 음성 데이터의 샘플 순서 등에서 데이터가 주어지면, 이 순서를 유지하면서 정보를 처리하고 예측하는 역할을 합니다.
- 이전 정보의 활용: 시퀀스 모델은 현재의 데이터뿐만 아니라, 이전의 데이터(이전 시간 단계나 이전 위치의 정보)를 이용하여 다음에 나올 데이터를 예측하거나 현재 데이터의 의미를 이해합니다.
- 연속적 의존성: 시퀀스 모델은 데이터를 연속적으로 처리하며, 각 단계의 출력이 다음 단계의 입력으로 사용될 수 있습니다. 예를 들어, 문장을 생성하는 모델에서는 이전 단어의 정보를 바탕으로 다음 단어를 예측하는 식입니다.
시퀀스 데이터를 처리하기 위한 딥러닝 모델 종류
- RNN (Recurrent Neural Network)
- RNN은 시퀀스 데이터를 다루기 위해 고안된 신경망입니다. RNN의 주요 특징은 순환 구조입니다. 순환 구조는 이전 시간 단계의 출력을 현재 시간 단계의 입력으로 사용하는 구조입니다. 이를 통해 시퀀스 데이터의 시간적 순서를 반영하고, 과거 정보를 현재 상태에 반영할 수 있습니다.
- 문제점: RNN의 주요 문제점은 기울기 소실(Vanishing Gradient) 문제입니다. 이는 시간이 지남에 따라 과거의 정보가 점차 희미해지거나 사라지게 되어, 긴 시퀀스에서 멀리 떨어진 과거의 정보를 효과적으로 학습하기 어렵게 만듭니다.(장기 의존성 문제또한 그래디언트가 너무 크거나 작아지는 경우 활성화 함수 / 행렬 곱 연산들에 의해 학습이 잘 진행되지 않음.
- LSTM (Long Short-Term Memory)
- LSTM은 RNN의 기울기 소실 문제를 해결하기 위해 고안된 모델입니다. LSTM은 RNN의 변형된 구조로, 각 셀에 셀 상태(Cell State)와 게이트(Gates)라는 개념을 도입했습니다.
- 셀 상태(Cell State): 정보가 비교적 변하지 않고 장기적으로 전달될 수 있도록 하는 경로입니다.
- 게이트(Gates): 정보를 선택적으로 기억하거나 잊게 하는 역할을 합니다. 주로 세 가지 게이트가 있습니다:
- 입력 게이트(Input Gate): 현재 정보를 얼마나 받아들일지 결정합니다.
- 망각 게이트(Forget Gate): 셀 상태에서 과거 정보를 얼마나 버릴지 결정합니다.
- 출력 게이트(Output Gate): 현재 상태를 출력으로 얼마나 반영할지 결정합니다.
- GRU (Gated Recurrent Unit)
- GRU는 LSTM의 또 다른 변형으로, LSTM의 구조를 가볍게한 모델입니다. GRU는 LSTM과 마찬가지로 게이트 구조를 사용하지만, GRU에서는 셀 상태(Cell State) 대신 은닉 상태(Hidden State)만 사용하며, 게이트의 수를 줄여 계산 복잡도를 낮춤. GRU는 구조가 더 간단하기 때문에 LSTM보다 계산이 효율적이며, 적은 양의 데이터나 짧은 시퀀스에서 더 잘 작동할 수 있습니다. 반면, LSTM보다 덜 복잡하기 때문에 매우 긴 시퀀스나 복잡한 패턴을 학습할 때는 성능이 떨어질 수 있습니다.
- 업데이트 게이트(Update Gate): LSTM의 입력 게이트와 망각 게이트의 역할을 통합하여, 어떤정보를 업데이트할지 결정
- 리셋 게이트(Reset Gate): 이전 상태에서 어떤 정보를 잊을지 결정
- Attention RNN
- 개념 : RNN의 문제를 해결하기 위해, 시퀀스 내의 특정 부분에 더 집중할 수 있도록 설계된 방법입니다. 이를 통해 모델은 특정 시간 단계에서 모든 입력을 똑같이 처리하는 대신, 더 중요한 부분에 더 많은 가중치를 부여할 수 있습니다.
- 가중치 할당: Attention 메커니즘은 입력 시퀀스의 각 요소에 가중치를 할당하고, 그 가중치를 기반으로 중요한 정보를 더 강조합니다. 이 가중치는 모델이 학습하는 동안 자동으로 결정됩니다.
- 컨텍스트 벡터(Context Vector): Attention은 모든 입력 요소의 가중합을 계산하여, 현재 단계에서 중요한 정보들을 모아놓은 컨텍스트 벡터를 생성합니다. 이 벡터는 다음 단계의 출력에 사용됩니다.
- Attention RNN의 구조
- 인코더-디코더 구조: 일반적으로 Attention RNN은 인코더-디코더 구조에서 사용됩니다. 인코더는 입력 시퀀스를 처리하고, 디코더는 출력 시퀀스를 생성합니다.
- Attention Layer: 디코더가 출력을 생성할 때, 모든 인코더 상태에 대한 가중합을 계산하는 Attention Layer가 추가됩니다. 디코더는 이 Attention Layer를 통해 입력 시퀀스의 모든 시간 단계에서 중요한 정보를 선택적으로 참조합니다.
- 출력 생성: 디코더는 이 컨텍스트 벡터와 디코더의 현재 상태를 결합하여, 다음 출력 토큰을 예측합니다. 이 과정은 시퀀스의 각 시간 단계마다 반복됩니다.
- Attention RNN의 응용과 장점
- 기계 번역: Attention RNN은 특히 기계 번역에서 중요한 역할을 합니다. 각 단어를 번역할 때, 전체 문장의 모든 단어를 참조하여 보다 정확한 번역을 생성할 수 있습니다.
- 텍스트 요약: 긴 문서에서 중요한 문장을 선택적으로 강조하여 요약을 생성하는 데 활용될 수 있습니다.
- 질문 답변 시스템: 입력된 질문에 대해 관련 있는 문맥을 찾아내고, 그 문맥을 기반으로 답변을 생성할 수 있습니다.
- 시각적 Attention: 이미지 캡셔닝 등에서 이미지의 특정 부분에 집중하여 보다 의미 있는 설명을 생성할 수 있습니다.
- Transformers
- Transformer는 2017년 구글 연구팀이 발표한 논문 "Attention is All You Need"에서 제안된 딥러닝 모델입니다. Transformer는 자연어 처리(NLP)와 같은 시퀀스 데이터를 처리하기 위해 설계되었으며, 그 구조적 혁신으로 인해 기존의 RNN, LSTM, GRU와 같은 순차적 모델들을 크게 능가하는 성능을 보여주었습니다. 번역 tast에서 SOTA 모델의 베이스가 됨. CV와 NLP에 많이 활용됨
- Transformer의 주요 개념
- Attention 메커니즘
- Transformer의 핵심은 Attention 메커니즘입니다. Attention 메커니즘은 입력 시퀀스의 각 요소가 다른 요소들과의 관계를 통해 중요도를 평가하여, 특정 부분에 집중할 수 있도록 합니다.
- Transformer는 특히 Self-Attention(또는 Scaled Dot-Product Attention)을 사용하여 입력 시퀀스 내의 각 단어가 다른 모든 단어들과 얼마나 관련 있는지를 계산합니다.
- 인코더-디코더 구조
- Transformer는 기본적으로 인코더(Encoder)와 디코더(Decoder)라는 두 개의 주요 모듈로 구성되어 있습니다.
- 인코더: 입력 시퀀스를 처리하여 의미 있는 표현(벡터)를 만듭니다. 인코더는 여러 층으로 쌓여 있으며, 각 층은 Self-Attention과 피드포워드 네트워크로 구성됩니다.
- 디코더: 인코더에서 나온 표현을 기반으로 출력 시퀀스를 생성합니다. 디코더 역시 여러 층으로 쌓여 있으며, Self-Attention, 인코더-디코더 Attention, 피드포워드 네트워크로 구성됩니다.
- 병렬 처리
- Transformer는 RNN과 달리 순차적으로 데이터를 처리하지 않고, 모든 입력을 동시에 병렬로 처리할 수 있습니다. 이는 GPU와 같은 병렬 처리 장치에서 효율적으로 동작하며, 훈련 속도를 크게 개선합니다.
- 포지셔널 인코딩 (Positional Encoding)
- Transformer는 순차적 처리를 하지 않기 때문에, 입력 시퀀스의 각 요소의 순서를 명시적으로 전달하기 위해 포지셔널 인코딩을 사용합니다. 이 인코딩은 각 단어의 위치 정보를 추가하여 모델이 단어 간의 순서를 인식할 수 있도록 합니다.
- Attention 메커니즘
- Transformer의 구조
- Self-Attention
- Self-Attention은 입력 시퀀스의 각 단어가 다른 모든 단어들과의 관계를 계산하여, 이 정보를 기반으로 각 단어의 새로운 표현을 만듭니다. 이 과정은 병렬적으로 수행되며, 단어 간의 종속성을 효과적으로 학습할 수 있습니다.
- 멀티-헤드 Attention (Multi-Head Attention)
- Transformer는 Self-Attention을 한 번만 수행하는 대신, 여러 번 독립적으로 수행하여 다양한 관점에서 데이터를 처리합니다. 이 여러 Self-Attention 결과는 나중에 결합되어 더욱 풍부한 표현을 제공합니다.
- 피드포워드 신경망
- Self-Attention 후에, 각 단어 표현은 작은 피드포워드 신경망을 통과합니다. 이 신경망은 각 단어의 표현을 개별적으로 처리하여 더 복잡한 패턴을 학습할 수 있게 합니다.
- 레이어 정규화 및 잔차 연결
- Transformer의 각 층은 레이어 정규화(Layer Normalization)와 잔차 연결(Residual Connection)을 통해 안정적인 학습을 보장합니다. 이는 매우 깊은 네트워크에서도 기울기 소실 문제를 완화합니다.
- Self-Attention
- Transformer의 장점
- 병렬 처리 가능: 시퀀스를 순차적으로 처리하는 RNN과 달리, Transformer는 입력 전체를 한꺼번에 처리할 수 있어, 병렬 처리 및 훈련 속도 면에서 큰 이점.
- 긴 종속성 처리: Self-Attention 메커니즘을 통해, Transformer는 시퀀스 내의 먼 거리의 단어들 간의 관계를 효율적 학습.
- 범용성: Transformer는 텍스트뿐만 아니라, 이미지, 음성, 영상 등 다양한 유형의 데이터를 처리하는 데 확장될 수 있다.
- 확장성 : 모델 사이즈가 커질수록, 성능이 향상 됨.
- Transformer의 응용과 영향
- BERT(Bidirectional Encoder Representations from Transformers): 양방향으로 문맥을 고려하는 사전 훈련된 언어 모델로, 다양한 NLP 작업에서 최고의 성능을 보여줌.
- GPT(Generative Pre-trained Transformer): 주로 텍스트 생성에 사용되는 모델로, 대규모 언어 모델을 기반으로 합니다.
- T5(Text-To-Text Transfer Transformer): 텍스트 기반의 다양한 NLP 작업을 하나의 통합된 프레임워크로 처리
- Transformer 결론
- Transformer는 시퀀스 모델링에서 혁신적인 발전을 이룬 모델로, 특히 자연어 처리에서 뛰어난 성능을 보여주고 있습니다. Attention 메커니즘을 중심으로 하여 시퀀스 내의 모든 요소 간의 관계를 학습하고, 병렬 처리가 가능해 대규모 데이터에서도 효율적으로 학습할 수 있습니다. 오늘날 NLP, 컴퓨터 비전 등 다양한 분야에서 Transformer와 그 변형 모델들이 널리 사용되고 있습니다.
'langchain 공부' 카테고리의 다른 글
생성의 의미, 인코더 디코더 모델(LLM 역사와 발전3) (1) | 2024.09.01 |
---|---|
Transformer와 GPT3까지 발전 과정 (LLM 역사와 발전2) (3) | 2024.09.01 |
RunnablePassthrough() 사용 이유 (0) | 2024.08.29 |
모든 Retriever(검색기) 비교 (0) | 2024.08.29 |
LLM 프로젝트를 기획할 때 겪게 되는 어려운 점들 (0) | 2024.08.12 |