티스토리 뷰
Seq2Seq 모델은 Attention, Transformer의 기초가 되는 딥러닝 모델로서 시퀀스 데이터를 처리하는 RNN과 LSTM의 단점을 보완한 모델입니다. 특히 Seq2Seq 모델은 하나의 입력 시퀀스에서 다른 시퀀스로 출력시키는 프로세스에 적합하므로 특정 언어를 다른 언어로 번역하는데 많이 활용됩니다.
Seq2Seq 모델부터는 인코더와 디코더의 개념이 활용됩니다.
기존 RNN 계열 모델은 시퀀스가 길어질수록 이전 정보가 현재 시점에서는 많이 희석되어 기울기가 소실되는 단점이 존재했습니다. Seq2Seq 모델은 이 문제점을 해결하기 위해 Context Vector라는 개념을 활용합니다.
입력 시퀀스에 대해서 Encoder가 학습을 하면 Context Vector에는 학습 내용이 압축되어 산출됩니다. 그럼 Decoder은 이 Context Vector을 기반으로 번역 결과를 추론합니다.
1. Word Embedding
Seq2seq의 입력 데이터는 주로 긴 문장입니다. Word Embedding은 이러한 텍스트 데이터를 Seq2Seq 모델이 학습 가능한 숫자의 형태로 변환하는 것을 의미합니다. 변환되는 형태는 벡터입니다. 기존에는 단어에 무작위로 숫자를 붙이는 방법에서 유사한 단어끼리 유사한 숫자를 부여하는 방식으로 발전해 왔습니다. 임베딩된 벡터는 Seq2Seq의 Encoder 입력으로 활용됩니다
2. Encoder
Encoder의 역할은 임베딩 벡터를 입력 받고 LSTM을 활용하여 고정된 크기의 Context Vector로 학습 정보를 압축시키는 것입니다. RNN을 활용할 수 있지만 LSTM은 자신의 Hidden State와 Cell State을 이용해 장기 의존성을 해결할 수 있습니다. 따라서 RNN 기반의 Seq2Seq보다 LSMT을 기반으로 Seq2Seq을 구현합니다
Encoder의 마지막 LSTM에서 Cell state와 Hidden State, 즉 Context Vector을 산출합니다.
3. Decoder
Decoder의 역할은 압축된 정보가 담긴 Context Vector을 추론하여 출력 시퀀스를 생성하는 것입니다.
Decoder에서 중요한 것은 <sos>, <eos> 토큰입니다. <sos> 토큰은 Decoder가 예측을 시작할 수 있도록 첫 입력을 제공하고 <eos> 토큰은 Decoder가 언제 학습을 멈추는지 알려주는 역할을 합니다.
또한, 이전 시점의 Decoder의 출력을 현재 시점의 입력값으로 활용하지 않고, 이전 시점의 실제 값을 현재 시점의 Decoder의 입력값으로 활용한다는 것입니다. 그 이유는 이전 시점의 출력 예측이 틀렸는데 이를 현재 시점의 입력 값으로 활용하면 연쇄적으로 예측 성능이 저하될 수 있기 때문입니다. 이러한 기법을 Teacher Forcing (교사 강요)라고 합니다.
4. Seq2Seq의 한계
Seq2Seq의 한계는 Context Vector에 압축된 정보가 담기므로 입력 시퀀스가 길어질수록 정보 손실이 크다는 것입니다. 정보가 많이 손실된 Context Vector을 기반으로 출력 시퀀스를 추론하는 Decoder 입장에서는 성능이 악화될 수밖에 없습니다.
'딥러닝' 카테고리의 다른 글
Attention (0) | 2025.04.21 |
---|---|
오차역전파법(Backpropagation) (2) | 2024.07.16 |
적대적 생성 신경망(GAN) (0) | 2024.07.11 |
RNN (Recurrent Neural Network) (0) | 2024.07.08 |
[3] LSTM(Long Short-Term Memory) (0) | 2024.06.27 |
- #프로그래머스 #안전지대 #시뮬레이션
- 파이썬 #코딩테스트 #프로그래머스 #스택 #큐
- # 프로그래머스 #연속된 부분수열의 합 #이중 포인터 #누적합
- python #프로그래머스 #리스트 #인덱싱
- html #javascript #구구단 출력
- 파이썬 #시각화 #matplotlib
- randomforest #bagging #머신러닝 #하이퍼파라미터 튜닝
- pca #주성분분석 #특이값분해 #고유값분해 #공분산행렬 #차원의 저주
- #opencv #이미지 연산 #합성
- # 프로그래머스 # 카펫 # 완전탐색
- #물고기 종류별 대어 찾기 #즐겨찾기가 가장 많은 식당 정보 출력하기 #mysql #programmers
- 잘라서 배열로 저장하기 #2차원으로 만들기
- #python #프로그래머스 #외계어사전 #itertools #순열과조합
- subquery #sql 코딩테스트
- # 할인행사 #counter #딕셔너리 #프로그래머스
- #tf idf
- #attention #deeplearning
- 머신러닝 #project #classification #dacon
- 로지스틱 회귀 #오즈비 #최대우도추정법 #머신러닝
- python #프로그래머스 #겹치는선분의길이
- nlp #토큰화 #nltk #konply
- 머신러닝 #xgboost #
- seaborn #데이터시각화 #타이타닉
- 자연어 처리 #정제 #정규표현식 #어간 추출 #표제어 추출
- #opencv #이미지 읽기 #이미지 제작 #관심영역 지정 #스레시홀딩
- #자연어 처리 #정수 인코딩 #빈도 수 기반
- 머신러닝 #lightgbm #goss #ebf
- #seq2seq #encoder #decoder #teacher forcing
- 프로젝트 #머신러닝 #regression #eda #preprocessing #modeling
- python #deque #프로그래머스 #공 던지기 #문자열 계산하기 #코딩테스트