Tải bản đầy đủ (.pdf) (32 trang)

Tìm hiểu microsoft ML NET và minh họa với bài toán so sánh ngữ nghĩa của hai câu tiếng anh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.77 MB, 32 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO MƠN HỌC

Đồ án 2
Đề tài:
Tìm hiểu Microsoft ML.NET và minh họa với bài toán so sánh ngữ
nghĩa của hai câu tiếng Anh

Giảng viên hướng dẫn: Đỗ Thị Thanh Tuyền
Sinh viên thực hiện:

Nguyễn Đức Khang

18520891

Trần Hậu Đạt

18520590

TP. Hồ Chí Minh, ngày 05 tháng 05 năm 2022


NHẬN XÉT CỦA GIẢNG VIÊN

4

I. MACHINE LEARNING
1. Khái niệm cơ bản
2. Các bước tổng quát của một bài toán ML


3.1 Chuẩn bị dữ liệu
3.2 Trích xuất đặc trưng
3.3 Build/Train mơ hình
3.4 Đánh giá mơ hình
3.4 Sử dụng mơ hình

5
5
5
6
6
7
7
8

II. ML.NET
1. ML.NET là gì?
2. ML.NET hỗ trợ các bài tốn phân loại.
3. Cơ chế hoạt động của ML.NET
3.1 Chuẩn bị dữ liệu
3.2 Lựa chọn thuật tốn
3.3 Tiến hành train mơ hình
3.4 Đánh giá mơ hình
3.5 Lưu lại mơ hình
3.6 Load mơ hình để sử dụng
3.7 Sử dụng mơ hình
3.8 Ví dụ minh hoạ
Minh hoạ code
Minh hoạ code
4. Kiến trúc của ML.NET

5. Các cách để lập trình ML.NET

9
9
10
12
13
13
14
14
15
15
16
16
16
18
19
19

III. MƠ HÌNH BERT
1.Tổng quan về BERT
2. Giới thiệu về BERT
3. Các kiến trúc model BERT

21
21
23
24

1



4. Một số kết quả của BERT
1. Bài toán
2. Model
3. Thử nghiệm trên ML.NET
THAM KHẢO

2

24
27
27
28
32


NHẬN XÉT CỦA GIẢNG VIÊN
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................

.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................

3


I. MACHINE LEARNING
1. Khái niệm cơ bản
Machine Learning là một tập con của AI. Nói đơn giản, Machine Learning là
một lĩnh vực nhỏ của Khoa Học Máy Tính, nó có khả năng tự học hỏi dựa trên dữ
liệu đưa vào mà khơng cần phải được lập trình cụ thể.
Những năm gần đây, khi mà khả năng tính tốn của máy tính được nâng lên
một tầm cao mới và lượng dữ liệu khổng lồ được các hãng công nghệ lớn thu thập,
Machine Learning đã tiến thêm một bước dài và một lĩnh vực mới được ra đời gọi
là Deep Learning ( Học Sâu ). Deep Learning đã giúp máy tính thực thi những việc
tưởng chừng như không thể vào 10 năm trước: phân loại hàng ngàn vật thể khác
nhau trong các bức ảnh, tự tạo chú thích cho ảnh, bắt chước giọng nói và chữ viết
của con người, giao tiếp với con người, hay thậm chí cả sáng tác văn hay âm nhạc.

2. Các bước tổng quát của một bài toán ML

4



3.1 Chuẩn bị dữ liệu
Bước này cần chuẩn hóa dữ liệu do thường ban đầu các dữ liệu nó bị “ơ
nhiễm” tức là nó chứa các dữ liệu khơng đúng, dữ liệu chứa rác khơng đáp ứng
được nhu cầu. Ví dụ như nếu dữ liệu text thì có các ký tự viết tắt, ký tự lạ, biểu
tượng… Dữ liệu hình thì có các hình mờ khơng thể nhận dạng, dữ liệu video thì có
video bị lỗi.

