오늘의 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
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
- 꼭 torch.utils.data.Dataset Class안에서 Encoding을 진행해야함
stanfordnlp/sst2 · Datasets at Hugging Face
allenai/swag · Datasets at Hugging Face
GitHub - emorynlp/MRL-2021: English-Korean Parallel Dataset
GitHub - hendrycks/test: Measuring Massive Multitask Language Understanding | ICLR 2021