everyday com-eat
카테고리
작성일
2025. 10. 2. 14:56
작성자
갱수터
728x90

 1. 텍스트 데이터를 모델에 적용하기 전에 어떤 전처리 과정을 거치나요?

  1. 정제(Cleaning): 노이즈 제거와 표준화를 통해 일관된 텍스트로 만든다.
  2. 토크나이징/인코딩 : 토큰 단위로 쪼개고 숫자 시퀀스로 변환한다.
  3. 정규화/정렬: 길이, 대소문자, 특수기호, 공백 등을 일관되게 맞춘다.
  4. 특수 목적 처리: 불용어, 표제어/어간, 오탈자, 이모지/URL/코드 블록 등 도메인별 룰을 적용한다.
  5. 레이블/메타 처리: 지도 학습이면 레이블 정제, 불균형/누락 처리, 샘플 재가공을 수행한다.

 

 

단계별 상세

  • 기본정제
    • 공백 정리, 중복 문자 축약, 제어문자 제거, 잘못 인코딩된 문자 정정
    • URL, 이메일, 숫자 패턴, 해시태그/멘션, 이모지 처리 규칙을 정의(보존/마스킹/삭제 중 선택)
    • 대소문자 통일: 영어는 소문자화가 보편적이나, 고유명사/약어가 중요한 태스크면 유지
    • 한국어 특화: 초성/중성 분리 현상, 맞춥법/띄어쓰기 오류가 성능에 영향을 주면 교정기를 고려

  • 토크나이징
    • 전통 NLP: 공백/구두점 기반, 형태소 분석기(한국어: mecab, Khaiii, Komoran 등)로 어절 → 형태소 분해
    • 신경망/딥러닝: 서브워드 토크나이저 사용(BPE, WordPiece, Unigram). 미등록어 문제를 줄이고 어휘 크기 통제
    • 문자/바이트 단위: 노이즈가 많거나 다국어 혼재 시 byte-level(BPE)로 견고성을 확보한다.

  • 인코딩과 수치화
    • 정수 인덱싱: 토큰→정수 ID 매핑
    • 패딩/마스킹: 배치 처리를 위해 길이 맞추기(최대 길이, truncation 규칙 정의)
    • 어휘 사전: 빈도 기준 최소 출현(threshold) 설정, 특수 토큰( [PAD], [UNK], [CLS], [SEP]) 정의
    • 임베딩 초기화: 학습형 임베딩 또는 사전학습 임베딩(Word2Vec, FastText, GloVe) 사용 결정. 트랜스포머는 내장 임베딩 사용

  • 텍스트 정규화 선택지
    • 불용어 제거: 정보 손실-간소화 트레이드오프가 있음. 전통 모델(tf-idf, linear)에서는 효과적이나, 딥러닝에서는 문맥 손실 우려가 있다.
    • 표제어 추출/어간 추출: 영어,유럽어권에서 변형을 줄인다. 한국어는 형태소 기반 원형 복원이 더 자연스러움
    • 숫자/단위/날짜: 정규 표현식으로 표준 포맷으로 통일하거나 토큰으로 치환한다.

  • 품질/노이즈 대응
    • 오탈자/비표준어: 교정기 적용을 검토(과교정으로 의미 왜곡 가능성이 있어 샘플 검증해야함)
    • 스팸/반복/이상치: 규칙 필터링 또는 이상치 탐지로 제거/가중치 조정
    • 민감정보: 개인정보, 키 등은 비식별화/마스킹 처리

  • 태스크별 특화
    • 분류/감성: 문장 단위 정제, 이모지/감탄사 보존 여부 중요(감성 신호로 작용)
    • 질의응답/요약: 문장 분할, 문단 유지, 특수 토큰으로 구조 표식
    • 문서 검색/랭킹: 형태소 기반 키워드 추출 + 문장 임베딩 병행
    • 코드/로그: 토크나이저를 코드 친화적으로 설정, 서식 및 기호 보존

  • 데이터 분할/검증
    • 중복/누수 방지: 유사 문서가 train/val/test에 동시에 들어가지 않도록 그룹 기준 분할해야함
    • 라벨 불균형: 샘플링/가중치/데이터 증강(역번역, 동의어 치환 등)으로 보정

 

 

전처리 전략 

  • 트랜스포머(예: BERT, RoBERTa, GPT 등)
    • 해당 모델의 토크나이저와 정규화 규칙을 그대로 따른다.
    • 소문자화 여부, 특수토큰, 최대 길이를 모델 설정과 일치시킨다.
    • 과도한 정규화(불용어 제거, 표제어/어간)은 대부분 불필요하며 오히려 성능을 해칠 수 있다.
  • 전통 모델(BoW, tf-idf, n-gram, SVM/로지스틱)
    • 불용어 제거, 표제어/어간, 구두점/숫자 정규화가 효과를 낸다.
  • 한국어 과제
    • 형태소 분석기 품질과 도메인 적합도를 우선 검토한다.
    • 도메인 신조어가 많으면 서브워드/바이트 수준이 안정적이다.

 

