Как настроить модель BERT?

    class BertClassifier(nn.Module):
    #Bert Model for Classification Tasks.
    
    def __init__(self, freeze_bert=False):
        """
        @param    bert: a BertModel object
        @param    classifier: a torch.nn.Module classifier
        @param    freeze_bert (bool): Set `False` to fine-tune the BERT model
        """
        super(BertClassifier, self).__init__()
        # Specify hidden size of BERT, hidden size of our classifier, and number of labels
        D_in, H, D_out = 768, 50, 2

        # Instantiate BERT model
        self.bert = BertModel.from_pretrained('bert-base-uncased')

        # Instantiate an one-layer feed-forward classifier
        self.classifier = nn.Sequential(
            nn.Linear(D_in, H),
            nn.ReLU(),
            #nn.Dropout(0.5),
            nn.Linear(H, D_out)
        )

        # Freeze the BERT model
        if freeze_bert:
            for param in self.bert.parameters():
                param.requires_grad = False

Я хочу знать, что если мы вызываем bert_classifier = BertClassifier(freeze_bert=False), что означает, что мы не замораживаем веса, значит ли это, что мы выполняем точную настройку? Пожалуйста, поправьте меня, если я ошибаюсь.


person MDLL    schedule 10.03.2021    source источник


Ответы (1)


Тонкая настройка в целом означает, что вы обновляете веса модели вместе с уровнем конкретной задачи (например, линейный слой (или другая архитектура классификации) поверх BERT для задачи классификации). Таким образом, вы не должны замораживать веса. Отныне использование bert_classifier = BertClassifier(freeze_bert=False) подходит для точной настройки.

Дополнительное примечание: на практике некоторые люди предпочитают не обновлять веса модели BERT при обучении слоя, специфичного для задачи (это, в свою очередь, снижает потребность в огромных вычислительных мощностях). Здесь мы можем считать, что модель BERT использовалась для извлечения функций или внедрений. В этом случае вы можете использовать freeze_bert=True. И некоторые люди обновляют веса модели BERT для нескольких слоев сверху. Все зависит от того, чем именно вы хотите заниматься.

person Ashwin Geet D'Sa    schedule 12.03.2021