인코더-디코더 vs 트랜스포머: AI 시대의 핵심 시퀀스 학습 구조 완전 정복하기 🚀

콘텐츠 대표 이미지 - 인코더-디코더 vs 트랜스포머: AI 시대의 핵심 시퀀스 학습 구조 완전 정복하기 🚀

 

 

2025년 3월 기준 최신 트렌드와 발전 현황까지 한 번에 파악하자!

안녕! 오늘은 AI의 심장부라고 할 수 있는 시퀀스 학습 구조에 대해 함께 알아볼 거야. 특히 인코더-디코더와 트랜스포머, 이 두 가지 구조가 어떻게 다르고, 어떤 장단점이 있는지 쉽게 설명해 줄게. 🤓

2025년 현재, AI 기술은 우리 일상 곳곳에 스며들었어. 챗GPT, 바드, 클로드 같은 대화형 AI부터 이미지 생성 AI, 번역 서비스까지... 이 모든 기술의 핵심에는 시퀀스 데이터를 처리하는 신경망 구조가 있어. 그리고 그 중심에 바로 오늘 우리가 알아볼 인코더-디코더와 트랜스포머가 있지!

재능넷에서도 AI 관련 서비스와 교육 콘텐츠가 인기를 끌고 있는데, 이런 기술적 배경을 이해하면 더 효과적으로 AI 서비스를 활용하거나 개발할 수 있을 거야. 자, 그럼 시작해 볼까? 🎯

📚 목차

  1. 시퀀스 학습이란 뭘까?
  2. 인코더-디코더 구조 완전 정복
  3. 트랜스포머의 등장과 혁명
  4. 두 구조 비교: 장단점과 적합한 사용 사례
  5. 2025년 최신 트렌드와 발전 방향
  6. 실제 적용 사례와 코드 예시
  7. 미래 전망: 다음은 무엇일까?

1. 시퀀스 학습이란 뭘까? 🧩

시퀀스(sequence)란 말 그대로 '순서가 있는 데이터'를 말해. 예를 들면:

🔤 텍스트: "안녕하세요, 오늘 날씨가 좋네요"

🎵 음성: 말소리를 디지털로 변환한 신호

📊 시계열 데이터: 주식 가격, 기온 변화 등

🎬 비디오: 연속된 이미지 프레임

시퀀스 학습이란 이런 순서가 있는 데이터에서 패턴을 찾고 의미를 추출하는 기계학습 방법이야. 인간의 언어도 시퀀스 데이터지. "나는 밥을 먹었다"와 "밥을 먹었다 나는"은 같은 단어들로 구성됐지만 순서가 다르면 의미가 완전히 달라지거나 이상해지잖아! 😅

시퀀스 학습의 핵심 과제는 다음과 같아:

  1. 순서 의존성 파악: 데이터의 순서가 가진 의미를 이해하기
  2. 가변 길이 처리: 길이가 다양한 입력과 출력 다루기
  3. 장기 의존성 학습: 멀리 떨어진 요소 간의 관계 파악하기

이런 과제를 해결하기 위해 다양한 신경망 구조가 개발됐는데, 그중에서도 인코더-디코더트랜스포머가 가장 중요한 두 가지 구조야. 이제 각각에 대해 자세히 알아보자! 🕵️‍♂️

시퀀스 데이터의 세계 텍스트 "안녕하세요" "반갑습니다" "좋은 하루!" 오디오 시계열 데이터 비디오 프레임 모두 순서가 중요한 시퀀스 데이터!

2. 인코더-디코더 구조 완전 정복 🔍

인코더-디코더(Encoder-Decoder) 구조는 시퀀스-투-시퀀스(Sequence-to-Sequence, Seq2Seq) 모델의 기본 아키텍처야. 2014년경에 처음 등장했고, 특히 기계 번역 분야에서 큰 혁신을 가져왔어. 간단히 말하면 이 구조는 두 부분으로 나뉘어:

🔒 인코더 (Encoder)

입력 시퀀스를 받아서 고정 길이의 벡터(context vector)로 압축해. 마치 문장의 의미를 응축한 '생각'이라고 볼 수 있지.

🔓 디코더 (Decoder)

인코더가 만든 context vector를 받아서 출력 시퀀스를 하나씩 생성해. 마치 압축된 '생각'을 풀어서 새로운 문장으로 표현하는 과정이야.