3.2 Trích xuất đặc trưng
Rút trích đặc trưng, cứ hiểu là bước vector hóa dữ liệu, các dữ liệu thường
được mã hóa về các ma trận dạng số, bước này giờ đã dễ dàng hơn, ta chỉ cần nạp
cấu trúc đối tượng và truyền các mảng thuộc tính tương ứng, ML.NET sẽ làm giúp
ta điều này. Ở bước này đôi khi sẽ được làm đồng thời với việc chia dữ liệu ra làm
2 phần: Train set và Test set. Và nó tùy thuộc vào tỉ lệ lấy dữ liệu thì mơ hình chạy
có thể cho ra chất lượng khác nhau. Các bạn tưởng tượng có 100 đề thi thì 100 đề
này là dữ liệu, nếu lấy 80 đề thi ra để luyện tập (nó gọi là Train Set), sau khi luyện
tập xong ta lấy 20 đề kia ra để làm xem được hay không (20 đề đó gọi là Test set).
Trong máy học có thêm khái niệm về Over-fit, nếu bạn lấy 100 đề đó ra luyện tập,

5


sau đó lại lấy 1 đề trong 100 đề đó ra để làm bài test, thì lúc này đa phần bạn làm
điểm cao (Over fit vì bạn tưởng nhầm là mình đã được train giỏi, nhưng là do bạn
đã làm trước đó rồi, dẫn tới khi đi thi thực tế ra 1 đề lạ có thể bạn sẽ bị rớt).

3.3 Build/Train mơ hình
Tiến hành Build/Train mơ hình: Tùy vào bài tốn phân lớp, gom cụm… thì
ta sẽ dùng các giải thuật khác nhau để xây dựng mơ hình. Ví dụ như có 1 dữ liệu
comment của khách hàng, hỏi xem comment này là tích cực hay tiêu cực thì nó

thuộc bài toán phân lớp, như vậy ta sẽ dùng các giải thuật phân lớp. Hay nếu có
một tập dữ liệu các căn nhà và giá của nó, giờ muốn dự báo xem 1 căn nhà bất kỳ
có giá bao nhiêu thì nó lại thuộc bài tốn hồi quy. Bước 3 sẽ chọn đúng giải thuật
để build mơ hình cho đúng.

3.4 Đánh giá mơ hình
Đánh giá mơ hình, mọi mơ hình được build xong cần được đánh giá nó xem
chất lượng của nó tới đâu (khơng có mơ hình đúng hay sai chỉ có mơ hình chất
lượng hay khơng), và chất lượng hay khơng nó lệ thuộc vào các thang đo, ví dụ
như trong các bài hồi quy thì nó các thang đo R-Squared, MSE, RMSE, MAE, và
hầu như các giải thật cũng có hàm mất mát (Loss function). R-Squared càng cao
(tịnh tiến tới 100%) thì mơ hình càng tốt, (dĩ nhiên với các bài về chứng khốn thì
chưa chắc, thơng thường R-Squared >= 50% là ổn, nhưng khơng có nghĩa là < 50%
là tệ), còn MSE, RMSE, MAE, loss function thì thấp sẽ càng tốt. Việc quyết định
chọn mơ hình nào là tùy thuộc vào kinh nghiệm của người build mơ hình và có
tham khảo các độ đo này. Và lưu ý là ứng với mỗi loại giải thuật máy học thì độ đo
sử dụng sẽ khác nhau.

6


3.4 Sử dụng mơ hình
Sử dụng mơ hình, ở bước này thường là sau khi bước 4 đánh giá xong, thì ta
sẽ lưu mơ hình xuống ổ cứng và có thể chia sẻ lên cloud, lưu lại để lần sau có thể
lấy ra dùng, khơng phải tốn cơng chạy lại (tiết kiệm thời gian và chi phí), khi khi
lưu xong muốn dùng thì load mơ hình lên để dùng. Cịn dùng như thế nào nó tùy
thuộc vào bài tốn của mình để gọi hàm Predict cho phù hợp.

7



