전체 글 87

ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators

arxiv.org/abs/2003.10555 Electra 모델은 어떻게 학습이 되는지 알아보자. ELECTRA? Masked Language Modeling(MLM) pre-training 방법은 입력 일부를 [MASK] 토큰으로 변경해버린 뒤 원래 토큰을 복원하는 식으로 학습을 한다. 그런데 이게 과연 효율적인가? 라는 의문에서 Electra의 아이디어가 나왔다. 마스킹을 할 때 15% 정도의 확률로 선택을 하고, 마스킹 된 것을 원본으로 복원하는 것을 학습하는데, 하나의 Example 당 15% 토큰만 학습에 기여하기 때문에 계산 효율적이지 못하다. Electra에선 Replaced Token Detection (RTD) 방식의 pre-training 방법을 제안한다. 단순히 특정 토큰을 [MASK..

DL&ML/papers 2021.04.16

Multi-Sample Dropout for Accelerated Training and Better Generalization

https://arxiv.org/pdf/1905.09788.pdf NLP 관련 캐글 상위권 솔루션들을 보다보면 간혹 등장하는 multi-sample dropout 구조를 이용해 모델의 일반화 능력을 향상 시키는 것을 볼 수 있다. 관련 논문이 있어 아이디어 정도만 정리해본다. Dropout의 효과 리마인드 예를 들어, 랜덤하게 50%의 뉴런을 매 학습 이터레이션 마다 버림 그 결과, 뉴런들이 서로 의존하는 것을 막을 수 있고, better generalization이 가능해짐 inference 시에는 학습 때 처럼 랜덤하게 버리지 않고, 각 뉴런의 출력에 0.5를 곱함. Multi-sample Dropout 이게 전부다. ​ BERT를 fine-tuning할 때를 예를 들면, BERT의 output fe..

DL&ML/papers 2021.04.15

Kaggle TSE 2020 대회 top-solution 정리

작년에 참여해서 은메달을 획득했던 Kaggle Tweet Sentiment Extraction 대회에서 다른 사람들은 어떻게 성능을 끌어올렸는지 top solution을 훑어 보면서 정리해보려고 한다. Tweet Sentiment Extraction Extract support phrases for sentiment labels www.kaggle.com 흥미롭고 배울 게 많은 답안 위주로... 13-th www.kaggle.com/c/tweet-sentiment-extraction/discussion/159505 RoBERTa-base로 시작 데이터가 적어서 아이디어를 검증할 때, 5-CV를 10번(random seed 다르게) 돌려 벨리데이션을 수행 빈칸 자체도 패턴이 될 수 있다고 판단해서, 전처리..

ALBERT: A Lite BERT for self-supervised learning of language representations

arxiv.org/abs/1909.11942 ALBERT: A Lite BERT for Self-supervised Learning of Language Representations Increasing model size when pretraining natural language representations often results in improved performance on downstream tasks. However, at some point further model increases become harder due to GPU/TPU memory limitations and longer training times. To arxiv.org ALBERT에 대해 갑자기 궁금하여 빠르게 훑어 보았다..

DL&ML/papers 2021.04.14

Seq2Seq & Beam Search

앞서 Seq2Seq의 구조와 학습 방법에 대해서 알아봤었다. Seq2Seq, Auto Regressive, Attention, Teacher Forcing, Input Feeding 최근에 번역 모델을 직접 구현해보면서 공부하게 된 구조 seq2seq. 개념만 알고 직접 구현해본 적은 없어서 굳이 호기심을 가지고 해본 것인데, 새롭게 배운 것이 꽤 있다. 이해하기 위해선 RNN이나 aimaster.tistory.com 그러면, 추론은 어떻게 할까? seq2seq을 기준으로 입력 문장(영어)을 컨텍스트 벡터로 인코딩 한 뒤 타겟 문장(한글)으로 디코딩하는 방법에 대해 정리해 본다. 입력/출력 문장을 구성하는 단어 사전의 크기는 3만개라고 가정하자. 디코딩 과정은 곧 매 타임스텝마다 3만 개 단어중 하나를 ..

DL&ML/concept 2021.04.14

분류 문제 관련 torch loss (BCEWithLogitsLoss, CrossEntropyLoss, LogSoftmax, NLLLoss)

torch.nn.BCEWithLogitsLoss 이진 분류 문제를 풀 때 쓰는 BCEWithLogitsLoss Sigmoid layer + BCELoss의 조합으로 구현되어 있다. 이미 최적화 되어 있으므로 별도로 구현하기 보다 갖다 쓰는게 낫다고 한다. 기본적으로는 'mean'으로 reduction 되어 스칼라 값을 리턴한다. single label 이진 분류 문제 뿐만 아니라 multi-label 이진 분류 문제를 풀 때도 활용 가능하다. single label 이진 분류 예시 logits = model(ids, token_type_ids=token_type_ids, attention_mask=mask, ans_indices=ans_indices) # |logits| = (batch, 1) # |la..

torch amp mixed precision (autocast, GradScaler)

1.5 버전 부터인가 nvidia의 amp모듈이 torch 기본 모듈로 자리잡았다. amp의 Mixed Precision 기능을 이용하면 float16으로 Type Casting 되는 것이 빠른 연산(Linear Layer, Conv Layer etc.)은 float16으로 변환해서 연산을 수행하는 것이 가능해진다. (계산 정확도를 유지하는 선에서) torch amp 모듈은 autocasting을 위한 모듈을 제공하며, 아래 예시 코드에서 확인할 수 있듯 그 이름도 autocast이다. with 문과 함께 선언해서 사용하면 그 안에 선언되는 토치 연산들은 mixed precision으로 실행이 된다. model의 forward 연산과, loss 계산 연산을 with문 아래에 위치 시키자. autocast..