이 구조의 핵심은 RNN(Recurrent Neural Network), LSTM(Long Short-Term Memory), 또는 GRU(Gated Recurrent Unit)와 같은 순환 신경망을 사용한다는 거야. 이들은 시퀀스 데이터를 순차적으로 처리하는 데 특화되어 있어.

🧠 인코더-디코더의 작동 방식

예를 들어, 영어 문장 "I love AI"를 한국어 "나는 AI를 사랑해"로 번역하는 과정을 생각해보자:

  1. 인코딩 단계: 인코더는 "I", "love", "AI" 단어를 순서대로 처리해서 문장의 의미를 담은 context vector를 생성해.
  2. 디코딩 단계: 디코더는 context vector를 받아 "나는", "AI를", "사랑해"를 순차적으로 생성해.
인코더-디코더 구조 인코더 I love AI Context Vector 디코더 나는 AI를 사랑해 영어 "I love AI" → 한국어 "나는 AI를 사랑해" Context Vector가 두 언어 사이의 의미를 전달하는 다리 역할을 해요!

🔧 인코더-디코더의 주요 특징

  1. 순차적 처리: 입력과 출력을 순서대로 한 단어씩 처리해.
  2. 가변 길이 처리: 다양한 길이의 입력과 출력을 다룰 수 있어.
  3. 병목 현상: 모든 정보가 하나의 context vector로 압축되어 정보 손실이 발생할 수 있어.

🚨 인코더-디코더의 한계

가장 큰 문제는 바로 '병목 현상(bottleneck problem)'이야. 긴 문장의 모든 정보를 하나의 고정된 크기의 벡터로 압축하다 보니, 문장이 길어질수록 정보 손실이 심해져. 이 문제를 해결하기 위해 어텐션 메커니즘(Attention Mechanism)이 도입됐어.

💡 어텐션 메커니즘

어텐션은 디코더가 출력을 생성할 때 인코더의 모든 hidden state를 참조할 수 있게 해줘. 마치 번역할 때 원문의 모든 부분을 동시에 볼 수 있는 것처럼! 이를 통해 디코더는 출력의 각 단계에서 입력 시퀀스의 어떤 부분에 '집중(attention)'해야 할지 학습할 수 있어.

어텐션 메커니즘의 도입으로 인코더-디코더 모델의 성능은 크게 향상됐지만, 여전히 순차적 처리로 인한 병렬화의 한계가 있었어. 이런 한계를 극복하기 위해 등장한 것이 바로 트랜스포머(Transformer) 구조야! 다음 섹션에서 자세히 알아보자. 🚀

📝 간단한 인코더-디코더 구현 예시 (PyTorch)


import torch
import torch.nn as nn

class Encoder(nn.Module):
    def __init__(self, input_size, hidden_size):
        super(Encoder, self).__init__()
        self.hidden_size = hidden_size
        self.embedding = nn.Embedding(input_size, hidden_size)
        self.gru = nn.GRU(hidden_size, hidden_size)
        
    def forward(self, input, hidden):
        embedded = self.embedding(input).view(1, 1, -1)
        output, hidden = self.gru(embedded, hidden)
        return output, hidden

class Decoder(nn.Module):
    def __init__(self, hidden_size, output_size):
        super(Decoder, self).__init__()
        self.hidden_size = hidden_size
        self.embedding = nn.Embedding(output_size, hidden_size)
        self.gru = nn.GRU(hidden_size, hidden_size)
        self.out = nn.Linear(hidden_size, output_size)
        self.softmax = nn.LogSoftmax(dim=1)
        
    def forward(self, input, hidden):
        output = self.embedding(input).view(1, 1, -1)
        output, hidden = self.gru(output, hidden)
        output = self.softmax(self.out(output[0]))
        return output, hidden
      

3. 트랜스포머의 등장과 혁명 🌟

2017년, Google의 "Attention Is All You Need" 논문을 통해 트랜스포머(Transformer) 구조가 세상에 소개됐어. 이 구조는 기존의 RNN 기반 모델들의 한계를 완전히 뛰어넘는 혁신적인 아키텍처였지. 현재 GPT, BERT, T5 등 최신 언어 모델들은 모두 이 트랜스포머 구조를 기반으로 하고 있어! 🤖

🔮 트랜스포머의 핵심 아이디어

