33 2.4 Các ứng dụng của việc sử dụng phương pháp phát hiện sự tương đồng trong mã nhị phân .... Giới thiệu những nghiên cứu liên quanCác phương pháp để phát hiện sự tương đồng trong mã n
Trang 1KHÓA LUẬN TỐT NGHIỆP PHƯƠNG PHÁP PHÁT HIỆN SỰ TƯƠNG ĐỒNG MÃ
NHỊ PHÂN CỦA CHƯƠNG TRÌNH DỰA TRÊN HỌC
SÂU TRONG AN TOÀN PHAN MEM
A DEEP LEARNING APPROACH FOR BINARY CODE
SIMILARITY DETECTION IN SOFTWARE SECURITY
KY SU NGANH AN TOAN THONG TIN
GIANG VIEN HUGNG DAN:
TS Nguyén Tan CamThS Đỗ Thị Thu Hiền
TP.Hồ Chí Minh - 2023
Trang 2Trong quá trình thực hiện và nghiên cứ khóa luận, nhóm đã nhận được sự
hướng dẫn, giúp đỡ, và nhận được các ý kiến đóng góp quý báu của các giáo
viên hướng dẫn và giáo viên bộ
Tan Cầm, cô D6 Thi Thu Hiền
quá trình nghiên cứu và thực hi
môn Nhóm xin gửi lời cảm ơn tới thầy Nguyễn
ã tận tình trực tiếp hướng dẫn và giúp đỡ trong
ơn các thầy cô trường của Đại học Công nghệ
Thông tin - ĐHQG TP.HCM, đặc biệt là các thầy cô ở khoa Mạng máy tính
và Truyền thông, các thầy cô t
nghiệm An toàn thông tin đã gì
huộc bộ môn An toàn Thông tin và Phong thí
ap đỡ nhóm.
Lê Trần Thành Nhân
Trang 3DANH MUC CAC BANG BIEU vii
CHƯƠNG 1 TONG QUAN 3
11 Giới thiệu Vand@é ot ee 3 1.2 Giới thiệu những nghiên cứu liên quan 4
13 Tính ứng dụng ee 6
14 Những thách thức ee ĩ 1.5 Mục tiêu, đối tượng, và phạm vi nghiên cứu 8
5.1 Mục tiêu nghiên cứu 8
5.2 Đối tượng nghiên cứu ee 8
5.3 Pham vi nghiên cứu ẶẶ 8
.ð.4 Cau trúc khóa luận tốt nghiệp - 8
CHƯƠNG 2 CƠ SỞ LY THUYET 10
2.1 Các thành phan liên quan đến tập tin nhị phân 0
2.11 Chức năng - Function 1
2.1.2 Basicblock HQ ee 1
2.1.3 Biểu đồ luồng điều khiển - Control flow graph 2
2.1.4 Sftrand 2 ee 3 2.15 Decompiler 2.0.0.0 0.00000 0b eee ee 4
2.2 Biểu diễn trung gian - Intermediate Representation 7
Trang 42.2.1 Vex Intermediate Representation (Vex-IR) 17
2.2.2 Dac điểm va cấu trúc của VexIR 18
2.3 Hoc sâu (Deep Learning) Ặ So 22
2.3.1 Một số thành phần chính của mạng no-ron 23 2.3.2 Một số các khái nệm khác 24
2.3.3 Một số kiến trúc mạng nơ-ron phổ biến trong lĩnh vực
I0 -.- aaA 30 2.3.4 Phương pháp học trong học sâu 32 2.3.5 Các lớp thường có trongCNN 33 2.4 Các ứng dụng của việc sử dụng phương pháp phát hiện sự tương
đồng trong mã nhị phân 2c co 36
CHƯƠNG 3 TONG QUAN VỀ DEEPBIN-INSPECTOR MO
HÌNH PHÁT HIỆN SỰ TƯƠNG DONG MA NHI
PHAN DUA TREN HỌC SAU 38
3.1 Định nghĩa vấn đề ee 38
3.2 DeepBin-Inspector- Phương pháp phát hiện sự tương đồng trong
mã nhị phân dựa trên học sâu - 39
3.2.1 Trích xuất các finetion co 40
3.2.2 Chuyển đổi các chức năng nhị phân sang vector để đưa
vào mô hình học mấy 0005 41 3.2.3 Lua chọn mô hình học mấy - 48 3.3 Phương pháp đánh giá ee ee 51
3.3.1 Phân loại One-to-one 2.2.0.0 00000 ee 51 3.3.2 Phân loại One-to-many 0004 53
CHUONG 4 THi NGHIEM VA DANH GIA 56
41 Hiénthuc 2 0 ee ee 56
4.1.1 Cai đặt méitruéng 2 ee 56 4.1.2 Các thông số của mô hình hoc sâu 56
Trang 543
4.4
Quá trình tạo tap đữ liệu huấn luyện
Đánh giá tác động của độ dài vector biểu diễn đối với hiệu quả của DeepBin-lnspector ẶẶ 00002200005 4.3.1 Tap dữ liệu đánh giá (dataset)
4.3.2 Kết quả so sánh Q2 so So sánh các mô hình học máy khi áp dụng bytes2vec
4.4.1 Tập dữ liệu đánh giá (dataset)
4.4.2 Tổng quan về mô hình của Zeek_
.43 M6 hình CNN ban đầu
n _ = = ^ œ > 2 = Bs Pa } n ®5 E So sánh DeepBin-Inspector và Asm2vec
4.5.1 Tập dữ liệu đánh giá (datasel)
5.2 Kết qua đố LÀ Q Q HQ eee
CHƯƠNG 5 KẾT LUẬN
5.1
5.2
Két luan fy WM XN fw —
ằ-Hướng phát triển 2 ee ee TAI LIEU THAM KHAO
57
59 59 59 61 61 62 63
68
68 70
Trang 6DANH MỤC CÁC KÝ HIỆU, CÁC CHU VIET TAT
Intermediate representation Danh sách các câu lệnh trong 1 basic block
Danh sách các strand của một basic block
Ham băm Message-Digest algorithm 5 True Positive
False Positive True Negative False Negative
Mean Reciprocal Rank
Số lượng các chức năng tương đồng được xếp hang
Vị trí của chức năng thực sự tương đồng đầu tiênTổng của các thành phan từ i = 1 đến N
Trang 7DANH MUC CAC HINH VE
Hình 1.1 Mô hình Order Matters - Kết hợp NLP và GNN trong phát
hiện sự tương đồng mã nhị phân - 5
Hình 2.1 Ví dụ về luồng điều khiển của hàm nhị phân Bên trái là
các câu lệnh cùng với địa chỉ tương đối trong chương trình, bên
phải là biểu đồ luồng điều khiển tương ứng 11
Hình 2.2 Hai basic block kế tiếp nhau được trích xuất khi dùng IDA 12 Hình 2.3 Ví dụ về một đoạn chương trình với CFG tương ứng 13
Hình 2.4 Ví dụ về một đoạn mã được chuyển đổi sang assembly bằng
IDA Ả7 MG J foe eee 15 Hình 2.5 Mô hình mang no-ron 00-00005 24
Hình 2.6 Ví dụ về một mô hình CNN để phân loại hình anh 30
Hình 2.7 Ví dụ về một mô hình GAN trong phát hiện ảnh 31Hình 2.8 Ví dụ về mô hình kết hợp CNN và RNN 32
Hình 3.1 Mô hình khái quát tổng quan của DeepBin-Inspector 39
Hình 3.2 Quá trình trích xuất các chức năng 41
Hình 3.3 Bytes2vec - Phương pháp chuyển đổi bytes code thành vector 44
Hình 3.4 Copy propagation và Deadcode elimination AT
Hình 3.5 Normalize 2 2.2.0.0 2.000200 000000 AT Hình 3.6 Các layer và kích thước có trong mô hình CNN-GRU 50
Hình 4.1 Biểu đồ thể hiện đọ hiệu quả của DeepBin-Inspector mỗi
khi tăng size VeCEOT HQ ky 60 Hình 4.2 Các layer và kích thước có trong mô hình của Zeek 63
Hình 4.3 Các layer và kích thước có trong mô hình CNN đơn thuần 64
Trang 8ìn
ìn
bằng mô hình CNN-GRU
h 4.5 Confusion matrix 4 chỉ số TP, FP, TN, FN khi đánh giá
bằng mô hình học máy của Zeek_ o
4.6 Confusion matrix 4 chỉ số TP, FP, TN, FN khi đánh giá
bằng mô hình CNN ke
h 47 Các chỉ số MRR và Recal@1 của DeepBin-Inspector và
Asm2vec khi tăng poolsize Ặ ee
65 66 67 73
Trang 9DANH MUC CAC BANG BIEU
Bảng 2.1 Vi dụ một số loại biểu thức VexIR
Bảng 2.2 Vi dụ một số loại câu lệnh Vex-IR
ết quả trích xuất các chức năng có trong
Bảng 4.2 Dánh giá các size vector cho mô hình hoc méy
ết quả trích xuất các chức năng có trong
để tạo thành dữ liệu đánh gia
qua giữa mô hình hoc máy của CNN-GRU, Zeek và mô hình CN
Bảng 4.5 Bảng tóm tắc các tập dit liệu để so sánh Bindeep Inspector
và AsmByec xe NA 4 ee
20 21
58 59 62
69 70
71
72
Trang 10Phát hiện sự tương đồng trong mã nhị phân là lĩnh vực vô cùng quan trọng hiện nay Trước hết, vấn đề an ninh thông tin trở nên ngày càng cấp thiết khi
mà các cuộc tấn công mạng và các phần mềm độc hại ngày càng tinh vi và phổ
biến hơn Bằng cách phát hiện sự tương đồng trong mã nhị phân, ta có thể giúp
và tối ưu hóa mã nguồn
Cuối cùng, với sự tăng trưởng không ngừng về số lượng và chất lượng của các phần mềm độc hại và mã độc Việc phát hiện và phòng ngừa trở nên ngày càng
khó khăn Phân tích và phát hiện sự tương đồng trong mã nhị phân giúp chúng
ta nhanh chóng xác định và có các biện pháp phản ứng với các mối đe dọa mới
Bằng cách so sánh các đặc điểm giống nhau và sự tương đồng giữa các mã độc,
ta có thể tìm ra các mẫu tấn công và phát hiện các biến thể mới của các phần
mềm độc hại
Tóm lại Phát hiện sự tương đồng trong mã nhị phân có qua vai trò quan trọngtrong việc đảm bảo an toàn thông tin, phân tích phần mềm và phòng ngừa các
mối đe dọa đang ngày càng nguy hiểm
Do nhận thấy đây là một đề tài có tiềm năng, thêm nữa ngày nay các mô
hình học sâu đang ngày càng phát triển và đều mang lại các kết quả ấn tượng,
nhóm chúng tôi đã tiến hành nghiên cứu về phương pháp phát hiện sự tương
Trang 11đồng trong mã nhị phân dựa trên học sâu để tăng độ hiệu quả của việc phát
hiện sự tương đồng trong mã nhị phân truyền thống
Trong khóa luận của mình, chúng tôi đã đề xuất một công cụ phát hiến sựtương đồng trong mã nhị phân dựa trên học sâu mang tên DeepBin-Inspector
Công cụ này dựa vào phương pháp bytes2vec mà chúng tôi đã phát triển đểchuyển đổi các bytes code của chức năng nhị phân thành vector, sau đó đưa vào
mô hình học sâu Chúng tôi cũng đã thực hiện các thực nghiệm để đánh giá về
công cụ cũng như so sánh với các mô hình học máy khác, so sánh với các công
cụ phát hiện sự tương đồng trong mã nhị phân hiên đại hiện có
Trang 12Chương này giới thiệu về vấn đề chúng tôi sé nghiên cứu và các nghiên cứu
đã có trước đó Dồng thời chúng tôi trình bày phạm vi và cấu trúc của Khóa luận.
1.1 Giới thiệu vấn đề
Phát hiện sự tương đồng của mã nhị phân (binary code simitlarity detection)
là vấn đề lấy đầu vào là biểu diễn nhị phân của một cặp ham, một chương trình,
và tạo ra đầu ra là một giá trị số thể hiện được “độ tương đồng” giữa chúng
Hay có thể phát triển rộng hon là so sánh tập tin thực thi (nhị phân) để tìm ra
những đoạn mã giống nhau hoặc tương đồng, tìm kiếm một đoạn mã trong tậptin nhị phân có sự tương đồng với một đoạn mã nhị phân được cho trước (bàitoán tìm kiếm nhị phan)
Công việc này tuy nhìn có vẻ đơn giản nhưng có rất nhiều ứng dụng thực tế
Ví dụ điển hình là phát hiện lỗ hổng mới đã biết trên phần mềm, phát hiện đạo
văn phần mềm, phân tích bản vá, hay trong bối cảnh hiện nay các phần mềm
độc hại và mã độc ngày càng nhìu thì lĩnh vực này cũng có thể áp dụng vàoviệc phát hiện mã độc Tuy nhiên đây là một lĩnh vực không hề đễ để nghiên
cứu, vì trên thực tế, phần mềm thường được biên dịch với các bộ công cụ biêndịch khác nhau, trên các nền tảng kiến trúc hệ thống khác nhau, các lựa chọn
(option) dé biên dich cũng khác nhau hay thậm chí phiên bản phần mềm trước
khi biên dịch cũng đã có sự khác nhau rất nhiều
Trang 131.2 Giới thiệu những nghiên cứu liên quan
Các phương pháp để phát hiện sự tương đồng trong mã nhị phân truyềnthống chủ yếu dựa trên việc phân tích các tính năng cụ thể của mã nhị phân,đặc biệt là đồ thị luồng điều khiển (CFG - Control Flow Graph) của các hàm
Các phương pháp này chủ yếu tập trung vào việc phân tích và nắm bắt kiến
thức cú pháp của chương trình để phân tích và so sánh sự tương đồng giữa các
biểu thức, hoặc tối uu hóa cấu trúc điều khiển Hoặc cho dù là cùng một
tập tin nhị phân, nếu như sử dung các decompiler khác nhau, CFG trích
xuất ra được cũng rất khác nhau Do đó, việc so sánh đồ thị để tìm kiếmcác đường đi chung trở nên khó khăn và không đảm bảo được tính ổn định
của phương pháp.
e Tốn thời gian: Xây dựng CFG và thực hiện quá trình so sánh đồ thị là công
việc tốn thời gian, đặc biệt là đối với các chương trình nhị phân lớn và phức
tạp Việc phải xử lý và so sánh các basic block, cấu trúc điều khiển và cácđiểm nhảy trong mã nhị phân doi hỏi nguồn lực tính toán và bộ nhớ lớn
e Không hiệu quả: Việc chỉ phân tích dựa trên CFG có thể không đảm bảo
được độ chính xác cao trong việc phát hện sự tương đồng giữa các mã nhị
phân, có thể không đánh giá được các khía cạnh tĩnh của mã nhị phân như
các khối mã lệnh tương tự nhau nhưng có thứ tự và cấu trúc khác nhau
Vì những hạn chế trên, các phương pháp phát hiện tương đồng mã nhị phân
truyền thống đã trở nên không hiệu quả và không ổn định trong việc so sánh
sự tương đồng giữa các mã nhị phân Do đó, nghiên cứu các phương pháp mới
Trang 14tiên tiến tiên tiến đã trở thành xu hướng để cải thiện khả năng phát hiện tương
đồng mã nhị phân hiện tại
Kể từ khi học máy (Machine Learning) phát triển và ngày càng có nhiều
những nghiên cứu nhắm đến và những năm gần đây, học máy và học sâu cũngđược 4p dụng vào lĩnh vực phát hiện sự tương đồng của mã nhị phân và các giảipháp tiên tiến cho vấn đề này gần đây đều liên quan đến học máy
Một số giải pháp lấy cảm hứng từ xử lí ngôn ngữ tự nhiên - Natural languageprocessing (NLP) hay một số sử dụng mạng lưới thần kinh đồ thị - Graph Neural
Networks (GNN) Thậm chí một số kết hợp cả 2 để tìm hiểu cách biểu diễn các
khối cơ ban (Basic block) bằng kỹ thuật NLP và xử lý thêm các tính năng khối
cơ bản trong CFG bằng GNN như Zeping Yu và nhóm của minh [13] họ cũng đã
sử dung BERT [11], một mô hình mang thần kinh mở rộng xử dụng kiến trúc
tranformer để đào tạo trước mã nhị phân, sử dụng mạng thần kinh tích chập
-Convolutional Neural Network (CNN) trên các ma trận kề để trích xuất thôngtin Tuy hiệu quả có cải thiện nhưng, BERT cần một lượng dữ liệu lớn để đào
tạo trước mô hình, phải đi qua một mạng lưới thần kinh phức tạp với nhiều
tham số, tác động đáng kể đến hiệu suất và cần khả năng tính toán
nck! | Semantic-aware Hill Structural-aware
1
Blocks | —>
mài 7 [aes]⁄E
mà] [men]
Control flow graph ceeceec ceee- ceee- cee-e ce—-ec
Hình 1.1: Mô hình Order Matters - Kết hợp NLP va GNN trong phát hiện sựtương đồng mã nhị phân
Shalev và các cộng sự đã cho phát triển Zeek [S] thực hiện phân tích luồng
dữ liệu kết hợp với Vex-IR ở và chuyển đổi thành vector Sau đó, dùng mạng
Trang 15nơ-ron hai lớp để huân luyện và thực hiện phát hiện tương đồng giữa các kiếntrúc Cách tiếp cận này là đề xuất tiên tiến nhất kết hợp các biểu diễn trung
gian, phân tích luồng dữ liệu và học máy Công trình này vượt trội so với nghiêncứu trước đây là Gitz [2] cả về độ hiệu quả và tốc độ
Tiép theo Luca và các cộng sự đã giới thiệu SAFE [7], một công cu dựa trên
sự tiến bộ của xử lí ngôn ngữ tự nhiên, td ra hiệu quả cao trong việc phát hiện
sự tương đồng trong mã nhị phân kiên trúc chéo (cross-architecture, tức là biêndịch trên các kiến trúc khác nhau)
Cuối cùng Vào năm 2022, Hao Wang và các cộng sự đã phát triển jTrans
10]một mô hình phát hiện sự tương đồng dựa trên Transformer Công cụ này
ết hợp các mô hình NLP, nắm bắt ngữ nghĩa của các câu lệnh, cùng với trích
xuất CFG để nắm bắt thông tin luồng điều khiển để suy ra ngữ nghĩa của mã
nhị phân Bên cạnh đó công cụ này cũng đề xuất kết hợp thông tin luồng điều
hiển vào kiến trúc Transformer bằng cách sử đổi Transformer để nắm bắt thôngtin luồng điều khiển Phương pháp này đã tiến hành đá giá với một loạt các
công cụ trước đó như Genius [4], Gemini [12], SAFE [7], Asm2Vec [3], GraphEm
6] và OrderMatters [13] và cho thấy hiệu quả vượt trội
1.3 Tính ứng dụng
Nghiên cứu này được cảm hứng từ Zeek [8], chúng tôi dựa trên ý tưởng sử
dụng biểu diễn trung gian và hàm băm để chuyển đổi chức năng nhị phân thànhcác vector có thể đưa vào mô hình học sâu
Chúng tôi thấy rằng việc biểu diễn các chức năng nhị phân dưới dạng vector
có thể mang lại nhiều lợi ích trong nhiệm vụ phát hiện sự tương đồng Cùngvới sự phát triển của học sâu, chúng tôi muốn khai thác tiềm năng của học sâu
trong việc mô hình hóa và phân tích chức năng nhị phân.
Bằng cách áp phương pháp này chúng tôi hy vọng phát triển được một công
cụ mạnh mẽ và chính xác trong việc xác định các chức năng nhị phân tương
Trang 16đồng Mang lai kết quả tốt có thể đóng góp vào lĩnh vực phân tích mã độc, pháthiện lỗ hổng và kiểm tra bảo mật, giúp cải thiện quá trình phân tích mã nhị
phân và tăng cường khả năng phát hiện các mối đe dọa trong phần mềm
e Cấu trúc và độ phức tạp của mã nhị phân: Mã nhị phân thường có cấu trúc
phức tạp với nhiều khối mã, các hàm, gọi hàm, Điều này làm cho việcphân tích và so sánh trở nên phức tạp hơn, đòi hỏi phải xem xét nhiều khía
e Các tập tin nhị phân tuy cùng một mã nguồn, nhưng nếu biên dịch với các
ngữ cảnh khác nhau (mức độ tối ưu hóa, kiến trúc máy tính, trình biên
dịch, ) cũng có thể cho ra các tap tin nhị phân rất khác
Trang 171.5 Mục tiêu, đối tượng, và phạm vi nghiên cứu
1.5.1 Mục tiêu nghiên cứu
Ứng dụng học sâu để xây dựng và phát triển phương pháp phát hiện sự tương
đồng trong mã nhị phân thông qua quá trình chuyển đổi các chức năng nhị phân
thành vector.
1.5.2 Đối tượng nghiên cứu
Đối tượng nghiên cứu:
e Các thành phần liên quan đến tập tin nhị phân
e Biểu diễn trung gian - Intermediate Representation
e Học sâu
e Bytes2vec - Phương pháp chuyển từ bytes code sang vector
e DeepBin-Inspeetor - Mô hình phát hiện sự tương đồng trong mã nhị phân
dựa trên học sâu
1.5.3 Pham vi nghiên cứu
Trích xuất ngữ nghĩa, thuộc tinh của các chức năng nhị phan thông qua quá
trình chuyển đổi các chức năng nhị phân thành vector Thưc hiện xây dựng mô
hình phát hiện sự tương đồng trong mã nhị phân dựa trên học sâu và thưc hiệnđánh giá khả năng phát hiện sự tương đồng của các chức năng của phương pháp
đã nghiên cứu.
1.5.4 Cấu trúc khóa luận tốt nghiệp
Chúng tôi trình bày nội dung của khóa luận theo cấu trúc như sau:
Trang 18eC
hương 1: Giới thiệu tổng quan về đề tài của khóa luận tốt nghiệp va những
nghiên cứu tương tự có liên quan.
hương 2: Trình bày cơ sở lý thuyết và những kiến thức nền tảng phục vụ
hương 4: Trình bày các thí nghiệm và đánh giá.
hương 5: Kết luận và hướng phát triển của đề tài
Trang 19CHƯƠNG 2 CƠ SỞ LÝ THUYET
Trong chường này chúng tôi sẽ trình bày các cơ sở lý thuyết liên quan của nghiên cứu: Bao gồm các thành phần liên quan đến tập tin nhị phân, ngôn ngữ
biểu diễn trung gian (intermediate representation) và mô hình học sâu.
2.1 Các thành phần liên quan đến tập tin nhị phân
Trong nghiên cứu này chúng tôi chỉ chọn tệp thực thi của Linux- Executable
and Linkable Format (ELF) làm mẫu đối tượng nghiên cứu Điều này có các lí
đo sau đây:
e Độ phổ biến: Tập tin ELF là một định dang thực thi rất phổ biến
trong hệ điều hành Linux và Unix Định dạng này được sử dụng rộng rãi trong việc chạy các chương trình thực thi, thư viện và module.
e Da dạng thành phan: Các tập tin ELF chứ rất nhiều thông tin ngữ
nghĩa bên trong nó bao gồm thông tin về luồng điều khiển, các hàm,
các đoạn mã, các ký tự và dữ liệu khác Điều này tạo ra một môitrường phong phú để nghiên cứu phát hiện sự tương đồng và tìm hiểucách các hàm và chức năng trong mã nhị phân tương tác và liên quan
đến nhau.
e Tính ứng dụng cao: Phát hiện sự tương đồng trong các tập tin ELF
có thể được áp dụng trong nhiều lĩnh vực như phát hiện lỗ hổng, phântích mã độc, tìm kiếm và tái sử dụng mã nguồn, tối ưu hóa mã, kiểm
thử phần mềm, và nhiều ứng dụng khác Việc nghiên cứu và phát
triển các thành công một công cụ hiệu quả để phát hiện sự tương
Trang 20đồng trong tập tin ELF sẽ góp phần cải thiện hiệu suất và an toàncủa hệ thống.
thông tin luồng thực thi của nó (tương tự như hình 2.1)
Ôx499467: test rax, rax test rax, rax
Ôx49946A: js 9x49947C 9x49047C
@x40046C: mov rdi, rbx
@x40046F: call puts
9x400474: xor €ax, eax mov rdi, rbx lea rdi, stro
@x400476: add rsp, 20h call puts call sub 4995706
@x40047A: pop rbx xor eax, eax jmp @x400476
Basic block là một khái niệm u dụng để mô tả một đoạn mã máy có một
số điều kiện chuyển tiếp duy nhất, tức là nếu một điều kiện được đáp ứng, thìchương trình sẽ chuyển tiếp đến một basic block tiếp theo và trong một basic
block, mã được thực thi từ đầu đến cuối mà không có sự nhảy hoặc rẽ nhánh
trong basic block đó.Trong file nhị phan, basic block là một đoạn mã máy được
Trang 21tạo ra từ một số lệnh máy và thường được xem như là một đơn dùng trong việc
Hình 2.2: Hai basic block kế tiếp nhau được trích xuất khí dùng IDA
2.1.3 Biểu dé luồng điều khiển - Control flow graph
Control Flow Graph (CFG) là một biểu đồ đại diện cho cấu trúc điều khiểncủa một chương trình máy tính Nó biểu thị các luồng thực thi của chương trình
từ các câu lệnh và điều kiện điều khiển CFG được sử dung trong phân tích và kiểm tra mã nguồn để hiểu cấu trúc logic của chương trình.
Trong một CFG, các câu lệnh trong chương trình được biểu diễn dưới dạng
các nút (nodes), trong đó mỗi nút đại điện cho một câu lệnh hoặc một basic
block Các nút được kết nối bởi các cạnh (edges), biểu thị các quan hệ luồng đi giữa các nút Các cạnh có thể được đánh số hoặc gán các nhãn để đại diện cho
điều kiện điều khiển (như "if", "else", "while", )
Trong phát hiện sự tương đồng trong mã nhị phân, CFG được sử dụng để so
sánh cấu trúc điều khiển của các chương trình khác nhau và xác định sự tương
Trang 22đồng giữa chúng Các phương pháp phát hiện sự tương đồng thường dựa trên
việc so sánh các đặc trưng của CFG, quan hệ điều khiển và đường đi thực thi.Thông qua CFG, có thể xác định sự tương đồng giữa các chương trình nhị
phân, phát hiện mã độc hoặc nhận diện các mẫu tấn công trong mã nhị phân
CFG cũng cung cấp một cách để phân tích và tối ưu hóa mã nhị phân, giúp
tăng hiệu suất và đảm bảo khả năng bảo mật của các chương trình
Nghiên cứu này của chúng tôi, sử dụng khái niệm về các Strand, một đơn vị
cơ bản được giới thiệu trong [1], đây là khái niệm có vai trò quan trọng trong phương pháp trích xuất và phân tích mã nhị phân này Strand là một tập hợp
các câu lệnh liên quan nhau mà khi kết hợp lại, chúng sẽ tạo thành một chuỗi
hoàn chỉnh thực hiện một nhiệm vụ nào đó trong chương trình.
Mỗi Strand trong chương trình có nhiệm vụ tính toán giá trị của một biến
nhất định Bằng cách xem xét các Strand riêng biệt, chúng tôi có thể nắm bắt
được các phụ thuộc dữ liệu và luồng điều khiển cụ thể liên quan đến biến đó.
Điều này cho phép chúng tôi hiểu rõ hơn về cách các biến được sử dụng và thay
Trang 23đổi trong chương trình.
Với việc ấp dụng khái niệm về Strand vào nghiên cứu, chúng tôi hy vọng xâydung một phương pháp trích xuất thông minh và mạnh mẽ, cho phép chúng tôikhám phá và nắm bắt tốt hơn về cấu trúc và chức năng của các chương trình
mã nhị phan.
2.1.5 Decompiler
Một decompiler là một công cu phần mềm có khả năng chuyển đổi mã máy(bytes code) thành mã nguồn có cấu trúc cao hơn, chẳng hạn như mã assembly.Việc sử dung decompiler có thể giúp phân tích và nằm bắt rõ hơn về chức năng
và logic của một chương trình đã được biên dịch Hiện nay có rất nhìu decompiler
khác nhau như: IDA, Ghidra, Radare2, RetDec,
Thong thường các decompiler có thể có các công dụng như sau:
e Trích xuất chức năng: Decompiler cho phép chuyển đổi mã máy không
cấu trúc thành dạng mã có cấu trúc ( thường là assembly), giúp dễ
dàng hiểu và phân tích các chức năng trong mã nhị phân
e Tìm lỗi và sửa chữa: Decompiler hữu ích trong việc phát hiện và sửa
chữa các chương trình bị hỏng hoặc lỗi Bằng cách chuyển đổi mã máy thành mã nguồn có cấu trúc, người phát triển có thể hiểu rõ hơn về
lỗi Hơn nữa decompiler cho phép sửa chửa các bytes code trực tiếp
lên chương trình nên sẽ dễ dàng sửa lỗi.
e Phân tích mã độc: Decompiler có thể dùng để phân tích mã độc với
khả năng để phát hiện và loại bỏ các phần tử gây hại trong chương
trình.
e Tương tác với phần mềm: Thông thường các decompiler hiện đại cũngcho phép việc gỡ lỗi trực tiếp chương trình
Trang 24e Khả năng hỗ trợ nhiều kiến trúc: IDA hỗ trợ nhiều kiến trúc xử lý
khác nhau, cho phép phân tích mã nhị phân trên các nền tảng khácnhau như x86, ARM, MIPS và nhiều hơn nữa Diều này đảm bảo rằng
chúng tôi có thể phan tích và trích xuất thông tin từ các tập tin nhị
phân đa dạng.
e Dễ sứ dung: IDA có giao diện đồ hoa thân thiện và dé sử dụng, giúp
chúng tôi dễ dàng tìm hiểu và thao tác với công cụ Các tính năng
và chức năng được tổ chức một cách rõ ràng, cho phép chúng tôi dễ
đàng thao tác và điều hướng trong quá trình phân tích mã nhị phân.
e Tính linh hoạt và mở rộng: IDA cung cấp các khả năng mở rộng và
plugin, cho phép chúng tôi tùy chỉnh và mở rộng khả năng của công
Trang 25cụ để phù hợp với nhu cầu cụ thể của chúng tôi Đặc biệt IDA còn
cung cấp bộ API với tập hợp các hàm cho phép chúng tôi tương tácvới IDA từ các chương trình bên ngoài Bằng cách sử dụng IDA API,
chúng tôi có thể tự động hóa các tác vụ phân tích và trích xuất cho
công cụ của mình.
e Hỗ trợ phân tích động: Ngoài việc phân tích tĩnh, IDA cũng cung cấp
khả năng phân tích động Diều này cho phép chúng tôi xem các giá
trị biến, theo đõi luồng điều khiển, và thậm chí thực hiện gỡ rối trong
quá trình phân tích mã nhị phãn.
e Cộng đồng và tài liệu phong phú: IDA có một cộng đồng người dùng lớn, cung cấp sự hỗ trợ và tài liệu phong phú Diều này giúp chúng tôi dé dàng xử lí khi gặp van dé.
2.1.5.2 IDA Python API
IDA Python API là một thành phan quan trong trong hệ thống IDA, nó cung
cấp một giao diện lập trình cho phép tương tác và mở rộng IDA bằng ngôn ngữ
Python Với IDA Python API, chúng tôi có khả năng tự động hóa các tác vụ
phân tích các tập tin nhị phân trong nghiên cứu của mình.
Một số điểm nổi bật về IDA Python API:
e Truy cập thông tin trong tập tin nhị phân: IDA Python API cho phépchúng tôi cập và trích xuất thông tin về các thành phần trong tập tinnhị phân như các chức năng, basie block, địa chỉ, bằng cách sử dụng
các hàm như get_ func_ name(), get_ func_ offset(), get_operand_ value get_ segm_ start()
e Khả năng tự động hóa : Với IDA Python API, chúng tôi có thể các tác
vụ phân tích tập tin nhị phân một cách tự động thông qua sử dụng các hàm như analyze_ area(), auto_ wait(), wait_ for sync()
Trang 26e Tích hợp với các công cụ khác: Bằng cách sử dụng các giao thức và
hàm liên kết IDA Python API có thể tích hợp IDA với các công cụ
khác Điều này rất giúp ích cho chúng tôi trong việc xây dựng công
cụ hoàn chỉnh trong phương phấp này.
2.2 Biểu diễn trung gian - Intermediate Representation
Intermediate representation (IR) là một cấu trúc dữ liệu được sử dụng bởi
trình biên dich để biểu diễn mã nguồn Biểu diễn trung gian được thiết kế để
dé dàng quan sát đoạn mã thay vì dang bytes code không có ngữ nghĩa Đồng
thời trong phân tích phần mềm, việc chuyển đổi sang dạng biểu diễn trung gian
có lợi cho quá trình xử lý tiếp theo, chẳng hạn như tối wu hóa mã và trích xuấtngữ nghĩa Một ngôn ngữ biểu dién trung gian tốt phải có khả năng biểu diễn
chính xác ngữ nghĩa cho mã nguồn ban đầu mà không làm mat thông tin.
2.2.1 Vex Intermediate Representation (Vex-IR)
Một trong những biểu diễn trung gian phổ biến được sử dung là Vex
Inter-mediate Representation (Vex-IR) Vex-IR là một ngôn ngữ trung gian dựa trên
mã máy, được sử dụng để biểu diễn mã nhị phân dưới dạng các biểu thức và
lệnh có cấu trúc.
Hiện nay có rất nhiều ngôn ngữ biểu diễn trung gian như LLVM-IR, BIL,
nhưng trong nghiên cứu nay chúng tôi lựa chọn Vex-IR vì các lí do sau:
e Tính nhất quán với phân tích mã nhị phân: Vex-IR được thiết kế đặc
biệt cho phân tích mã nhị phân, cho phép biểu diễn hành vi và ngữ
nghĩa của mã nhị phân một cách chính xác Các IR khác như LLVM
IR hoặc BIL thường được phát triển cho mục đích biên dịch hoặc tối
ưu hóa mã nguồn, không phan ánh đầy đủ các đặc điểm cần thiết cho
phân tích mã nhị phân.
Trang 27e Hỗ trợ đa nền tảng: Vex-IR được thiết kế để hỗ trợ nhiều kiến trúc
máy tính khác nhau Điều này cho phép chúng ta ấp dụng phân tích
và phát hiện sự tương đồng trên các nền tảng khác nhau mà không
cần thay đổi cấu trúc của mã nhị phân.
e Có các đặc trưng phân tích mạnh mẽ: Vex-IR cung cấp một tập hợp
các đặc trưng phân tích mạnh mẽ để thể hiện cấu trúc và hành vi của
ma nhị phan Ví dụ, nó cho phép chúng ta xác định các basic block
trong mã nhị phân, các nhánh điều kiện, các phép gán giá trị, cáclệnh nhảy và các khối lệnh liên quan Các đặc trưng cung cấp thông
tin quan trọng để tìm hiểu sự tương đồng giữa các mã nhị phân
e Ngoài ra Vex-IR còn có framework hỗ trợ rất mạnh mẽ là angr với pyvex được tích hop.
2.2.2 Đặc điểm va cấu trúc của Vex-IR
Dé xử lý các kiến trúc rất đa dạng, việc thực hiện các phân tích trên Vex-IR
là rất hữu ích Vex-IR trừu tượng hóa các khác biệt về kiến trúc khi xứ lý các
kiến trúc khác nhau, cho phép chạy một phân tích duy nhất trên tất cả chúng.
Với Vex-IR, ta có thể trừu tượng hóa nhiều khía cạnh khác nhau:
e Thanh ghi (Register): Các kiến trúc máy tính khác nhau có số lượng và tên các thanh ghi khác nhau Tuy nhiên, Vex-IR trừu tượng
hóa các thanh ghi này thành một không gian bộ nhớ riêng biệt, chophép truy cập thông qua các offset số nguyên Diều này giúp ta xứ lýcác đăng ký trên các nền tảng khác nhau một cách nhất quán
e Truy cập bộ nhớ (Memory access): Các kiến trúc khác nhau có
cách truy cập bộ nhớ khác nhau, vi dụ như chế độ little-endian và
big-endian của ARM Vex-IR giúp trừu tượng đi những khác biệt nay
để ta có thể xử lý truy cập bộ nhớ một cách đồng nhất
Trang 28e Phân đoạn bộ nhớ (Memory segmentation): Một số kiến trúc
như x86 hỗ trợ phân đoạn bộ nhớ thông qua việc sử dụng các đăng
ký phân đoạn đặc biệt Vex-IR hiểu các cơ chế truy cập bộ nhớ như
này.
e Tác động phụ của các câu lệnh (Instruction side-effects): Hầu
hết các câu lệnh có tác động phụ, ví dụ như cập nhật cờ điều kiệntrong chế độ Thumb trên ARM, hoặc cập nhật con trỏ ngăn xếp trong
các chỉ thị day (push) ngăn xếp (stack) Dé theo doi những tác động
phụ này một cách hệ thống trong phân tích sẽ rất khó khăn Vì vậy,
Vex-IR làm cho những tác động phụ này rõ ràng và dễ xử lý.
Vex-IR là một biểu diễn không phụ thuộc vào kiến trúc, không có tác độngphụ, và có thể đại diện cho nhiều ngôn ngữ máy mục tiêu Nó trừu tượng hóa
mã máy thành một biểu điễn được thiết kế để đễ dàng phân tích chương trình.Biểu diễn này bao gồm năm loại đối tượng chính:
e Biểu thức (Expressions): Biểu diễn IR đại diện cho giá trị được
tính toán hoặc hằng số Điều này bao gồm việc tải dữ liệu từ bộ nhớ,
đọc từ thanh ghi và kết quả của các phép toán số học Một số loại
biểu thức Vex-IR được thể hiện ở bảng 2.1
Trang 29Bảng 2.1: Vi dụ một số loại biểu thức Vex-IR
ghi
Load Memory | Giá tri được lưu trữ tại một dia chi | LDle:132 /
bộ nhớ, với địa chỉ được xác định bởi | LDbe : 164
biểu thức Vex-IR khácOperation Kết quả của một phép toán Vex-IR | Add32
cụ thể, áp dụng cho các đối số Biểu
Helper Func- | VEX sử dụng các hàm trợ giúp của | function_name ()
tion € cho một số phép toán, ví dụ như
tính toán các thanh ghi cờ điều kiện
ác hàm này trả về biểu thức
Vex-IR
¢ Thao tác (Operations): Thao tác IR mô tả việc thay đổi Biểu
diễn IR Điều này bao gồm phép toán số nguyên, phép toán số dấu
chấm động, phép toán bit, Áp dụng một thao tác IR vào Biểu thức
IR cho kết quả là một Biểu thức IR
Trang 30e Biến tạm thời (Temporary variables): Vex-IR sử dụng biến tạmthời như các thanh ghi nội bộ: Biểu thức IR được lưu trữ trong cácbiến tạm thời trước khi sử dụng Ta có thể truy xuất nội dung củabiến tạm thời bằng cách sử dụng Biểu thức IR Các biến tạm thời này
được đánh số từ t0.
e Câu lệnh (Statements): Câu lệnh IR mô hình các thay đổi trạng
thái của kiến trúc ban đầu, chẳng hạn như việc lưu trữ dữ liệu vào bộnhớ và ghi vào thanh ghi Câu lệnh IR sử dụng Biểu diễn IR cho các
giá trị mà chúng cần Ví dụ, một câu lệnh IR lưu trữ dữ liệu vào bộ
nhớ sử dụng biểu thức IR cho địa chỉ và một biểu thức IR khác cho
nội dung Một số loại câu lệnh Vex-IR được thể hiện ở bảng 2.2
Bang 2.2: Vi dụ một số loại cau lệnh Vea-IR
Câu lệnh | Ý nghĩa Ví dụ
Vex-IR
Write Temp Dat biến tam thời Vex thành giá tri WrTmp(t1)
của biểu thức IR đã cho = (IR
Expression)
Put Register Cap nhật một thanh ghi với giá trị | PUT(16) = (IR
của biểu thức IR đã cho Expression)
Store Memory | Cập nhật một vị trí trong bộ nhớ, | ST1e(0x1000)
được cung cấp dưới dạng biểu thức | = (IR
IR, với một giá trị, cũng được cung | Expression))
cấp dưới dạng biểu thức IR
Exit Thoát có điều kiện khỏi một basic | if (condition)
block, với mục tiêu nhảy được chỉ | goto (Boring)
định bởi biểu thức IR và điều kiện | 0x4000A00: 132cũng được chỉ định bởi biểu thức IR
Trang 31e Khối (Blocks): Một Khối IR là một tap hợp các câu lệnh IR, đại
điện cho một basic block trong kiến trúc ban đầu (gọi là "IR Super
Block" hoặc "IRSB").
Để dé hình dung hơn về các biểu diễn trong Vex-IR, chúng tôi để một đoạn
mã Vex-IR đã được chuyển từ một đoạn bytes code ở bên dưới
2.3 Học sâu (Deep Learning)
Học sâu là một lĩnh vực của Trí tuệ nhân tao (Artificial Intelligence) tập
trung vào việc xây dựng và huấn luyện các mô hình máy học sâu để tự động học
từ dit liệu cho trước Phương pháp này được lấy cảm hứng từ cách hoạt động
Trang 32của não người, trong đó mạng nơ-ron sinh học trong não xử lý thông tin qua
việc kết nối các nút nơ-ron
Mục tiêu chính của Học sâu là xây dựng các mô hình máy tính có khả năng
học và hiểu dữ liệu phức tạp để đưa ra dự đoán, phân loại, và giải quyết các
bài toán phức tạp Học sâu có ứng dụng rộng rãi trong nhiều lĩnh vực, bao gồm
nhận dạng hình ảnh và video, xử lý ngôn ngữ tự nhiên, nhận dạng giọng nói,
phân tích dit liệu y tế, xe tự hành, và nhiều lĩnh vực khác
2.3.1 Một số thành phần chính của mang no-ron
Mô hình Mạng Nơ-ron thông thường sẽ có thành phần cơ bản sau:
Lớp đầu vào (Input layer)
e Lớp đầu vào này nhận dữ liệu đầu vào và truyền chúng vào mang
nơ-ron để xử lý
e Kích thước của lớp đầu vào phụ thuộc vào đặc điểm của dữ liệu và
mục tiêu của bài toán cần giải quyết
Lớp ẩn (Hidden layers)
e Lớp ẩn là nơi xảy ra quá trình biến đổi dữ liệu và trích xuất đặc trưng
e Mỗi lớp an sẽ có một số nút nơ-ron và các kết nối giữa chúng để truyền thông tin qua mạng nơ-ron.
Lớp đầu ra (Output layer)
e Lớp này nhận thông tin từ các lớp ẩn và đưa ra kết quả cuối cùng của
mô hình Hình 2.5
Trang 33@ input Layer @HiddenLayer @ Output Layer
Hình 2.5: Mô hình mang no-ron
2.3.2 Một số các khái niệm khác
Overfitting
Overfitting là hiện tượng trong mang no-ron khi mô hình quá tinh chỉnh cho
tập dữ liệu huấn luyện cụ thể mà nó không mang tổng quát hóa tốt cho dit liệu
mới mà không biết trước Mạng nơ-ron có thể học các mẫu và quy tắc phức tạp
trong tập dữ liệu huấn luyện, đến mức nó ghi nhớ cả các nhiễu và chi tiết không
cần thiết Diều này dẫn đến mô hình quá phức tạp và khả năng tổng quát hoá
kém.
Các dấu hiệu của overfitting trong mạng nơ-ron thường là việc đánh giá trêntập dữ liệu huấn luyện thì cho kết quả rất tốt, nhưng khi đánh giá trên một tậpkhác thì kết quả lại có sự khác biệt lớn
Underfitting
Trang 34Underfitting là hiện tượng trong mạng nơ-ron không được cung cấp đủ thông
tin và dữ liệu cho quá trình huấn luyện Trong trường hợp này, mạng nơ-ron chưa
đủ khả năng học các mẫu phức tạp và quy tắc trong dữ liệu huấn luyện.
Các dau hiệu của underfitting trong mạng nơ-ron thường là hiệu suất thấp
trên cả tập dữ liệu dùng để huấn luyện và tập dữ liệu dùng để kiểm tra.
Lan truyền thuận (forward propagation)
Lan truyền thuận là quá trình dữ liệu khi được đưa vào mô hình sẽ đi từ các
lớp đầu vào đến các lớp an rồi đến lớp đầu ra Trong quá trình lan truyền thuận,
đầu vào của mỗi nơ-ron trong mạng được tính toán dựa trên các trọng số kết
nối và hàm kích hoạt tương ứng
Quá trình lan truyền thuận bắt đầu bằng việc gán giá trị đầu vào cho các
nơ-ron trong lớp đầu vào Sau đó, thông qua các kết nối trọng số giữa các nơ-ron,
dữ liệu được truyền qua các lớp an của mạng nơ-ron Mỗi no-ron trong mỗi lớp
tính toán giá trị đầu ra của nó dựa trên giá trị đầu vào và hàm kích hoạt của
nó Quá trình này lặp lại cho đến khi dữ liệu được truyền qua tất cả các lớp ẩn
va đạt được lớp đầu ra Trong quá trình lan truyền thuận, mạng nơ-ron tính toán giá trị đầu ra dự đoán cho mỗi mẫu dữ liệu đầu vào Quá trình này cho phép mạng nơ-ron học và thực hiện các dự đoán dựa trên các trọng số được điều chỉnh trong quá trình huấn luyện
Lan truyền ngược (back propagation)
Lan truyền ngược là một thuật toán sử dụng để tính toán đạo hàm của hàm mất mát theo các trọng số của mạng nơ-ron, từ đó điều chỉnh các trọng số để
tối ưu hóa mạng.
Quá trình lan truyền ngược bắt đầu từ việc tính toán đầu ra của mạng nơ-ron dựa trên dữ liệu huấn luyện và các trọng số hiện tại Sau đó, đạo hàm của hàm mat mát được tính toán đối với các trọng số của mang Dao hàm này cho biết mức độ ảnh hưởng của từng trọng số đến sự sai khác giữa kết quả dự đoán và giá trị thực tế.
Trang 35Tiếp theo, đạo hàm được truyền ngược từ lớp đầu ra qua các lớp trước đó
của mạng Tại mỗi nơ-ron, đạo hàm được tính dựa trên đạo hàm của các nơ-ron
trong lớp tiếp theo và trọng số kết nối tương ứng Quá trình này tiếp tục cho đến khi đạo hàm được tính toán cho tất cả các nơ-ron trong mạng.
Sau khi đã tính toán được đạo hàm của hàm mất mát theo các trọng số, các trọng số được điều chỉnh sử dụng một thuật toán tối ưu hóa như gradient descent Thuật toán gradient descent sẽ cập nhật các trọng số theo hướng giảm đạo hàm, từ đó làm giảm hàm mất mát và cải thiện hiệu suất của mạng.
Hàm kích hoạt (Activation function)
Hàm kích hoạt được áp dụng cho mỗi nút nơ-ron trong các lớp ẩn và lớp đầu
ra để tạo ra các đầu ra phi tuyến tính và đưa ra quyết định Chúng đóng vai
trò quan trọng trong việc tạo ra độ linh hoạt và khả năng học của mạng nơ-ron.
Một số loại hàm kích hoạt là:
e Hàm Sigmoid: Ham sigmoid ánh xạ một giá trị đầu vào vào khoảng
(0, 1) Tức là khi áp dụng hàm này cho một giá trị đầu vào, nó trả về một giá tri trong khoảng từ 0 đến 1.
e Hàm Tanh: Tương tự như hàm sigmoid, hàm tanh ánh xạ giá trị đầu
vào vào khoảng (-1, 1) Nó giúp tăng cường độ dốc của đầu ra so với
hàm sigmoid.
e Ham ReLU (Rectified Linear Unit): Hàm nay trả về giá trị đầu vào
nếu kết quả tính toán lớn hơn 0 và trả về 0 nếu nó nhỏ hơn hoặc bằng
0 Ham này giúp mô hình học nhanh hơn và dễ dang tính toán.
e Ham Leaky ReLU: Tương tự như ReLU, ham Leaky ReLU trả về giá
trị đầu vào nếu kết quả tính toán lớn hơn 0 và trả về một giá trị nhỏ hơn 0 nhân với một hệ số nhỏ nếu nó nhỏ hơn hoặc bằng 0 Điều này giúp khắc phục vấn dé "neuron chết" trong hàm ReLU.
e Hàm Softmax: Dược sử dụng trong lớp cuối cùng của mạng nơ-ron để
Trang 36ánh xạ đầu ra thành một phan phối xác suất Ham softmax tính toán
đầu ra sao cho tổng các giá trị đầu ra bằng 1, giúp giải quyết bài toán
phân loại đa lớp.
Mỗi hàm kích hoạt có ưu điểm và đặc điểm riêng, và sự lựa chọn của hàm kích
hoạt phụ thuộc vào kiến trúc mạng đang sử dung, yêu cầu của bài toán, loại dit
liệu,
Ham mất mát (loss function)
Hàm mat mát là một hàm số dùng để do lường sự khác nhau giữa kết quả
dự đoán của mô hình và kết quả thực tế của tập dữ liệu Hàm này có nhiệm vụ
đánh khả năng dự đoán của mô hình và từ đó cung cấp 1 phản hồi để thay đổi
các trọng số của mô hình
Thông thường trong huấn luyên, một trong các mục tiêu là tìm ra các tham
số của mô hình sao cho hàm mat mát đạt giá trị nhỏ nhất
Co nhiều loại hàm mat mát khác nhau, dưới đây là một số hàm mất mát phổ
biến:
e Hàm Cross-Entropy: Ham này đo lường độ chính xác của dự đoán so với
nhãn thực tế và cố gắng tối thiểu hóa khoảng cách giữa chúng Thường
được sử dụng trong các bài toán phân loại.
e Hàm Mean Squared Error (MSE): Hàm này đo lường chênh lệch bình
phương giữa giá trị dự đoán và giá trị thực tế Mục tiêu là tối thiểu hóa sai
số trung bình Thường được sử dụng trong bài toán hồi quy.
e Hàm Binary Cross-Entropy: Dược sử dụng trong bài toán phân loại nhị
phân, hàm này đo lường chênh lệch giữa xác suất dự đoán và nhãn thực tế.
e Ham Categorical Cross-Entropy: Được sử dụng trong bài toán phân loại da
lớp, hàm này đo lường chênh lệch giữa phân phối xác suất dự đoán và nhãn thực tế.
Trang 37Việc lựa chon hàm mat mát đóng vai trò quan trọng trong việc tối đa hiêu suất của mô hình.
Batch size và Epoch
Batch size là số lượng mẫu dữ liệu được truyền qua mạng nơ-ron trong mỗi
lần cập nhật trọng số Thay vì truyền từng mẫu dữ liệu một, chúng ta chia dit liệu huấn luyện thành các batch có kích thước nhất định Batch size ảnh hưởng đến hiệu suất và tốc độ huấn luyện của mô hình.
e Batch size lớn: Nếu chọn batch size lớn, mô hình sẽ được cập nhật trọng số
ít lần hơn trong mỗi epoch, giúp tăng tốc độ huấn luyện vì phần lớn thời gian chạy sẽ được dành cho việc tính toán và không cần truyền dữ liệu qua
mạng Tuy nhiên, đòi hỏi bộ nhớ lớn hơn và có thể không khả thi đối với
bộ nhớ hạn ché.
e Batch size nhỏ: Nếu chọn batch size nhỏ, mô hình sẽ được cập nhật trọng
số nhiều lần hơn trong mỗi epoch, làm cho quá trình huấn luyện chậm hơn
vì cần truyền dt liệu qua mạng cho mỗi lần cập nhật Tuy nhiên, batch size
nhỏ có thể giúp mô hình hội tụ tốt hơn và có khả năng tìm được điểm tối
ưu cục bộ tốt hơn
Epoch là một vòng lặp hoàn chỉnh mà mô hình học được toàn bộ tập dữ liệu
huấn luyện đã chuẩn bị Số lượng epoch tức là số lần mà mô hình được huấn
luyện trên toàn bộ dữ liệu
e Nếu chọn số lượng epoch nhỏ, thời gian huấn luyện sẽ it,có thể dẫn đến
underfitting, tức là mô hình không học được đủ thông tin từ dữ liệu
e Số lượng epoch lớn: Nếu chọn số lượng epoch lớn, mô hình sẽ được huấn
luyện trong một khoảng thời gian dài, có thể dẫn đến overfitting, tức là mô hình học quá mức các đặc trưng của dữ liệu huấn luyện cụ thể, dẫn đến
hiệu suất kém trên dữ liệu mới
Trang 38Để dễ hình dung hơn về 2 tham số này, chúng tôi lấy một ví dụ như sau:
Gia sử chúng tôi dang có một bữa ăn com Thay vi ăn một lần hết một chén cơm, chứng tôi muốn ăn từng muỗng cơm cho đến khi hết chén đó, sau đó chúng
tôi chuuển sang chén cơm khác Trong quá trành nàu, các khái niệm sau được áp
dung:
e Tap dataset: Tương ứng uới tong lượng com trong toàn bộ bữa ăn
e Batch size: Số lượng hạt cơm trong mỗi muỗng cơm chứng tôi ăn mỗi lần.
Điều nay quyét định số lượng dé liệu mà chúng tôi xử ly cùng một lúc trong quá trình huấn luyện.
e Epoch: Số bát cơm chứng tôi ăn trong toàn bộ quá trình.
Ví du nay giúp hành dung vé cách batch size va epoch hoạt động trong quá trinh
huấn luyện mạng no-ron Chúng tôi chia tập dataset thành các batch (muỗng
com) uới kích thước được định trước (chén cơm - batch size) Khi huấn luyện,
chúng tôi sẽ lặp lại quá trành nay theo số lượng epoch, tức là ăn nhiều chén cơm
tương ứng uới số lần lặp Mục tiêu là đi qua toàn bộ tập dataset (hết chén cơm)
va cập nhật các tham số của mô hành để tối uu hóa.
Ma trận nhầm lẫn (confusion matrix)
Đây là một công cụ quan trọng trong đánh giá hiệu suất của các mô hình học
máy và các bài toán phân loại Nó được sử dụng để mô tả sự tương quan giữa
các dự đoán của mô hình va các nhãn thực tế của dif liệu.
Confusion matrix có dạng một bảng vuông chứa các giá trị đại diện cho các
kết quả phân loại Bảng được chia thành các ô, trong đó hàng thể hiện nhãn thực tế và cột thể hiện nhãn dự đoán Nó giúp chúng ta có cái nhìn tổng quan về
khả năng phân loại của mô hình, từ đó tính toán các độ đo đánh giá hiệu suất như accuracy, precision, recall, F1-seore, và các độ đo khác Bằng cách phân tích
confusion matrix, ta có thể hiểu rõ hơn về các loại lỗi phân loại mà mô hình gặp phải và điều chỉnh mô hình để cải thiện độ chính xác
Trang 392.3.3 Một số kiến trúc mang no-ron phổ biến trong lĩnh vuc hoc
sâu
Mạng nơ-ron Tích chập (Convolutional Neural Network - CNN)
e Kiến trúc CNN được sử dụng chủ yếu trong xử lý ảnh.
e Bao gồm các lớp tích chap (convolutional) để trích xuất đặc trưng từ
ảnh và các lớp gộp (pooling layers) để giảm kích thước của đặc trưng.
e Cuối cùng, các lớp kết nối đầy đủ (fully connected layers) được sử
convolution + pooling layers fully connected layers Nx binary classification
Hình 2.6: Ví dụ vé một mô hành CNN dé phân loại hành ảnh.
Mạng nơ-ron Hồi quy (Recurrent Neural Network - RNN)
e Kiến trúc RNN được sử dụng trong xử lý dữ liệu tuần tự như ngôn
ngữ tự nhiên và dữ liệu chuỗi thời gian.
e Có khả năng lưu trữ thông tin trang thái trước đó và áp dung lặp lại
cho dữ liệu mới.
e Mạng LSTM (Long Short-Term Memory) va GRU (Gated Recurrent
Unit) là các biến thé pho biến của RNN giúp khắc phục van đề mất
thông tin dài hạn.
Trang 40Mang sinh đối nghịch (Generative Adversarial Network - GAN)
e Kiến trúc GAN bao gồm hai mạng nơ-ron: mang sinh (generator) va
mạng phân biệt (discriminator).
e Mang sinh cố gắng tao ra dit liệu mới tương tự với dữ liệu huấn luyện,
trong khi mang phân biệt cố gắng phân biệt giữa dữ liệu thực và dit
liệu giả tạo.
e Quá trình huấn luyện GAN diễn ra thông qua việc tối ưu hóa đồng
thời cả hai mạng, đạt được sự cân bằng giữa mạng sinh và mạng phân
Ví dụ trong việc mô tả hình ảnh, có thể kết hợp CNN và RNN CNN sẽ được
sử dụng để phát hiện và trích xuất các tính chất có trong ảnh sau đó RNN sẽ
sinh ra các câu có mô tả có ý nghĩa cho bức ảnh.