1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp An toàn thông tin: 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 phần mềm

86 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề 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 phần mềm
Tác giả Lê Trần Thành Nhân
Người hướng dẫn TS. Nguyễn Tấn Cầm, ThS. Đỗ Thị Thu Hiền
Trường học Đại học Công nghệ Thông tin - ĐHQG TP.HCM
Chuyên ngành An Toàn Thông Tin
Thể loại Khóa Luận Tốt Nghiệp
Năm xuất bản 2023
Thành phố TP.Hồ Chí Minh
Định dạng
Số trang 86
Dung lượng 31,59 MB

Nội dung

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 1

KHÓ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 2

Trong 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 3

DANH 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 4

2.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 5

43

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 6

DANH 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 7

DANH 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 9

DANH 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 10

Phá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 12

Chươ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 13

1.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 14

tiê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 15

nơ-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 17

1.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 18

eC

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 19

CHƯƠ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 21

tạ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 24

e 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 25

cụ để 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 26

e 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 27

e 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 28

e 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 29

Bả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 30

e 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 31

e 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 32

củ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 34

Underfitting 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 35

Tiế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 37

Việ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 39

2.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 40

Mang 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.

Ngày đăng: 02/10/2024, 03:34

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN