-
Notifications
You must be signed in to change notification settings - Fork 0
2021 09 24
snoop2head edited this page Sep 25, 2021
·
2 revisions
ELECTRA is a new pretraining approach which trains two transformer models: the generator and the discriminator. The generator’s role is to replace tokens in a sequence, and is therefore trained as a masked language model. The discriminator, which is the model we’re interested in, tries to identify which tokens were replaced by the generator in the sequence.
- 한 번에 학습하는 token의 양이 BERT가 더 많다고 한다. https://huggingface.co/transformers/model_doc/electra.html에서 나온 대로라면...
Masked language modeling (MLM) pretraining methods such as BERT corrupt the input by replacing some tokens with [MASK] and then train a model to reconstruct the original tokens. While they produce good results when transferred to downstream NLP tasks, they generally require large amounts of compute to be effective. As an alternative, we propose a more sample-efficient pretraining task called replaced token detection. Instead of masking the input, our approach corrupts it by replacing some tokens with plausible alternatives sampled from a small generator network. Then, instead of training a model that predicts the original identities of the corrupted tokens, we train a discriminative model that predicts whether each token in the corrupted input was replaced by a generator sample or not. Thorough experiments demonstrate this new pretraining task is more efficient than MLM because the task is defined over all input tokens rather than just the small subset that was masked out.
- Generator도 train시키는 건가 아니면 discriminator만 train시키는 건가? 이건 멘토님한테 여쭤보자.
- Train을 할 때 evaluation loss가 증가하는 경우가 있었다…
- Matthew’s correlation이 중간에 튀는 경우가 있었다?
- WPE가 이미 모델에서 있는 걸 보고 따로 입력할 필요 없다고 생각했음.
- 76자 이상 넘어가면 다음 줄로 넘어간다고 알고 있습니다.
- 수업에서는 self attention block, batch size를 더 쌓았다고 함.
- 근데 SKT config.json에서는 GPT-2라고 하는데… 구조가 비슷해서 상관 없는 건가?
- 근데 GPT-3 Baseline을 사용하는 게 맞나 싶음. 너무 오래 걸려. 한 epoch에 3시간이 걸리더라고.
- Baseline 모델은 Decoder여서 다음 단어 학습하는 거라서 적절하지 않다고 생각했음. WiC Task랑 크게 관련 없는 것 같아서. 저걸 hidden state를 사용하기에도 애매하고.
- 인과추론에는 괜찮을 수도 있는데, 동형이의어 판단에는 별로인 듯.
근데 성능은 모든 면에서 outperform하는 것 같기도 하고… (BoolQ, CoPA, WiC)
Batch size 끼리는 Padding 넣어서 길이 맞추는 게 맞는 것 같아요. Tokenizer에 padding하는 건 문장에서 제일 긴 걸 기준으로 채우는 것 같은데. Train 시킬 때 batch 단계에서 길이를 줄일 수 있을 것 같아요.
- 문장 길이가 계속 달라지잖아요. Input feature을 어떻게 잡아야 할 지 모르겠더라고요. Hidden state가 token 별로 여러 개가 있을텐데. 문장 별로 길이가 달아질텐데.
-> Electra로 하면 맨앞에 부분이 class token으로 tokenize가 돼요. 그 다음에 문장이 이어지거든요? Classification head로 가보니까. 0번째가 값만 가지고 그렇게 출력이 되더라고요.
- 영진
- HanBERT vs KoBART vs KoElectra
- CoLA에서 Fine tuning하는 방식을 여러 개 해볼게요
- train이랑 dev를 합쳐서 한다든지
- 준홍: CoLA에서 모델 다양하게 사용해보고 싶어서… 근데 freeze 시키는 효용성이 있을지 없을지 잘 모르겠음. Classifier만 train시켜야 하나? NLP에 익숙해지는 게 최종 목표.
- 성욱: CoLA 말고 다른 Task들은 마지막 layer을 수정을 해야 하는 건가요? 마지막 Layer 교체하는 것 같고 실험을 해볼 것 같음.
- 재영: Automodel에서 head를 붙이는 걸 봤거든요. Automodel class에서 sequence classification 등 다른 head를 여러 개가 붙어있는데 그걸 조절해서 output에 마지막에 수정해서 가져올 수 있다.
- 연주: 전반적으로 NLP 공부하고 CoLA에 하나씩 적용
- 현수: CoLA를 돌릴 때 여러 모델 돌리면서 실험하는 중
- 세현: 원래는 WiC 좀 더 보려고 했는데 일단 통일하자고 하셨으니… 모델을 어떤 거 써야할 지 잘 모르겠네요. 실험을 해야 할 것 같아요. Task를 딱 정하고 할 수 있는 stage가 아닐 것 같다는 느낌이 드네요. CoLA 데이터를 아직 안 다뤄봐서 실험하는 단계로 ㅎㅎ
- 재영: 저도 막 온갖 모델 적용해보려고요.
- KoBART
- ALBERT: https://huggingface.co/kykim/albert-kor-base
- KoElectra-v3
- Baseline GPT-3 model
- HanBERT
- bert-base-kor
- KcBERT
참고로 Electra외에 BERT 계열 모델 성능은 다음과 같다
NSMC (acc) |
Naver NER (F1) |
PAWS (acc) |
KorNLI (acc) |
KorSTS (spearman) |
Question Pair (acc) |
Korean-Hate-Speech (Dev) (F1) |
|
---|---|---|---|---|---|---|---|
KoBERT | 89.59 | 87.92 | 81.25 | 79.62 | 81.59 | 94.85 | 66.21 |
HanBERT | 90.06 | 87.70 | 82.95 | 80.32 | 82.73 | 94.72 | 68.32 |
kcbert-base | 89.87 | 85.00 | 67.40 | 75.57 | 75.94 | 93.93 | 68.78 |
KoELECTRA-Base-v3 | 90.63 | 88.11 | 84.45 | 82.24 | 85.53 | 95.25 | 67.61 |
albert-kor-base | 89.45 | 82.66 | 81.20 | 79.42 | 81.76 | 94.59 | 65.44 |
bert-kor-base | 90.87 | 87.27 | 82.80 | 82.32 | 84.31 | 95.25 | 68.45 |
electra-kor-base | 91.29 | 87.20 | 85.50 | 83.11 | 85.46 | 95.78 | 66.03 |
funnel-kor-base | 91.36 | 88.02 | 83.90 | 84.52 | 95.51 | 68.18 |