트랜스포머의 가장 큰 혁신은 순환 구조(RNN)를 완전히 제거하고, 셀프 어텐션(Self-Attention) 메커니즘만으로 시퀀스 데이터를 처리한다는 점이야. 이를 통해:

  1. 병렬 처리: 시퀀스의 모든 토큰을 동시에 처리할 수 있어 학습 속도가 빨라졌어.
  2. 장거리 의존성: 시퀀스 내 멀리 떨어진 요소 간의 관계도 효과적으로 포착할 수 있게 됐어.
  3. 확장성: 더 큰 모델과 더 많은 데이터로 확장하기 쉬워졌어.

🏗️ 트랜스포머 구조

트랜스포머도 인코더와 디코더로 구성되어 있지만, 그 내부 구조는 완전히 달라:

트랜스포머 구조 인코더 스택 멀티-헤드 어텐션 피드 포워드 정규화 + 잔차 연결 디코더 스택 마스크드 멀티-헤드 어텐션 인코더-디코더 어텐션 피드 포워드 정규화 + 잔차 연결 입력 임베딩 + 위치 인코딩 출력 임베딩 + 위치 인코딩 셀프 어텐션 모든 단어가 서로 직접 연결!

🧩 트랜스포머의 핵심 컴포넌트

1. 셀프 어텐션 (Self-Attention)

시퀀스의 각 요소가 같은 시퀀스 내의 다른 모든 요소와의 관계를 계산해. 이를 통해 각 단어의 문맥적 의미를 파악할 수 있어.

셀프 어텐션은 Query(Q), Key(K), Value(V) 세 가지 벡터를 사용해:

Attention(Q, K, V) = softmax(QKT/√dk)V

2. 멀티-헤드 어텐션 (Multi-Head Attention)

여러 개의 어텐션 메커니즘을 병렬로 실행해서 다양한 관점에서 정보를 추출해. 마치 여러 명의 전문가가 동시에 문장을 분석하는 것과 비슷해!

3. 위치 인코딩 (Positional Encoding)

순환 구조가 없기 때문에 단어의 순서 정보를 따로 추가해 줘야 해. 위치 인코딩은 각 위치마다 고유한 패턴을 가진 벡터를 더해줘서 모델이 단어의 위치를 인식할 수 있게 해.

4. 잔차 연결 (Residual Connections)과 층 정규화 (Layer Normalization)

깊은 신경망의 학습을 안정화하고 그래디언트 소실 문제를 해결하기 위한 기법들이야. 이를 통해 아주 깊은 트랜스포머 모델도 효과적으로 학습할 수 있게 됐어.

🚀 트랜스포머의 장점

  1. 병렬 처리: RNN과 달리 모든 입력을 동시에 처리할 수 있어 학습 속도가 빨라.
  2. 글로벌 컨텍스트: 시퀀스 내 모든 요소 간의 관계를 직접 모델링할 수 있어.
  3. 확장성: 더 많은 레이어를 쌓고, 더 큰 데이터셋으로 학습시키기 쉬워.
  4. 유연성: 다양한 태스크에 적용 가능한 범용적인 구조야.

트랜스포머의 등장은 자연어 처리 분야에 진정한 패러다임 시프트를 가져왔어. 이 구조를 기반으로 한 GPT(Generative Pre-trained Transformer), BERT(Bidirectional Encoder Representations from Transformers) 같은 모델들이 등장하면서 AI의 언어 이해 및 생성 능력이 비약적으로 발전했지! 🌈

📝 간단한 트랜스포머 구현 예시 (PyTorch)


import torch
import torch.nn as nn
import math

class MultiHeadAttention(nn.Module):
    def __init__(self, d_model, num_heads):
        super(MultiHeadAttention, self).__init__()
        self.num_heads = num_heads
        self.d_model = d_model
        
        assert d_model % num_heads == 0
        
        self.depth = d_model // num_heads
        
        self.wq = nn.Linear(d_model, d_model)
        self.wk = nn.Linear(d_model, d_model)
        self.wv = nn.Linear(d_model, d_model)
        
        self.dense = nn.Linear(d_model, d_model)
        
    def split_heads(self, x, batch_size):
        x = x.view(batch_size, -1, self.num_heads, self.depth)
        return x.permute(0, 2, 1, 3)
    
    def forward(self, q, k, v, mask=None):
        batch_size = q.size(0)
        
        q = self.wq(q)
        k = self.wk(k)
        v = self.wv(v)
        
        q = self.split_heads(q, batch_size)
        k = self.split_heads(k, batch_size)
        v = self.split_heads(v, batch_size)
        
        # 스케일드 닷-프로덕트 어텐션
        matmul_qk = torch.matmul(q, k.transpose(-2, -1))
        
        dk = torch.tensor(self.depth, dtype=torch.float32)
        scaled_attention_logits = matmul_qk / torch.sqrt(dk)
        
        if mask is not None:
            scaled_attention_logits += (mask * -1e9)
        
        attention_weights = nn.Softmax(dim=-1)(scaled_attention_logits)
        
        output = torch.matmul(attention_weights, v)
        output = output.permute(0, 2, 1, 3).contiguous()
        output = output.view(batch_size, -1, self.d_model)
        output = self.dense(output)
        
        return output
      