2. FastText가 Word2Vec과 다른 점은 무엇이며, 어떤 장점이 있나요?

차이점

차이점 Word2Vec FastText
서브워드 (문자 n-그램)
사용 여부
- 단어를 하나의 토큰으로만 본다.
- 단어 임베딩을 단어 ID 기준으로 학습한다.
- 단어를 문자 n-그램 조각으로 분해해 임베딩을 학습한다.
- 최종 단어 벡터는 해당 n-그램 벡터들의 합/평균으로 구성된다.
희귀어/미등록어
처리
학습 어휘에 없는 단어(OOV)는 벡터가 없다. 문자 n-그램을 통해 OOV 단어라도 구성 가능한 n-그램이 있으면 벡터를 생성한다.
형태 변형·접사 표현 단어 형태가 바뀌면 별도 토큰으로 취급된다. 공통 n-그램을 공유해 어근/접사 관계를 일부 반영한다.
학습목표/
알고리즘
두 모델 모두 CBOW/Skip-gram, 네거티브 샘플링 등 학습 목적은 유사하게 사용할 수 있다.
  토큰 대신 n-그램 임베딩 조합을 학습한다는 점이 구조적 차이를 만든다.
메모리/속도 모델이 단어 임베딩 테이블 하나여서 가볍고 빠르다. n-그램 임베딩 테이블까지 학습하므로 메모리 사용이 증가하고, 학습/추론이 다소 무거워진다. (하지만 최적 구현으로 실무에서 충분히 빠르게 응용된다)

 

 

 

FastText의 장점

  • OOV와 희귀어에 강하다.
    • 문자 n-gram 기반이라 처음 보는 단어라도 합리적 벡터를 생성
    • 도메인 신조어, 오탈자, 형태 변화가 많은 언어에서 유리
  • 형태학적 일반화가 된다.
    • 어근/접사 공유로 유사 형태 단어 간 벡터가 가까워져 의미 일반화가 잘 된다.
    • 한국어/형태가 풍부한 언어에서 효과적
  • 데이터가 적을 때 안정적이다.
    • 단어별 데이터가 부족해도 n-그램 공유로 표현이 보완됨
  • 다운스트림 성능 개선이 가능하다.
    • 희귀어 비중이 높은 코퍼스(사용자 로그, 소셜, 도메인 전문용어)에서 분류, 유사도, 검색 성능이 개선되는 경우가 많음

 

 

선택 가이드

  • 대규모 일반 코퍼스, 표준 어휘 중심 → Word2Vec로 충분한 성능
  • 신조어,오탈자,희귀어,형태 변화가 많은 언어(한국어 포함) → FastText가 더 견고하게 동작
  • 리소스 제약이 큰 경우 → Word2Vec이 더 가볍게 운용

 

3. Attention 메커니즘이 Seq2Seq 모델의 어떤 문제를 해결하는 데 도움이 되나요?

  • 단일 고정 길이 벡터 병목 문제 해결
    • 기존 RNN 기반 Seq2Seq는 인코더가 전체 입력을 하나의 고정 길이 컨텍스트 벡터로 압축한다.
    • 문장이 길어질수록 정보 손실이 커지고, 디코더가 필요한 세부 정보를 복원하기 어려워진다.
    • Attention은 디코더가 매시점마다 인코더의 모든 은닉 상태를 "가중합"으로 참조하도록 해서, 고정 병목을 제거하고 길게 늘어난 문장에서도 정보 접근이 가능해진다.

  • 장기 의존성/길이 증가에 따른 성능 저하 완화
    • 중요한 단어가 멀리 떨어져 있어도, 해당 시점에 높은 어텐션 가중치를 주어 직접 참조한다.
    • 이로 인해 긴 문장 번역, 요약 등에서 재현율과 일관성이 개선된다.

  • 위치별 동적 정보 선택을 가능하게 한다
    • 디코더가 현재 생성하려는 토큰에 맞춰 인코더 시퀀스 내 "어디를 볼지"를 동적으로 결정한다.
    • 불필요한 정보는 낮게, 관련 위치는 높게 가중하여 정밀한 대응을 이끈다.

  • 정렬(alignment) 정보 암묵적 제공
    • 소스-타깃 단어/구의 대응 관계가 어텐션 가중치 행렬로 드러난다.
    • 해석 가능성과 오류 분석이 용이해진다.

  • 기계 번역/요약의 문맥 일관성과 커버리지 문제 개선
    • 필요한 부분을 반복 참조하고, 커버리지 확장(커버리지 벡터 등)을 통해 같은 소스 구간을 과도하게 반복 번역하거나 누락하는 문제를 줄일 수 있다.

 

