본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

이론

자연어 처리(NLP) 모델, Google이 개발한 언어모델 T5와 ELECTRA


T5와 ELECTRA는 자연어 처리(NLP) 모델

 -T5 (Text-To-Text Transfer Transformer)

Google이 개발한 자연어 처리 모델

모든 자연어 처리 문제를 텍스트를 입력받아 텍스트를 출력하는(Text-to-Text) 방식으로 해결하도록 설계

        입력(Text)

"translate English to Korean:
I love AI."

          │
          ▼

     T5 모델 처리

          │
          ▼

        출력(Text)

"저는 AI를 좋아합니다."

 

 

번역, 문서요약, 질의응답, 문장생성완성을 하나의 모델로 수행할 수 있다 .기존에는 작업마다 별도의 모델을 사용해야했으나 T5은 하나의 모델로 여러 작업을 수행할 수 있어 범용성이 매우 높다.

 

 

입력도 텍스트, 출력도 텍스트이다. 번역, 요약, 질의응답, 문장생성 모두 같은 방식으로 처리한다. 

from transformers import T5Tokenizer, T5ForConditionalGeneration

model_name = "t5-small"

tokenizer = T5Tokenizer.from_pretrained(model_name)
model = T5ForConditionalGeneration.from_pretrained(model_name)

text = "translate English to German: I love AI."

inputs = tokenizer(text, return_tensors="pt")

outputs = model.generate(**inputs)

result = tokenizer.decode(outputs[0], skip_special_tokens=True)

print(result)
Ich liebe KI.

 

 

 

 

-ELECTRA (Efficiently Learning an Encoder that Classifies Token Replacements Accurately)

Google이 개발한 언어모델로, 기존 BERT보다 학습 효율을 크게 향상시킨 모델

BERT는 일부 단어를 가리고(Masked Language Modeling) 이를 예측하는 방식으로 학습하지만, ELECTRA는 문장 속 단어가 원래 단어인지, 다른 단어로 교체된 것인지 판별하는 방식으로 학습한다.

적은 학습데이터로도 높은 성능을 보이고 학습 속도가 빨라 컴퓨팅 비용을 절감한다. 텍스트 분류와 감성 분석 등 자연어 이해 작업에서 우수한 성능을 보인다.

 

ELECTRA는 문장의 의미를 이해하여 적절한 범주로 분류할 수 있다.

BERT는 "빈칸 맞추기"를한다.

오늘은 날씨가 매우 [MASK].

"[MASK]에 들어갈 단어는 무엇일까?" 하고 맞히도록 학습을 하는데

실제 문장에서는 [MASK]라는 단어가 존재하지 않아 실제 사용할 때는 오늘은 날씨가 매우 맑다.등의 문장을 보게되고, 한 문장에서 일부 단어(보통 약 15%)만 학습에 사용되어 나머지 단어들은 직접적인 학습 대상이 되지않는다는 문제점이있다.

ELECTRA는 굳이 단어를 가리지 않고, 원래 단어를 비슷한 다른 단어로 살짝 바꿔버려 오늘은 날씨가 매우 맑다.를 오늘은 날씨가 매우 춥다.등으로 교체하여 모델에게 질문하며 "이 문장에서 바뀐 단어가 어디일까?" 판단한다. MASK 하나만 맞히는 BERT와 다르게 모든 단어를 검사하고 오늘은 맞나? 날씨가는 맞나? 매우는 맞나? 춥다는 맞나? 등 모든 단어를 하나씩 검사해 더 많은 학습 신호를 얻을 수 있다

문장의 모든 단어를 꼼꼼히 확인해야 하므로 언어를 더 세밀하게 이해하게 된다.

즉 같은 양의 데이터로도 더 효율적으로 학습하고 적은 학습 비용으로 BERT와 비슷하거나 더 좋은 성능을 내는 경우가 많게 되는 것.

from transformers import ElectraTokenizer, ElectraForSequenceClassification

tokenizer = ElectraTokenizer.from_pretrained(
    "google/electra-small-discriminator"
)

model = ElectraForSequenceClassification.from_pretrained(
    "google/electra-small-discriminator",
    num_labels=2
)

text = "This movie was amazing."

inputs = tokenizer(text, return_tensors="pt")

outputs = model(**inputs)

print(outputs.logits)

 

 

원래 BERT가 감성 분석, 텍스트 분류, 질의응답 등의 자연어 이해(NLU) 작업에서 매우 뛰어난 성능을 보여 큰 주목을 받았다.

감성 분석은 BERT도 충분히 잘한다.

ELECTRA의 핵심은 "BERT로는 못 하는 일을 한다"가 아니라, "BERT와 비슷한 성능을 더 적은 비용으로 달성한다."이다.

성능 자체보다 학습 효율을 개선한 모델

즉 BERT와 ELECTRA는 질문을 모두 잘 맞출 수 있는 모델일 가능성이 높으니 시험점수는 비슷하지만 공부하는 방법더 더 효율적인 학생이라고 이해하자 .