4. 두 구조 비교: 장단점과 적합한 사용 사례 ⚖️

자, 이제 인코더-디코더와 트랜스포머 구조를 직접 비교해보자! 각각의 장단점과 어떤 상황에서 어떤 구조가 더 적합한지 알아볼게. 🔍

비교 항목
인코더-디코더 (RNN 기반)
트랜스포머
계산 효율성
🐢 순차적 처리로 느림
🚀 병렬 처리로 빠름
장거리 의존성
❌ 장거리 의존성 포착 어려움
✅ 모든 위치 간 직접 연결
메모리 사용량
💾 상대적으로 적음
💾💾 어텐션으로 인해 많음
학습 난이도
🔄 그래디언트 소실 문제 있음
🔄 더 안정적인 학습
확장성
📉 확장 어려움
📈 대규모 모델로 확장 용이
적합한 시나리오
짧은 시퀀스, 리소스 제한 환경
복잡한 언어 태스크, 대규모 데이터

🎯 적합한 사용 사례

🔄 인코더-디코더가 더 적합한 경우

  1. 리소스 제한 환경: 모바일 기기나 임베디드 시스템처럼 계산 자원이 제한된 환경
  2. 짧은 시퀀스 처리: 짧은 문장이나 간단한 명령어 처리
  3. 스트리밍 데이터: 실시간으로 들어오는 데이터를 순차적으로 처리해야 하는 경우
  4. 작은 데이터셋: 학습 데이터가 제한적인 경우

🔄 트랜스포머가 더 적합한 경우

  1. 복잡한 언어 이해: 문맥 파악이 중요한 복잡한 자연어 처리 태스크
  2. 대규모 데이터셋: 방대한 양의 텍스트 데이터로 학습
  3. 긴 시퀀스 처리: 장문의 텍스트나 문서 처리
  4. 고성능 하드웨어 환경: GPU/TPU를 활용할 수 있는 환경
  5. 사전 학습 후 미세 조정: 범용 모델을 사전 학습 후 특정 태스크에 맞게 조정

🔄 하이브리드 접근법

최근에는 두 구조의 장점을 결합한 하이브리드 모델들도 등장하고 있어. 예를 들어:

  1. Transformer-XL: 트랜스포머에 순환적 요소를 추가해 더 긴 컨텍스트를 처리할 수 있게 한 모델
  2. Conformer: 컨볼루션과 트랜스포머를 결합한 음성 인식용 모델
  3. Universal Transformer: 트랜스포머에 순환적 처리를 추가한 모델

재능넷에서 AI 관련 프로젝트를 의뢰하거나 찾을 때, 어떤 모델 구조가 당신의 프로젝트에 더 적합한지 이해하는 것은 매우 중요해. 간단한 챗봇이나 리소스가 제한된 환경이라면 인코더-디코더 기반 모델이 적합할 수 있고, 복잡한 언어 이해나 생성이 필요하다면 트랜스포머 기반 모델이 더 나은 선택일 수 있어! 🎯

모델 선택 가이드 어떤 모델을 선택할까? 인코더-디코더 트랜스포머 리소스 제한 / 짧은 시퀀스 복잡한 태스크 / 대규모 데이터 • 메모리 효율적 • 간단한 구현 • 병렬 처리 • 장거리 의존성 포착

5. 2025년 최신 트렌드와 발전 방향 🔮

2025년 현재, 시퀀스 학습 구조는 계속해서 진화하고 있어. 트랜스포머가 여전히 주류지만, 몇 가지 흥미로운 발전과 트렌드가 나타나고 있어. 최신 동향을 살펴볼까? 🚀

🌟 효율적인 트랜스포머

