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 tố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
đố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 tốn, thư viện, cơng cụ, ngơn ngữ lập trình… để có thể giải quyết bài tố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ự đốn hoặc đưa ra quyết định mà khơng cần được lập trình cụ thể.
Q 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 tố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 tố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 tố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 tố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 (tồ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 tốn học máy thường địi hỏi một chun 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 hồn tồ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 tố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 q 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 q trình của bài tố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 tốn dịch tự động, bài tố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 tố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 q
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 q 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 tố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ự đố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ả ngun 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ự đố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 tố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 tố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 q 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 tố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ự đố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 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.
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ì ngun 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 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
Bước 2: 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…. (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 tốn máy học nó sẽ có kết quả dự đố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ự đố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ó đ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 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 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 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 quá 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 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 tố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
3.1.6. Ưu điểm của ML.NET
Dễ phát triển: Windows ML được tích hợp trong các phiên bản mới nhất của Windows
10 và Windows Server 2019, tất cả những gì bạn cần là Visual Studio và mơ hình ONNX
được đào tạo, có thể được phân phối cùng với ứng dụng Windows. Ngồi ra, nếu bạn cần
cung cấp các tính năng dựa trên AI của mình cho các phiên bản Windows cũ hơn (xuống
8.1), Windows ML cũng có sẵn dưới dạng gói NuGet mà bạn có thể phân phối cùng với
ứng dụng của mình.
Hỗ trợ phần cứng rộng rãi: Windows ML cho phép bạn ghi khối lượng cơng việc ML
của mình một lần và tự động đạt được hiệu suất được tối ưu hóa cao trên các nhà cung
cấp phần cứng và loại silicon khác nhau, chẳng hạn như CPU, GPU và bộ tăng tốc AI.
Ngoài ra, Windows ML đảm bảo hành vi nhất quán trên phạm vi phần cứng được hỗ trợ.
Độ trễ thấp, kết quả thời gian thực: Các mơ hình ML có thể được đánh giá bằng khả
năng xử lý của thiết bị Windows, cho phép phân tích cục bộ, thời gian thực đối với khối
lượng dữ liệu lớn, chẳng hạn như hình ảnh và video. Kết quả có sẵn một cách nhanh
21
chóng và hiệu quả để sử dụng trong các khối lượng cơng việc địi hỏi nhiều hiệu suất như
cơng cụ trò chơi hoặc các tác vụ nền như lập chỉ mục cho tìm kiếm.
Tăng tính linh hoạt: Tùy chọn đánh giá cục bộ các mơ hình ML trên thiết bị Windows
cho phép bạn giải quyết nhiều tình huống hơn. Ví dụ: đánh giá các mơ hình ML có thể
chạy trong khi thiết bị ngoại tuyến hoặc khi gặp phải tình trạng kết nối khơng liên tục.
Điều này cũng cho phép bạn giải quyết các tình huống trong đó khơng phải tất cả dữ liệu
đều có thể được gửi lên đám mây do các vấn đề về quyền riêng tư hoặc chủ quyền dữ
liệu.
Giảm chi phí hoạt động: Đào tạo các mơ hình ML trên đám mây và sau đó đánh giá
chúng cục bộ trên các thiết bị Windows có thể tiết kiệm đáng kể chi phí băng thơng, chỉ
với dữ liệu tối thiểu được gửi đến đám mây — có thể cần thiết để cải tiến liên tục mơ
hình ML của bạn. Hơn nữa, khi triển khai mơ hình ML trong một kịch bản máy chủ, các
nhà phát triển có thể tận dụng khả năng tăng tốc phần cứng Windows ML để tăng tốc độ
phục vụ mơ hình, giảm số lượng máy cần thiết để xử lý khối lượng cơng việc.
3.1.7. Các tính năng của ML.NET
Khi bạn đang học cách sử dụng ML.NET trên .NET framework, điều quan trọng là phải
xác định các tính năng cốt lõi của nền tảng. Nó sẽ giúp bạn xây dựng các sản phẩm tương lai xác
định lại những gì một ứng dụng có thể làm và cung cấp. Vì vậy, đây là một vài tính năng của
framework mà bạn nên biết.
Mã nguồn mở và miễn phí
Bắt đầu với khía cạnh tuyệt vời nhất, Microsoft AI ML.NET là một khuôn khổ đa nền
tảng mã ng̀n mở và miễn phí. Điều này có nghĩa là bạn có thể chạy khn khổ này trong mọi
mơi trường và mọi thiết bị. Có thể là trên Azure, On-Premises, hoặc bất kỳ loại Đám mây nào,
bạn có thể truy cập các hướng dẫn ML.NET, Trình tạo mơ hình và sử dụng các phần mở rộng
của nó để nâng cao mơi trường phát triển. Ngồi ra, bạn cũng có thể xây dựng giải pháp kỹ thuật
số cần thiết trên Windows, Linux và macOS.
AutoML
Cho đến nay, một trong những khả năng đáng chú ý nhất của ML.NET là AutoML. Mục
đích của việc thêm điều này là để tạo các mơ hình ML tùy chỉnh trong giao diện để tự động hóa
việc tạo các biến thể hoạt động hàng đầu. Điều này có nghĩa là trong mọi tình huống học máy
hoặc nơi bạn cần truy cập các khả năng của ML, AutoML sẽ đề xuất mơ hình hoạt động tốt nhất
cho tình huống được u cầu. Cơng việc của bạn bị giới hạn trong việc cung cấp dữ liệu cho
22
AutoML và nó sẽ tự động lập mơ hình q trình xây dựng. Đối với một kỹ sư học máy, tính
năng này khơng kém phần kỳ diệu vì anh ta sẽ truy cập vào sự kết hợp tốt nhất có thể của các
giải pháp mà không cần phải thực hiện bất kỳ cơng việc chân tay nào.
ML.NET CLI
Trước đó chúng ta đã nói về Trình tạo mơ hình, trong đó các nhà phát triển và kỹ sư có
thể tự động tạo các mơ hình được u cầu. Tuy nhiên, đối với các kỹ sư học máy không sử dụng
Visual Studio hoặc khơng có quyền truy cập vào nền tảng Windows, họ có thể tận dụng các
chức năng AutoML với ML.NET CLI. Đối với điều này, bạn cần cài đặt cơng cụ ML.NET CLI
và chạy nó trên Command Prompt. Điều này sẽ giúp tạo ra các mơ hình học máy chất lượng cao
tùy thuộc vào bộ dữ liệu bạn cung cấp. Tương tự như Trình tạo mơ hình, CLI cũng sẽ tạo mã
ML.NET C # mẫu mà sau đó có thể được sử dụng để tạo và đào tạo chức năng cần thiết.
3.1.8. Khái niệm và cơ chế hoạt động của Deep Learning
Deep Learning là tập hợp con của Machine Learning và nó có tác dụng hỗ trợ cho
máy tính tự huấn luyện chính nó để có thể thực hiện mọi tác vụ tương tự như con người.
Điều này chính là giúp máy tính bắt chước con người cách học hỏi và suy nghĩ.
Các hệ thống của Deep Learning có khả năng cải thiện được những hiệu suất của
chúng với quyền truy cập vào dữ liệu sẽ được nhiều hơn.
Thông thường, phiên bản máy sẽ có nhiều kinh nghiệm hơn; những máy móc đã có đủ
kinh nghiệm thì sẽ được mang đi phục vụ cho những công việc như: lái xe, phát hiện cỏ
dại,...
Deep Learning có hỗ trợ cho việc dịch ngơn ngữ, phân loại các hình ảnh, nhận dạng
giọng nói. Chính vì thế, nó có thể được ứng dụng để giải quyết mọi nhu cầu cần nhận dạng
mẫu mà không cần đến sự can thiệp của con người.
Deep Learning được xem là một phương pháp của học máy theo phương pháp: lập
trình AI sẽ được huấn luyện để dự đốn đầu ra dựa vào một tập đầu vào.
Ví dụ cụ thể: Dự đoán hành đầu của con mèo khi gặp chuột rời tiến hành huấn luyện
nó bằng phương pháp học có giám sát.
Khi bạn muốn dự đốn được hành động của nó vào các đầu vào sẽ được thực hiện như
sau:
Lựa chọn con mồi phù hợp.
Lúc này: các bộ phận trên cơ thể của con mèo như mắt, móng vuốt, tai,.. của con mèo
sẽ trở nên rất nhanh nhạy.
Con chuột sẽ xuất hiện ở đâu.
23
Về cơ bản thì Deep Learning sẽ khơng khác với học máy thơng thường. Tuy nhiên,
với ví dụ trên thì thời gian cần dành khá nhiều mới có thể thiết kế được các tính năng đại
diện cho con mèo. Những gì cần làm là cung cấp cho hệ thống một số lượng hình ảnh con
mèo, video con mèo bắt chuột thì hệ thống có thể tự học được những tính năng đại diện dành
cho 1 con mèo.
Với những tác vụ như thị giác máy tính, nhận dạng giọng nói, robot hoặc dịch máy thì
hiệu suất của Deep Learning có thể vượt xa những hệ thống máy khác. Tuy nhiên, việc xây
dựng được hệ thống Deep Learning lại không mấy dễ dàng so với hệ thống máy móc thơng
thường.
3.1.9. Các cơng cụ
3.2. ONNX model
3.2.1. Khái niệm
ONNX là một Machine Learning framework được sử dụng để chuyển đổi giữa các
Machine Learning framework khác nhau. Giả sử bạn đang nghiên cứu, đào tào mơ hình với
Pytorch, tuy nhiên khi triển khai thành sản phẩm, bạn lại chỉ tìm thấy các cơng cụ hỗ trợ
Tensorflow, TFLite, … Chả nhẽ mình ngời code lại? Nope, ONNX sinh ra để giúp bạn giải
quyết những vấn đề này. ONNX được phát triển bởi cộng đồng các đối tác như Microsoft,
Facebook và AWS
24
ONNX đóng vai trị trung gian trong việc chuyển đổi từ framework này tới framework
kia một cách dễ dàng. Hiện tại thì ONNX hỗ trợ các framework phổ biến như Tensorflow,
Pytorch, Scikit-learn, …
ONNX được hỗ trợ rộng rãi, nó cho phép khả năng tương tác giữa các frameworks
khác nhau và làm “hợp lý hóa” con đường đi từ nghiên cứu tới sản phẩm, điều này góp phần
thúc đẩy tốc độ tăng trưởng của cộng đờng AI. NĨ giải quyết được các bài toán nan giải về
sự phụ thuộc phần cứng đối với các mơ hình AI.
3.2.2. Các bước chuyển đổi một pretrained model từ pytorch sang ONNX model
Bước 1: Import thư viện và khởi tạo cấu hình cần thiết.
Bước 2: Xây dựng mơ hình và tải pretrained weight.
Bước 3: Chuyển mơ hình về dạng ONNX.
Export mơ hình CNN.
Export mơ hình Encoder.
Export mơ hình Decoder.
3.3. Pytorch
3.3.1. Pytorch là gì ?
Pytorch chính là một framework hỗ trợ Deep learning được phát triển bởi Facebook.
(Bên cạnh Amazon, Google hay Apple, Facebook được biết đến là đơn vị công nghệ đầu tư
rất nhiều ng̀n lực cho việc phát triển trí tuệ nhân tạo).
Phát triển Pytorch với mã nguồn mở Facebook đã tạo được một cộng đồng chia sẻ rất lớn.
Với nguồn tài nguyên rộng lớn trên cộng đồng này các vấn đề mà bạn đang mắc phải có thể
đã có ai đó giải quyết và được chia sẻ lên cộng đờng, hãy dành một chút thời gian để tìm
kiếm.
Việc nhiều người sử dụng Pytorch cũng như Tensorflow hay Keras để giải quyết các
bài toán về Deep Learning, đã làm chúng trở thành những framework phổ biến nhất hiện
nay. Đặc biệt phải kể đến lĩnh vực nghiên cứu, các nhà phát triển hay tác giả hầu như ưu
tiên sử dụng Pytorch giúp triển khai các bài tốn của mình bởi Pytorch dễ dàng giúp chúng
25