II. ML.NET
1. ML.NET là gì?
ML.NET là thư viện máy học mã nguồn mở và chạy cross-platform
(Windows, Linux, macOS) của Microsoft. Ta có thể lập trình được thư viện này
trên các nền tảng như Desktop, Web, hay build các Service. Nó được đánh giá là đủ
mạnh mẽ để có thể làm được những gì mà một số thư viện khác làm được (chẳng
hạn như scikit-learn viết bằng Python) và làm được cả những thứ mà các thư viện
khác không làm được. Với việc sở hữu các nền tảng công nghệ mạnh mẽ nhất và
khách hàng có sẵn trải rộng khắp thế giới, ML.NET được kỳ vọng rất lớn sẽ tạo ra
cơn sốt về công nghệ liên quan tới máy học viết bằng C#/F#, đồng thời việc tạo ra
thị trường lao động ở phân khúc này là rất khả thi.
Theo thông tin từ hãng, ML.NET bắt đầu hoạt động từ 05/2018 và hiện tại
phiên bản ổn định là 1.7.0 (tính đến 02/2022), và Microsoft cùng cộng đồng đang
tiếp tục bổ sung tính năng cũng như cải thiện hiệu suất của các thuật tốn.
Linh hồn của ML.NET là một mơ hình máy học (machine learning model).
Mơ hình này chỉ định các bước cần thiết để chuyển đổi dữ liệu đầu vào thành các
kết quả dự đốn của mơ hình, nó tùy vào thuật tốn mà chúng ta lựa chọn. Với
ML.NET, ta có thể tùy chỉnh mơ hình bằng cách lựa chọn các thuật tốn machine
learning của ML.NET (dĩ nhiên nó phải lệ thuộc vào bài tốn ta muốn làm là gì để
chọn giải thuật cho phù hợp) hoặc ta cũng có thể import các mơ hình của
TensorFlow hay ONNX đã được đào tạo trước để sử dụng. Ngoài ra ML.NET cũng
cung cấp hàm cho ta lưu mơ hình để tái sử dụng cũng như chia sẻ model cho cộng
đồng.

8


2. ML.NET hỗ trợ các bài toán phân loại.
Ở đây ML.NET hỗ trợ rất đã dạng những bài toán phân loại cũng như các

bài toán phát hiện đối tượng. Điều này đáp ứng khá tốt nhu cầu thực tế vì nó gần
như có đủ những thứ mà bạn cần. Dưới đây là danh sách các loại bài toán mà
ML.NET hỗ trợ tốt nhất:



Classification: Ví dụ các bài tốn về phân loại cảm xúc khách hàng tích cực
hay tiêu cực từ các feedback của họ



Clustering : Ví dụ các bài tốn về gom cụm khách hàng, giả sử có N khách
hàng ta cần phải gom thành k cụm, các cụm này chứa các đặc trưng khác
nhau của khách hàng.



Regression/Predict continuous values: Ví dụ các bài tốn về hồi quy như
dự đốn giá nhà, giá taxi …. từ một tập dữ liệu giao dịch trong q khứ, hãy
dự đốn giá của nó là gì khi có một số dự kiện mới.



Anomaly Detection: Các bài toán về phát hiện bất thường, chẳng hạn như
Phát hiện các giao dịch gian lận trong ngân hàng



Recommendations: Các bài tốn về khuyến nghị, ví dụ như làm sao quảng
cáo được sản phẩm tới đúng khách hàng có nhu cầu, làm sao khi vào tiki thì

nó gợi ý được các cuốn sách mà người này quan tâm.



Time series/sequential data: các bài toán như dự báo thời tiết hay doanh số
bán sản phẩm

9



Image classification: các bài toán về phân loại hình ảnh



Object detection: Các bài tốn về phát hiện đối tượng


3. Cơ chế hoạt động của ML.NET

10


Ở hình trên như có thể thấy thì sẽ có 7 bước hồn chỉnh trong q trình sử
dụng thư viện máy học ML.NET của Microsoft.

3.1 Chuẩn bị dữ liệu
Ở bước này tùy vào bài toán mà ta thu thập dữ liệu khác nhau, dữ liệu sau
khi thu thập phải được làm sạch/ chuẩn hóa. Vì ngun tắc vàng phải nhớ “garbage
in garbage out“, dữ liệu có thể được lưu dạng text, csv, sql server…. ứng với mỗi

loại file ML.NET sẽ cung cấp các thư viện phù hợp để ta có thể tải dữ liệu đồng
thời tự động mơ hình hóa dữ liệu này thành mơ hình hướng đối tượng. Ở bước 1
thường sẽ làm công đoạn tải dữ liệu xong thì ta làm ln cơng đoạn chia dữ liệu
ban đầu thành 2 phần: Train set để huấn luyện mơ hình (dùng cho bước 3), Test set
để đánh giá mơ hình (dùng cho bước 4). các dữ liệu được lưu vào IDataView
object.

3.2 Lựa chọn thuật tốn