4. Transformer 모델은 Seq2Seq 구조와 어떤 점에서 근본적으로 다른가요?

1) 근본적 차이(개념 축)

  • RNN 의존 vs 어텐션 전면화
    • 전통 Seq2Seq(RNN 기반): 인코더·디코더가 순차적으로 토큰을 처리한다. 순서 의존이 강하고 긴 의존성 학습이 어렵다.
    • Transformer: 전부 어텐션(Self-/Cross-Attention)으로 구성해 순차 의존을 제거한다. 병렬 처리가 된다.
  • 고정 컨텍스트 병목 vs 전역 컨텍스트 접근
    • RNN Seq2Seq: 고정 길이 컨텍스트 벡터 병목이 존재하거나, 어텐션을 붙여도 기본 표현은 순차 누적에 의존한다.
    • Transformer: 각 토큰이 전 시퀀스에 직접 어텐션한다. 전역 문맥 접근이 기본 동작이 된다.
  • 표현 방식
    • RNN Seq2Seq: 순차 상태 전이로 시점별 은닉 상태를 갱신한다.
    • Transformer: 위치 임베딩을 추가해 순서를 암시하고, 다중 헤드 어텐션과 피드포워드로 표현을 갱신한다.

 

 

2) 구조·학습 관점

  • 병렬화
    • RNN: 길이 T에 비례해 순차 계산해야 한다 → 병렬화가 제한된다.
    • Transformer: 인코더 학습 시 전체 토큰을 한 번에 처리한다 → 대규모 병렬화가 된다. 디코더는 마스킹으로 오토리그레시브지만, 내부 행렬 연산은 병렬화된다.
  • 장기 의존성
    • RNN: 기울기 소실/폭주로 먼 의존성 학습이 어렵다(LSTM/GRU로 완화).
    • Transformer: 어텐션으로 먼 토큰 간 직접 연결이 된다 → 장기 의존성에 강하다.
  • 용량·스케일링
    • RNN: 깊이·폭을 늘려도 순차 병목이 남는다.
    • Transformer: 너비/깊이/헤드 수/토큰 길이를 늘리며 스케일 업이 잘 된다(메모리·시간은 O(n^2) 어텐션 비용 이슈가 있다).

 

 

3) 입력/출력 처리

  • Seq2Seq(RNN): 인코더가 순차로 입력을 요약하고, 디코더가 이전 토큰을 조건으로 다음 토큰을 생성한다. 어텐션을 추가하면 인코더 은닉 상태 위에 가중합을 얹는다.
  • Transformer: 인코더-디코더 구조에서도 각 층마다 Self-Attention과 Cross-Attention 블록으로 직접 상호작용한다. 분류/요약/번역 등 다양한 태스크에 맞춰 헤드를 바꾸기 쉽다.

 

 

4) 성능·실무적 차이

  • 데이터/연산 효율
    • RNN: 짧은 시퀀스·경량 환경에서는 여전히 유효하다.
    • Transformer: 대규모 데이터·가속기 환경에서 압도적 성능과 생산성을 보인다. 다만 긴 시퀀스에서 O(n^2) 비용이 커져 효율적 어텐션(Linear/Long/Flash 등) 기법을 병행한다.
  • 해석·정렬
    • RNN+Attention: 정렬이 어텐션 맵으로 드러나지만, 기본 표현은 순차 은닉에 얹는 형태다.
    • Transformer: 멀티헤드 어텐션 맵이 다양한 관계를 병렬로 포착한다(구문·의미·코리퍼런스 등).

 

 

 

Transformer는 순차 RNN을 버리고 어텐션을 전면에 둔 구조로, 전 토큰에 대한 병렬·전역 컨텍스트 접근이 기본이 된다.
그 결과 긴 의존성, 스케일링, 학습 속도에서 RNN 기반 Seq2Seq와 근본적으로 다르게 작동하고, 대규모 데이터/모델에서 더 강력한 성능을 보인다.

 

'#위클리 페이퍼' 카테고리의 다른 글

#위클리 페이퍼 9  (0) 2025.09.07
#위클리 페이퍼 8  (3) 2025.08.29
#위클리 페이퍼 7  (0) 2025.08.22
# 위클리 페이퍼 6  (3) 2025.08.15
#위클리 페이퍼 5  (3) 2025.08.08