
* docs: ko: roberta.md * fix: manual edits * Apply suggestions from code review Co-authored-by: Woojun Jung <46880056+jungnerd@users.noreply.github.com> Co-authored-by: YONGSANG <71686691+4N3MONE@users.noreply.github.com> --------- Co-authored-by: Woojun Jung <46880056+jungnerd@users.noreply.github.com> Co-authored-by: YONGSANG <71686691+4N3MONE@users.noreply.github.com>
16 KiB
RoBERTaroberta
개요overview
RoBERTa 모델은 Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, Veselin Stoyanov가 제안한 논문 RoBERTa: A Robustly Optimized BERT Pretraining Approach에서 소개되었습니다. 이 모델은 2018년에 구글에서 발표한 BERT 모델을 기반으로 합니다.
RoBERTa는 BERT를 기반으로 하며, 주요 하이퍼파라미터를 수정하고, 사전 학습 단계에서 다음 문장 예측(Next Sentence Prediction)을 제거했으며, 훨씬 더 큰 미니 배치 크기와 학습률을 사용하여 학습을 진행했습니다.
해당 논문의 초록입니다:
언어 모델 사전 학습은 성능을 크게 향상시켰지만, 서로 다른 접근 방식을 면밀히 비교하는 것은 어렵습니다. 학습은 계산 비용이 많이 들고, 종종 크기가 서로 다른 비공개 데이터셋에서 수행되며, 본 논문에서 보여주듯이 하이퍼파라미터 선택이 최종 성능에 큰 영향을 미칩니다. 우리는 BERT 사전 학습(Devlin et al., 2019)에 대한 재현 연구를 수행하여, 여러 핵심 하이퍼파라미터와 학습 데이터 크기의 영향을 면밀히 측정하였습니다. 그 결과, BERT는 충분히 학습되지 않았으며, 이후 발표된 모든 모델의 성능을 맞추거나 능가할 수 있음을 발견했습니다. 우리가 제안한 최상의 모델은 GLUE, RACE, SQuAD에서 최고 성능(state-of-the-art)을 달성했습니다. 이 결과는 지금까지 간과되어 온 설계 선택의 중요성을 강조하며, 최근 보고된 성능 향상의 근원이 무엇인지에 대한 의문을 제기합니다. 우리는 본 연구에서 사용한 모델과 코드를 공개합니다.
이 모델은 julien-c가 기여하였습니다. 원본 코드는 여기에서 확인할 수 있습니다.
사용 팁usage-tips
-
이 구현은 [
BertModel
]과 동일하지만, 임베딩 부분에 약간의 수정이 있으며 RoBERTa 사전학습 모델에 맞게 설정되어 있습니다. -
RoBERTa는 BERT와 동일한 아키텍처를 가지고 있지만, 토크나이저로 바이트 수준 BPE(Byte-Pair Encoding, GPT-2와 동일)를 사용하고, 사전학습 방식이 다릅니다.
-
RoBERTa는
token_type_ids
를 사용하지 않기 때문에, 어떤 토큰이 어떤 문장(segment)에 속하는지 별도로 표시할 필요가 없습니다. 문장 구분은 분리 토큰tokenizer.sep_token
(또는</s>
)을 사용해 나누면 됩니다. -
RoBERTa는 BERT와 유사하지만, 더 나은 사전학습 기법을 사용합니다:
- 동적 마스킹: RoBERTa는 매 에폭마다 토큰을 다르게 마스킹하는 반면, BERT는 한 번만 마스킹합니다.
- 문장 패킹: 여러 문장을 최대 512 토큰까지 함께 패킹하여, 문장이 여러 문서에 걸쳐 있을 수도 있습니다.
- 더 큰 배치 사이즈: 학습 시 더 큰 미니배치를 사용합니다.
- 바이트 수준 BPE 어휘: 문자를 단위로 하지 않고 바이트 단위로 BPE를 적용하여 유니코드 문자를 더 유연하게 처리할 수 있습니다.
-
CamemBERT은 RoBERTa를 기반으로 한 래퍼 모델입니다. 사용 예제는 해당 모델 페이지를 참고하세요.
자료resources
RoBERTa를 처음 다룰 때 도움이 되는 Hugging Face 공식 자료와 커뮤니티 자료(🌎 아이콘으로 표시됨) 목록입니다. 이 목록에 자료를 추가하고 싶다면 언제든지 Pull Request를 보내주세요! 저희가 검토 후 반영하겠습니다. 추가하려는 자료는 기존 자료를 단순히 복제하는 것이 아닌, 새롭거나 유의미한 내용을 포함하고 있는 것이 좋습니다.
- RoBERTa와 Inference API를 활용한 트위터 감성 분석 시작하기 블로그 포스트.
- RoBERTa를 활용한 Kili 및 Hugging Face AutoTrain을 이용한 의견 분류에 관한 블로그 포스트.
- 감성 분석을 위한 RoBERTa 미세조정을 하는 방법에 대한 노트북.🌎
- ['RobertaForSequenceClassification']은 예제 스크립트와 노트북에서 지원됩니다.
- [
TFRobertaForSequenceClassification
]는 예제 스크립트와 노트북에서 지원됩니다. - [
FlaxRobertaForSequenceClassification
]는 예제 스크립트와 노트북에서 지원됩니다. - 텍스트 분류 작업 가이드
- [
RobertaForTokenClassification
]은 예제 스크립트와 노트북에서 지원됩니다. - [
TFRobertaForTokenClassification
]은 예제 스크립트와 노트북에서 지원됩니다. - [
FlaxRobertaForTokenClassification
]는 예제 스크립트에서 지원됩니다. - 🤗 Hugging Face 코스의 토큰 분류 챕터
- 토큰 분류 작업 가이드
- RoBERTa를 활용한 Transformers와 Tokenizers를 활용한 새로운 언어 모델을 처음부터 학습하는 방법에 대한 블로그 포스트.
- [
RobertaForMaskedLM
]은 예제 스크립트와 노트북에서 지원됩니다. - [
TFRobertaForMaskedLM
]은 예제 스크립트와 노트북에서 지원됩니다. - [
FlaxRobertaForMaskedLM
]은 예제 스크립트와 노트북에서 지원됩니다. - 🤗 Hugging Face 코스의 마스킹 언어 모델링 챕터
- 마스킹 언어 모델링 작업 가이드
- RoBERTa를 활용한 질문 응답 작업에서의 Optimum과 Transformers 파이프라인을 이용한 추론 가속화에 대한 블로그 포스트.
- [
RobertaForQuestionAnswering
]은 예제 스크립트와 노트북에서 지원됩니다. - [
TFRobertaForQuestionAnswering
]은 예제 스크립트와 노트북에서 지원됩니다. - [
FlaxRobertaForQuestionAnswering
]은 예제 스크립트에서 지원됩니다. - 🤗 Hugging Face 코스의 질의응답 챕터
- 질의응답 작업 가이드
다중 선택
- [
RobertaForMultipleChoice
]는 예제 스크립트와 노트북에서 지원됩니다. - [
TFRobertaForMultipleChoice
]는 예제 스크립트와 노트북에서 지원됩니다. - 다중 선택 작업 가이드
RobertaConfig
autodoc RobertaConfig
RobertaTokenizer
autodoc RobertaTokenizer - build_inputs_with_special_tokens - get_special_tokens_mask - create_token_type_ids_from_sequences - save_vocabulary
RobertaTokenizerFast
autodoc RobertaTokenizerFast - build_inputs_with_special_tokens
RobertaModel
autodoc RobertaModel - forward
RobertaForCausalLM
autodoc RobertaForCausalLM - forward
RobertaForMaskedLM
autodoc RobertaForMaskedLM - forward
RobertaForSequenceClassification
autodoc RobertaForSequenceClassification - forward
RobertaForMultipleChoice
autodoc RobertaForMultipleChoice - forward
RobertaForTokenClassification
autodoc RobertaForTokenClassification - forward
RobertaForQuestionAnswering
autodoc RobertaForQuestionAnswering - forward
TFRobertaModel
autodoc TFRobertaModel - call
TFRobertaForCausalLM
autodoc TFRobertaForCausalLM - call
TFRobertaForMaskedLM
autodoc TFRobertaForMaskedLM - call
TFRobertaForSequenceClassification
autodoc TFRobertaForSequenceClassification - call
TFRobertaForMultipleChoice
autodoc TFRobertaForMultipleChoice - call
TFRobertaForTokenClassification
autodoc TFRobertaForTokenClassification - call
TFRobertaForQuestionAnswering
autodoc TFRobertaForQuestionAnswering - call
FlaxRobertaModel
autodoc FlaxRobertaModel - call
FlaxRobertaForCausalLM
autodoc FlaxRobertaForCausalLM - call
FlaxRobertaForMaskedLM
autodoc FlaxRobertaForMaskedLM - call
FlaxRobertaForSequenceClassification
autodoc FlaxRobertaForSequenceClassification - call
FlaxRobertaForMultipleChoice
autodoc FlaxRobertaForMultipleChoice - call
FlaxRobertaForTokenClassification
autodoc FlaxRobertaForTokenClassification - call
FlaxRobertaForQuestionAnswering
autodoc FlaxRobertaForQuestionAnswering - call