트랜스포머의 계산 복잡도(특히 어텐션 메커니즘의 O(n²) 복잡도)를 줄이기 위한 다양한 접근법들이 개발되고 있어:

1. 스파스 어텐션 (Sparse Attention)

모든 토큰 쌍 간의 어텐션을 계산하는 대신, 일부 중요한 연결만 계산하는 방식이야. Longformer, BigBird 같은 모델이 이 접근법을 사용해.

2. 선형 어텐션 (Linear Attention)

어텐션 계산의 복잡도를 O(n²)에서 O(n)으로 줄이는 수학적 트릭을 사용해. Performers, Linear Transformers 등이 이 방식을 채택하고 있어.

3. 로컬 어텐션 (Local Attention)

각 토큰이 주변의 일정 범위 내 토큰들과만 어텐션을 계산하는 방식이야. 이를 통해 계산량을 크게 줄일 수 있어.

🔄 하이브리드 아키텍처

2025년에는 다양한 신경망 구조를 결합한 하이브리드 모델들이 인기를 끌고 있어:

1. CNN-트랜스포머 하이브리드

로컬 패턴 인식에 강한 CNN과 글로벌 컨텍스트 파악에 강한 트랜스포머를 결합한 모델들이야. 이미지-텍스트 멀티모달 태스크에서 특히 효과적이야.

2. MLP-트랜스포머 하이브리드

어텐션 레이어와 단순한 MLP 레이어를 적절히 조합해 계산 효율성과 표현력 사이의 균형을 맞춘 모델들이 등장하고 있어.

3. 메모리 증강 트랜스포머

트랜스포머에 외부 메모리 모듈을 추가해 더 긴 컨텍스트를 효율적으로 처리할 수 있게 한 모델들이야. 이를 통해 책 전체나 긴 대화 기록 같은 매우 긴 시퀀스도 처리할 수 있어.

🧠 뉴로심볼릭 접근법

2025년에는 신경망과 심볼릭 AI를 결합하는 뉴로심볼릭 접근법이 주목받고 있어:

  1. 추론 능력 강화: 트랜스포머에 논리적 추론 능력을 부여하는 연구
  2. 지식 그래프 통합: 외부 지식 그래프와 트랜스포머를 결합한 모델
  3. 명시적 규칙 학습: 데이터로부터 명시적인 규칙을 추출하고 활용하는 하이브리드 모델

🌐 멀티모달 트랜스포머

다양한 형태의 데이터(텍스트, 이미지, 오디오, 비디오 등)를 함께 처리할 수 있는 멀티모달 트랜스포머가 2025년의 핵심 트렌드 중 하나야:

주요 멀티모달 모델들

  1. GPT-5: 텍스트, 이미지, 오디오를 통합적으로 이해하고 생성할 수 있는 능력
  2. DALL-E 4: 텍스트 프롬프트에서 더욱 정교한 이미지 생성
  3. Gemini Pro 2: 다양한 모달리티 간의 추론과 변환이 가능한 모델
  4. Claude 3 Sonnet: 텍스트와 이미지를 심층적으로 이해하는 모델

🔋 에너지 효율적인 모델

AI의 에너지 소비와 환경 영향에 대한 우려가 커지면서, 에너지 효율적인 모델 개발이 중요한 연구 방향이 되고 있어:

  1. 모델 경량화: 지식 증류, 가지치기, 양자화 등을 통한 모델 크기 축소
  2. 조건부 계산: 필요한 경우에만 특정 계산을 수행하는 동적 모델
  3. 하드웨어 최적화: 특정 하드웨어에 최적화된 모델 설계

재능넷에서도 이런 최신 트렌드를 반영한 AI 서비스와 교육 콘텐츠가 인기를 끌고 있어. 특히 효율적인 트랜스포머 구현이나 멀티모달 AI 개발 관련 프로젝트가 많이 의뢰되고 있지! 🚀

2025년 시퀀스 학습 트렌드 2017 트랜스포머 등장 2019 BERT, GPT-2 2021 효율적 트랜스포머 2023 멀티모달 모델 2025 하이브리드 아키텍처 뉴로심볼릭 접근법 미래 ? 트랜스포머 기반 모델의 진화 효율성 ↑ 멀티모달 능력 ↑ 에너지 소비 ↓ 다양한 아키텍처의 융합과 새로운 패러다임 등장

6. 실제 적용 사례와 코드 예시 💻

