1. 텍스트 데이터를 모델에 적용하기 전에 어떤 전처리 과정을 거치나요?
텍스트 데이터는 이미지처럼 바로 숫자로 입력할 수 없기 때문에, 모델이 이해할 수 있는 형태로 바꾸는 전처리 과정이 필요하다.
전처리의 목적은 불필요한 노이즈를 줄이고, 텍스트를 일정한 형식으로 정리한 뒤, 수치화하여 모델 입력으로 변환하는 것이다.
1) 정제(Cleaning)
가장 먼저 수행하는 것은 텍스트 정제이다.
예를 들어 HTML 태그, 특수문자, 이모지, 중복 공백, 불필요한 기호 등을 제거하거나 정리한다.
또한 대소문자를 통일하고, 오탈자 교정이나 정규화 작업을 하기도 한다.
예시:
- "Hello!!! NLP " → "hello nlp"
이 단계는 데이터의 일관성을 높여 모델이 의미 없는 패턴을 학습하지 않도록 돕는다.
2) 토큰화(Tokenization)
정제된 문장을 단어, 형태소, 혹은 서브워드 단위로 나누는 과정이다.
이를 토큰화라고 한다.
예시:
- "I love natural language processing"
→ ["I", "love", "natural", "language", "processing"]
한국어에서는 조사와 어미 변화가 많기 때문에 단순 띄어쓰기 기준보다 형태소 분석 기반 토큰화가 더 중요하게 쓰이기도 한다.
3) 불용어 제거(Stopword Removal)
문장 안에는 의미 전달에 큰 기여를 하지 않는 단어들이 있다.
예를 들어 영어의 the, is, a 같은 단어들이 대표적이다.
이런 단어를 제거하면 핵심 정보가 더 잘 드러날 수 있다.
다만 최근 딥러닝 모델에서는 문맥 자체가 중요하기 때문에, 무조건 제거하기보다는 모델과 목적에 따라 선택적으로 적용하는 편이다.
4) 정규화 및 어간 추출 / 표제어 추출
동일한 의미를 가지는 다양한 형태를 통일하는 과정이다.
- 어간 추출(Stemming): 단어의 어간만 남기는 방식
- playing, played, plays → play
- 표제어 추출(Lemmatization): 문법적 형태를 고려해 기본형으로 변환
- am, are, is → be
이 작업은 단어 수를 줄이고, 비슷한 의미의 표현을 하나로 묶는 데 도움이 된다.
5) 벡터화(Vectorization)
전처리된 텍스트를 모델이 입력할 수 있도록 숫자 벡터로 바꾸는 단계이다.
대표적인 방법은 다음과 같다.
- One-Hot Encoding
- Bag of Words
- TF-IDF
- Word2Vec / FastText / GloVe 같은 임베딩
- 최근에는 BERT 같은 문맥 기반 임베딩
즉, 전처리의 최종 목표는 텍스트를 의미를 어느 정도 보존한 숫자 표현으로 바꾸는 것이다.
6) 패딩(Padding)과 길이 맞추기
딥러닝 모델은 보통 입력 길이가 일정해야 하므로, 문장 길이가 다를 경우 짧은 문장은 패딩을 추가하고 긴 문장은 잘라낸다.
예시:
- ["I", "love", "NLP"]
- ["Transformer", "is", "powerful"]
이 둘의 길이를 맞추기 위해 [PAD] 같은 토큰을 추가한다.
정리
텍스트 전처리는 보통 다음 흐름으로 이해할 수 있다.
텍스트 정제 → 토큰화 → 불용어 제거/정규화 → 벡터화 → 길이 맞추기
다만 최근의 Transformer 계열 모델은 자체 토크나이저와 임베딩 구조를 가지므로, 과거보다 수작업 전처리가 줄어든 편이다.
그럼에도 데이터 정제와 토큰화는 여전히 매우 중요한 기본 단계이다.
2. FastText가 Word2Vec과 다른 점은 무엇이며, 어떤 장점이 있나요?
FastText는 Word2Vec을 확장한 단어 임베딩 기법이다.
둘 다 단어를 밀집 벡터(Dense Vector)로 표현한다는 점은 같지만, 단어를 바라보는 방식에서 중요한 차이가 있다.
1) Word2Vec의 특징
Word2Vec은 단어를 하나의 독립된 토큰으로 본다.
즉, "apple"이라는 단어가 있으면 이를 하나의 단위로만 임베딩한다.
장점은 구조가 단순하고 학습이 빠르다는 점이다.
하지만 문제가 있다.
학습 데이터에 없던 단어(OOV, Out-Of-Vocabulary)는 벡터를 만들기 어렵고, 단어 내부 구조를 반영하지 못한다.
예를 들어:
- run
- running
- runner
이 단어들은 형태적으로 관련이 있지만, Word2Vec은 각각을 별도의 단어로 취급한다.
2) FastText의 핵심 아이디어
FastText는 단어를 문자 n-gram의 집합으로 본다.
즉, 단어 하나를 통째로만 보는 것이 아니라, 내부의 부분 문자열(subword)까지 활용한다.
예를 들어 "where"라는 단어를 3-gram으로 나누면 다음처럼 볼 수 있다.
- <wh
- whe
- her
- ere
- re>
이런 식으로 단어 벡터를 부분 문자열 벡터들의 합 또는 평균으로 구성한다.
3) FastText의 장점
(1) OOV 문제 완화
학습 시 한 번도 보지 못한 단어라도, 그 단어를 구성하는 문자 조각들은 기존에 학습했을 가능성이 있다.
그래서 완전히 새로운 단어에 대해서도 어느 정도 의미 있는 벡터를 만들 수 있다.
예를 들어 "playful"이 학습 데이터에 없더라도
play, ayf, yfu, ful 같은 조각을 활용해 임베딩을 추정할 수 있다.
(2) 형태 정보 반영
접두사, 접미사, 어근 같은 정보가 벡터에 반영된다.
따라서 굴절이 많거나 파생어가 많은 언어에서 유리하다.
예:
- teach, teacher, teaching
- happy, unhappy
이런 단어들의 관계를 Word2Vec보다 더 잘 반영할 수 있다.
(3) 희귀 단어에 강함
등장 빈도가 낮은 단어는 Word2Vec에서 좋은 벡터를 학습하기 어렵다.
반면 FastText는 서브워드 정보를 활용하므로 희귀 단어에 대해서도 상대적으로 안정적인 표현을 만들 수 있다.
4) 한계
물론 FastText가 항상 Word2Vec보다 절대적으로 좋은 것은 아니다.
문자 단위 정보를 활용하기 때문에 계산량이 조금 더 늘 수 있고, 문맥 자체를 깊게 반영하는 모델은 아니다.
즉, FastText는 형태 정보에는 강하지만 문맥 기반 표현은 아니다.
정리
Word2Vec은 단어를 하나의 단위로 임베딩하고, FastText는 단어 내부의 문자 조각(subword)까지 활용한다.
그래서 FastText는 특히 희귀 단어, 형태 변화가 많은 언어, OOV 문제에서 강점을 가진다.
3. Attention 메커니즘이 Seq2Seq 모델의 어떤 문제를 해결하는 데 도움이 되나요?
Attention은 Seq2Seq 모델의 가장 큰 약점 중 하나였던 고정 길이 문맥 벡터의 한계를 해결하기 위해 등장했다.
1) Seq2Seq의 기본 구조
기본적인 Seq2Seq는 다음과 같은 흐름을 가진다.
- Encoder가 입력 문장을 읽어 하나의 고정 길이 벡터로 압축
- Decoder가 그 벡터를 바탕으로 출력 문장을 생성
예를 들어 번역 모델에서는,
입력 문장 전체를 Encoder가 하나의 벡터로 요약하고, Decoder는 그 정보만 보고 번역 문장을 생성한다.
2) 기존 Seq2Seq의 문제점
문장이 짧을 때는 괜찮지만, 문장이 길어질수록 문제가 생긴다.
입력 문장의 모든 정보를 하나의 벡터에 담아야 하기 때문이다.
즉,
- 긴 문장에서 앞부분 정보가 희석될 수 있고
- 중요한 단어가 충분히 반영되지 않을 수 있으며
- Decoder는 출력 시점마다 어떤 입력 부분을 참고해야 하는지 알기 어렵다.
결국 정보 병목(information bottleneck) 문제가 발생한다.
3) Attention의 해결 방식
Attention은 Decoder가 매 시점마다 입력 전체를 다시 참고할 수 있게 만든다.
즉, 입력 문장을 하나의 벡터로만 압축하지 않고, Encoder의 모든 hidden state를 보관해 둔 뒤, Decoder가 현재 필요한 부분에 더 집중하도록 한다.
예를 들어 번역 중에 "사과를 먹는다"를 영어로 바꾸는 경우,
eat를 생성할 때는 "먹는다" 쪽에,
apple을 생성할 때는 "사과" 쪽에 더 높은 가중치를 둘 수 있다.
이렇게 출력 단어마다 관련 있는 입력 단어에 가중치를 다르게 부여하는 것이 Attention의 핵심이다.
4) Attention이 해결하는 문제
Attention은 특히 다음 문제를 완화한다.
(1) 고정 길이 벡터 병목 문제
입력 전체를 하나의 벡터에 억지로 담지 않아도 된다.
(2) 긴 문장 처리 성능 저하
문장이 길어져도 필요한 입력 위치를 직접 참조할 수 있다.
(3) 입력-출력 정렬(alignment) 문제
출력 단어가 입력의 어느 부분과 관련되는지 더 잘 학습할 수 있다.
5) 효과
Attention의 도입으로 번역, 요약, 질의응답 같은 다양한 시퀀스 생성 태스크의 성능이 크게 향상되었다.
또한 모델이 어떤 입력 부분에 주목했는지 시각화할 수 있어 해석 가능성 측면에서도 의미가 있었다.
정리
Attention은 Seq2Seq가 입력 전체를 하나의 벡터에 압축하면서 생기는 정보 손실과 긴 문장 처리 문제를 해결하는 데 큰 도움을 주었다.
즉, Decoder가 매 시점마다 입력의 중요한 부분을 선택적으로 참고할 수 있도록 만든 메커니즘이다.
4. Transformer 모델은 Seq2Seq 구조와 어떤 점에서 근본적으로 다른가요?
Transformer는 Seq2Seq와 마찬가지로 입력 시퀀스를 받아 출력 시퀀스를 생성할 수 있는 구조이지만, 내부 동작 원리는 매우 다르다.
가장 큰 차이는 순환 구조(RNN)에 의존하지 않고, Self-Attention을 중심으로 동작한다는 점이다.
1) 기존 Seq2Seq의 기반: RNN/LSTM/GRU
전통적인 Seq2Seq는 보통 RNN, LSTM, GRU를 기반으로 구성된다.
이 구조는 입력을 순서대로 한 단어씩 처리한다.
즉,
- 앞 단어를 읽고
- 그다음 단어를 읽고
- 이전 hidden state를 다음 시점으로 넘기는 방식이다.
이 방식은 순서를 자연스럽게 반영할 수 있지만, 다음과 같은 한계가 있다.
- 병렬 처리가 어렵다
- 긴 거리 의존성 학습이 어렵다
- 학습 속도가 느릴 수 있다
2) Transformer의 기반: Self-Attention
Transformer는 RNN을 사용하지 않는다.
대신 문장 전체를 한 번에 보고, 각 단어가 다른 모든 단어와 얼마나 관련 있는지를 계산한다.
이 핵심 메커니즘이 Self-Attention이다.
예를 들어 "The animal didn't cross the street because it was tired"라는 문장에서
it이 무엇을 가리키는지 이해하려면 문장 전체를 봐야 한다.
Transformer는 이런 관계를 문장 전체 단위에서 직접 계산한다.
3) 근본적인 차이점
(1) 순차 처리 vs 병렬 처리
- Seq2Seq(RNN 기반): 단어를 순서대로 처리
- Transformer: 전체 시퀀스를 한 번에 처리 가능
이 차이 때문에 Transformer는 학습 속도와 효율 면에서 큰 장점을 가진다.
(2) 고정된 순환 상태 vs 직접적인 관계 계산
- RNN 기반 모델은 이전 hidden state를 통해 정보를 전달
- Transformer는 Self-Attention으로 모든 단어 쌍의 관계를 직접 계산
즉, 멀리 떨어진 단어 관계도 더 쉽게 포착할 수 있다.
(3) 위치 정보 처리 방식
RNN은 순서대로 읽기 때문에 위치 정보가 구조 자체에 내장되어 있다.
반면 Transformer는 병렬 처리하므로 단어 순서를 별도로 알려줘야 한다.
이를 위해 Positional Encoding을 사용한다.
4) Transformer의 장점
(1) 병렬화에 유리
GPU를 활용한 대규모 학습에 적합하다.
(2) 긴 문맥 의존성 처리에 강함
멀리 떨어진 단어 간 관계를 잘 포착한다.
(3) 확장성이 좋음
대규모 데이터와 파라미터로 확장하기 쉽기 때문에 현대 LLM의 기반이 되었다.
5) Transformer와 Seq2Seq의 관계
엄밀히 말하면 Transformer도 Encoder-Decoder 구조를 가질 수 있으므로 넓은 의미에서는 Seq2Seq 작업을 수행한다.
하지만 전통적인 Seq2Seq와 비교했을 때, 핵심 차이는 순환 기반 처리에서 Attention 기반 처리로 패러다임이 바뀌었다는 점이다.
즉,
- 전통적 Seq2Seq: 순서대로 읽고 기억을 전달
- Transformer: 전체를 한 번에 보고 관계를 계산
이 차이가 가장 본질적이다.
정리
Transformer는 Seq2Seq와 같은 시퀀스 변환 문제를 다루지만,
RNN 기반의 순차 처리 대신 Self-Attention 기반의 병렬 처리를 사용한다.
이로 인해 긴 문맥 처리, 학습 효율, 확장성에서 큰 발전을 이루었고, 오늘날의 BERT, GPT 같은 모델로 이어지게 되었다.
마무리
이번 내용을 정리하면서 느낀 점은 자연어처리 모델의 발전 흐름이 꽤 분명하다는 것이다.
초기에는 텍스트를 정제하고 단어를 벡터화하는 것이 중요했다면, 이후에는 단어 내부 구조를 반영하는 FastText가 등장했고, Seq2Seq의 한계를 보완하는 Attention이 나왔으며, 결국 Transformer가 등장하면서 현재의 대규모 언어모델 시대로 이어졌다.
즉,
전처리 → 임베딩 → Attention → Transformer
이 흐름을 이해하면 현대 NLP와 LLM의 기본 구조를 훨씬 쉽게 받아들일 수 있다.
'스프린트미션' 카테고리의 다른 글
| 위클리 페이퍼 #12 (0) | 2026.04.27 |
|---|---|
| 위클리 페이퍼 #11 (0) | 2026.04.20 |
| 위클리페이퍼 #9 (0) | 2026.03.16 |
| 위클리 페이퍼 8 (0) | 2026.03.09 |
| 위클리페이퍼 7 (0) | 2026.03.03 |