로베르타

RoBERTa는 페이스북 AI 리서치(Facebook AI)에서 개발한 언어 모델이다. 트랜스포머 아키텍처를 기반으로, BERT 모델의 성능이 크게 향상되었습니다. RoBERTa 모델의 구조는 BERT 모델과 매우 유사하지만, RoBERTa는 BERT에서 사용하는 사전 학습 데이터셋을 전처리하여 모델 학습에 사용합니다.

예를 들어 RoBERTa는 암호화된 문장 대신 일련의 문장을 사용합니다.

예를 들어, “I like to eat apples”와 “Apples are my favorite fruit”라는 두 문장이 주어지면 BERT는 “I like to eat apples” 다음에 “Apples are my favorite fruit”라는 문장이 학습될 것이라고 예측합니다.

그러나 RoBERTa는 두 문장을 “I like to eat apples Apples are my favorite fruit”라는 문장으로 연결한 다음 해당 문장을 스크램블하는 대신 입력으로 사용합니다.

아래는 RoBERTa 모델을 개념적으로 구현한 샘플 코드입니다.

import torch
import torch.nn as nn

class RoBERTa(nn.Module):
    def __init__(self, vocab_size, embedding_size, num_heads, num_layers):
        super(RoBERTa, self).__init__()

        self.token_embedding = nn.Embedding(vocab_size, embedding_size)
        self.position_embedding = nn.Embedding(512, embedding_size)
        self.dropout = nn.Dropout(0.1)
        
        self.layers = nn.ModuleList()
        for i in range(num_layers):
            layer = nn.TransformerEncoderLayer(embedding_size, num_heads, dim_feedforward=4*embedding_size)
            self.layers.append(layer)

        self.layernorm = nn.LayerNorm(embedding_size)

    def forward(self, x):
        positions = torch.arange(x.size(1), device=x.device).expand(x.size(0), x.size(1)).contiguous() + 1
        tokens_embed = self.token_embedding(x)
        positions_embed = self.position_embedding(positions)
        x = self.dropout(tokens_embed + positions_embed)
        
        for layer in self.layers:
            x = layer(x)
        
        x = self.layernorm(x)
        return x

RoBERTa 모델은 먼저 사전 교육 데이터 세트에서 언어 모델을 학습한 다음 이를 미세 조정하여 다른 작업에 적용합니다. 사전 학습 단계에서 RoBERTa는 문장 내 단어와 문장 간의 관계를 이해하는 MLM(Masked Language Modeling) 및 NSP(Next Sentence Prediction) 작업을 수행합니다.

아래에 포옹 얼굴 변압기 도서관 사용 로베르타 모델 구현 견본 이것은 코드입니다.

import torch
from transformers import RobertaTokenizer, RobertaModel

# RoBERTa 토크나이저 로드
tokenizer = RobertaTokenizer.from_pretrained('roberta-base')

# RoBERTa 모델 로드
model = RobertaModel.from_pretrained('roberta-base')

# 입력 문장
input_sentence = "I love to use RoBERTa!"

# 입력 문장 토큰화
input_ids = torch.tensor((tokenizer.encode(input_sentence, add_special_tokens=True)))

# RoBERTa 모델에 입력 문장 적용
output = model(input_ids)

# 출력 확인
print(output)

코드에서 RoBERTaTokenizer그리고 로베르타모델두번째 사용 로베르타 모델 부담, 기입 문장 토큰화 다음 로베르타 모델에게 입력하여 출구 확인하세요. 그만큼 암호 당신이 걸을 때, 기입 문장 임베딩 소비된다 출구는 (batch_size, sequence_length, hidden_size)~에서 모양으로 나타날거야