이론은 충분히 알아봤으니, 이제 인코더-디코더와 트랜스포머가 실제로 어떻게 적용되는지 몇 가지 사례와 간단한 코드 예시를 통해 살펴보자! 🛠️

🌐 기계 번역 (Machine Translation)

기계 번역은 시퀀스 학습 구조의 가장 대표적인 응용 사례야. 한 언어에서 다른 언어로 텍스트를 변환하는 작업이지.

인코더-디코더 기반 번역기 (PyTorch)


class Seq2SeqTranslator(nn.Module):
    def __init__(self, input_vocab_size, output_vocab_size, hidden_size):
        super(Seq2SeqTranslator, self).__init__()
        self.encoder = Encoder(input_vocab_size, hidden_size)
        self.decoder = Decoder(hidden_size, output_vocab_size)
        
    def forward(self, src, trg, teacher_forcing_ratio=0.5):
        batch_size = src.shape[1]
        trg_len = trg.shape[0]
        trg_vocab_size = self.decoder.output_size
        
        # 결과를 저장할 텐서 초기화
        outputs = torch.zeros(trg_len, batch_size, trg_vocab_size).to(device)
        
        # 인코더 마지막 hidden state 가져오기
        hidden = self.encoder(src)
        
        # 첫 번째 디코더 입력은 <sos> 토큰
        input = trg[0,:]
        
        for t in range(1, trg_len):
            output, hidden = self.decoder(input, hidden)
            outputs[t] = output
            
            # teacher forcing 적용 여부 결정
            teacher_force = random.random() < teacher_forcing_ratio
            
            # 다음 입력 결정 (실제 값 또는 예측 값)
            top1 = output.argmax(1)
            input = trg[t] if teacher_force else top1
            
        return outputs
      </sos>

트랜스포머 기반 번역기 (PyTorch)


class TransformerTranslator(nn.Module):
    def __init__(self, src_vocab_size, tgt_vocab_size, d_model, nhead, num_encoder_layers, 
                 num_decoder_layers, dim_feedforward, dropout):
        super(TransformerTranslator, self).__init__()
        
        self.transformer = nn.Transformer(
            d_model=d_model,
            nhead=nhead,
            num_encoder_layers=num_encoder_layers,
            num_decoder_layers=num_decoder_layers,
            dim_feedforward=dim_feedforward,
            dropout=dropout
        )
        
        self.src_embedding = nn.Embedding(src_vocab_size, d_model)
        self.tgt_embedding = nn.Embedding(tgt_vocab_size, d_model)
        self.positional_encoding = PositionalEncoding(d_model, dropout)
        
        self.output_layer = nn.Linear(d_model, tgt_vocab_size)
        
    def forward(self, src, tgt, src_mask=None, tgt_mask=None, 
                src_padding_mask=None, tgt_padding_mask=None, memory_mask=None):
        
        src = self.src_embedding(src) * math.sqrt(self.transformer.d_model)
        tgt = self.tgt_embedding(tgt) * math.sqrt(self.transformer.d_model)
        
        src = self.positional_encoding(src)
        tgt = self.positional_encoding(tgt)
        
        output = self.transformer(src, tgt, src_mask, tgt_mask, None,
                                 src_padding_mask, tgt_padding_mask, memory_mask)
        
        return self.output_layer(output)
      

🤖 챗봇 (Chatbot)

챗봇은 사용자의 입력에 대해 적절한 응답을 생성하는 시스템이야. 대화 맥락을 이해하고 자연스러운 응답을 생성해야 해.

인코더-디코더 vs 트랜스포머 챗봇 비교

🔄 인코더-디코더 기반 챗봇
  • 주로 짧은 대화에 적합
  • 컨텍스트 유지 능력이 제한적
  • 메모리 효율적이라 가벼운 애플리케이션에 적합
  • 예: 단순 FAQ 봇, 명령 기반 챗봇
🔄 트랜스포머 기반 챗봇
  • 긴 대화 컨텍스트 유지 가능
  • 더 자연스럽고 맥락에 맞는 응답 생성
  • 다양한 주제와 스타일 처리 가능
  • 예: GPT 기반 챗봇, 대화형 AI 비서

📝 텍스트 요약 (Text Summarization)

긴 문서나 기사를 짧게 요약하는 태스크야. 추출적 요약(중요 문장 추출)과 추상적 요약(새로운 문장 생성)으로 나뉘어.