ํํ ๋ฆฌ์ผ: ์ฒ์๋ถํฐ ์คํ์ธ์ด์ฉ ELECTRA๋ฅผ ์ฌ์ ๊ต์กํ๋ ๋ฐฉ๋ฒ
ํํ ๋ฆฌ์ผ: ์ฒ์๋ถํฐ ์คํ์ธ์ด์ฉ ELECTRA๋ฅผ ์ฌ์ ๊ต์กํ๋ ๋ฐฉ๋ฒ
Skim AI์ ๋จธ์ ๋ฌ๋ ์ฐ๊ตฌ์ ํฌ๋ฆฌ์ค ํธ๋์ด ์ฒ์ ๊ฒ์ํ์ต๋๋ค.
์๊ฐ
์ด ๊ธ์์๋ Transformer ์ฌ์ ํ๋ จ ๋ฐฉ๋ฒ ์ ํ๊ตฐ์ ๋ ๋ค๋ฅธ ๊ตฌ์ฑ์์ธ ELECTRA๋ฅผ ์คํ์ธ์ด์ฉ์ผ๋ก ์ฌ์ ํ๋ จํ์ฌ ์์ฐ์ด ์ฒ๋ฆฌ ๋ฒค์น๋งํฌ์์ ์ต์ฒจ๋จ ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํฉ๋๋ค. ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ํ ์คํ์ธ์ด์ฉ ๋ง์ถคํ BERT ์ธ์ด ๋ชจ๋ธ ํ๋ จ์ ๋ํ ์๋ฆฌ์ฆ ์ค 3๋ถ์ ๋๋ค:
- 1๋ถ: ์คํ์ธ์ด์ฉ RoBERTa ์ธ์ด ๋ชจ๋ธ์ ์ฒ์๋ถํฐ ํ๋ จํ๋ ๋ฐฉ๋ฒ
- 2๋ถ: ๋ช ๋ช ๋ ์ํฐํฐ ์ธ์(NER)์ ์ํ SpanBERTa ์คํ์ธ์ด ๋ชจ๋ธ ํ๋ จ ๋ฐฉ๋ฒ
1. ์๊ฐ
ICLR 2020์์, ELECTRA: ํ ์คํธ ์ธ์ฝ๋๋ฅผ ์์ฑ๊ธฐ๊ฐ ์๋ ํ๋ณ๊ธฐ๋ก ์ฌ์ ํ๋ จํ๊ธฐ๋ผ๋ ์๋ก์ด ์๊ธฐ ์ง๋ ์ธ์ด ํํ ํ์ต ๋ฐฉ๋ฒ์ ์๊ฐํ์ต๋๋ค. ์ผ๋ ํธ๋ผ๋ ํธ๋์คํฌ๋จธ ์ฌ์ ํ๋ จ ๋ฐฉ๋ฒ ๊ณ์ด์ ๋ ๋ค๋ฅธ ๋ฉค๋ฒ๋ก, ์ด์ ๋ฉค๋ฒ์ธ BERT, GPT-2, RoBERTa๋ ์์ฐ์ด ์ฒ๋ฆฌ ๋ฒค์น๋งํฌ์์ ๋ง์ ์ต์ฒจ๋จ ๊ฒฐ๊ณผ๋ฅผ ๋ฌ์ฑํ ๋ฐ ์์ต๋๋ค.
๋ค๋ฅธ ๋ง์คํฌ ์ธ์ด ๋ชจ๋ธ๋ง ๋ฐฉ๋ฒ๊ณผ ๋ฌ๋ฆฌ, ELECTRA๋ ๋์ฒด ํ ํฐ ๊ฐ์ง๋ฅผ ํตํด ์ํ ํจ์จ์ฑ์ด ๋์ ์ฌ์ ํ์ต ์์
์ ์ํํฉ๋๋ค. ์๊ท๋ชจ์ ๊ฒฝ์ฐ, ๋จ์ผ GPU์์ 4์ผ ๋์ ELECTRA-small์ ํ๋ จํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. GPT(Radford et al., 2018) (30๋ฐฐ ๋ ๋ง์ ์ปดํจํ
์ ์ฌ์ฉํ์ฌ ํ๋ จ๋จ) GLUE ๋ฒค์น๋งํฌ์์. ๋๊ท๋ชจ์์๋ ELECTRA-large๊ฐ ๋ค์์ ๋ฅ๊ฐํฉ๋๋ค. ALBERT(Lan et al., 2019) ๋ฅผ ํตํด SQuAD 2.0์ ์ํ ์๋ก์ด ์ต์ฒจ๋จ ๊ธฐ์ ์ ์ ๋ณด์
๋๋ค.
ELECTRA๋ ๋ง์คํน ์ธ์ด ๋ชจ๋ธ ์ฌ์ ํ์ต ๋ฐฉ์๋ณด๋ค ์ง์์ ์ผ๋ก ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ฐํํฉ๋๋ค.
{: .text-center}
2. ๋ฐฉ๋ฒ
๋ค์๊ณผ ๊ฐ์ ๋ง์คํฌ๋ ์ธ์ด ๋ชจ๋ธ๋ง ์ฌ์ ํ์ต ๋ฐฉ๋ฒ BERT(Devlin ์ธ, 2019) ์ผ๋ถ ํ ํฐ(์ผ๋ฐ์ ์ผ๋ก ์
๋ ฅ์ 15%)์ ๋ค์๊ณผ ๊ฐ์ด ๋์ฒดํ์ฌ ์
๋ ฅ์ ์์์ํต๋๋ค. [๋ง์คํฌ]
๋ฅผ ์
๋ ฅํ ๋ค์ ๋ชจ๋ธ์ ํ์ต์์ผ ์๋ ํ ํฐ์ ์ฌ๊ตฌ์ฑํฉ๋๋ค.
๋ง์คํน ๋์ ELECTRA๋ ์ผ๋ถ ํ ํฐ์ ์ถ์๋ ๋ง์คํน ์ธ์ด ๋ชจ๋ธ ์ถ๋ ฅ์ ์ํ๋ก ๋์ฒดํ์ฌ ์
๋ ฅ์ ์์์ํต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ฐ ํ ํฐ์ด ์๋ณธ์ธ์ง ๋์ฒดํ์ธ์ง ์์ธกํ๊ธฐ ์ํด ํ๋ณ ๋ชจ๋ธ์ ํ์ต์ํต๋๋ค. ์ฌ์ ํ๋ จ ํ์๋ ์์ฑ๊ธฐ๋ฅผ ๋ฒ๋ฆฌ๊ณ ํ๋ณ๊ธฐ๋ฅผ ๋ค์ด์คํธ๋ฆผ ์์
์์ ๋ฏธ์ธ ์กฐ์ ํฉ๋๋ค.
ELECTRA์ ๋ํ ๊ฐ์์
๋๋ค.
{: .text-center}
GAN๊ณผ ๊ฐ์ ์์ฑ๊ธฐ์ ๊ฐ๋ณ๊ธฐ๊ฐ ์์ง๋ง, ELECTRA๋ ์์๋ ํ ํฐ์ ์์ฑํ๋ ์์ฑ๊ธฐ๊ฐ ๊ฐ๋ณ๊ธฐ๋ฅผ ์์ด๋๋ก ํ๋ จ๋๋ ๊ฒ์ด ์๋๋ผ ์ต๋ํ์ ํ๋ฅ ๋ก ํ๋ จ๋๋ค๋ ์ ์์ ์ ๋์ ์ด์ง ์์ต๋๋ค.
ELECTRA๊ฐ ์ ๊ทธ๋ ๊ฒ ํจ์จ์ ์ธ๊ฐ์?
์๋ก์ด ๊ต์ก ๋ชฉํ๋ฅผ ํตํด ELECTRA๋ ๋ค์๊ณผ ๊ฐ์ ๊ฐ๋ ฅํ ๋ชจ๋ธ์ ํ์ ํ๋ ์ฑ๋ฅ์ ๋ฌ์ฑํ ์ ์์ต๋๋ค. RoBERTa(Liu ์ธ, (2019)) ๋ ๋ ๋ง์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ํ๋ จ์ 4๋ฐฐ ๋ ๋ง์ ์ปดํจํ ์ด ํ์ํฉ๋๋ค. ์ด ๋ ผ๋ฌธ์์๋ ELECTRA์ ํจ์จ์ฑ์ ์ค์ ๋ก ๊ธฐ์ฌํ๋ ์์๋ฅผ ํ์ ํ๊ธฐ ์ํด ๋ถ์์ ์ํํ์ต๋๋ค. ์ฃผ์ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ELECTRA๋ ์ผ๋ถ ํ ํฐ์ด ์๋ ๋ชจ๋ ์ ๋ ฅ ํ ํฐ์ ๋ํด ์์ค์ ์ ์ํจ์ผ๋ก์จ ํฐ ์ด์ ์ ๋๋ฆฌ๊ณ ์์ต๋๋ค. ์ข ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์ค๋ช ํ์๋ฉด, ELECTRA์์๋ ํ๋ณ๊ธฐ๊ฐ ์ ๋ ฅ๋ ๋ชจ๋ ํ ํฐ์ ์์ธกํ๋ ๋ฐ๋ฉด, BERT์์๋ ์ ๋๋ ์ดํฐ๊ฐ ์ ๋ ฅ๋ 15% ๋ง์คํฌ ํ ํฐ๋ง ์์ธกํฉ๋๋ค.
- ์ฌ์ ํ์ต ๋จ๊ณ์์ ๋ชจ๋ธ์ด ๋ค์์ ๋ณด๊ธฐ ๋๋ฌธ์ BERT์ ์ฑ๋ฅ์ด ์ฝ๊ฐ ์ ํ๋ฉ๋๋ค.
[๋ง์คํฌ]
ํ ํฐ์ ์ฌ์ฉํ ์ ์์ง๋ง, ๋ฏธ์ธ ์กฐ์ ๋จ๊ณ์์๋ ๊ทธ๋ ์ง ์์ต๋๋ค.
์ผ๋ ํธ๋ผ์ ๋ฒํธ
{: .text-center}
3. ELECTRA ์ฌ์ ๊ต์ก
์ด ์น์
์์๋ ELECTRA์ ์์ฑ์๊ฐ ์ ๊ณตํ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ TensorFlow๋ก ELECTRA๋ฅผ ์ฒ์๋ถํฐ ํ์ตํฉ๋๋ค. ๊ตฌ๊ธ-์ฐ๊ตฌ/์ผ๋ ํธ๋ผ. ๊ทธ๋ฐ ๋ค์ ๋ชจ๋ธ์ ํ์ดํ ์น์ ์ฒดํฌํฌ์ธํธ๋ก ๋ณํํ๊ณ , ํ๊น
ํ์ด์ค์ ํธ๋์คํฌ๋จธ
๋ผ์ด๋ธ๋ฌ๋ฆฌ.
์ค์
!pip install tensorflow==1.15
!pip install transformers==2.8.0
!.git clone https://github.com/google-research/electra.git
import os
import json
ํธ๋์คํฌ๋จธ์์ ์คํ ํ ํฐ๋ผ์ด์ ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
๋ฐ์ดํฐ
์คํ์๋ธํ์ดํ์์ ๊ฒ์ํ ์คํ์ธ์ด ์ํ ์๋ง ๋ฐ์ดํฐ์ ์ผ๋ก ELECTRA๋ฅผ ์ฌ์ ํ๋ จํฉ๋๋ค. ์ด ๋ฐ์ดํฐ ์ธํธ์ ํฌ๊ธฐ๋ 5.4GB์ด๋ฉฐ ํ๋ ์ ํ ์ด์ ์ ์ํด ์ฝ 30MB์ ์์ ํ์ ์งํฉ์ผ๋ก ํ๋ จํ ๊ฒ์ ๋๋ค.
DATA_DIR = "./data" #@param {type: "๋ฌธ์์ด"}
TRAIN_SIZE = 1000000 #@param {์ ํ:"์ ์"}
MODEL_NAME = "electra-spanish" #@param {type: "๋ฌธ์์ด"}
# ์คํ์ธ์ด ์ํ ์๋ง ๋ฐ์ดํฐ ์ธํธ ๋ค์ด๋ก๋ ๋ฐ ์์ถ ํ๊ธฐ
os.path.exists(DATA_DIR)๊ฐ ์๋ ๊ฒฝ์ฐ:
!.mkdir -p $DATA_DIR
!.wget "https://object.pouta.csc.fi/OPUS-OpenSubtitles/v2016/mono/es.txt.gz" -O $DATA_DIR/OpenSubtitles.txt.gz
!.gzip -d $DATA_DIR/OpenSubtitles.txt.gz
!head -n $TRAIN_SIZE $DATA_DIR/OpenSubtitles.txt > $DATA_DIR/train_data.txt
!.rm $DATA_DIR/OpenSubtitles.txt
์ฌ์ ํ์ต ๋ฐ์ดํฐ ์งํฉ์ ๊ตฌ์ถํ๊ธฐ ์ ์ ๋ง๋ญ์น์ ํ์์ด ๋ค์๊ณผ ๊ฐ์์ง ํ์ธํด์ผ ํฉ๋๋ค:
- ๊ฐ ์ค์ ๋ฌธ์ฅ์ ๋๋ค.
- ๋น ์ค์ ๋ ๋ฌธ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.
์ฌ์ ํ์ต ๋ฐ์ดํฐ ์ธํธ ๊ตฌ์ถ
์ ํฌ๋ ๋ค์๊ณผ ๊ฐ์ ํ ํฐ๋ผ์ด์ ๋ฅผ ์ฌ์ฉํ ๊ฒ์
๋๋ค. bert-๊ธฐ๋ฐ-๋ค๊ตญ์ด-์ผ์ด์ค
๋ฅผ ์ฌ์ฉํ์ฌ ์คํ์ธ์ด ํ
์คํธ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
# ์ฌ์ ํ์ต๋ WordPiece ํ ํฐ๋ผ์ด์ ๋ฅผ ์ ์ฅํ์ฌ vocab.txt๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
tokenizer = AutoTokenizer.from_pretrained("bert-base-multilingual-cased")
tokenizer.save_pretrained(DATA_DIR)
๋น์ฌ๋ ๋ค์์ ์ฌ์ฉํฉ๋๋ค. ๋น๋_ํ๋ฆฌํธ๋ ์ด๋_๋ฐ์ดํฐ์ธํธ.py
๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ
์คํธ ๋คํ์์ ์ฌ์ ํ์ต ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
!python3 electra/build_pretraining_dataset.py \.
--corpus-dir $DATA_DIR \.
--vocab-file $DATA_DIR/vocab.txt \.
--output-dir $DATA_DIR/pretrain_tfrecords \.
--max-seq-length 128 \
--blanks-separate-docs False \.
--์๋ฌธ์ ์์ \
--num-processes 5
๊ต์ก ์์
๋น์ฌ๋ ๋ค์์ ์ฌ์ฉํฉ๋๋ค. run_pretraining.py
๋ฅผ ์ฌ์ฉํ์ฌ ELECTRA ๋ชจ๋ธ์ ์ฌ์ ํ์ตํ ์ ์์ต๋๋ค.
์ํ ์ผ๋ ํธ๋ผ ๋ชจ๋ธ์ 1๋ฐฑ๋ง ๊ฑธ์์ผ๋ก ํ๋ จํ๋ ค๋ฉด ์คํํ์ธ์:
python3 run_pretraining.py --data-dir $DATA_DIR --model-name electra_small
Tesla V100 GPU์์๋ 4์ผ์ด ์กฐ๊ธ ๋๊ฒ ๊ฑธ๋ฆฝ๋๋ค. ๊ทธ๋ฌ๋ ์ด ๋ชจ๋ธ์ 20๋ง ๊ฑธ์(v100 GPU์์ 10์๊ฐ ๋์ ํ๋ จ)์ ์ํํ ํ์๋ ๊ด์ฐฎ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
๊ต์ก์ ์ฌ์ฉ์ ์ง์ ํ๋ ค๋ฉด .json
ํ์ดํผํ๋ผ๋ฏธํฐ๊ฐ ํฌํจ๋ ํ์ผ์
๋๋ค. ๋ค์์ ์ฐธ์กฐํ์ธ์. configure_pretraining.py
๋ฅผ ์
๋ ฅํ๋ฉด ๋ชจ๋ ํ์ดํผํ๋ผ๋ฏธํฐ์ ๊ธฐ๋ณธ๊ฐ์ ํ์ธํ ์ ์์ต๋๋ค.
์๋์์๋ 100๋จ๊ณ์ ๋ํด์๋ง ๋ชจ๋ธ์ ํ์ตํ๋๋ก ํ์ดํผํ๋ผ๋ฏธํฐ๋ฅผ ์ค์ ํ์ต๋๋ค.
hparams = {
"do_train": "true",
"do_eval": "false",
"model_size": "small",
"do_lower_case": "false",
"vocab_size": 119547,
"num_train_steps": 100,
"์ ์ฅ_์ฒดํฌํฌ์ธํธ_๋จ๊ณ": 100,
"train_batch_size": 32,
}
open("hparams.json", "w")๋ฅผ f๋ก ์ฌ์ฉํฉ๋๋ค:
json.dump(hparams, f)
๊ต์ก์ ์์ํ๊ฒ ์ต๋๋ค:
!python3 electra/run_pretraining.py \.
--data-dir $DATA_DIR \.
--model-name $MODEL_NAME \.
--hparams "hparams.json"
๊ฐ์ ๋จธ์ ์์ ํ๋ จํ๋ ๊ฒฝ์ฐ, ํฐ๋ฏธ๋์์ ๋ค์ ๋ช ๋ น์ ์คํํ์ฌ TensorBoard๋ก ํ๋ จ ๊ณผ์ ์ ๋ชจ๋ํฐ๋งํ์ธ์.
pip install -U tensorboard
tensorboard dev upload --logdir data/models/electra-spanish
์ด๊ฒ์ ํ ์๋ณด๋ V100 GPU์์ 4์ผ ๋์ 1๋ฐฑ๋ง ๊ฑธ์์ ๊ฑธ์ ์ ์๋ ์ผ๋ ํธ๋ผ ์ค๋ชฐ ํธ๋ ์ด๋์ ์ํํ์ต๋๋ค.
{: .align-center}
4. ํ ์ํ๋ก ์ฒดํฌํฌ์ธํธ๋ฅผ ํ์ดํ ์น ํ์์ผ๋ก ๋ณํํ๊ธฐ
ํ๊น ํ์ด์ค์๋ ๋๊ตฌ ๋ฅผ ์ฌ์ฉํ์ฌ ํ ์ํ๋ก์ฐ ์ฒดํฌํฌ์ธํธ๋ฅผ PyTorch๋ก ๋ณํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ๋๊ตฌ๋ ์์ง ELECTRA์ฉ์ผ๋ก ์ ๋ฐ์ดํธ๋์ง ์์์ต๋๋ค. ๋คํํ๋ ์ด ์์ ์ ๋์์ด ๋ ์ ์๋ @lonePatient์ GitHub ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค.
!.git clone https://github.com/lonePatient/electra_pytorch.git
MODEL_DIR = "data/models/electra-spanish/"
config = {
"vocab_size": 119547,
"embedding_size": 128,
"hidden_size": 256,
"num_hidden_layers": 12,
"num_attention_heads": 4,
"intermediate_size": 1024,
"generator_size":"0.25",
"hidden_act": "์ ค๋ฃจ",
"hidden_dropout_prob": 0.1,
"attention_probs_dropout_prob": 0.1,
"max_position_embedings": 512,
"type_vocab_size": 2,
"initializer_range": 0.02
}
open(MODEL_DIR + "config.json", "w")๋ฅผ f๋ก ์ฌ์ฉํฉ๋๋ค:
json.dump(config, f)
!.python electra_pytorch/convert_electra_tf_checkpoint_to_pytorch.py \.
--tf_checkpoint_path=$MODEL_DIR \.
--electra_config_file=$MODEL_DIR/config.json \.
--pytorch_dump_path=$MODEL_DIR/pytorch_model.bin
ELECTRA๋ฅผ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํ์ธ์. ํธ๋์คํฌ๋จธ
๋ชจ๋ธ ์ฒดํฌํฌ์ธํธ๋ฅผ PyTorch ํ์์ผ๋ก ๋ณํํ ํ, ์ฌ์ ํ์ต๋ ELECTRA ๋ชจ๋ธ์ ๋ค์ด์คํธ๋ฆผ ์์
์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํธ๋์คํฌ๋จธ
๋ผ์ด๋ธ๋ฌ๋ฆฌ.
ํ ์น ๊ฐ์ ธ์ค๊ธฐ
ํธ๋์คํฌ๋จธ์์ ์ผ๋ ํธ๋ผํฌํ๋ฆฌํธ๋ ์ด๋, ์ผ๋ ํธ๋ผํ ์ปค๋์ด์ ํจ์คํธ ๊ฐ์ ธ์ค๊ธฐ
ํ๋ณ์ = ElectraForPreTraining.from_pretrained(MODEL_DIR)
ํ ํฐํ๊ธฐ = ElectraTokenizerFast.from_pretrained(DATA_DIR, do_lower_case=False)
๋ฌธ์ฅ = "๋ก์ค ํํ๋ก ์์คํ ์นธํ๋" # ์๋ค์ด ๋
ธ๋ํ๊ณ ์์ด์.
fake_sentence = "๋ก์ค ํํ๋ก ์์คํ ํ๋ธ๋๋" # ์๋ค์ด ๋งํ๊ณ ์์ต๋๋ค.
fake_tokens = tokenizer.tokenize(fake_sentence, add_special_tokens=True)
fake_inputs = tokenizer.encode(fake_sentence, return_tensors="pt")
ํ๋ณ์_์์ํ = ํ๋ณ์(๊ฐ์ง_์
๋ ฅ)
์์ธก = ํ๋ณ์_์์ํ[0] > 0
[print("%7s" % ํ ํฐ, end="") for token in fake_tokens]
print("\n")
[print("%7s" % int(prediction), end="") for prediction in predictions.tolist()];
[CLS] ํ์ฆ #1TP5ํ๋ก ์์คํ ํ๋ธ๋ผ #1TP5ํ๋ [SEP]
1 0 0 0 0 0 0 0
์ ํฌ ๋ชจ๋ธ์ 100๋จ๊ณ๋ง ํ์ต๋์๊ธฐ ๋๋ฌธ์ ์์ธก์ด ์ ํํ์ง ์์ต๋๋ค. ์์ ํ ํ์ต๋ ์คํ์ธ์ด์ฉ ์ผ๋ ํธ๋ผ ์ค๋ชฐ์ ์๋์ ๊ฐ์ด ๋ก๋ํ ์ ์์ต๋๋ค:
ํ๋ณ์ = ElectraForPreTraining.from_pretrained("skimai/electra-small-spanish")
ํ ํฐํ๊ธฐ = ElectraTokenizerFast.from_pretrained("skimai/electra-small-spanish", do_lower_case=False)
5. ๊ฒฐ๋ก
์ด ๊ธ์์๋ ELECTRA ๋ฐฑ์๋ฅผ ํตํด ELECTRA๊ฐ ํ์ฌ ๊ฐ์ฅ ํจ์จ์ ์ธ ํธ๋์คํฌ๋จธ ์ฌ์ ํ๋ จ ๋ฐฉ์์ธ ์ด์ ๋ฅผ ์ดํด๋ดค์ต๋๋ค. ์๊ท๋ชจ์ ๊ฒฝ์ฐ, ELECTRA-small์ ํ๋์ GPU๋ก 4์ผ ๋์ ํธ๋ ์ด๋ํ์ฌ GLUE ๋ฒค์น๋งํฌ์์ GPT๋ฅผ ๋ฅ๊ฐํ๋ ์ฑ๋ฅ์ ๋ผ ์ ์์ต๋๋ค. ๋๊ท๋ชจ๋ก ๋ณด๋ฉด ELECTRA-large๋ SQuAD 2.0์ ์๋ก์ด ๊ธฐ์ค์ ์ ์ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ค์ ๋ก ์คํ์ธ์ด ํ
์คํธ์ ๋ํด ELECTRA ๋ชจ๋ธ์ ํ์ตํ๊ณ Tensorflow ์ฒดํฌํฌ์ธํธ๋ฅผ PyTorch๋ก ๋ณํํ ํ ํธ๋์คํฌ๋จธ
๋ผ์ด๋ธ๋ฌ๋ฆฌ.
์ฐธ์กฐ
- [1] ELECTRA: ํ ์คํธ ์ธ์ฝ๋๋ฅผ ์์ฑ๊ธฐ๊ฐ ์๋ ํ๋ณ๊ธฐ๋ก ์ฌ์ ํ๋ จํ๊ธฐ
- [2] ๊ตฌ๊ธ-์ฐ๊ตฌ/์ผ๋ ํธ๋ผ - ์๋ณธ ๋ฌธ์์ ๊ณต์ ๊นํ๋ธ ์ ์ฅ์
- [3] ์ผ๋ ํธ๋ผ_ํผํ ์น - ELECTRA์ PyTorch ๊ตฌํ