
414
2
부
모델 사용
transformers
에 있는 사전 훈련된
BERT
모델에는 임베딩이 있으므로 이를 사용해 랜덤한
토큰 아이디를 임베딩으로 바꿀 수 있습니다.
word_embeddings = self.bert.bert.embeddings.word_embeddings
prompt_embeddings = word_embeddings(token_ids).unsqueeze(0)
prompt
_
embeddings
를 신경망의 모델 파라미터로 지정하는 것이 중요합니다. 옵티마이저를
정의할 때 필요합니다. 앞서
BERT
모델의 모든 모델 파라미터를 동결했지만 프롬프트를 위한
모델 파라미터는
BERT
에 속해 있지 않으므로 동결되지 않습니다. 따라서 훈련 과정에서 옵티
마이저에 의해 수정됩니다.
self.prompt_embeddings = nn.Parameter(prompt_embeddings)
이제
BERT
모델을 초기화했고 가중치를 수정하지 않도록 지정했습니다. 훈련 과정에서 샘플
에 추가할 소프트 프롬프트를 만들고 이 소프트 프롬프트만 튜닝해 두 개의 출력 뉴런을 조정
합니다.
훈련 과정에서 호출될
forward
메서드를 살펴보죠. 이전에 모두 설명한 것이라 간단합니다.
def forward(self, input_ids, attention_mask, labels=None ...