0
0
Lập trình
Hưng Nguyễn Xuân 1
Hưng Nguyễn Xuân 1xuanhungptithcm

Hướng Dẫn Chi Tiết Cách Fine-tune Mô Hình BERT Để Che Giấu Thông Tin Cá Nhân - Phần 2: Huấn Luyện và Đánh Giá Mô Hình

Đăng vào 4 ngày trước

• 3 phút đọc

Giới thiệu

Phần 1 trong chuỗi bài viết này đã trình bày rõ ràng các bước để xây dựng một mô hình nhận dạng thực thể (NER) bằng cách thực hiện việc fine-tuning mô hình BERT. Trong phần 2 này, chúng ta sẽ đi sâu vào quy trình huấn luyện và đánh giá mô hình BERT đã được tùy chỉnh để nhận diện và che giấu thông tin cá nhân.

Tổng Quan Quy Trình Fine-tuning BERT

Quy trình fine-tune mô hình BERT cho bài toán che giấu thông tin cá nhân bao gồm bốn bước chính:

  1. Chuẩn bị dữ liệu: Tùy thuộc vào mục tiêu cụ thể, dữ liệu sẽ được chọn lọc và xử lý.
  2. Tiền xử lý dữ liệu: Thực hiện các bước như tokenization, padding, và chuyển đổi nhãn thành số để đưa vào mô hình BERT.
  3. Fine-tune BERT: Sử dụng kiến trúc BERT đã được huấn luyện trước và tiếp tục huấn luyện với tập dữ liệu cụ thể.
  4. Đánh giá và tối ưu hóa mô hình: Kiểm tra hiệu suất mô hình trên tập dữ liệu test và thực hiện điều chỉnh cần thiết để cải thiện kết quả.

Huấn Luyện Mô Hình

Định Nghĩa Optimizer

Để bắt đầu quá trình huấn luyện, đầu tiên chúng ta cần phải định nghĩa optimizer. Trong trường hợp này, chúng ta sẽ sử dụng Adam với learning rate mặc định. Nếu muốn, có thể lựa chọn các optimizer nâng cao khác như AdamW hoặc SGD.

python Copy
optimizer = torch.optim.Adam(params=model.parameters(), lr=LEARNING_RATE)

Xây Dựng Hàm Huấn Luyện

Chúng ta sẽ tạo một hàm huấn luyện mà sẽ chạy trên 80% dữ liệu để tối ưu hóa mô hình BERT. Mã lệnh sau là một ví dụ cho hàm huấn luyện:

python Copy
# Hàm huấn luyện mô hình BERT

def train(epoch):
    tr_loss, tr_accuracy = 0, 0
    nb_tr_examples, nb_tr_steps = 0, 0
    tr_preds, tr_labels = [], []
    model.train()

    for idx, batch in enumerate(training_loader):
        # Code huấn luyện model
        # ...

Để tránh hiện tượng overfitting, chúng ta nên chỉ huấn luyện mô hình từ 1 đến 2 epochs, giúp mô hình học được các đặc điểm mới từ dữ liệu huấn luyện.

python Copy
for epoch in range(EPOCHS):
    print(f"Đang huấn luyện epoch: {epoch + 1}")
    train(epoch)

Đánh Giá Mô Hình

Sau khi huấn luyện xong, chúng ta tiến hành đánh giá hiệu suất mô hình trên tập kiểm tra (chiếm 20% dữ liệu). Điều đặc biệt trong bước này là không cập nhật gradient.

python Copy
def valid(model, testing_loader):
    # Code đánh giá mô hình
    # ...

Chúng ta có thể thu được các chỉ số như Loss và Accuracy từ quá trình đánh giá này:

Copy
Validation Loss: 0.029
Validation Accuracy: 0.960

Kết quả đánh giá tốt không có nghĩa là mọi thứ đã hoàn hảo. Cần xét đến độ chính xác và giá trị F1 của từng nhãn riêng biệt. Sử dụng thư viện seqeval để thực hiện việc này:

python Copy
from seqeval.metrics import classification_report
labels, predictions = valid(model, testing_loader)
print(classification_report([labels], [predictions]))

Kiểm Tra Tính Hiệu Quả Của Mô Hình

Để nhanh chóng kiểm tra tính hiệu quả của mô hình, chúng ta có thể sử dụng pipeline để dự đoán nhãn cho câu mới:

python Copy
from transformers import pipeline

pipe = pipeline(task="token-classification", model=model.to("cpu"), tokenizer=tokenizer, aggregation_strategy="simple")
pipe("My name is Niels and New York is a city")

Lưu Mô Hình

Cuối cùng, việc lưu trữ mô hình để sử dụng lại sau này rất quan trọng. Có thể lưu mô hình và tokenizer cả hai cách: lưu cục bộ hoặc đẩy lên HuggingFace hub. Dưới đây là mã mẫu cho cách thứ hai:

python Copy
from huggingface_hub import notebook_login
notebook_login()
model_name = "bert-finetuned-ner"

# Đẩy mô hình lên HuggingFace hub
# ...

Kết Luận

Trong bài viết này, chúng ta đã thực hiện một phần quan trọng của quy trình fine-tuning mô hình BERT nhằm xử lý thông tin cá nhân. Chúng ta đã triển khai từ việc xử lý dữ liệu, huấn luyện đến đánh giá mô hình với những kết quả khả quan. Điều này cho thấy BERT là một công cụ mạnh mẽ có thể áp dụng cho nhiều bài toán NLP phức tạp. Ngoài ra, việc chia sẻ mô hình lên HuggingFace hub giúp cộng đồng có thể tiếp cận và sử dụng lại mô hình một cách dễ dàng. Hy vọng bài viết mang lại cái nhìn toàn diện cho bạn về quy trình này.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào