Sau đó, chúng tôi sẽ đánh giá hiệu quả của mô hình đểxuất trên những kịch bản phát hiện tương đồng và so sánh các công cụ BCSD liênquan và đạt được một kết quả tương đối vượt trội so với
Trang 1NGUYEN HUNG THINH - 20521963
VU HOANG THACH THIET - 20521957
KHÓA LUẬN TOTNGHIEP PHƯƠNG PHÁP PHÁT HIỆN SỰ TƯƠNG ĐÔNG MÃ NHỊ PHAN TRONG CHUONG TRINH PHAN MEM DUA TREN
NHUNG HAM NHI PHAN VA HOC SAUBINARY CODE SIMILARITY DETECTION IN SOFTWARE PROGRAM
USING FUNCTION EMBEDDING AND DEEP LEARNING
CU NHAN NGANH AN TOAN THONG TIN
GIANG VIEN HUONG DAN:
ThS Đỗ Thị Thu Hiền
ThS Bùi Thanh Bình
TP Hồ Chí Minh, 2024
Trang 2LỜI CẢM ƠN
Trong quá trình thực hiện và nghiên cứu khóa luận tốt nghiệp, nhóm chúng em
đã nhận được nhiều sự hướng dẫn, nhiều sự giúp đỡ, cùng với các ý kiến đónggóp quý báu đến từ các giảng viên hướng dẫn và giảng viên bộ môn Nhóm xinđược gửi lời cảm ơn và biết ơn chân thành đến cô Đỗ Thị Thu Hiển và thay Bùi
Thanh Bình vì đã trực tiếp làm giảng viên hướng dẫn và đã cùng đồng hành, đã
vô cùng nhiệt tình giúp đỡ chúng em trong suốt thời gian qua
Nhóm xin gửi lời cảm ơn đến bố mẹ, người thân và bạn bè đã hỗ trợ, động viên,tin tưởng và đã luôn làm hậu phương vững chắc trong suốt quá trình thực hiện
khóa luận.
Nhóm cũng chân thành cảm ơn các thầy cô trường của Đại học Công nghệ Thôngtin - DHQG TP.HCM, đặc biệt là các thầy cô ở khoa Mang máy tính và Truyềnthông, các thầy cô thuộc bộ môn An toàn Thông tin và Phòng thí nghiệm An toànthông tin, cảm ơn thay Phan Thế Duy vì đã chia sẻ thêm kinh nghiệm giúp nhómhoàn thành công việc tốt hơn
Cuối cùng, tuy rằng nhóm đã có nhiều nỗ lực để hoàn thiện khóa luận một cáchchỉn chu nhất, song sẽ không thể không mắc những sai sót Nhóm rất mong nhậnđược những góp ý, những đánh giá từ quý thầy cô trong hội đồng để chúng em
có thể cải thiện và hoàn thiện đề tài tốt hơn
Nguyễn Hùng Thịnh Vũ Hoàng Thạch Thiết
Trang 3Mục lục
DANH MỤC CÁC HÌNH VẼ_
DANH MỤC CÁC BẢNG BIỂU
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
TÓM TẮT KHOÁ LUẬN 1 TONG QUAN ĐỀ TÀI 11 Lýdochọnđểtài eee 12 Phuong pháp nghiên cứu
13 Mục tiêu nghiên cứu ẶẶẶẶ So 14 Phạmvinghiêncứu cố eee 1.5 Đối tượng nghiên cứu
1.6 Cấu trúc Khóa luận tốtnghiệp
-2_CƠ SỞ LÝ THUYẾT 2.1 Phát hiện tương đồng mã nhị phân
2.1.1 Tổng quan bài toán Phát hiện tương đồng mã nhị phan
2.1.2 Ham-Function 0.0 0000000000.
2.1.3
Khốicơbản-BasicBlocek -2.14 Congcudichngugc
2.2 Deep Learning 6 eee 22.1 Tổng quanvéhocsdu
-2.2.2 Các thành phần chính của mạng nơ-ron
2.2.3 Một số khái nệm khác
2.2.4 Một số kiến trúc mạng nơ-ron phổ biến
2.2.5 Quy trình chung trong việc áp dụng học sâu
2.2.6 Phương pháp đo lường sự tương đồng giữa các vector
ii
11
1V
VI
10
11
14
14 1ó
18
23 26
29
Trang 42.3 Tình hình nghiên cứu và các công trình lên quan 31
2.3.1 Cac phương pháp truyền thống 31
2.3.2 Các phương pháp dựa trên Họcsâu 32
PHƯƠNG PHÁP THỰC HIỆN 35 3.1 Địnhnghĩa vấn để ẶẶẶQSS s 35 3.2 BiSimChecker - 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 37
3.2.1 Quá trình trích xuất hàm nhị phân 38
3.2.2 Phương pháp Ins2Vec biến đổi hàm nhị phân sang vector 40
3.2.3 Tính toán tương đồng giữahaihàm 46
3.3 Phương pháp đánhgiá 47
3.3.1 So sánh tương đồng One-to-one 47
3.3.2 So sánh tương đồng One-to-.many 49
HIỆN THỰC VÀ ĐÁNH GIÁ, THẢO LUẬN 50 41 Hiệnthực Ặ Qua 50 411 Cài đặtmôi trường 50
4.1.2 Huấn luyện mô hình skip-gram 51
4.1.3 Câuhỏingphiêncứu 52
4.2 Lựa chọn Mô hình nhúng đồ thị phù hợp 53
4.2.1 Tập dữ liệu huấn luyện và đánh giá mô hình 53
4.2.2 Kếtquảsosánh ch 54 4.3 So sánh BiSimChecker cùng với GeminivaSAFE 55
4.3.1 Tập dữ liệu huấn luyện và đánh giá mô hình 55
4.3.2 Tổng quan mô hình Gemini 57
4.3.3 Tổng quanmô hình SAFE 57 43.4 Kếtquảsosánh ch 58
KET LUẬN VÀ HUONG PHÁT TRIỂN 60
51 Kếtluận eee 60
52_ Hướng pháttriển cv 62
11
Trang 5DANH MỤC CÁC HÌNH VẼ
Hình 2.1
Hình 2.2
Hình 2.3
Hình 2.4
Hình 2.5
Hình 2.6
Hình 3.1
Hình 3.2
Hình 3.3
Hình 3.4
Hình 3.5
Hình 4.1
Ví dụ về luồng điều khiển của hàm nhị phân 10
Hình anh minh họa basicblock_ 10
Một đoạn mã được chuyển sang ngôn ngữ assembly bằng IDA 12 Hình anh mô tả vị trí của học sâu trong lĩnh vực học may 15
Mô hình mạng Nơ-ron đơn giản 17
Quy trình chung trong Máy Học 26
Kiến trúc tổng quát của mô hình BiSimChecker 37
Trích xuất hàm trong tệp nhị phân - 38
Ví dụ mã assembly x86 và CFG tương ứng 40
Mô hình Ins2Vec 43
Mô hình Ins2Vec 45
Trích xuất hàm trong tệp nhị phân - 59
1V
Trang 6DANH MỤC CAC BANG BIEU
Bang 4.1 Siêu tham số huấn luyện mô hình skip-gram Bang 4.2 Số lượng ACFG trong tập dữ liệu của Gemini Bảng 4.3 Kết quả so sánh áp dung các mô hình Nhung đồ thị khác
nhau từ mô hình Gemini
Bảng 4.4 Các dự án mã nguồn mở và các tùy chọn biên dich trong Tap
huấn luyện (Dataset-1) Bảng 4.5 Các dự án mã nguồn mở và các tùy chọn biên dich trong Tập
phát triển va tập kiểm tra (Dataset-2)
Bảng 4.6 Số lượng mẫu dữ liệu cho Train-Validation-Test Bảng 4.7 Các đặc trưng được trích xuất thủ công trong Gemini .Bang 4.8 So sánh hiệu quả so sánh tương đồng một-một của BiSim-
Checker với Gemini, SAFE trên tập đánh giá trong 20 epochs_
Trang 7DANH MỤC CÁC KÝ HIỆU, CÁC
CHU VIET TAT
BCSD Binary Code Similarity Detection CVE Common Vulnerabilities and Exposures CNN Convolutional Neural Network
GNN _ Graph Neural Networks
NLP Natural language processing
CFG Control Flow Graph
bb Danh sách các câu lệnh trong 1 basic block MRR Mean Reciprocal Rank
N Số lượng các hàm tương đồng được xếp hạngrank; Vi trí của hàm thực sự tương đồng đầu tiên
%W Tổng của các thành phan từ i= 1 đến N
Mái
Trang 8TÓM TẮT KHOÁ LUẬN
Hiện nay, việc đảm bảo an toàn cho chương trình phần mềm là một trong nhữngvan dé cực kỳ quan trọng, đặc biệt trong lĩnh vực An toàn thông tin Ta có thểthấy rằng, moi phần mềm đều tổn tại và tiềm tàng lỗ hổng bảo mật Nếu một mãnguồn có chứa lỗ hổng được biên dịch sang nhiều nền tảng hoạt động khác nhau,hoặc được tái sử dụng trong lập trình sẽ khiến cho cùng một lỗ hổng đồng thờiton tại và sẽ ảnh hưởng đến nhiều hệ thống Tuy vậy, có một thực tế đó là khôngphải lúc nào chúng ta cũng có sẵn mã nguồn (như C/C++ hay Python) để kiểmthử, chẳng hạn như trong các phần mềm mã nguồn đóng, mà chỉ có thể tiếp cậnđược tệp nhị phân Vì thế, phát hiện tương đồng mã nhị phân (Binary SimilarityCode Detection - BCSD) là một giải pháp trực tiếp và hiệu quả cho các bài toán
về An toàn phần mềm BCSD khi có kết hợp với phương pháp học sâu (DeepLearning - DL) giúp chúng ta có thể tính toán được độ tương đồng giữa hai hàmhoặc chương trình nhanh chóng và tự động Giá trị tương đồng này từ đó được
ứng dụng trong việc phát hiện lỗ hổng phần mềm, phát hiện đoạn mã độc hại,
hay phát hiện sao chép mã nguồn trái phép
Các giải pháp BCSD ngày càng có nhiều công trình và thuật toán mới, tuy nhiênvẫn có giới hạn về phương pháp biểu diễn nhị phân một cách hiệu quả, về hiệusuất và chi phí tính toán Từ động lực trên, trong bài luận này, chúng tôi sẽ mô
tả về một giải pháp BCSD mới gồm có hai khía cạnh chính: Thứ nhất, là phương
pháp nhúng hàm nhị phân sang không gian vector dựa trên học sâu và kết hợp
với biểu diễn dé thị giàu ngữ nghĩa giúp nắm bắt tốt các đặc trưng cũng như mối
quan hệ chặt chẽ giữa những lệnh trong ham Thứ hai, chúng tôi áp dụng mang
Siamese trong huấn luyện mô hình để tối ưu biểu diễn vector của hàm nhị phânhiệu quả hơn Khi đã có vector biểu diễn đủ tốt, chúng tôi áp dụng tương đồngcosin để tính toán giá trị tương đồng giữa các hàm với tốc độ tốt và giảm thiểuđược chỉ phí tính toán Sau đó, chúng tôi sẽ đánh giá hiệu quả của mô hình đểxuất trên những kịch bản phát hiện tương đồng và so sánh các công cụ BCSD liênquan và đạt được một kết quả tương đối vượt trội so với các công trình liên quan.Cuối cùng, chúng tôi bàn luận về hướng mở rộng trong tương lai để có thể tạo rađược một phương pháp phát hiện tương đồng mã nhị phân toàn điện hơn
Trang 9Chương 1
TONG QUAN DE TÀI
Tom tat chuong
Trong chương này, chúng tôi xin trình bày tóm tắt về bài toán Phát hiện tươngđồng mã nhị phân Đồng thời đưa ra mục tiêu, đối tượng được nghiên cứu, phạm
vi nghiên cứu, cũng như cầu trúc của toàn bộ khóa luận
11 Lý do chọn đề tài
Việc phát hiện các lỗ hổng phần mềm là một trong những mối quan tâm chínhtrong lĩnh vực An toàn thông tin, bởi vì bat cứ phần mềm nào cũng có thể tổntại các rủi ro về bảo mật Bên cạnh đó, sự phát triển của mạng lưới Internet VạnVật - Internet of Things (IoT) đã dẫn làm cho các kiến trúc tập lệnh (InstructionSet Architecture - ISA) được sử dụng cho mã nhị phân ngày càng đa dạng và phổbiến Khi một đoạn mã nguồn có lỗ hổng được biên dich để hoạt động trên nhiềukiến trúc khác nhau, nó làm gia tăng sự phổ biến và tác động của các lỗ hổng trênnhiều nền tang khác nhau Do đó, phát hiện sự tương đồng của mã nhị phân làmột giải pháp cho thấy tính hiệu quả và nhanh chóng trong việc phân tích phần
mềm ngay trên chính tệp nhị phân mà không yêu cầu truy cập đến mã nguồn.
Khi đã tính được giá trị tương đồng giữa hai hàm nhị phân, ta có thể sử dụnggiá trị này để có thể phát hiện được các lỗ hổng phần mềm đã biết trên một tập
lớn phần mềm cần kiểm thử, xác định được các đoạn mã độc hại, nhận biết các
ho phần mềm độc hai, và xác định những trường hợp vi phạm bản quyền trongphần mềm hoặc vi phạm bằng sáng chế phần mềm [11] Việc phát hiện các lỗhổng phần mềm đã biết trong các một tập lệnh cụ thể có thể dé dang làm được
2
Trang 10Chương 1 TỔNG QUAN ĐỀ TÀI
bằng việc sử dụng phương pháp so sánh để phân tích sự tương đồng của mã nhịphân trên nhiều kiến trúc tập lệnh khác nhau Điều này là khả thi vì các hàm nhịphân có thể giữ nguyên ngữ nghĩa tương đương mặc dù trải qua nhiều biến đổi
về mặt hình thức trong suốt quá trình biên dịch [1]
Phát hiện sự tương đồng mã nhị phân dựa trên học sâu hỗ trợ việc tính toán sựtương đồng giữa các hàm nhị phân một cách nhanh chóng hơn và tự động hơn.Bởi vì một trong những lợi thế lớn nhất của học sâu chính là chúng ta có khả năng
tự động trích xuất các đặc trưng từ dữ liệu thô [21] Bằng cách áp dụng học sâuvào van dé BCSD, chúng ta có thể sử dụng các lớp của mang nơ-ron sâu để có thểhọc và trích xuất những đặc trưng phức tạp từ dữ liệu (tức là học đặc trưng và
các thông tin ngữ nghĩa của hàm nhị phân thông qua bộ lệnh hợp ngữ của hàm)
mà không cần can thiệp công sức phân tích thủ công Đặc biệt, trong các kịch bảnđánh giá BCSD phức tạp, chẳng hạn như phát hiện tương đồng đa nền tang, đatrình biên dịch, đa tùy chọn tối ưu hóa mã, việc áp dụng học sâu đã chứng minhđược khả năng vượt trội của mình so với các phương pháp truyền thống, từ đócác giải pháp ứng dụng học sâu vào BCSD nổi bật lên như một xu hướng để cóthé phát triển tiềm năng để khai thác và cải tiến liên tục [11, 17, 4, 22]
Từ những điểm nêu trên, chúng tôi nhận thấy rằng việc xây dựng một phươngpháp phát hiện tương đồng mã nhị phân tự động, tiên tiến và có hiệu suất cao
là một nhu cầu rất cần thiết và cấp thiết Vì vậy chúng tôi muốn thực hiện dé tàinày, ứng dụng học sâu để có thể thực hiện được quá trình so sánh nhị phân hoàntoàn được tự động hóa, tiết kiệm được công sức thủ công mà vẫn đảm bảo đượchiệu suất tốt
1.2 Phương pháp nghiên cứu
Để có thể thực hiện để tài này, trước tiên chúng tôi sẽ tiến hành tìm hiểu quy
trình chung để xây dựng được mô hình phát hiện tương đồng mã nhị phân, bao
gồm việc khảo sát các công trình nghiên cứu nổi bật và hiện đại trong lĩnh vực
để có được cái nhìn khái quát về bài toán và những thành tựu cũng như hạn chế
hiện tại trong lĩnh vực Bên cạnh đó, chúng tôi tham khảo, thu thập các thập các
bộ dữ liệu phổ biến trong nghiên cứu BCSD vì hướng tiếp cận của chúng tôi nói
Trang 11Chương 1 TỔNG QUAN ĐỀ TÀI
riêng và xu hướng nghiên cứu nói chung sẽ liên quan tới việc có thể ứng dụng trí tuệ nhân tạo, hoc máy và hoc sâu để tạo mô hình học từ dữ liệu Sau đó, chúng tôi xây dựng một mô hình phát hiện tương đồng nhị phân mới, tự động học đặc
trưng, và áp dụng phương pháp học sâu nhằm có khả tăng hiệu quả của việc
xử lý biểu diễn mã nhị phân sang vector nhúng Điều này giúp loại bỏ công sứcphân tích thủ công và tăng độ chính xác trong việc so sánh tương đồng mã nhị
phân cũng như giảm bớt đi những sự thiên vị của con người vào bài toán Cụ thể,
chúng tôi sẽ thực hiện những bước sau đây: Khảo sát và phân tích những nghiên
cứu hiện có để hiểu rõ các kỹ thuật dùng để trích xuất đặc trưng, các kiến trúcmạng nơ-ron phổ biến, và các phương pháp một đánh giá hiệu quả của các mô
hình BCSD, các tập dữ liệu cho bài toán từ ngữ cảnh đơn giản (ví dụ như giải
pháp BCSD đơn nền tảng) đến phức tạp (chẳng hạn như giải pháp BCSD đa nềntảng) Tiếp theo, chúng tôi phát triển một mô hình học sâu để tự động trích xuất
và học các đặc trưng từ mã nhị phân cũng như biểu diễn đồ thị luồng điều khiển
của hàm, sử dụng mạng nơ-ron sâu để xử lý và biểu diễn mã nhị phân dưới dạng
vector nhúng, sau đó sử dụng các vector này để có thể so sánh và đánh giá đượcmức độ tương đồng giữa các đoạn mã nhị phân Để đảm bảo khả năng khái quát
hóa của mô hình, chúng tôi thực hiện kiểm tra trên những tập dữ liệu có phân
phối khác biệt so với tập huấn luyện và so sánh với các công trình nghiên cứuliên quan Cuối cùng, dựa trên những kết quả đánh giá, chúng sẽ tôi dé xuất cáchướng mở rộng và cải tiến mô hình trong tương lai, bao gồm việc áp dụng cáckiến trúc mạng nơ-ron mới, cải tiến kỹ thuật trích xuất đặc trưng, và mở rộng
được phạm vi ứng dụng của mô hình trong các bài toán khác nhau trong việc
đảm bảo An toàn phần mềm
1.3 Mục tiêu nghiên cứu
Khóa luận gồm các mục tiêu chính như sau:
1 Xây dựng một phương pháp nhúng hàm nhị phân mới, có ứng dụng học
sâu Vai trò của phương pháp này là nhúng biểu diễn luồng đồ thị của cáchàm nhị phân sang vector, trong đó nhúng trực tiếp instruction assembly
sang biểu diễn vector Các hàm càng tương đồng, vector sẽ càng tương đồng
Trang 12Chương 1 TỔNG QUAN ĐỀ TÀI
và càng gần nhau trong không gian vector Đồng thời, phương pháp nhúngnày có tốc độ xử lý nhanh chóng và hạn chế công sức thủ công
2 Có cơ chế tính toán mức độ tương đồng giữa hai vector biểu diễn hai hàm
nhị phân có độ chính xác cao và không tiêu tốn nhiều chi phí
3 Kịch bản so sánh tương đồng từ đơn giản đến phức tạp, và sẽ sát với thực tế
nhất Ví dụ so sánh các hàm được biên dịch từ cùng mã nguồn cho những
nền tảng khác nhau (cross-platforms hay cross-architectures), được sử dụng
các trình biên dịch khác nhau (cross-compilers), trên các tùy chọn tối ưu hóa
mã nguồn khác nhau (cross-optimizations)
4 Triển khai được các kịch bản ứng dụng thực tế: so sánh tương đồng giữa
cặp hàm nhị phân, tìm kiếm hàm tương đồng trên tập lớn các hàm nhịphân, phát hiện lỗ hổng phần mềm đã biết trên tập lớn phần mềm
1.4 Phạm vi nghiên cứu
Chúng tôi sẽ tập trung vào phát hiện tương đồng mã nhị phân của ngôn ngữC/C++ ở cấp độ hàm Chúng tôi trích xuất các hàm từ các tệp nhị phân đượcbiên dịch từ các thư viện mã nguồn mở Xây dựng một phương pháp nhúng biểu
diễn hàm hiệu quả, sử dụng học sâu để biểu diễn các hàm thành vector Phương
pháp có khả năng phát hiện tương đồng đa nên tảng Dữ liệu đầu vào sẽ bao gồmcác hàm nhị phân, và kết quả đầu ra là giá trị thể hiện mức độ tương đồng giữa
các hàm và nhãn cho biết sự tương đồng dựa trên ngưỡng giá trị tương đồng.
1.5 Đối tượng nghiên cứu
Đối tượng được nghiên cứu chính bao gồm:
se Tệp thực thi đa nền tảng, hàm nhị phân
¢ Hoc máy, hoc sâu.
® Ins2Vec - Phương pháp nhúng mã hợp ngữ sang vector.
® BiSimChecker - Mô hình BCSD dựa trên học sâu.
5
Trang 13Chương 1 TỔNG QUAN ĐỀ TÀI
Chúng tôi sẽ trình bày nội dung của khóa luận trong 5 chương như sau:
Chương 1: TONG QUAN DE TÀI
Trình bày tổng quan về đề tài của khóa luận tốt nghiệp, khái quát địnhhướng nghiên cứu mà chúng tôi muốn hướng tới cũng như mục tiêu muốn
đạt được.
Chương 2: CƠ SỞ LÝ THUYET
Trình bày về cơ sở lý thuyết, các định nghĩa, các khái niệm cũng như nhữngkiến thức làm nền tang để thực hiện được nghiên cứu Đồng thời trình bày
sơ lược một số công trình nghiên cứu có liên quan trong lĩnh vực
Chương 3: PHƯƠNG PHÁP THỰC HIỆN
Đây chính là phần trọng tâm của khoá luận, chúng tôi trình bày nội dungchính về mô hình và phương pháp pháp hiện tương đồng mã nhị phân ma
chúng tôi đã xây dựng.
Chương 4: HIỆN THỰC, ĐÁNH GIÁ VÀ THẢO LUẬN
Trong phần này chúng tôi sẽ trình bày các thí nghiệm và đánh giá phươngpháp dé xuất đã dé cập ở Chương 3 Sau đó sẽ thực hiện đánh giá nhữngkết quả đạt được và nêu bật các thảo luận chung
Chương 5: KẾT LUẬN VA HƯỚNG PHÁT TRIENChúng tôi sẽ đưa ra những kết luận về dé tài và mô hình đã xây dựng,
dé xuất một số hướng phát triển mở rộng cho những nghiên cứu về tươngđồng mã nhị phân trong tương lai
Trang 14Chương 2
CƠ SỞ LÝ THUYÊT
Tóm tắt chương
Trong chương này, chúng tôi sẽ trình bày về các kiến thức lý thuyết trong phạm
vi liên quan đến khóa luận Chương này sẽ bao gồm cái nhìn chung về bài toánphát hiện sự tương đồng mã nhị phân Cùng với đó là lý thuyết về mô hình họcsâu Đồng thời, chúng tôi sẽ trình bày tóm tắt về những công trình nghiên cứu
liên quan và những điểm mới của khóa luận này so với những nghiên cứu trước
đây.
2.1 Phát hiện tương dong mã nhị phân
2.1.1 Tổng quan bài toán Phát hiện tương đồng mã nhị phân
Phát hiện sự tương đồng mã nhị phân liên quan đến việc phân tích các biểu diễnnhị phân của hai hàm để có thể xác định được mức độ tương đồng của chúng Vớiđầu vào là biểu diễn nhị phân của một cặp hàm bắt kì đến từ hai chương trình nhịphân khác nhau, một phương pháp BCSD sẽ tính toán được dau ra là một điểm
số tương đồng để có thể thể hiện được mức độ tương đồng giữa hai hàm làm đầuvào Điểm số tương đồng này có thể được sử dụng để chúng ta xác định những
lỗ hổng phần mềm, bởi vì nếu một hàm tương đồng với một hàm đã biết là có
lỗ hổng bảo mật thì ta có thể xác định được hàm đó cũng có lỗ hổng Ngoài ra
còn có thể xác định các đoạn mã độc hại, phân loại các họ phần mềm độc hại, vàxác định các trường hợp sao chép phần mềm hoặc vi phạm bằng sáng chế phầnmềm [11] Công việc so sánh tương đồng trên mã nhị phân này tương đối là phức
Trang 15Chương 2 COSO LY THUYẾT
tạp va khó khăn với con người hơn so với việc phân tích dựa trên mã nguồn, bởi
vì một phần mềm thường được biên dich để có thể hoạt động trên nhiều nhữngnền tảng kiến trúc khác nhau, điều này có thể khiến cho những tập lệnh nhị phâncũng khác đi Dù xuất phát cùng một đoạn mã nguồn, khi được biên dịch bằng
những trình biên dịch khác nhau, hay dùng các phiên bản khác trong một trình
biên dịch mã nguồn cũng khiến cho mã nhị phân đã có một sự khác biệt rõ rệt
Bên cạnh đó, còn có các tùy chọn biên dịch khác như biên dịch trên các lựa chọn
tối ưu hóa khác nhau, hay là các phương pháp làm rối mã nhị phân cũng khiếncho công việc so sánh tương đồng nhị phân gặp nhiều thách thức
2.1.2 Hàm - Function
Trong ngữ cảnh phát hiện sự tương đồng mã nhị phân, hàm (function) là mộtkhối mã đã được biên dịch thành những mã máy và có thể được gọi để thực thi
một nhiệm vụ cụ thể Một hàm bao gồm một tập hợp gồm các lệnh được nhóm
lại đưới một tên gọi và có thể được tái sử dụng ở nhiều đoạn khác nhau trong mãnguồn Hàm giúp cấu trúc chương trình một cách rõ ràng va dé để chúng ta quản
lý hơn, đặc biệt quan trọng khi phân tích và so sánh mã nhị phân.
Chúng tôi chọn hàm làm đơn vị chính trong phát hiện tương đồng nhị phân vì
các lý do sau đây:
1 Tính đơn vị chức năng: Mỗi hàm thường thực hiện một nhiệm vụ cụ thể, rõ
ràng và độc lập Điều này có thể làm cho việc xem xét và so sánh giữa cáchàm dé hơn Bởi vì hàm thường chứa các khối mã liên quan đến một chức
năng cụ thể, việc so sánh các hàm tương tự giữa các tệp nhị phân khác nhau
sẽ giúp phát hiện các phần mã có chức năng tương đương
2 Khả năng tái sử dụng: Một hàm, hay được gọi rất nhiều trong một ứng
dụng hoặc giữa các phần mềm khác nhau, từ đó tăng tính tái sử dụng của
mã nguồn và cùng một hàm có thé được tái sử dụng trong nhiều chương
trình Việc phát hiện các hàm tương tự trong các tệp nhị phân khác nhau có
thể giúp nhận diện được các hàm tái sử dụng, từ đó, hỗ trợ tìm kiếm cáchàm có chứa lỗ hổng bảo mật, các hàm đã biết là mã độc, v.v
Trang 16Chương 2 COSO LY THUYẾT
3 Tinh rõ ràng và bảo trì: Sử dung hàm giúp mã nguồn trở nên rõ ràng hơn,
dé đọc và dé bảo trì hơn Khi phân tích mã nhị phân, việc tập trung và các
hàm giúp dễ xác định và so sánh các đoạn mã có chức năng tương tự, từ đó phát hiện các mẫu mã độc, các hàm có nguy cơ bảo mật hoặc mã sao chép.
Ngoài những yếu tố trên, một hàm còn có khả năng biểu diễn thành đồ thị luồngđiều khiển Control Flow Graph (CFG) một cách dé dàng Hình 2.1 minh hoa CFG
của hàm A và hàm B Ưu điểm của hàm khi có thể biểu diễn thành CFG như sau:
1 Phân tích luồng điều khiển của ham: CFG giúp hình dung rõ ràng các
đường đi khác nhau mà chương trình có thể thực hiện khi chạy, bao gồmcác điều kiện rẽ nhánh va vòng lặp Điều này hữu ích trong việc phân tíchhành vi của hàm, giúp nhận diện các điểm tương đồng và khác biệt giữa các
hàm trong các tệp nhị phân khác nhau.
2 Phát hiện lỗi: CFG hỗ trợ việc phát hiện các lỗi tiềm ẩn trong một hàm như
vòng lặp vô tận, điều kiện không thể đạt tới, hoặc các đoạn mã không thể
đạt tới Trong ngữ cảnh bảo mật, việc phát hiện lỗi này giúp xác định các lỗ
hổng có thể bị tận dụng khai thác.
3 So sánh và đo lường tương đồng: Trong lĩnh vực phát hiện sư tương đồng
mã nhị phân, CFG cung cấp một phương pháp mạnh mẽ để so sánh và đolường mức độ tương đồng giữa các hàm, ngay cả khi chúng được biên dịchbởi các trình biên dịch khác nhau hoặc để chạy trên các nền tảng khác nhau.Điều này hữu ích trong việc phân tích mã độc, phát hiện mã sao chép hay
nhận diện đoạn mã có chức năng tương tự.
Trang 17Chương 2 COSO LY THUYẾT
Function A Function B
9x199669d59 55 push rbp 9x199909ddf mov eax, dword [rdi]
0x100000d51 4889e5 mov rbp, rsp 9x199966de1 mov edx, dword [rsi]
9x199999g54 48897df8 mov qword [local 8h], rdi 0x100000de3 mov dword [rdi], edx
9x100000d58 488975f9 mov qword [local 16h], rsi 9x199909de5 mov dword [rsi], eax
0x190000d5c 488b75T8 mov rsi, qword [local_8h] 0x100000de7 ret
9x199996g69 8b06 mov eax, dword [rsi]
0x100000062 8945ec mov dword [local 14h], eax
9x199999g65 488b75f9 mov rsi, qword [local_ 19h]
0x190000d69 8b@6 mov eax, dword [rsi]
0x100600d6b 488b75f8 mov rsi, qword [tocal_ 8h]
9x199999d6f 8996 mov dword [rsi], eax
0x190600d71 8b45ec mov eax, dword [local_14h]
0x100000d74 488b75f9 mov rsi, qword [1ocal_19h]
0x100000d78 8906 mov dword [rsi], eax
0x100000d7a 5d pop rbp
0x100000d7b c3 ret
HINH 2.1: Ví dụ về luồng điều khiển của hàm nhị phân
2.1.3 Khối cơ ban - Basic Block
Khối cơ ban (Basic Block) là một đoạn mã lệnh trong một chương trình có điểmvào duy nhất, điểm ra duy nhất và thực thi tuần tự Nghĩa là, khối cơ bản chỉ cóthể được thực thi bắt đầu từ lệnh đầu tiên, kết thúc tại lệnh cuối cùng (có thể làlệnh nhảy hoặc return) và tất cả các lệnh bên trong được thực thi tuần tự từ trênxuống dưới mà không bị ngắt quãng (trừ lệnh nhảy ở cuối) Nói cách khác, khilệnh đầu tiên của khối co bản được thực thi, tat cả các lệnh còn lại cũng sé đượcthực thi theo thứ tự, và không có cách nào thoát khỏi khối cơ bản trước khi đếnlệnh cuối cùng Hình 2.2 minh họa các khối basic block trong một hàm
100B585C
100B585C: 100B5832:
mov eax, edi mov edi, [esp+1Ch]
shr eax, 1
mov ecx, edi
HINH 2.2: Hinh anh minh hoa basic block
10
Trang 18Chương 2 COSO LY THUYẾT
Tầm quan trọng của Basic Block trong việc phân tích tương đồng mã nhị phân:
1 Tính đơn vị: Khối cơ bản có tính đơn vị cao, vì tất cả các lệnh trong khối đều
được thực thi mà không có sự ngắt quãng Điều này giúp cho việc phân tích
mã trở nên dễ dàng hơn vì không cần quan tâm các lệnh nhảy mà có điều
kiện hoặc không có các điều kiện bên trong khối
2 Câu trúc dir liệu quan trọng: Trong phân tích mã nhị phân va các chương
trình phát hiện tương đồng mã, khối cơ bản là cấu trúc dữ liệu quan trọng.
Các công cụ phân tích thường chia mã thành các khối cơ bản dé dé danghơn trong việc so sánh và phân tích sự tương đồng
3 Phát hiện sự tương đồng mã: Trong bối cảnh phát hiện tương đồng mã nhị
phân, khối cơ bản là đơn vị nhỏ nhất mà các công cụ phân tích thường xem
xét Bằng cách so sánh các khối cơ bản từ các tệp nhị phân khác nhau, có
thể xác định được mức độ tương đồng giữa các đoạn mã, giúp phát hiện lỗi
phần mềm, hoặc đạo văn phần mềm
2.1.4 Công cụ dịch ngược
Công cụ dịch ngược (Reverse Engineering Tools) là các phần mềm được sử dụng
để phân tích mã nhị phân và chuyển đổi nó thành mã nguồn có cấu trúc caohơn Công cụ này giúp phân tích phần mềm, nắm rõ hơn về các phần cấu trúc,các chức năng và logic của chương trình đã được biên dịch Một số công cụ dịchngược được sử dụng có thể nói là rộng rãi hiện nay có thể kể đến như IDA Pro,
Ghidra, Radare2, Angr
Các chức năng chính của công cụ dịch ngược như sau:
e Trích xuất hàm: các công cụ dịch ngược giúp chuyển đổi mã máy không
có cau trúc thành mã nguồn có cấu trúc (thường là assembly), giúp ngườidùng dé dàng hiểu va phân tích các hàm có trong mã nhị phân
® Tìm lỗi và sửa chữa: Công cu dịch ngược đặc biệt rất có ích trong việc phát
hiện và khắc phục các lỗi trong chương trình Bằng cách chuyển đổi mã máythành mã nguồn có cấu trúc, người phát triển phần mềm có thể hiểu rõ hơn
về lỗi va dé dang sửa các bytes code trực tiếp trên chương trình
11
Trang 19Chương 2 COSO LY THUYẾT
© Phân tích mã độc: Công cụ dich ngược cung cấp kha năng phân tích mã độc
để xác định và loại bỏ các đoạn mã độc hại trong chương trình.
s Tương tác với phần mềm: Các công cụ dịch ngược hiện đại thường cũng
cho phép gỡ lỗi trực tiếp chương trình và tương tác với phần mềm để hỗ trợ
trong quá trình phân tích và chỉnh sửa mã nhị phân.
[Elipavew-aA EG) Hex view-1 [A] structures [E] Enums Imports Exports
File Name : C:\Users\sl4v\Desktop\2.bin a Format : Binary file
Base Address: @@@@h Range: @@@@h - 2F12Ch Loaded length: 2F12Ch
3
: ARM tecture: metaarm
Generic assembler for ARM : Little endian
egment type: Pure code
AREA ROM, CODE, READWRITE, ALIGN=6
CODE16
DCD @x29000400 | DCD
DCD DCD DCB @xE3
00000000 00000000: ROM:00000000 (Synchronized with Hex View-1) v
HÌNH 2.3: Một đoạn mã được chuyển sang ngôn ngữ assembly bang
IDA
Với những tính năng nêu trên, công cụ dịch ngược hét sức quan trọng trong bài
toán phát hiện sự tương đồng mã nhị phân (BCSD) bằng cách cung cấp các công
cụ và kỹ thuật để phân tích sâu các mã nhị phân Chúng giúp trích xuất và hiểucau trúc của mã máy, xây dựng biểu dé luồng điều khiển, phân tích các biểu diễncủa mã máy và tìm kiếm các mẫu cụ thể Hình 2.3 cho thấy một đoạn mã đượcchuyển sang ngôn ngữ assembly bằng IDA Pro
12
Trang 20Chương 2 COSO LY THUYẾT
các ưu điểm sau:
¢ Khả năng hỗ trợ đa kiến trúc: IDA hỗ trợ nhiều kiến trúc xử lý khác nhau,
cho phép ta phân tích mã nhị phân trên các nền tảng khác nhau như x86,ARM, MIPS và hơn nhiều nữa Điều nay đảm bảo rang chúng tôi có thể tríchxuất thông tin từ các tập tin nhị phân và áp dụng vào ngữ cảnh phân tíchtương đồng đa nền tang
* IDA thân thiện với người dùng: IDA có giao diện trực quan để người dùng
có thể tương tác với công cụ và các tệp nhị phân Các chức năng và tính năng được tổ chức một cách rõ ràng, cho phép chúng tôi dé dang thao tác
và điều hướng trong quá trình phân tích mã nhị phân
¢ Khả năng linh hoạt và tính mở rộng: IDA linh hoạt mở rộng và có các plugin,
cho phép chúng tôi tùy chỉnh và mở rộng khả năng của công cụ để phù hợpvới nhu cầu dịch ngược tệp thực thi của chúng tôi Đặc biệt IDA còn cungcấp bộ API với các hàm cho phép chúng tôi có thể tương tác với IDA từchương trình bên ngoài Bằng cách sử dung 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
© 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 Điều này cho phép chúng tôi xem các giá trị biến, theodoi luồng điều khiển, hoặc thâm chí thực hiện gỡ lỗi trong quá trình phân
tích mã nhị phân.
se Cộng đồng hỗ trợ và tài liệu phong phú: IDA có lượng người dùng sử dụng
lớn, cung cấp các sự hỗ trợ và tài liệu phong phú Điều này giúp chúng tôi
có thể xác định lỗi và xử li dé dang và nhanh chóng.
13
Trang 21Chương 2 COSO LY THUYẾT
2.1.4.2 IDA Python API
API Python của IDA (IDAPython) cung cấp một giao diện lập trình cho phép
người dùng tự động hóa các tác vụ trong IDA 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 tương đối nổi bật của API này:
s® Truy cập thông tin trong các tập tin nhị phân: IDA Python API cho phép
chúng tôi có thể truy cập và trích xuất những thông tin về các thành phầntrong tập tin nhị phân như các hàm, khối cơ bản, địa chi, bang cách sử
dụng các hàm như get_func_name(), get_func_offset(), get_operand_value(),
get_segm_start()
¢ Kha năng tự động hóa: Với IDA Python API, chúng tôi có thể thực hiện các
tác vụ như phân tích tập tin nhị phân một cách tự động thông qua các hàm
như analyze_area(), auto_wait(), wait_for_sync().
° Tích hợp với các công cụ khác: Bang cách sử dung các giao thức va hàm liên
kết của IDA Python API chúng ta 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ụ dịch ngược
và trích xuất hàm hoàn chỉnh trong phương pháp này
Học sâu (Deep Learning) là một lĩnh vực con của học máy (Machine Learning)
tập trung vào việc sử dụng các mạng nơ-ron nhân tạo có nhiều lớp để trích xuất
và học các đặc trưng ở mức độ cao từ dữ liệu Trong quá trình này, dữ liệu được
chuyển đổi thành các con số và các lớp xử lý sẽ lần lượt phân tích các con số này
để tìm ra các đặc trưng quan trọng Học sâu nổi bật nhờ khả năng tự động hóa
14
Trang 22Chương 2 COSO LY THUYẾT
việc trích xuất đặc trưng mà không cần can thiệp thủ công, cho phép nó đạt đượcnhững tiến bộ đáng kể trong các khía cạnh chẳng hạn như nhận dạng và đồi chiếuhình ảnh, xử lý về ngôn ngữ tự nhiên, ngoài ra còn có nhiều ứng dụng khác
Trong lập trình thông thường, chẳng hạn như muốn so sánh sự tương đồng giữa
hai hàm mục tiêu, ta phải xác định những quy tac/ luật (rules) cụ thé từ trước,sau đó mới có thể xác định được đầu ra là cặp hàm đó tương đồng hay không.Tuy nhiên, việc xác định các quy tắc là vô cùng phức tạp và có thể nói là nhiều vô
số kể Vì vậy, với những van dé phức tạp như so sánh tương đồng nhị phân giữa
hai hàm, ta có thể ứng dụng học sâu để tự động hóa quá trình này Nói cách khác,
chúng ta sẽ dùng ML/DL khi chúng ta không thể viết ra luật một cách tường
minh hoặc không thể xác định ra được luật Hay khi bài toán không thể mở rộng
hay điều chỉnh quy mô (up/ down scale) Đặc biệt, chúng ta nên áp dụng học sâu
khi chúng ta có nhiều đữ liệu (dataset).
Nhìn chung, học sâu mạnh mẽ trong các công việc sau:
1 Các van dé cần xác định quá nhiều quy tắc
2 Khám phá những hiểu biết trong các tập dữ liệu lớn mà con người rất khó
hoặc không thể làm thủ công.
3 Đối với các môi trường thay đổi liên tục, học sâu có thể "học" để thích ứng
với các ngữ cảnh mới.
Intelligence Artificielle
Trang 23Chương 2 COSO LY THUYẾT
Bên cạnh đó, DL cũng có những han chế nhất định, thông thường, một mô hìnhhọc sâu sẽ không đáp ứng được tốt trong các tình huống sau đây:
1 Khi chúng ta cần khả năng diễn giải, giải thích quyết định của mô hình
Điều này là do câu trúc phức tạp của mô hình và việc xử lý thông tin quanhiều lớp ẩn, khiến cho quá trình mà mô hình đưa ra kết quả trở nên khó
hiểu và khó giải thích Một mô hình học sâu thường được ví von là một "hộp
đen" vì bản chất khó diễn giải của nó
2 Khi các phương pháp đơn giản và truyền thống đã đáp ứng đủ để xử lý bài
toán thì ta không cần dùng đến học sâu Tức là nếu một bài toán có thể giải
quyết bằng quy tắc/ luật (rule-based) đơn giản thì chúng ta sẽ áp dụng các
luật này để tiết kiệm tài nguyên và chỉ phí tính toán, vì một mô hình họcsâu đòi hỏi chỉ phí tính toán tương đối tốn kém hơn
3 Khi sai sót là không được chấp nhận Tức là trong những hoàn cảnh quan
trọng hoặc yêu cầu độ chính xác cao, bất kỳ lỗi nào cũng không thể chấp
nhận được, ta sẽ không áp dụng DL vì độ chính xác của nó không thể là
hoàn hảo.
4 Trong trường hợp mà nghiên cứu không có quá nhiều dữ liệu Vì dữ liệu
càng "chất lượng" thì chúng ta càng xây dựng được mô hình tốt Dữ liệuquyết định trực tiếp đến hiệu suất của mô hình, cũng như khả năng tổngquát hóa van dé Khi thiếu dữ liệu, mô hình sẽ không "học" đủ và không
thật sự hiệu quả được.
Nhìn chung, khi đã nắm bắt được điểm mạnh và hạn chế của học sâu, việc ápdụng học sâu vào phát hiện sự tương đồng mã nhị phân là một hướng nghiêncứu tiềm năng, phù hợp, thú vị và có nhiều khía cạnh để khai thác
2.2.2 Các thành phan chính của mạng no-ron
2.2.2.1 Các lớp chính trong mạng no-ron
Mạng nơ-ron nhân tạo bao gồm các thành phần chính sau: lớp đầu tiên là inputlayer, các lớp ở giữa là hidden layer, lớp cuối là output layer Trong mỗi lớp là cácnode Ví dụ hình 2.5 có 1 lớp đầu vào, 1 lớp ẩn và 1 lớp đầu ra
1ó
Trang 24Chương 2 COSO LY THUYẾT
HINH 2.5: Mô hình mang Nơ-ron đơn giản
Lớp đầu vào (Input layer): Nhận dữ liệu đầu vào, chẳng hạn như hình ảnh, văn
bản, âm thanh hoặc bất kỳ dạng dữ liệu nào mà mô hình được thiết kế để xử lý
(cụ thể trong bài toán này là biểu diễn nhị phân của hàm) Sau đó chuyển tiếp
đến các lớp xử lý tiếp theo của mạng Một điểm quan trọng trong lớp đầu vào làviệc xác định đúng kích cỡ và hình dang (shape) của dữ liệu đầu vào, đảm bảorằng dữ liệu phù hợp với các lớp tiếp theo trong mạng
Các lớp ẩn (Hidden layers): Đây là các lớp nằm giữa lớp đầu vào và lớp đầu ra.Mỗi lớp ẩn bao gồm nhiều nơ-ron và thực hiện các phép tính để trích xuất và biếnđổi dữ liệu từ lớp trước đó Chúng ta có thể điều chỉnh số lượng mạng nơ-rontrong mỗi lớp cũng như tùy chọn số lớp ẩn phù hợp với mỗi bài toán
Đầu ra (Output layer): Đưa ra kết quả dự đoán từ mạng nơ-ron sau khi đã xử lý
thông qua các lớp ẩn Số lượng nơ-ron trong lớp này phụ thuộc vào loại bài toán
ma mạng no-ron được huấn luyện để giải quyết (ví dụ: một nơ-ron cho bài toánphân loại nhị phân, nhiều nơ-ron cho bài toán phân loại đa lớp)
2.2.2.2 Các lớp khác trong mạng nơ-ron
Một số lớp khác
* Lớp Pooling, hay còn gọi là lớp gộp, là một thành phan quan trọng trong
mạng nơ-ron tích chập Mục đích chính của lớp này là giảm kích thước
không gian của đầu vào, từ đó giảm số lượng tham số và lượng tính toántrong mạng, đồng thời giúp tăng khả năng kháng nhiễu và nhưng vẫn giữ
17
Trang 25Chương 2 COSO LY THUYẾT
được các đặc trưng quan trong Ta có thé lựa chon Max Pooling, chọn giá
trị lớn nhất trong một cửa sổ di chuyển (kernel) trên toàn bộ đầu vào Điềunày giúp trích xuất các đặc trưng nổi bật nhất trong cửa sổ Hoặc là Average
Pooling để tính giá trị trung bình của các giá trị trong một cửa sổ di chuyển.
Phương pháp này giúp làm mượt và giảm nhiễu trong dữ liệu Ngoài ra
còn có Global Pooling, tính toán một giá trị duy nhất (max hoặc average)cho toàn bộ đầu vào Hoặc Global pooling thường được sử dụng ở các lớpcuối của mạng để tổng hợp thông tin
® Lớp Dropout là một kỹ thuật phổ biến được sử dụng trong mạng nơ-ron để
ngăn chặn hiện tượng overfitting Dropout làm việc bằng cách ngẫu nhiên
"tắt" (đặt bằng 0) một tỷ lệ nhất định các đơn vị (neurons) trong quá trìnhhuấn luyện Trong quá trình huấn luyện, với mỗi lần truyền dữ liệu quamạng, mỗi neuron có xác suất bị "tắt" ngẫu nhiên (tức là tắt ngẫu nhiên ø%
số lượng node trong một lớp) Các neuron bị "tắt" sẽ không tham gia vàoquá trình tính toán và lan truyền ngược (backpropagation) Trong quá trìnhsuy luận (inference), tất cả các neuron đều hoạt động, nhưng đầu ra củachúng được nhân với 1 - p để bù lại việc "tắt" ngẫu nhiên trong quá trìnhhuấn luyện Bằng cách ngẫu nhiên "tắt" một số neuron, dropout làm giảm
sự phụ thuộc quá mức vào bat kỳ một neuron nào, từ đó giúp mang tổngquát hóa tốt hơn trên đữ liệu mới
2.2.3 Một số khái niệm khác
2.2.3.1 Hàm kích hoạt (Activation function)
Hàm kích hoạt là một phần quan trọng của mỗi nơ-ron, hàm kích hoạt xác định
xem nơ-ron đó có phản ứng hay không dựa trên tổng hợp của đầu vào Các hàmkích hoạt phổ biến bao gồm sigmoid, tanh, ReLU, và softmax
¢ Ham kích hoạt Sigmoid: có dang hình chữ S va chuyển đổi giá trị đầu vào
thành một giá trị trong khoảng từ 0 đến 1 Sigmoid mượt mà và dé tính
toán, thường được sử dụng cho các bài toán phân loại nhị phân Tuy nhiên,
nhược điểm của Sigmoid là có thể gây ra hiện tượng "vanishing gradient"
(độ dốc biến mắt) khi giá trị đầu vào rất lớn hoặc rất nhỏ, làm cho việc học
trở nên chậm.
18
Trang 26Chương 2 COSO LY THUYẾT
¢ Ham kích hoạt Tanh (Hyperbolic Tangent) cũng có dang hình cong nhưng
biến đổi giá tri dau vào ở khoảng giá tri từ -1 đến 1 Tanh thường được sửdụng trong các mạng nơ-ron vì nó có thể giúp trung bình các giá trị đầu ragần 0, giúp việc học trở nên hiệu quả hơn Tương tự, Tanh cũng có thể gây
ra hiện tượng "vanishing gradient" tương tự như Sigmoid.
¢ Hàm kích hoạt ReLU: chuyển đổi giá trị đầu vào thành giá trị lớn hơn hoặc
bằng 0 ReLU giúp giải quyết van dé "vanishing gradient" va cho phép các
mang nơ-ron học nhanh hơn ReLU có thé gặp van dé "dying ReLU" (ReLU
chết) khi các no-ron bi ket ở giá trị 0 và không còn học được
¢ Hàm kích hoạt Softmax: chuyển đổi một vectơ các giá trị thành các xác suất,
tất cả các giá trị nằm trong khoảng từ 0 đến 1 và tổng của chúng bằng 1.Softmax thường được sử dụng trong lớp đầu ra của mạng nơ-ron cho cácbài toán phân loại đa lớp, vì nó cung cấp một phân phối xác suất trên cáclớp Softmax có thể dé bị ảnh hưởng bởi các giá trị cực đại và rất nhạy cảm
với các giá trị ngoại lệ.
Mỗi hàm kích hoạt có những vai trò và vị trí sử dụng riêng, và việc lựa chọn hàm kích hoạt phù hợp tùy thuộc vào đặc thù của từng bài toán và cau trúc mạng
nơ-ron Nếu chúng ta xác định bài toán phát hiện tương đồng nhị phân thuộc vào
dang phân loại nhị phân, ta có thể ứng dụng Sigmoid hoặc Tanh để phân biệt hai
nhãn tương đồng, hoặc không tương đồng
19
Trang 27Chương 2 COSO LY THUYẾT
2.2.3.3 Hàm mat mát (Loss function)
Hàm nay tính sự khác biệt giữa đầu ra dự đoán và giá trị thực tế, giúp mangnơ-ron chỉnh sửa các trọng số để giảm thiểu sai số trong quá trình huấn luyện.Dưới đây là một số hàm mắt mát phổ biến được áp dụng trong các bài toán khác
nhau:
* Bài toán hổi quy (Regression): Gồm có L1 Loss, còn được gọi là "Mean
Ab-solute Error" (MAE) đo lường trung bình của tổng các sai số tuyệt đối giữa
dự đoán và giá trị thực tế, khuyến khích các mô hình tạo ra các dự đoánchính xác gần với giá trị thực tế Và L2 Loss, còn được gọi là "Mean SquaredError" (MSE) đo lường trung bình của tổng các sai số bình phương giữa dựđoán và giá trị thực tế, khuyến khích các mô hình tạo ra các dự đoán chínhxác và giảm thiểu sai số lớn
® Bài toán phân loại nhị phan (Binary Classification): Có thể kể đến Binary
Cross-Entropy (BCE) đo lường sự khác biệt giữa phân phối xác suất dựđoán và phân phối xác suất thực tế cho các lớp nhị phân (0 và 1) Nó phạt
nặng cho các dự đoán không chính xác.
® Bài toán phân loại đa lớp (Multi-class Classification): Sử dung Categorical
Cross-Entropy, đo lường sự khác biệt giữa phân phối xác suất dự đoán vàphân phối xác suất thực tế cho các lớp đa lớp Ngoài ra có thể dùng Sparse
Categorical Cross-Entropy, tương tự như Categorical Cross-Entropy nhưng
nhãn thực tế được mã hóa bằng các chỉ số lớp thay vì one-hot encoded
Mỗi ham mat mát được chọn tùy thuộc vào loại bài toán cu thể và đặc điểm của
dữ liệu đầu vào cũng như dau ra Việc chọn đúng ham mat mát là rat quan trọng
để đảm bảo mạng nơ-ron học một cách hiệu quả và chính xác Ngoài ra, việc chọn
hàm mat mát có liên quan chặt chẽ đến cách mã hóa nhãn (encode label) Trongbài toán hồi quy, nhãn là các giá trị số thực Trong bài toán phân loại nhị phân,
nhãn thường được mã hóa dưới dạng nhị phân, với các giá trị 0 hoặc 1 Còn trong
bài toán phân loại đa lớp, nhãn có thể được mã hóa one-hot encoding tương ứngvới hàm mat mát Categorical Cross-Entropy hay mã hóa nhãn Integer Encodingvới hàm mat mát Sparse Categorical Cross-Entropy
20
Trang 28Chương 2 COSO LY THUYẾT
2.2.3.4 Thuật toán tối wu (Optimization algorithm)
Được sử dung để điều chỉnh va cập nhật các trọng số của mang dựa trên giá trịcủa hàm mắt mát Các thuật toán phổ biến bao gồm Gradient Descent, Stochastic
Gradient Descent (SGD), Adam,
¢ Gradient Descent (GD): là một thuật toán tối ưu hóa lặp lại được sử dụng
để tìm các giá trị tối ưu của các tham số trong mô hình học máy Thuật toánnày hoạt động bang cách tính toán gradient của hàm mat mát (loss function)
và điều chỉnh các tham số theo hướng ngược lại với gradient để giảm thiểuham mat mát
se Stochastic Gradient Descent (SGD) được tính toán và cập nhật sau mỗi mẫu
dữ liệu thay vì toàn bộ tập dữ liệu Điều này khiến việc tối ưu hóa nhanh
hơn và có khả năng thoát khỏi các cực tiểu cục bộ.
¢ Adam là một thuật toán tối ưu hóa kết hợp giữa hai kỹ thuật RMSProp
và Momentum Adam tính toán về giá trị trung bình có trọng số của cácgradient và bình phương của gradient, sau đó điều chỉnh các tham số môhình theo các giá trị này Adam tự động điều chỉnh tốc độ học cho mỗi tham
số, giúp tối ưu hóa nhanh và hiệu quả hơn
2.2.3.5 Các chỉ số đánh giá (Metrics)
Các chỉ số đánh giá là các chỉ số đo lường giá trị cũng như hiệu quả của mạng
nơ-ron trên dữ liệu thử nghiệm Các độ đo này giúp xác định mức độ chính xác
và hiệu quả của mô hình trong việc giải quyết bài toán cụ thể Trong khóa luận
này, chúng tôi tập trung vào phạm vi bài toán phân loại nhị phân, tức là xác định
nhãn đầu ra giữa hai hàm nhị phân là tương đồng, hoặc không tương đồng Vìvậy, chúng tôi để cập nhiều hơn về các chỉ số đánh giá sau: Accuracy, Precision,
Recall, F1-score.
* Accuracy: Do về tỷ lệ các dự đoán đúng trên tổng số các dự đoán, đây là
một chỉ số tương đối đơn giản và phổ biến khi đánh giá hiệu suất của một
mô hình Thường được sử dụng khi dữ liệu cân bằng (số lượng mẫu của cáclớp tương đương nhau) Độ đo Accuracy cho biết mức độ chính xác tổng
21
Trang 29Chương 2 COSO LY THUYẾT
thé của mô hình trong việc phân loại cả các mẫu dương tính va mẫu âm tính Accuracy càng cao, tức là mô hình có thể phân loại được chính xác các
mẫu Tuy nhiên, accuracy có thể bị ảnh hưởng bởi sự mat cân bằng giữacác lớp dữ liệu hoặc bởi các yêu tố khác, do đó, nó không phản ánh được
mọi khía cạnh của mô hình phân loại Ví dụ trong bài toán BCSD Giả sử
rằng trong tập dữ liệu, có 90% là "cặp không tương đồng" và chỉ 10% là "cặptương đồng" Nếu một mô hình dự đoán tat cả đều là "không tương đồng",
mô hình này vẫn có thể đạt được Accuracy cao lên đến 90% vì nó dự đoánđúng hầu hết các cặp "không tương đồng" Trong trường hợp này, Accuracykhông đáng tin cậy, vì mô hình không thực hiện tốt trong việc xác định cáccặp tương đồng Do đó, khi mắt cân bằng giữa các lớp dữ liệu, cần sử dụngcác độ đo khác để đánh giá hiệu suất mô hình học máy
® Precision đo lường kha năng phân loại đúng các mẫu dương tính so với
tổng số mẫu được dự đoán là dương tính (Hiệu quả trong kết luận đương
tính) Precision càng cao, tức là mô hình phân loại ít phạm sai sót trong việc
dự đoán đúng các mẫu dương tính và tránh đưa ra những cảnh báo sai (FP),
tức là tránh dương tính giả.
® Recall (còn được gọi là True Positive Rate hoặc Sensitivity) là một độ đo để
cho thấy khả năng của một mô hình trong việc tìm ra tất cả các cặp hàmtương đồng một cách chính xác Nó tính tỉ lệ phần trăm giữa số lượng dữliệu dương tính được dự đoán đúng và tổng số lượng dữ liệu dương thực
tế (thực sự) Recall đo lường khả năng của mô hình trong việc bỏ sót (miss)các dữ liệu dương tính Nếu Recall càng gần 1, tức là mô hình có khả năngtìm ra hầu hết các dữ liệu đương tính một cách chính xác Ngược lại, nếuRecall thấp, tức là mô hình bỏ sót một số lượng đáng kể các dữ liệu dương
tính Tránh bỏ xót các mẫu dương tính, hay là tránh âm tính giả.
e© Fl-score có thể hiểu là con số cân bằng giữa Precision và Recall và đo lường
hiệu suất tổng thể của mô hình F1-score thường được sử dụng khi cần cânnhắc cả Precision va Recall Đặc biệt trong các bài toán mat cân bằng giữacác lớp dữ liệu Nó cho phép đánh giá tổng thể hiệu suất của mô hình trongviệc phân loại các dữ liệu một cách cân bằng giữa việc dự đoán đúng các
22
Trang 30Chương 2 COSO LY THUYẾT
trường hợp tương đồng (dương tính) tránh đưa ra cảnh báo sai va phát hiệntất cả các trường hợp quan trọng (dương tính)
* Đường cong ROC (Receiver Operating Characteristic) dùng để đánh giá và
so sánh hiệu suất của các mô hình phân loại trong các bài toán nhận dạng và
phân loại Chỉ số này vô cùng được ưa chuộng trong các giải pháp về Phát
hiện tương đồng mã nhị phân vì tính tổng quát của nó Đường cong ROCbiểu thị mối quan hệ giữa tỷ lệ True Positive (TPR) và tỷ lệ False Positive
(FPR) trên các ngưỡng số khác nhau Đường cong ROC biểu diễn hiệu suất
của một mô hình phân loại trong không gian ROC Đường cong vẽ bằng
cách thay đổi ngưỡng quyết định của mô hình và tính TPR và FPR tương
ứng Đường cong ROC cho phép xác định ngưỡng tối ưu cho mô hình phânloại dựa trên sự cân bằng giữa TPR va FPR Đường cong ROC càng gầnđường chéo (đường y = x) thì công cụ BCSD so sánh tương đồng càng chính
xác va đáng tin cậy Diện tích dưới đường cong ROC (AUC - Area Under the
Curve) cũng thể hiện chất lượng của mô hình, với giá trị AUC càng cao thì
mô hình càng tốt Việc sử dụng chỉ số AUC để đánh giá các mô hình pháthiện tương đồng nhị phân là một giải pháp tương đối nhanh chóng và dé
hiểu.
Nhìn chung, những chỉ số đánh giá nêu trên sẽ phần nào giúp chúng ta có cái
nhìn tổng quan đến mô hình đang xây dựng, để thấy rõ hơn hiệu quả của mô
hình, chúng ta nên lưu mô hình đã huấn luyện và mang nó thử nghiệm với cácmẫu thực tế để từ đó đánh giá khả năng phân loại của mô hình và cải thiện thêm
2.2.4 Một số kiến trúc mang nơ-ron phổ biến
Đối với các bài toán khác nhau, nghiên cứu viên có thể chọn lựa một kiến trúc
mạng nơ-ron khác nhau Lấy ví dụ như trong bài toán hồi quy, ta có thể dùng
mạng nơ-ron truyền thống, như Feedforward Neural Networks - FNNs) Day làloại mạng đơn giản nhất, nơi thông tin chỉ di theo một hướng từ đầu vào đếnđầu ra, không có vòng lặp Hoặc trong xử lý ảnh thường phổ biến mạng nơ-rontích chập (Convolutional Neural Networks - CNNs), cũng như mạng no-ron hồi
quy (Recurrent Neural Networks - RNNs) trong các bài toán xử lý chuỗi va các
dit liệu có tính chất tuần tự như ngôn ngữ tự nhiên, cũng như các biến thể khác
23
Trang 31Chương 2 COSO LY THUYẾT
như Long Short-Ierm Memory Networks - LSTMs hay Mang No-ron GRU (Gated
Recurrent Units - GRUs) Hoặc các mạng Nơ-ron hồi quy hai chiều
2.2.4.1 Mạng nơ-ron tích chập (CNNs)
Convolutional Neural Networks (CNN) là một loại mạng nơ-ron nhân tạo thường
dùng cho việc xử lý hình ảnh CNN đã chứng minh hiệu quả vượt trội trong các
tác vụ liên quan đến thị giác máy tính như nhận dạng hình ảnh, phân loại vàphát hiện đối tượng Các thành phần chính bao gồm Convolutional Layers (Lớp
Tích Chap), đây là lớp chính của CNN, sử dụng các bộ loc (filters) để quét qua dữ
liệu đầu vào và trích xuất các đặc trưng quan trọng Mỗi bộ lọc sẽ tạo ra một bản
đồ đặc trưng (feature map) Pooling Layers, giảm kích thước của đặc trưng, giữlại các đặc trưng quan trọng và giảm số lượng tham số cũng như tính toán Max
Pooling, lấy giá trị lớn nhất trong một vùng Average Pooling, lấy giá trị trung
bình trong một vùng Fully Connected Layers (Lớp Kết Nối Day Đủ), liên kết cácneuron trong lớp hiện tại với tất cả các neuron trong lớp tiếp theo, thường được
sử dụng ở phần cuối của CNN để dự đoán kết quả
2.2.4.2 Mạng nơ-ron hoi quy (RNNs)
Recurrent Neural Networks (RNN) có các kết ni hồi tiếp để xử lý các dữ liệutuần tự RNN đặc biệt có giá trị trong các tác vụ liên quan đến chuỗi dữ liệu như
xử lý ngôn ngữ tự nhiên (NLP) và dự đoán chuỗi thời gian.
Thành phần chính
® Hidden State (Trạng Thái Ẩn): Trạng thái lưu trữ thông tin từ các bước trước
đó trong chuỗi, được cập nhật tại mỗi bước thời gian.
* Recurrent Connections (Kết Nối Hồi Tiếp): Cho phép thông tin được truyền
từ trạng thái ẩn này sang trạng thái ẩn khác trong các bước thời gian kế tiếp
Biến thể phổ biến của RNN Long Short-Term Memory (LSTM): LSTM có thể
giải quyết van dé gradient biến mat (vanishing gradient) trong RNN bằng cách
sử dụng các cổng (gates) để kiểm soát luồng thông tin Cầu trúc của mô hình này
24
Trang 32Chương 2 COSO LY THUYẾT
bao gồm cổng quên, cổng nhập va cổng xuất (output gate) để quan ly trạng thái
ô (cell state).
Gated Recurrent Unit (GRU): GRU là một biến thể đơn giản hơn của LSTM, kếthợp cổng quên và cổng nhập thành một cổng duy nhất, giúp giảm bớt tính toán
và dé dàng huấn luyện hơn GRU Sử dụng cổng có chức năng cập nhật và cổng
có chức năng reset để kiểm soát luồng thông tin
Bidirectional RNN (BiRNN), đây là một mạng RNN có hai hướng, một hướng
từ đầu đến cuối và một hướng ngược lại từ cuối đến đầu Việc xem xét hai chiều
này giúp mô hình hiểu được thông tin ở cả hai phía của chuỗi dữ liệu.
Bidirectional LSTM (BiLSTM): kết hợp hai LSTM, một xử lý chuỗi từ trái sang
phải và một từ phải sang trái, giúp mô hình có khả năng học tập từ cả hai hướng
của chuỗi dt liệu.
2.2.4.3 Mô hình Transformers
Mô hình Transformers là một mạng neural sâu đã được giới thiệu bởi Vaswani et
al [23] vào năm 2017 trong bai báo "Attention Is All You Need" Day là một bước
tiến lớn, nhờ vào khả năng xử lý dữ liệu mà có tính chất tuần tự hiệu quả mà thaythế được các câu trúc tuần tự truyền thống như RNN hay LSTM
Điểm nổi bật của Transformers là cơ chế Attention, đặc biệt là Self-Attention, giúp
cho mô hình có thể tập trung vào các phần khác nhau của chuỗi đầu vào để hiểungữ cảnh tốt hơn Điều này giúp mô hình hoc được mồi quan hệ giữa các từ trongcâu mà bị tác động bởi khoảng cách giữa chúng Transformers cũng sử dụng kiến
trúc Encoder-Decoder để xử lý các tác vụ như dịch máy và tạo văn bản.
Transformers đã trở thành nền tảng cho nhiều mô hình ngôn ngữ tiên tiến nhưBERT, GPT, và T5, đạt được kết quả xuất sắc trong nhiều nhiệm vụ NLP khácnhau từ dịch máy, tóm tắt văn bản đến trả lời câu hỏi và sinh văn bản Nhờ khảnăng song song hóa ở trong lúc huấn luyện, mô hình Transformers cũng tỏ ra rất
hiệu quả và có thể mở rộng với các bộ dữ liệu lớn.
25
Trang 33Chương 2 COSO LY THUYẾT
2.2.5 Quy trinh chung trong viéc ap dung hoc sau
Có nhiều hướng, nhiều lựa chọn khác nhau để giải được một van dé nào đó, cũngnhư có nhiều quy trình khác nhau để một nghiên cứu có thể đạt được kết quả mục
tiêu Tuy nhiên, hình 2.6 dưới đây là một quy trình chung trong việc xây dựng
một mô hình học sâu nói chung và mô hình phát hiện tương đồng mã nhị phândựa trên học sâu nói riêng mà chúng ta có thể dựa theo
Data collection
What problem are What data do What defines What features What kind of What have we tried/
we trying to solve? we have? success? should we model? model should we use? What else can we try?
¢ Thu thập dữ liệu: Đầu tiên, cần chọn ra các tập dữ liệu từ các nguồn tin
cậy và phù hợp với mảng đang nghiên cứu Sau đó là lưu trữ trong một hệ
thống cơ sở dữ liệu hoặc một hệ thống tệp có cau trúc để dé dàng trích xuấy
và truy cập sủ dụng Dữ liệu cần được gắn nhãn chính xác mô hình thiết kế
học được các đặc trưng phù hợp với bài toán đang xử lý.
e Tiền xử lý dữ liệu: Loại bỏ các dữ liệu không hợp lệ hoặc không cần thiết
Xử lý các dữ liệu thiếu hoặc bị sai lệch để đảm bảo chất lượng của dữ liệuđầu vào
Thiết kế mô hình DL
* Trước tiên, ta cần định nghĩa van dé cần giải quyết, hiểu được bài toán mình
muốn giải là gì
* Sau đó xem xét các bộ dữ liệu hiện có, có thể là thu thập từ công trình khác
hoặc tự biên dich và tự tao tap dữ liệu mới.
26
Trang 34Chương 2 COSO LY THUYẾT
s© Xác định các tiêu chí về mô hình đang xây dựng, từ đó chọn lọc ra các đặc
trưng học phù hợp.
© Xác định kiến trúc học sâu phù hợp với nhu cầu đang cần xử lý
e Xây dựng mô hình baseline: Thiết kế mô hình baseline với kiến trúc đơn
giản để làm nền tảng so sánh Mô hình baseline giúp xác định hiệu suất cơ
bản và làm điểm khởi đầu để cải tiến các mô hình phức tạp hơn Ta cũng bắt
đầu với một bộ dữ liệu nhỏ, chẳng hạn như 10% bộ dữ liệu đã thu thập để
thực nghiệm và xem xét tính khả thi trước khi thực hiện áp dụng trên tập
di liệu day đủ và phức tạp hon
e Huấn luyện mô hình baseline với tập dữ liệu đã chuẩn bị Theo dõi các chỉ
số hiệu suất như độ accuracy, recall, precision và F1-score
* Điều chỉnh các siêu tham số và tối ưu hóa mô hình về hiệu suất, chi phí tính
toán và tốc độ xử lý Tối ưu hóa các thành phần của mô hình như số lượnglớp, số lượng neuron, kích thước batch, và tốc độ học (learning rate) để cảithiện hiệu suất và giảm thiểu chỉ phí tính toán
2.2.5.2 Quy trình chung trong bài toán BCSD
Chuẩn bị dữ liệu
¢ Thu thập di liệu: Đầu tiên, cần chọn ra các nguồn di liệu phù hợp với bài
toán so sánh tương đồng giữa hai hàm nhị phân Những nguồn dữ liệunày có thể bao gồm các kho mã nguồn mở - thu thập và biên dịch sang nhị
phân Chúng ta thu thập thập dữ liệu và lưu trữ chúng bên trong một hệ
thống cơ sở dữ liệu hoặc một hệ thống tệp có cấu trúc để chúng ta có thể
dé dàng quan lý và truy cập để huấn luyện mô hình Dữ liệu cần phải đượcgắn nhãn một cách chính xác để mô hình được huấn luyện có thể học đượccác đặc trưng của hàm nhị phân Việc gắn nhãn bao gồm xác định các cặphàm tương đồng và không tương đồng Thông thường, chúng ta có thể thuthập các bộ dữ liệu về cặp hàm tương đồng với nhau và không tương đồngtrong những công trình nghiên cứu về BCSD tương tự trước
27
Trang 35Chương 2 COSO LY THUYẾT
Tiền xử lý dữ liệu: Tại bước này chúng ta loại bỏ đi các dữ liệu không hợp lệhoặc không cần thiết trong quá trình huấn Xử lý các dữ liệu thiếu hoặc bịsai lệch để có thể đảm bảo chất lượng của bộ dữ liệu đầu vào Chuyển đổi
mã nhị phân thành dạng có thể được sử dụng thích hợp cho mô hình học
sâu Điều này bao gồm việc dịch ngược (disassembly) mã nhị phân thành
các lệnh assembly và biểu diễn các lệnh này dưới dạng vector hoặc những
cấu trúc dữ liệu khác để thích hợp với mô hình huấn luyện như Control
Flow Graph.
Lựa chọn ra kiến trúc học sâu thích hợp
Trước hết, cần định nghĩa van dé cần giải quyết, xác định bài toán phát hiệntương đồng đa nền tang hay đơn nên tảng để có định hướng phù hợp
Sau đó xem xét các bộ dữ liệu hiện có, có thể là thu thập từ công trình khác
hoặc tự biên dịch và tự tạo tập dữ liệu mới.
Làm rõ những yêu cầu mong muốn về mô hình nhị phân, chẳng hạn nhưngoài phát hiện tương đồng đa nên tang, cần đảm bảo chi phí tính toán vàthời gian xử lý như thế nào
Xác định kiến trúc mô hình phù hợp với tác vụ đang giải quyết, cụ thể làbài toán so sánh tương đồng giữa hai hàm nhị phân Hiểu rõ đặc trưng vàyêu cầu của bài toán so sánh tương đồng giữa hai hàm nhị phân để lựachọn kiến trúc mô hình phù hợp Các kiến trúc mô hình thường được sửdụng cho bài toán này bao gồm CNN, RNN (LSTM, GRU), và các mô hình
transformer.
Xây dựng mô hình baseline: Thiết kế mô hình baseline với kiến trúc đơngiản để làm nền tang so sánh Mô hình baseline giúp xác định hiệu suất cơbản và làm điểm khởi đầu để cải tiến các mô hình phức tạp hơn Ta cũng
bắt đầu với một bộ dữ liệu nhỏ, chẳng hạn như 10% bộ dữ liệu đã thu thập
để thực nghiệm và kiểm tra tính khả thi của giải pháp trước khi thực hiện
huấn luyện trên tập dữ liệu đầy đủ và phức tạp hơn
Huấn luyện mô hình baseline với tập dữ liệu đã chuẩn bị Theo dõi các chỉ
số accuracy, recall, precision và F1-score cũng như AUC
28
Trang 36Chương 2 COSO LY THUYẾT
© Điều chỉnh các siêu tham số và tối ưu hóa mô hình về hiệu suất, chi phí tính
toán và tốc độ xử lý Tối ưu hóa các thành phần của mô hình như số lượnglớp, số lượng neuron, kích thước batch, và tốc độ học (learning rate) để cảithiện hiệu suất và giảm thiểu chỉ phí tính toán
2.2.6 Phương pháp đo lường sự tương đồng giữa các vector
Trong khóa luận này, chúng tôi mong muốn việc nhúng hàm nhị phân sang khônggian vector (tức là một vector số thực) bằng áp dụng học sâu Khi đã có vector sốbiểu diễn hàm hiệu quả, tức là các cặp tương đồng sẽ nằm càng gần nhau, cáccặp không tương đồng sẽ có biểu diễn xa nhau trong không gian vector, chúng
tôi đơn giản dùng các phương pháp đo lường khoảng cách giữa các vector để xác
định độ đo tương đồng
Các phương pháp đo lường sự tương đồng giữa các vector bao gồm: Cosine
Sim-ilarity, Khoảng cách Euclid, Khoảng cách Manhattan
Trong đó, A và B là hai vector, và n là số lượng phan tử trong mỗi vector Độ tương
đồng Cosine trả về một giá trị từ -1 đến 1, với giá trị 1 cho biết hai vector hoàntoàn tương tự (cùng hướng), giá trị 0 cho biết hai vector không có sự tương tự(vuông góc), và giá trị -1 cho biết hai vector hoàn toàn đối nghịch (ngược hướng)
Bên cạnh đó, chúng ta cũng tránh nhằm lẫn với khái niệm về khoảng cách Cosine
Khoảng cách Cosine đo lường khoảng cách giữa hai vector dựa trên độ tương
đồng Cosine Khoảng cách Cosine được tính bằng cách lấy 1 trừ đi độ tươngđồng Cosine:
29