Mô hình Bert và ứng dụng
Mô hình Bert và ứng dụng
Bert nguyên bản
Các phiên bản Bert nâng cấp: Roberta, PhoBert
1. Kiến trúc Bert
1.1. Các bài toán mà Bert giải quyết
Bạn có thể sử dụng Bert để xây dựng mô hình
Phân loại cảm xúc văn bản
Mô hình tìm câu trả lời trong văn bản
1.2. Biểu diễn ngữ cảnh - contextual representation
Bert sinh ra để làm gì?
Như bạn đã biết cùng một từ đi trong 3 câu sau sẽ có ý nghĩa khác nhau:
Câu 1: Từ đi ám chỉ hành động di chuyển
Câu 2: Từ đi ám chỉ việc tuổi càng ngày càng cao
Câu 3: Từ đi ám chỉ việc mất/chết
Vậy thì với những biểu diễn cố định như sử dụng Word2Vec/Glove không thể biểu diễn được hàm ý này vì vector embedding của từ đi trong cả 3 câu sẽ cố định không đổi.
Vì thế ta cần một biểu diễn động cho từ đi, tức là trong các câu khác nhau thì từ đi sẽ có vector khác nhau.
Elmo là một mô hình sử dụng mạng Bidirectional-RNN để mô phỏng ý nghĩa của từ.
Tuy nhiên vì yếu điểm của về tốc độ của mạng RNN cho nên Elmo không còn được sử dụng rộng rãi. Thay vì vậy người ta sẽ ưu tiên sử dụng các mô hình có kiến trúc Transformer.
Và một embeddings động dùng Transformer Encoder chính là mô hình Bert. Bert viết tắt của BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. Tức là ta sẽ sử dụng mô hình Transformer Encoder và học mối quan hệ của một từ với các từ bên trái và bên phải để hình thành nên vector embedding. Bidirectional ý nghĩa là hai chiều.
1.3. Bert sử dụng Transformer
Công thức của Transformer
Trong đó Q, K, V là embedding vector của transformer model. Xem thêm chi tiết tại đây.
Trong đó:
Encoder có nhiệm vụ trích xuất vector ngữ nghĩa của các token trong câu
Decoder sử dụng thông tin từ Encoder để có thể sinh ra những văn bản đầu ra
Trong bài toán sinh từ là những từ tiếp theo
Trong bài toán máy dịch là câu được dịch ra từ câu đầu vào của Encoder
1.4. Pre-trained Bert được đào tạo thế nào?
Bert được xây dựng là một pre-trained học từ dữ liệu không nhãn.
Từ pre-trained này bạn có thể sử dụng để finetune trên dữ liệu có nhãn.
Pre-training Bert được đào tạo như thế nào?
Nhiệm vụ 1: Masked Language Model
Model được train từ trái qua phải và từ phải qua trái. Điều này cho hiệu năng cao hơn model chỉ train từ trái qua phải như mô hình ngôn ngữ GPT.
Để train mô hình này, tác giả đã ngẫu nhiên che đi (mask) một lượng % tokens trong văn bản sau đó huấn luyện lượng tokens còn lại để dự đoán ra tokens bị che này.
Cụ thể tác giả đã che đi 15% số lượng WordPiece Tokens ở mỗi chuỗi đầu vào một cách ngẫu nhiên. Trong 15% này, tác giả:
Thay thế 80% bằng token [MASK]
Thay thế 10% bằng token ngẫu nhiên
Giữ nguyên 10% còn lại
Tác giả lý giải cách làm này là do token [MASK] chỉ xuất hiện khi train pre-trained và không xuất hiện khi chúng ta fine-tune.
Nhiệm vụ 2: Dự đoán câu tiếp theo
Pre-train sẽ được train cho bài toán phân loại hai câu có đi liền với nhau hay không.
Dữ liệu được train sẽ bao gồm các cặp câu A-B trong đó:
50% câu B đi theo sau câu A với nhãn dự đoán là
IsNext
50% câu B ngẫu nhiên từ trong ngữ liệu với nhãn dự đoán là
NotNext
Hai câu này được thêm những Token để trở thành dạng sau.
[CLS] A [SEP] B [SEP]
Trong đó:
CLS là token sentence-level classification ở đầu. Token này sẽ thực hiện attention với tất cả các từ trong câu. Thực tế token này sau khi đi qua Bert thì vector của nó có thể sử dụng cho bài toán phân loại câu.
[SEP] là token để chia cắt các chuỗi câu. Ví dụ bài toán dịch máy thì [SEP] chia câu được dịch và câu dịch.
Quy trình tiếp theo:
Câu này sau đó được:
Qua Token Embeddings để tách token
Qua Segment Embeddings để cập nhật thông tin thuộc chuỗi nào. Ví dụ token thuộc chuỗi A sẽ được cộng thêm giá trị E_A có thể bằng 0 còn token thuộc chuỗi B sẽ được cộng thêm giá trị E_B có thể bằng 1.
Bổ sung thêm Embdding vị trí cho từng token