Tùy vào mục đích bài tốn máy học mà ta dùng các giải thuật khác nhau, có
thể dùng Binary classification, Multiclass classification, Regression…. ( cơ bản thì
chúng ta dùng những gì đã nói ở phần II.2 ). Bước này đại khái là chỉ định một quy
trình hoạt động để trích xuất các đặc trưng và áp dụng thuật toán học máy cho phù
hợp. Đối tượng tạo ra ở bước này là IEstimator.

11


3.3 Tiến hành train mơ hình

Tiến hành train mơ hình bằng cách gọi phương thức Fit() của IEstimator. kết
quả của phương thức Fit() sẽ trả về một mơ hình có kiểu ITransformer. Dữ liệu
train là lấy Train set ở bước 1.

3.4 Đánh giá mơ hình

Sau khi train mơ hình xong thì chưa có xài ngay (thường là vậy), vì thường
các bài tốn máy học nó sẽ có kết quả dự đoán sai khác với thực tế, vấn đề là sự sai
khác này có được chấp nhận hay khơng? có được tiếp tục sử dụng và tiếp tục cải
tiến mơ hình nữa hay khơng. Do đó khi train mơ hình xong thì ta cần đánh giá mơ

hình này chất lượng ra sao. Ta sẽ lấy Test set ở bước 1 để đánh giá. Hàm đánh này
tên là Evaluate() nó nằm trong các lớp giải thuật mà ta sử dụng để train mơ hình,
train mơ hình dùng giải thuật nào thì khi đánh giá cũng dùng giải thuật đó. Ví dụ
khi train mà ta dùng MulticlassClassification để train, thì khi đánh giá cũng dùng
MulticlassClassification để đánh giá. Kết quả của hàm Evaluate() sẽ trả về một
object XYZMetrics. Với XYZ là giải thuật mà ta dùng để đánh giá, ví dụ dùng
MulticlassClassification để đánh giá thì nó trả về MulticlassClassificationMetrics,
dùng Regression để đánh giá thì nó lại trả về kết quả là RegressionMetrics… Nên
sau khi gọi hàm đánh giá xong thì dựa vào các đối tượng kết quả trả về này mà ta
quyết định xem có dùng mơ hình này được hay khơng (trong máy học khơng có
mơ hình sai chỉ có mơ hình phù hợp hay khơng).

12


Ví dụ như mơ hình đó dự đốn giá bán căn nhà là 1 tỷ, nhưng thực tế là 5 tỷ
mới đúng giá, thì cần xem lại chất lượng mơ hình có hợp lý hay khơng, với lại bán
1 tỷ cũng được mà chỉ là ít tiền thơi. Nếu bước 4 đánh giá mơ hình mà khơng thấy
nó ổn thì quay lại bước 1

3.5 Lưu lại mơ hình

Lưu mơ hình, sau khi đã đánh giá mơ hình chất lượng ở bước 4 rồi thì lưu lại
để lần sau chỉ tải mơ hình ra sài thơi, khơng phải chuẩn bị lại dữ liệu và train lại (vì
các bước này rất tốt chi phí). File mơ hình được lưu mặc định có đuôi .zip . ta gọi
phương thức Save() để lưu.

3.6 Load mơ hình để sử dụng

Load mơ hình đã được lưu ở bước 5. Ví dụ hơm qua lưu xong tắt máy, hơm

nay mở máy lên thì chỉ cần tải lại mơ hình đã chạy thơi, hoặc nhiệm vụ của ta là
build model và đánh giá mô model cho chất lượng, rồi gửi model tới team khác sử
dụng, thì muốn gửi đi được phải lưu được mơ hình xuống ổ cứng đã chứ. Ta gọi
hàm Load() để tải mơ hình. Sau khi tải nó sẽ mơ hình hóa ngược lại đối tượng
ITransformer.

13


3.7 Sử dụng mơ hình

Gọi hàm CreatePredictionEngine().Predict() để sử dụng mơ hình nhằm tìm
ra kết quả dự báo của chương trình. Truyền đối tượng ITransformer ở bước 6.

3.8 Ví dụ minh hoạ

Minh hoạ code
using
using
using
using
using

System;
System.Text;
Microsoft.ML;
Microsoft.ML.Data;
static Microsoft.ML.DataOperationsCatalog;

class Program

