cnĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
ĐỒ ÁN 1
Tìm hiểu Microsoft ML.NET
và minh họa với bài toán hỏi-đáp tiếng Anh
Giảng viên hướng dẫn:
Đỗ Thị Thanh Tuyền
Sinh viên thực hiện:
19521896 - Mai Anh Nghĩa
19521377 - Nguyễn Huy Đức
TP. Hồ Chí Minh, ngày 08 tháng 6 năm 2022
1
LỜI CẢM ƠN
Trong quá trình ho ̣c tập, nghiên cứu và phát triể n đề tài “Tìm hiểu Microsoft ML.NET và minh
hoạ với bài toán hỏi đáp tiếng Anh” chúng em đã nhận đươc̣ sự giúp đỡ, chỉ bảo nhiệt tình của
cô để hoàn thành đồ án này.
Nhóm em xin chân thành gửi lời cảm ơn đế n cô Đỗ Thị Thanh Tuyền – Giảng viên Khoa Công
nghệ phầ n mề m, Trường Đa ̣i ho ̣c Công nghệ thông tin, Đa ̣i ho ̣c Quố c gia Thành phố Hồ Chí
Minh – giảng viên da ̣y hướng dẫn môn Đồ án 1, đã tận tình hướng dẫn và giúp đỡ về kiế n thức,
phương pháp cho chúng em trong suố t quá trình thực hiện và hoàn thành đồ án.
Mặc dù đã có nhiề u cố gắ ng trong suố t quá trình thực hiện đề tài, song không thể tránh khỏi
những ha ̣n chế , thiế u sót. Chúng em mong rằ ng sẽ nhận đươc̣ những đóng góp và nhận xét chân
thành từ các cô để ngày càng hoàn thiện hơn nữa.
Nhóm chúng em xin chân thành cảm ơn.
Thành phố Hồ Chí Minh, ngày 08 tháng 06 năm 2022
2
LỜI NHẬN XÉT CỦA GIẢNG VIÊN
..……………………………………………………………………………………………..
……………………………………………………………………………………………..
………………………………………………………………………………………………
…………………………………………………………………..…………………………
………………………………………………………………………………………………
………………………………………..……………………………………………………
………………………………………………………………………………………………
……………..………………………………………………………………………………
…………………………………………………………………………………..…………
………………………………………………………………………………………………
………………………………………………………..……………………………………
………………………………………………………………………………………………
……………………………..………………………………………………………………
………………………………………………………………………………………………
…..…………………………………………………………………………………………
………………………………………………………………………..……………………
………………………………………………………………………………………………
……………………………………………..………………………………………………
………………………………………………………………………………………………
…………………..…………………………………………………………………………
………………………………………………………………………………………..……
………………………………………………………………………………………………
……………………………………………………………..………………………………
………………………………………………………………………………………………
…………………………………..…………………………………………………………
………………………………………………………………………………………………
………..……………………………………………………………………………………
……………………………………………………………………………..………………
………………………………………………………………………………………………
…………………………………………………..…………………………………………
………………………………………………………………………………………………
………………………..……………………………………………………………………
………………………………………………………………………………………………
3
Table of Contents
CHƯƠNG 1 .......................................................................................................................................... 6
TỔNG QUAN ........................................................................................................................................ 6
1.1. Giới thiệu chung....................................................................................................................................... 6
1.2. Các nghiên cứu liên quan đến đề tài ........................................................................................................ 6
1.3. Các phương pháp và mục tiêu thực nghiệm ............................................................................................ 7
1.3.1. Các phương pháp .............................................................................................................................................. 7
1.3.2. Mục tiêu ............................................................................................................................................................ 7
CHƯƠNG 2 .......................................................................................................................................... 7
CƠ SỞ LÝ THUYẾT ............................................................................................................................. 7
2.1. Đôi nét về machine learning .................................................................................................................... 7
2.1.1. Khái niệm .......................................................................................................................................................... 7
2.1.2. Các phương pháp Machine Learning .................................................................................................................. 8
2.2. Transformers .......................................................................................................................................... 10
2.2.1. Mô hình Transformers là gì ? ........................................................................................................................... 10
2.3. BERT ....................................................................................................................................................... 12
2.3.1. Khái niệm ........................................................................................................................................................ 12
2.3.2. Cách thức hoạt động ....................................................................................................................................... 13
2.3.3. Nền tảng của BERT........................................................................................................................................... 13
2.3.4. Phương pháp Fine-tuning BERT........................................................................................................................ 16
CHƯƠNG 3 ........................................................................................................................................ 16
MICROSOFT MACHINE LEARNING ............................................................................................. 16
3.1. ML.NET ................................................................................................................................................... 16
3.1.1. Khái niệm ........................................................................................................................................................ 16
3.1.2. Cơ chế hoạt động ............................................................................................................................................ 17
3.1.3. ML.NET hỗ trợ các bài toán nào liên quan tới Máy Học?................................................................................... 20
3.1.5. Kiến trúc của ML.NET gồm những gì? ............................................................................................................... 20
3.1.6. Ưu điểm của ML.NET ....................................................................................................................................... 21
3.1.7. Các tính năng của ML.NET................................................................................................................................ 22
3.1.8. Khái niệm và cơ chế hoạt động của Deep Learning ........................................................................................... 23
3.1.9. Các công cụ ..................................................................................................................................................... 24
3.2. ONNX model .......................................................................................................................................... 24
3.2.1. Khái niệm ........................................................................................................................................................ 24
3.2.2. Các bước chuyển đổi một pretrained model từ pytorch sang ONNX model ...................................................... 25
3.3. Pytorch ................................................................................................................................................... 25
3.3.1. Pytorch là gì ? .................................................................................................................................................. 25
3.3.2. Những lợi ích khi sử dụng Pytorch ? ................................................................................................................. 26
CHƯƠNG 4 ........................................................................................................................................ 26
MINH HOẠ VỚI BÀI TOÁN HỎI - ĐÁP TIẾNG ANH .................................................................... 26
4.1. Sử dụng thư viện Hugging Face .............................................................................................................. 26
4
4.2. Pretrained model Bert base uncased squad ........................................................................................... 28
4.3. Cài đặt môi trường và demo .................................................................................................................. 28
CHƯƠNG 5 ........................................................................................................................................ 31
KẾT LUẬN ......................................................................................................................................... 31
5.1. Kết quả đạt được ................................................................................................................................... 31
5.2. Ưu điểm ................................................................................................................................................. 32
5.3. Nhược điểm và giải pháp ....................................................................................................................... 32
TÀI LIỆU THAM KHẢO.................................................................................................................... 32
5
CHƯƠNG 1
TỔNG QUAN
1.1. Giới thiệu chung
Machine Learning là một trong những thuật ngữ mà chúng ta thường hay nghe đến trong
lĩnh vực công nghệ thông tin cụ thể hơn là trí tuệ nhân tạo. Thực chất đây chính là một lĩnh vực
của trí tuệ nhân tạo, là một lĩnh vực quan trọng trong khoa học máy tính, được ứng dụng rộng rãi
trong khắp các lĩnh vực đời sống trong nền cách mạng công nghiệp 4.0.
Hiện nay, Machine Learning tỏ ra cực kỳ hiệu quả, hơn hẳn con người trong cụ thể lĩnh
vực mà chúng được áp dụng. Trong số đó không thể không kể đến như nhận dạng ảnh, chẩn
đoán y khoa, dự báo thời tiết, …
Bên cạnh Machine Learning, Deep Learning đã cho phép ứng dụng nhiếu vấn đề thực tế
của máy học và bằng cách mở rộng lĩnh vực tổng thể của AI. Deep learning phá vỡ các cách
thức con người làm việc bằng cách làm cho tất cả các loại máy móc trợ giúp có thể thực hiện
được, gần hoặc giống hệt con người. Ô tô không người lài, chăm sóc sức khoẻ tốt hơn, thậm chí
cả đề xuất về bộ phim tốt hơn, tất cả đều hiện thực trong thời đại ngày nay. AI là hiện tại và
tương lai. Với sự trợ giúp của Deep Learning, AI có thể hiện thức hóa ước mơ khoa học giả
tưởng mà chúng ta đã tưởng tượng từ rất lâu.
Vì vậy, khi nhận thấy được Deep Learning là một lĩnh vực ngày càng phổ biến, có tính
ứng dụng cao và rộng rãi với nhiều mặt trong cuộc sống. Nhóm em đã quyết định chọn đề tài
tìm hiểu về Machine Learning và minh họa bài toán hỏi-đáp Tiếng Anh.
1.2. Các nghiên cứu liên quan đến đề tài
Với nội dung của đề tài đồ án thì chúng em đã nghiên cứu, tập trung vào các chủ đề Tìm
6
hiều Window Machine Learning để sử dụng các mô hình học sâu đã được huấn luyện sẵn
(Pretrained Model) là các ONNX Models, tìm hiểu cách chuyển một pretrained model từ
pytorch sang ONNX Model và cuối cùng là áp dụng để thử nghiệm với pretrained model hỏi đáp
Tiếng Anh.
1.3. Các phương pháp và mục tiêu thực nghiệm
1.3.1. Các phương pháp
Để hoà n thà nh đồ á n và bà i bá o cá o nà y, nhố m êm đã tham khả o cá c tà i liêu hướng dã n
đươc trên internet và cá c trang hướng dã n. Đầu tiên, nhóm tụi êm tìm hiểu về machinê
lêarning và cách triển khai machinê lêarning bằng micrôsft ml.nêt. Sau đó, nhóm tụi êm
tiến hành chuyển mô hình của bài tôán hỏi đáp tiếng anh sang định dạng ONNX mà ML.nêt
có thể đọc được để dêmô.
1.3.2. Mục tiêu
Mục tiêu của nhóm trước nhất là tìm hiểu về lĩnh vực Machine Learning. Từ đó áp dụng
các kiến thức thuật toán, thư viện, công cụ, ngôn ngữ lập trình… để có thể giải quyết bài toán
hỏi-đáp Tiếng Anh.
Qua đó, có thể phần nào điều chỉnh các thông số phù hợp, có những bước xử lý dữ liệu
đúng đắn để cải thiện các đặc tính về tốc độ và độ chính xác của mô hình nhóm đã chọn.
Trong tương lai, chúng em sẽ xây dựng một ứng dụng áp dụng tích hợp các mô hình pretrained với mong đợi có thể ứng dụng có thể phục vụ mọi người với tính chính xác và hiệu quả
cao nhất có thể.
CHƯƠNG 2
CƠ SỞ LÝ THUYẾT
2.1. Đôi nét về machine learning
2.1.1. Khái niệm
7
Machine learning (ML) hay máy học là một nhánh của trí tuệ nhân tạo (AI), nó là một
lĩnh vực nghiên cứu cho phép máy tính có khả năng cải thiện chính bản thân chúng dựa trên dữ
liệu mẫu (training data) hoặc dựa vào kinh nghiệm (những gì đã được học). Machine learning có
thể tự dự đoán hoặc đưa ra quyết định mà không cần được lập trình cụ thể.
Quá trình học bắt đầu bằng các quan sát hoặc dữ liệu. Ví dụ, để tìm kiếm các mẫu trong
dữ liệu và đưa ra quyết định tốt hơn trong tương lai dựa trên 9 các ví dụ mà chúng tôi cung cấp.
Mục đích chính là cho phép các máy tính tự động học mà không cần sự can thiệp hay trợ giúp
của con người và điều chỉnh các hành động tương ứng.
Deep Learning là một tập hợp con của Machine Learning, có khả năng khác biệt ở một số
khía cạnh quan trọng so với Machine Learning nông truyền thống, cho phép máy tính giải quyết
một loạt các vấn đề phức tạp không thể giải quyết được.
2.1.2. Các phương pháp Machine Learning
2.1.2.1. Supervised Learning – Học có giám sát
Trong học tập có giám sát, máy tính được cung cấp các ví dụ đầu vào được gắn nhãn với
đầu ra mong muốn của chúng. Mục đích của phương pháp này là để thuật toán có thể học được
dạy học bằng cách so sánh kết quả đầu ra thực tế của nó với các kết quả đầu ra đã được dạy để
tìm lỗi và sửa đổi mô hình cho phù hợp. Do đó, việc học được giám sát sử dụng các mẫu để dự
đoán giá trị nhãn trên dữ liệu không được gắn nhãn bổ sung.
Ví dụ, với việc học có giám sát, một thuật toán có thể được cung cấp dữ liệu với văn bản
về nghệ thuật được dán nhãn là “arts” và vản bản về Covid-19 được dán nhãn là “covid-19”.
Bằng cách được đào tạo về dữ liệu này, thuật toán học có giám sát sẽ có thể sau đó xác định các
văn bản mới về nghệ thuật có nhãn là “arts”, các văn bản liên quan đến Covid-19 có nhãn là
“covid-19".
Phương pháp này thường được sử dụng cho các bài toán phân lớp (classification).
2.1.2.2. Unsupervised Learning – Học không giám sát
8
Trong học tập không giám sát, dữ liệu không được gắn nhãn, vì vậy thuật toán học được
để lại điểm chung giữa các dữ liệu đầu vào. Vì dữ liệu không được gắn nhãn phong phú hơn dữ
liệu được dán nhãn, các phương pháp machine learning tạo điều kiện cho việc học tập không
giám sát đặc biệt có giá trị.
Không giám sát thường được sử dụng cho dữ liệu giao dịch.
2.1.2.3. Semi-Supervised Learning – Học bán giám sát
Học bán giám sát là một lớp của kỹ thuật học máy, sử dụng cả dữ liệu đã gán nhãn và
chưa gán nhãn để huấn luyện - điển hình là một lượng nhỏ dữ liệu có gán nhãn cùng với lượng
lớn dữ liệu chưa gán nhãn. Học bán giám sát đứng giữa học không giám sát (không có bất kì dữ
liệu có nhãn nào) và có giám sát (toàn bộ dữ liệu đều được gán nhãn). Nhiều nhà nghiên cứu
nhận thấy dữ liệu không gán nhãn, khi được sử dụng kết hợp với một chút dữ liệu có gán nhãn,
có thể cải thiện đáng kể độ chính xác.
Để gán nhãn dữ liệu cho một bài toán học máy thường đòi hỏi một chuyên viên có kĩ
năng để phân loại bằng tay các ví dụ huấn luyện. Chi phí cho quy trình này khiến tập dữ liệu
được gán nhãn hoàn toàn trở nên không khả thi, trong khi dữ liệu không gán nhãn thường tương
đối rẻ tiền. Trong tình huống đó, học nửa giám sát có giá trị thực tiễn lớn lao.
Một ví dụ cho kỹ thuật học máy nửa giám sát là đồng huấn luyện (co-training), trong đó
một hay nhiều bộ học được huấn luyện cùng một tập ví dụ nhưng mỗi bộ sử dụng một tập đặc
trưng khác nhau, lý tưởng nhất là độc lập với nhau.
2.1.2.4. Reinforcement Learning – Học tăng cường
Học tăng cường là một lĩnh vực con của học máy, nghiên cứu cách thức một agent trong
một môi trường nên chọn thực hiện các hành động nào để cực đại hóa một
khoản thưởng (reward) nào đó về lâu dài. Các thuật toán học tăng cường cố gắng tìm một chiến
lược ánh xạ các trạng thái của thế giới tới các hành động mà agent nên chọn trong các trạng thái
đó.
Môi trường thường được biểu diễn dưới dạng một quá trình quyết định Markov trạng thái
hữu hạn (Markov decision process - MDP), và các thuật toán học tăng cường cho ngữ cảnh này
có liên quan nhiều đến các kỹ thuật quy hoạch động. Các xác suất chuyển trạng thái và các xác
9
suất thu lợi trong MDP thường là ngẫu nhiên nhưng lại tĩnh trong quá trình của bài toán
(stationary over the course of the problem).
Khác với học có giám sát, trong học tăng cường không có các cặp dữ liệu vào/kết quả
đúng, các hành động gần tối ưu cũng không được đánh giá đúng sai một cách tường minh. Hơn
nữa, ở đây hoạt động trực tuyến (on-line performance) được quan tâm, trong đó có việc tìm
kiếm một sự cân bằng giữa khám phá (lãnh thổ chưa lập bản đồ) và khai thác (tri thức hiện có).
2.2. Transformers
2.2.1. Mô hình Transformers là gì ?
Transformer là một mô hình học sâu được thiết kế để phục vụ giải quyết nhiều bài toán trong
xử lý ngôn ngữ và tiếng nói, ví dụ như bài toán dịch tự động, bài toán sinh ngôn ngữ, phân
loại, nhận dạng thực thể, nhận dạng tiếng nói, chuyển văn bản thành tiếng nói. Tuy nhiên,
khác với RNNs, Transformer không xử lý các phần tử trong một chuỗi một cách tuần tự.
Nếu dữ liệu đầu vào là một câu ngôn ngữ tự nhiên, Transformer không cần phải xử lý phần
đầu câu trước rồi mới tới phần cuối câu. Do tính năng này, Transformer có thể tận dụng khả
năng tính toán song song của GPU và giảm thời gian xử lý đáng kể.
10
Không sử dụng kiến trúc Recurrent (hồi quy) như RNNs mà Transformer sử dụng
self-attention. Trong kiến trúc của mình, Transformer chứa 6 encoder và 6 decoder. Mỗi
encoder chứa hai lớp: Self-attention và mạng truyền thẳng (FNN).
Self-Attention là cơ chế giúp encoder nhìn vào các từ khác trong lúc mã hóa một từ cụ
thể, vì vậy,Transformers có thể hiểu được sự liên quan giữa các từ trong một câu, kể cả khi
chúng có khoảng cách xa. Các decoder cũng có kiến trúc giống như vậy nhưng giữa chúng
có một lớp attention để nó có thể tập trung vào các phần liên quan của đầu vào.
11
Self-Attention có 4 bước:
1. Tạo ra bộ 3 vectơ từ các vectơ đầu vào của encoder. Tại encoder đầu tiên, véctơ đầu
vào là word embedding của từ. Như vậy với mỗi từ, ta sẽ có 3 vectơ Query, Key và
Value. Các vectơ này được tạo nên bởi phép nhân ma trận giữa véctơ đầu vào và 3
ma trận trọng số tương ứng với query, key, value mà chúng ta sử dụng trong quá
trình huấn luyện. 3 vectơ này đóng vai trò khác nhau và đều quan trọng đối với
attention.
2. Tính điểm. Với mỗi từ, ta cần tính điểm của các từ khác trong câu đối với từ này.
Giá trị này giúp quyết định từ nào cần được chú ý và chú ý bao nhiêu khi mã hóa
một từ. Điểm được tính bằng tích vô hướng giữa véctơ Query của từ đang xét với
lần lượt các vectơ Key của các từ trong câu. Ví dụ, khi ta tính self-attention trên từ
có vị trí 1, điểm của nó với chính nó là q1.k1, điểm của nó với từ thứ hai là q1.k2,
v..v..
3. Chuẩn hóa điểm. Trong bài báo gốc, điểm được chia cho 8 (căn bậc 2 của 64 – số
chiều của vectơ Key). Điều này giúp cho độ dốc trở nên ổn định hơn. Tiếp theo, giá
trị này được truyền qua hàm softmax để đảm bảo các giá trị điểm đều dương và có
tổng không vượt quá 1.
4. Nhân vectơ Value với mỗi giá trị điểm đã tính phía trên rồi cộng lại với nhau. Ý đồ
của việc này là bảo toàn giá trị vectơ của các từ cần được chú ý và loại bỏ vectơ của
các từ không liên quan (bằng cách nhân nó với một số rất nhỏ, ví dụ như 0.001).
2.3. BERT
2.3.1. Khái niệm
BERT là viết tắt của Bidirectional Encoder Representations from Transformers, một
kiến trúc mới cho lớp bài toán Language Representation đươc Google công bố vào đầu tháng
11 vừa qua. Không giống như các mô hình trước đó, BERT được thiết kế để đào tạo ra các
vector đại diện cho ngôn ngữ văn bản thông qua ngữ cảnh 2 chiều(trái và phải) của chúng.
Kết quả là, vector đại diện được sinh ra từ mô hình BERT được tính chỉnh với các lớp
đầu ra bổ sung đã tạo ra nhiều kiến trúc cải tiến đáng kể cho các nhiệm vụ xử lý ngôn ngữ tự
nhiên như Question Answering, Language Inference,...mà không cần thay đổi quá nhiều từ
các kiến trúc cũ.
12
2.3.2. Cách thức hoạt động
Về mặt lý thuyết, các kỹ thuật khác như Word2vec, FastText hay Glove cũng 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ữ
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.
2.3.3. Nền tảng của BERT
BERT sử dụng Transformer là một mô hình attention (attention mechanism) học mối
tương quan giữa các từ (hoặc 1 phần của từ) trong một văn bản. Transformer gồm có 2 phần
chính: Encoder và Decoder, encoder thực hiện đọc dữ liệu đầu vào và decoder đưa ra dự đoán.
Ở đây, BERT chỉ sử dụng Encoder.
Khác với các mô hình directional (các mô hình chỉ đọc dữ liệu theo 1 chiều duy nhất trái→phải, phải→ trái) đọc dữ liệu theo dạng tuần tự, Encoder đọc toàn bộ dữ liệu trong 1 lần,
việc này làm cho BERT có khả năng huấn luyện dữ liệu theo cả hai chiều, qua đó mô hình có
thể học được ngữ cảnh (context) của từ tốt hơn bằng cách sử dụng những từ xung quanh nó
(phải&trái).
13
Hình trên mô tả nguyên lý hoạt động của Encoder. Theo đó, input đầu vào là một chuỗi
các token w1, w2,...được biểu diễn thành chuỗi các vector trước khi đưa vào trong mạng neural.
Output của mô hình là chuỗi ccs vector có kích thước đúng bằng kích thước input. Trong khi
huấn luyện mô hình, một thách thức gặp phải là các mô hình directional truyền thống gặp giới
hạn khi học ngữ cảnh của từ. Để khắc phục nhược điểm của các mô hình cũ, BERT sử dụng 2
chiến lược training như sau:
1. Masked LM (MLM)
Trước khi đưa vào BERT, thì 15% số từ trong chuỗi được thay thế bởi token [MASK],
khi đó mô hình sẽ dự đoán từ được thay thế bởi [MASK] với context là các từ không
bị thay thế bởi [MASK]. Mask LM gồm các bước xử lý sau :
o
Thêm một classification layer với input là output của Encoder.
o
Nhân các vector đầu ra với ma trận embedding để đưa chúng về không gian từ
vựng (vocabulary dimensional).
o
Tính toán xác suất của mỗi từ trong tập từ vựng sử dụng hàm softmax.
14
Hàm lỗi (loss function) của BERT chỉ tập trung vào đánh giá các từ được đánh
dấu [MASKED] mà bỏ qua những từ còn lại, do đó mô hình hội tụ chậm hơn so với
các mô hình directional, nhưng chính điều này giúp cho mô hình hiểu ngữ cảnh tốt hơn.
(Trên thực tế, con số 15% không phải là cố định mà có thể thay đổi theo mục đích của
bài toán.)
2. Next Sentence Prediction (NSP)
Trong chiến lược này, thì mô hình sử dụng một cặp câu là dữ liệu đầu vào và dự đoán
câu thứ 2 là câu tiếp theo của câu thứ 1 hay không. Trong quá trình huấn luyện, 50%
lượng dữ liệu đầu vào là cặp câu trong đó câu thứ 2 thực sự là câu tiếp theo của câu thứ
1, 50% còn lại thì câu thứ 2 được chọn ngẫu nhiên từ tập dữ liệu. Một số nguyên tắc
được đưa ra khi xử lý dữ liệu như sau:
o
Chèn token [CLS] vào trước câu đầu tiên và [SEP] vào cuối mỗi câu.
o
Các token trong từng câu được đánh dấu là A hoặc B.
o
Chèn thêm vector embedding biểu diễn vị trí của token trong câu (chi tiết về
vector embedding này có thể tìm thấy trong bài báo về Transformer).
Các bước xử lý trong Next Sentence Prediction:
Toàn bộ câu đầu vào được đưa vào Transformer.
Chuyển vector output của [CLS] về kích thước 2x1 bằng một classification
layer.
Tính toán xác suất IsNextSequence bằng softmax.
15
2.3.4. Phương pháp Fine-tuning BERT
Tùy vào bài toán mà ta có các phương pháp fine-tune khác nhau:
1. Đối với bài toán Classification, ta thêm vào một Classification Layer với input
là output của Transformer cho token [CLS].
2. Đối với bài toán Question Answering, model nhận dữ liệu input là đoạn văn bản
cùng câu hỏi và được huấn luyện để đánh nhãn cho câu trả lời trong đoạn văn
bản đó.
3. Đối với bài toán Named Entity Recognition (NER), model được huấn luyện để
dự đoán nhãn cho mỗi token (tên người, tổ chức, địa danh,...).
CHƯƠNG 3
MICROSOFT MACHINE LEARNING
3.1. ML.NET
3.1.1. Khái niệm
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ộ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 những thứ mà
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, khách
hàng sẵn có trải rộng khắp thế giới nên ML.NET được kỳ vọng rất lớn sẽ tạo ra được cơn sốt về
công nghệ liên quan tới máy học viết bằng C#/F# và 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 thì ML.NET bắt đầu khởi động từ 05/2018 và hiện nay bản chạy
ổn định là 1.7.0 (tính tới 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 tiến hiệu suất của các giải thuật.
16
Linh hồn của ML.NET là một mô hình học máy (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 của ta thành các kết quả dự đoán của
mô hình, nó tùy vào giải thuật 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 toán machine learning của ML.NET (dĩ nhiên nó phải lệ thuộc vào
bài toá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.
3.1.2. Cơ chế hoạt động
17
Bước 1: là bước 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ì nguyên tắc
vàng các bạn phải nhớ “garbage in garbage out“, dữ liệu có thể được lưu dạng text,
18
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 luôn 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
Bước 2: Tùy vào mục đích bài toá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…. (giải thuật nào
là do mục đích nên khnog thể liệt kê hết, khi nào gặp thì tìm hiểu từng trường hợc cụ
thể cho nó đỡ rắc rối). 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
Bước 3: 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.
Bước 4: sau khi train mô hình xong thì chưa có sài ngay (thường là vậy), vì thường
các bài toá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àmg 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ượngkế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). Ví dụ như mô hình đó dự đoán giá bán căn nhà là
1 tỉ, nhưng thực tế là 5 tỉ mới đúng giá, thì ráng mà chịu ai biểu không xem 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 (nhưng
là kỹ sư phần mềm cùng với am hiểu về cuộc sống thì chúng ta cũng điên điên có giới
hạn thôi, nhường người khác điên vớ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.
Bước 5: 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ì
19
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
Bước 6: 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
Bước 7: 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 vào và sử dụng
3.1.3. ML.NET hỗ trợ các bài toán nào liên quan tới Máy Học?
Classification: Ví dụ các bài toá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 toá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 toán về hồi quy như dự đoán
giá nhà, giá taxi …. từ một tập dữ liệu giao dịch trong quá khứ, hãy dự đoá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 toá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
Image classification: các bài toán về phân loại hình ảnh
Object detection: Các bài toán về Phát hiện đối tượng
3.1.5. Kiến trúc của ML.NET gồm những gì?
Để 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ư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ư:
20
- Xem thêm -