[청강] 딥러닝 8 - Data Exploration, Data Processing

방선생·2026년 1월 19일

청강

목록 보기
8/19

한양대학교 박서연 교수님 - github.io

(한양대학교 박서연 교수님의 딥러닝 수업을 청강 하면서 정리한 내용을 바탕으로 교수님의 허락을 받고 작성하였습니다.)

오늘의 TMI

  • 최근 동향 : 처음부터 Data Exploration & Processing을 진행하는 것이 아닌 pre-trained model을 가져와서 추가적으로 data를 학습함
    • BERT: encoder만 쓰는 양방향 masked language model로, 문장 이해·분류용에 특화된 모델
    • BART: BERT식 encoder + GPT식 decoder를 합친 seq2seq generation model로, 문장 복원·생성용에 특화된 모델

  • pre-trained model을 가져와서 fine-tuning할때 사용한 모델에 special tokens의 형식이 어떻게 되어있는지 잘 확인해야함


mixup: Beyond Empirical Risk Minimization

  • text classification에서 Noiseless Level을 해결하기위한 방법론
    • LLM을 이용하여 datasets을 collecting할때, reasoning을 필요로 한 datasets일 경우 noise가 발생함

dblp: computer science bibliography

  • computer science 분야의 대부분의 논문들 모아둔 사이트
    • ICLR : 이론적인 학문을 연구하는 학회
    • CVPR, ICCV, ECCV : CV 학회
      ACL Anthology
    • 저명한 NLP 분야 학회 모아둔 사이트
      • ex) ACL


Data Exploration, Data Processing

Data_Processing Code - GitHub


1. Data Collection

  • 제일 먼저 task를 정의해야함 최대한 논문으로 publish된 dataset을 사용하는 것이 좋음

  • 만약 dataset이 없을 경우 → data scraping

2. Data Pre-Processing

  • Lowercasing

  • Special characters, Stopwords remove
    • 제거하지 않는것이 최근 트랜드 (transformer 이후 모델)

3. Data Collection: Split into Train/Val/Test sets

  • dataset을 적절하게 분할 해야함
    • 각 class별로 묶은 다음 각 class별로 Train/Val/Test 분할

4. Data Processing: Tokenization

  • Word Tokenization의 경우 Vocabulary에 없으면 처리하지 못함

  • → Character Tokenization : 각 알파벳별로 쪼개서 학습. 하지만, 범위가 너무 커지는 issue가 생김

  • → Subwords 단위로 쪼갬
    • Subword의 정의는 방법마다 약간씩 다름
    • 하지만, Subword 단위로 나뉘게 되면 기존의 단어의 의미를 잘못 예측하거나, 소실될 수도 있음

5. Data Processing: Construct Vocabulary for Encoding

  • 각 Token를 통해 Vocabulary를 만듬
    • unique한 word의 index mapping하는 과정

6. Data Processing: Encoding, padding

  • input_ids을 통해 Vocabulary의 모든 token들을 정수로 변환함

  • Padding을 통해 모든 sample의 크기를 일관되게 만듬
    • 모든 sample의 크기가 다른경우 각각 계산을 해야하지만, 같은 경우 각 Encoding된 vector들을 하나의 Matrix로 만들어서 한번에 처리할 수 있음 (GPU 병렬 연산)

  • 어떤 부분을 집중적으로 봐야하는지 attention mask를 통해 학습전에 표시함


Special Tokens

  • Language Models이 좀 더 잘 training하기 위해 special toekn을 사용함
    • [SEP]: 하나의 입력 안에서 sentences를 구분할 때 쓰는 분리 토큰
    • [SOS] / [BOS]: sequence 생성 시작을 알리는 토큰
    • [EOS] / <|endoftext|> / : sequence가 여기서 끝났다는 것을 표시하는 토큰
    • [UNK]: Vocabulary에 없거나 인식할 수 없는 word를 대신 나타내는토큰
    • [CLS]: 전체 문장의 정보를 요약해서 classification 등의 task에 쓰기 위한 특수 토큰
    • [MASK] / : 가려진 위치의 word를 모델이 맞추도록 하는 masking 토큰
    • [PAD] / : 길이를 맞추려고 빈 자리를 채울 때 쓰는 토큰 → Padding

Pre-trained Language Models leverage special tokens example

  • 매번 이 모든 과정을 거치지 않아도 됨 (ex - AutoTokenizer)


  • Batch Processing can be done by leveraging DataLoader
    • data preprocessing을 진행한 후, 이 data를 모델에 사용하기 위해 Chunk 별로 분할함 → batch 단위


summary

GLUE Benchmark

  • torch.utils.data.Dataset Class안에서 Encoding을 진행해야함








  • 참고자료

stanfordnlp/sst2 · Datasets at Hugging Face

allenai/swag · Datasets at Hugging Face

GitHub - abisee/cnn-dailymail: Code to obtain the CNN / Daily Mail dataset (non-anonymized) for summarization

GitHub - emorynlp/MRL-2021: English-Korean Parallel Dataset

GitHub - hendrycks/test: Measuring Massive Multitask Language Understanding | ICLR 2021

profile
AI & Robotics

0개의 댓글