Replicated

자연어 처리 : Seq2Seq, Attention, Transformer 본문

학부/딥러닝

자연어 처리 : Seq2Seq, Attention, Transformer

라구넹 2025. 12. 7. 19:10

Seq2Seq

- 번역과 같은 시퀀스 변환 문제를 다루는데 있어 기존 방법론의 비효율성과 한계를 극복하려는 시도

 

통계 기반 번역의 한계

- 방대한 특징 공학

- 지역적 문맥 의존성

- 희소성 문제

 

순환 신경망의 고정길이 입력의 한계

- 기계 번역처럼 입력 문장의 길이와 출력 문장의 길이가 서로 다른 문제를 효율적으로 다룰 수 있는 일반화된 프레임워크 필요

 

Seq2Seq는 인코더와 디코더라는 두 개의 모듈로 구성

- 인코더는 입력 문장의 모든 단어들을 순차적으로 입력 받은 뒤에 마지막에 이 모든 단어 정보들을 압축해서 하나의 벡터로 만듦

->컨텍스트 벡터

- 입력 문장의 정보가 하나의 컨텍스트 벡터로 모두 압축되면 인코더는 컨텍스트 벡터를 디코더로 전송

- 디코더는 컨텍스트 벡터를 받아서 번역된 단어를 한 개씩 순차적으로 출력

 

Encoder

- 입력 시퀀스를 읽고 그 시퀀스에 담긴 모든 정보를 압축된 형태의 문맥 벡터로 변환하는 역할

- 입력 문장은 단어 토큰화를 통해 단어 단위로 쪼개지고 단어 토큰 각각은 RNN 셀의 각 시점의 입력

- 인코더 RNN 셀의 마지막 시점의 은닉 상태를 디코더 RNN 셀로 넘겨주는데 이것이 컨텍스트 벡터

 

Decoder

- 인코더가 생성한 문맥 벡터를 입력받아 이를 기반으로 목표 언어 또는 목표 형식의 새로운 시퀀스를 생성하는 역할

- 초기 입력으로 문장을 시작하는 심볼 <sos>

- 기본적으로 다음에 올 단어를 예측하고 그 예측한 단어를 다음 시점의 RNN 셀의 입력으로 넣는 행위를 반복

- 문장의 끝을 의미하는 심볼인 <eos>가 다음 단어로 예측될 때까지 반복

 

디코더의 훈련

- 디코더에게 인코더가 보낸 컨텍스트 벡터와 실제 정답인 상황을 입력받았을 때, 그 다음에 나와야 하는 정답 상황을 알려주며 훈련

 

BART

- 시퀀스-투-시퀀스 모델의 사전 훈련을 위한 denosing autoencoder

- 입력 문장을 망가뜨린 다음 원래 문장을 복구하도록 훈련됨

- 사전 훈련 작업은 원래 문장의 순서를 무작위로 섞고 텍스트의 일부 구간을 단일 마스크 토큰으로 대체하는 새로운 인필링 방식을 포함

- 인코더에는 손상된 토큰이 입력되고 디코더에는 원래 토큰이 입력

 

BART 활용 분야

- 요약, 기계 번역, 질의 응답, 텍스트 생성

 

 

Attention Mechanism

Seq2Seq는 RNN에 기반하여

- 하나의 고정된 크기의 벡터에 모든 정보를 압축하려고 하다 보니 정보 손실이 발생

- 기울기 소실 문제

 

Attention 등장

- 디코더에서 출력 단어를 예측하는 매 시점마다 인코더에서 전체 입력 문장을 다시 한 번 참고

- 단, 예측해야 할 단어와 연관이 있는 입력 단어 부분을 좀 더 집중(attention)

 

Attention weight(score)

- 디코더의 현재 hidden state와 인코더의 모든 hidden states 간의 유사성을 계산

- 내적이나 다른 유사도 척도를 사용

- 이렇게 계산된 attention score에 softmax 적용하여 0 ~ 1 사이로 정규화

- 정규화된 attention weight와 인코더의 hidden states를 사용하여 가중 평균 계산

-> 문맥 벡터 생성

 

 

Transformer