{
public class HouseData
{
public float Size { get; set; }
public float Price { get; set; }
}
public class Prediction
{
[ColumnName("Score")]
public float Price { get; set; }
}
static void Main(string[] args)
{
Console.OutputEncoding= Encoding.UTF8;
MLContext mlContext = new MLContext();

14


//Bước 1. Chuẩn bị dữ liệu và chạy tạo train - test set data
HouseData[] houseData = {
new HouseData() { Size = 1.1F, Price = 1.2F },
new HouseData() { Size = 1.9F, Price = 2.3F },
new HouseData() { Size = 2.8F, Price = 3.0F },
new HouseData() { Size = 3.4F, Price = 3.7F },
new HouseData() { Size = 4.4F, Price = 7.7F },
new HouseData() { Size = 3.2F, Price = 3.2F },
new HouseData() { Size = 3.4F, Price = 3.8F },
new HouseData() { Size = 5.6F, Price = 8.1F },
new HouseData() { Size = 1.2F, Price = 1.4F },

new HouseData() { Size = 4.0F, Price = 6.5F },
new HouseData() { Size = 3.8F, Price = 5.9F }};
//load dữ liệu vào IDataView
IDataView alldata =
mlContext.Data.LoadFromEnumerable(houseData);
//tách dữ liệu thành 2 phần 20% cho test, 80% cho train
TrainTestData splitDataView =
mlContext.Data.TrainTestSplit(alldata, testFraction: 0.2);
// 2. Chọn giải thuật, rút trích đặc trưng cho tập dữ liệu
var pipeline = mlContext.Transforms.Concatenate("Features",
new[] { "Size" })
.Append(mlContext.Regression.Trainers.Sdca(labelColumnName: "Price",
maximumNumberOfIterations: 100));
// 3. Tiến hành train mơ hình, gọi phần Train Set
var model = pipeline.Fit(splitDataView.TrainSet);
//4. train mơ hình xong thì phải đánh giá nó
RegressionMetrics metrics =
mlContext.Regression.Evaluate(splitDataView.TestSet,
labelColumnName: "Size", scoreColumnName: "Price");
//thông số này càng nhỏ càng tốt
Console.WriteLine("Root Mean Squared Error : " +
metrics.RootMeanSquaredError);
//thông số này càng tịnh tiến tới 100% càng tốt

15


//trong kinh tế lượng họ cho rằng >= 50% là ổn, nhưng khơng
có nghĩa < 50% là dở, nó có thể là số âm vô cùng
Console.WriteLine("RSquared: " + metrics.RSquared);

//5.Lưu mô hình
mlContext.Model.Save(model, splitDataView.TrainSet.Schema,
"housemodel.zip");
//6. Load mơ hình
DataViewSchema modelSchema;
// Load trained model
var modelDaLuu = mlContext.Model.Load("housemodel.zip", out
modelSchema);
//7. Gọi predict để dùng mơ hình xem dự báo
var input = new HouseData() { Size = 2.5F };
var output =
mlContext.Model.CreatePredictionEnginePrediction>(modelDaLuu).Predict(input);
Console.WriteLine("Nhà diện tích "+ input.Size +" được dự
đốn có giá = "+ output.Price);
}
}

Minh hoạ code
Root Mean Squared Error : 0.2828426113221826
RSquared: -6.999914170176103
Nhà diện tích 2.5 được dự đốn có giá = 3.3892932

16


4. Kiến trúc của ML.NET
Để sử dụng ML.NET ta sẽ bắt đầu với đối tượng MLContext. Đối tượng
này chứa các hàm/đối tượng để tải lên mơ hình, lưu dữ liệu, chuyển đổi dữ liệu,
trình huấn luyện và các thành phần vận hành mơ hình. Mỗi đối tượng sẽ có các

phương thức để tạo các loại thành phần khác nhau như:

Như vậy ta lưu ý ứng với loại chức năng khác nhau thì ta dùng các lớp cho
phù hợp, dĩ nhiên cũng không quan trọng lắm chỗ này, không nhất thiết phải nhớ
nhiều làm gì. Chúng ta chỉ cần biết sự tồn tại của nó và khi dùng thì mới bắt đầu
tìm hiểu chi tiết.

5. Các cách để lập trình ML.NET
Hiện tại có 3 cách để lập trình với ML.NET, cụ thể như sau:
17


Như vậy ta có thể dùng ML.NET API (code), ML.NET Model Builder
(dùng Visual Studio UI), và ML.NET CLI (Cho cross platform)

18


III. MƠ HÌNH BERT
1.Một số khái niệm
● Downstream task: Là những tác vụ supervised-learning được cải thiện dựa
trên những pretrained model. VD: Chúng ta sử dụng lại các biểu diễn từ học
được từ những pretrained model trên bộ văn bản lớn vào một tác vụ phân
tích cảm xúc huấn luyện trên bộ văn bản có kích thước nhỏ hơn. Áp dụng
pretrain-embedding đã giúp cải thiện mơ hình. Như vậy tác vụ sử dụng
pretrain-embedding được gọi là downstream task.
● GLUE score benchmark: GLUE score benchmark là một tập hợp các chỉ
số được xây dựng để đánh giá khái quát mức độ hiểu ngôn ngữ của các
model NLP. Các đánh giá được thực hiện trên các bộ dữ liệu tiêu chuẩn được
quy định tại các convention về phát triển và thúc đẩy NLP. Mỗi bộ dữ liệu

tương ứng với một loại tác vụ như: Phân tích cảm xúc (Sentiment Analysis),
hỏi đáp (Question and Answering), dự báo câu tiếp theo (NSP - Next
Sentence Prediction), nhận diện thực thể trong câu (NER - Name Entity
Recognition), suy luận ngôn ngữ tự nhiên (NLI - Natural Languague
Inference)
● Textual Entailment: Là tác vụ đánh giá mối quan hệ giữa 2 văn bản. Nhãn
output của các cặp câu được chia thành đối lập (contradiction), trung lập
(neutral) hay có quan hệ đi kèm (textual entailment).
● Natural Language Inference: Là các tác vụ suy luận ngôn ngữ đánh giá
mối quan hệ giữa các cặp câu, cũng tương tự như Textual Entailment.
● Sentiment Analysis: Phân loại cảm xúc văn bản thành 2 nhãn tích cực
(positive) và tiêu cực (negative). Thường được sử dụng trong các hệ thống
đánh giá bình luận của người dùng.
● Question and Answering: Là thuật toán hỏi và đáp. Đầu vào là một cặp câu
(pair sequence) bao gồm: câu hỏi (question) có chức năng hỏi và đoạn văn
bản (paragraph) chứa thông tin trả lời cho câu hỏi. Một bộ dữ liệu chuẩn
nằm trong GLUE dataset được sử dụng để đánh giá tác vụ hỏi và đáp là
SQuAD - Stanford Question Answering Dataset.

19


● Contextual: Là ngữ cảnh của từ. Một từ được định nghĩa bởi một cách phát
âm nhưng khi được đặt trong những câu khác nhau thì có thể mang ngữ
nghĩa khác nhau. Ngữ cảnh có thể coi là mơi trường xung quanh từ để góp
phần định nghĩa từ.
● BERT(Bidirectional Encoder Representation from Transformer): Mơ
hình BERT. Đây là lớp mơ hình SOTA trong nhiều tác vụ của GLUE score
benchmark.
● LTR model: là mơ hình học bối cảnh theo một chiều duy nhất từ trái sang

phải. Chẳng hạn như lớp các model RNN.
● MLM (Masked Language Model): Là mơ hình mà bối cảnh của từ được
học từ cả 2 phía bên trái và bên phải cùng một lúc từ những bộ dữ liệu
unsupervised text. Dữ liệu input sẽ được masked (tức thay bằng một token
MASK) một cách ngẫu nhiên với tỷ lệ thấp. Huấn luyện mơ hình dự báo từ
được masked dựa trên bối cảnh xung quanh là những từ không được masked
nhằm tìm ra biểu diễn của từ.

2. Giới thiệu về BERT
BERT là viết tắt của cụm từ Bidirectional Encoder Representation from
Transformer có nghĩa là mơ hình biểu diễn từ theo 2 chiều ứng dụng kỹ thuật
Transformer. BERT được thiết kế để huấn luyện trước các biểu diễn từ (pre-train
word embedding). Điểm đặc biệt ở BERT đó là nó có thể điều hòa cân bằng bối
cảnh theo cả 2 chiều trái và phải.
Cơ chế attention của Transformer sẽ truyền toàn bộ các từ trong câu văn
đồng thời vào mơ hình một lúc mà không cần quan tâm đến chiều của câu. Do đó
Transformer được xem như là huấn luyện hai chiều (bidirectional) mặc dù trên
thực tế chính xác hơn có thể nói rằng đó là huấn luyện khơng chiều
(non-directional). Đặc điểm này cho phép mơ hình học được bối cảnh của từ dựa
trên tồn bộ các từ xung quanh nó bao gồm cả từ bên trái và từ bên phải.
Các kỹ thuật như Word2vec, FastText hay Glove tìm ra đại diện của từ thông
qua ngữ cảnh chung của chúng. Tuy nhiên, những ngữ cảnh này là đa dạng trong
dữ liệu tự nhiên. Ví dụ các từ như "con chuột" có ngữ nghĩa khác nhau ở các ngữ
20


cảnh khác nhau như "Con chuột máy tính này thật đẹp!!" và "con chuột này to
thật." Trong khi các mô hình như Word2vec, fastText tìm ra 1 vector đại diện cho
mỗi từ dựa trên 1 tập ngữ liệu lớn nên không thể hiện được sự đa dạng của ngữ
cảnh. Việc tạo ra một biểu diễn của mỗi từ dựa trên các từ khác trong câu sẽ mang

lại kết quả ý nghĩa hơn nhiều. Như trong trường hợp trên ý nghĩa của từ con chuột
sẽ được biểu diễn cụ thể dựa vào phần trước hoặc sau nó trong câu. Nếu đại diện
của từ "con chuột" được xây dựng dựa trên những ngữ cảnh cụ thể này thì ta sẽ có
được biểu diễn tốt hơn.
BERT mở rộng khả năng của các phương pháp trước đây bằng cách tạo các
biểu diễn theo ngữ cảnh dựa trên các từ trước và sau đó để dẫn đến một mơ hình
ngơn ngữ với ngữ nghĩa phong phú hơn.

3. Các kiến trúc model BERT
Hiện tại có nhiều phiên bản khác nhau của model BERT. Các phiên bản đều
dựa trên việc thay đổi kiến trúc của Transformer tập trung ở 3 tham số: L: số
lượng các block sub-layers trong transformer, H: kích thước của embedding véc tơ
(hay cịn gọi là hidden size), A: Số lượng head trong multi-head layer, mỗi một
head sẽ thực hiện một self-attention. Tên gọi của 2 kiến trúc bao gồm:

Như vậy ở kiến trúc BERT Large tăng gấp đơi số layer, tăng kích thước
hidden size của embedding véc tơ gấp 1.33 lần và tăng số lượng head trong
multi-head layer gấp 1.33 lần.

4. Một số kết quả của BERT

21


Kết quả là, trên SQUAD v1.1, BERT đạt được kết quả F1_score = 93.2%,
vượt kết quả tốt nhất trước đó là 91.6% và hiệu năng mà con người đạt được là
91.2%.

22



Trên SQUAD v2.0, Top 6 kết quả tốt nhất hiện giờ toàn bộ là của BERT.

23


IV. MINH HOẠ VỚI BÀI TỐN CỤ THỂ
1. Bài tốn
Cho một cặp câu tiếng Anh, đánh giá cặp câu tiếng anh đó nằm trong nhóm
nào trong 3 nhóm: Nghĩa hai câu tương tự nhau, hai câu trái ngược nhau và hai câu
đó khơng liên quan đến nhau.

2. Model cho bài toán
Model sử dụng là BertForSenquenceClassification được huấn luyện trên bộ
dữ liệu snli (Stanford Natural Language Inference là một bộ sưu tập gồm 570
nghìn cặp câu tiếng Anh do con người viết được gắn nhãn thủ công để phân loại
cân bằng với các nhãn liên quan, mâu thuẫn và trung lập. Các nhà phát triển mong
muốn nó vừa là chuẩn mực để đánh giá các hệ thống biểu diễn cho văn bản, đặc
biệt bao gồm những hệ thống được tạo ra bởi các phương pháp học biểu diễn, vừa
là một nguồn tài ngun để phát triển các mơ hình NLP thuộc bất kỳ loại nào.)

Model được cung cấp sẵn trên trang:
/>
3. Thử nghiệm trên ML.NET
Bước 1: Chuyển đổi model pytorch sang định dạng onnx

24



×