- 어텐션 메커니즘은 LSTM의 고정된 컨텍스트 벡터 문제를 해결

- 하지만 복잡하고 무거워짐 => 트랜스포머의 등장

 

트랜스포머 모델은 문장 속 단어와 같은 순차 데이터 내의 관계를 추적해 맥락과 의미를 학습하는 신경망

- 어텐션 또는 셀프어텐션, 서로 떨어져 있는 데이터 요소들의 의미가 관계에 따라 미묘하게 달라지는 부분까지 감지

- 병렬 프로세싱에 적합하여 모델의 실행 속도 또한 빨라짐

 

어텐션만으로 인코더와 디코더를 구성함

- 인코더와 디코더가 N개로 구성됨

 

트랜스포머는 단어 입력을 순차적으로 받는 방식이 아닌 일괄 입력 방식

- 단어의 위치 정보를 알려줘여 함

- 각 단어의 임베딩 벡터에 위치 정보들을 더하여 모델의 입력으로 사용.. -> 포지셔널 인코딩

 

핵심 메커니즘

- 멀티 헤드 어텐션 : 단어 간의 관계를 여러 개의 헤드로 나누어 병렬적으로 처리

- 포지셔널 인코딩

- 피드 포워드 네트워크 : 어텐션을 거친 결과를 받아 일반적인 신경망처럼 비선형적인 변환을 가함

 

 

트랜스포머의 인코더와 디코더의 각 부분은 태스크에 따라 독립적 사용 가능

Encoder 모델

- 응용 분야: 문장 분류, 명명된 개체 인식, 질문 답변

- ALBERT, BERT, DistillBERT, ELECTRA, RoBERTa

 

Decoder 모델

- 응용 분야: 텍스트 생성

- GPT, GPT-2, Transformer XL, Gemini

 

Encoder-Decoder 모델

- 응용 분야: 번역 또는 요약

- BART, mBART, Marian, T5

 

주요 생성형 AI 모델들은 왜 디코더만 사용하는가?

- 입력을 모두 하나의 토큰 시퀀스로 보고 이전 토큰만 참고하여 다음 토큰을 확률적으로 생성

-> 인코더가 필요 없음

 

결론- 트랜스포머가 바꾼 것

RNN의 순차성을 어텐션의 병렬성으로 완전히 대체하여..

- 속도 향상: GPU를 활용한 병렬 처리가 가능

- 장거리 의존성 해결: 문장이 아무리 길어도 모든 단어를 동시에 참고하여 정확한 의미를 파악

- 현대 AI의 기반


 

LLM의 등장

1950~1980 : 규칙 기반의 언어 처리

- 언어 번역 등의 작업을 엄격한 규칙과 논리적 절차를 따름

 

1990년대 : 통계적 접근법의 도입

- 언어 패턴을 분석하고 이를 수학적 모델로 표현하려는 시도

 

2000년대 : 머신러닝과 데이터의 확장

- 머신러닝의 발전, 복잡한 언어 모델의 등장, 인터넷 사용의 증가로 훈련 데이터셋 증가

 

2018년 : 딥러닝과 트랜스포머 등장

- GPT 개발, 구글 BERT 발표

 

2020년: GPT-3 출시

2022년: ChatGPT 출시

2023년: 오픈소스 llm, gpt4 출시

 

LLM : large language model

sLLM : smaller large language model

SLM : small language model

 

 

LLM과 소프트웨어 개발

LLM은 소프트웨어 개발 과정에서 코드 생성, 코드 리뷰, TC 생성 등 자동화 및 지원 가능

- 코드 리뷰에 많은 시간을 할애하는 대규모 프로젝트에서 유용

 

LLM은 자연어로 작성된 요구사항을 바탕으로 코드 생성 가능

코드 분석에서도 활용, 한 프로그래밍 언어에서 다른 언어로 번역하는데도 사용 가능

'학부 > 딥러닝' 카테고리의 다른 글

LangChain, LangGraph  (0) 2025.12.08
Hugging face  (0) 2025.12.07
자연어 처리 : RNN, LSTM  (0) 2025.12.07
자연어 처리 : Word representation  (0) 2025.12.07
전이 학습 (Transfer Learning)  (0) 2025.12.07