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: Tự động hóa phát hiện lỗ hổng bảo mật trên hợp đồng thông minh dựa trên mô hình học sâu và cơ chế Attention

89 1 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 đề Tự động hóa phát hiện lỗ hổng bảo mật trên hợp đồng thông minh dựa trên mô hình học sâu và cơ chế Attention
Tác giả Le Hong Bang, Nguyen Ngoc Quynh Giang
Người hướng dẫn TS. Pham Van Hau, ThS. Phan Tho Duy
Trường học Dai hoc Quoc gia Ho Chi Minh
Chuyên ngành An toan thong tin
Thể loại Khoa luận tốt nghiệp
Năm xuất bản 2023
Thành phố TP. Ho Chi Minh
Định dạng
Số trang 89
Dung lượng 47,49 MB

Nội dung

Với hàng tỷ đô la tiền kỹ thuật số được giữ trong các Smart Contract, và sự gia tăng số lượng các hợp đồng này, nhiều vấn đề về bảo mật đã xuất hiện, gây ra ton thất tài chínhlớn và làm

Trang 1

DAI HỌC QUOC GIA HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN

KHOA MẠNG MAY TÍNH VÀ TRUYEN THONG

LE HONG BANG - 19520396

NGUYEN NGOC QUYNH GIANG - 19520500

AUTOMATED SMART CONTRACT VULNERABILITY

DETECTION USING DEEP LEARNING AND ATTENTION

MECHANISMS

KY SU NGANH AN TOAN THONG TIN

GIANG VIEN HUGNG DAN:

TS Pham Văn Hậu

ThS Phan Thé Duy

TP.H6 Chi Minh - 2023

Trang 2

LỜI CẢM ƠN

Trong suốt quá trình thực hiện nghiên cứu và viết khóa luận, nhóm đã có may mắn nhận được sự hướng dẫn, sự hỗ trợ, những phản hồi giá trị và lời khích

lệ từ các giáo viên hướng dẫn và toàn thể giáo viên trong bộ môn Nhóm xin

bày tỏ lời cảm ơn tới thầy Phan Thế Duy, thầy Phạm Văn Hậu, các thầy cô và

anh chị trong phòng thí nghiệm an toàn thông tin (Inseclab) đã tận tình trực

tiếp hướng dẫn, giúp đỡ nhóm em trong quá trình nghiên cứu.

Nhóm muốn bày tỏ lòng biết ơn sâu sắc đến gia đình và bạn bè, những người

đã khích lệ và cung cấp phản hồi quý báu trong suốt quá trình hoàn thành khóa

luận.

Nhóm cũng chân thành cảm ơn các quý thay cô trường Dai học Công nghệ Thông tin - DHQG TP.HCM, đặc biệt là các thay cô khoa Mang máy tính va Truyền thông, các thầy cô thuộc bộ môn An toàn Thông tin đã giúp đỡ nhóm.

Lê Hồng Bằng Nguyễn Ngọc Quỳnh Giang

ii

Trang 3

MỤC LỤC

THONG TIN HỘI ĐỒNG CHAM KHÓA LUẬN TỐT NGHIỆP ¡

LỜI CAM ƠN Q.2 ii

1.4 Mục tiêu, đối tượng, phạm vi của nghiên cứu - 5

1.41 Mục tiêu nghiên cỨu 5

1.4.2 Đối tượng nghiêncứu 5

1.4.3 Phạm vi nghiên cỨU Ặ.Ặ.Ặ.Ặ 6

1.44 Cau trúc khóa luận tốt nghệp 6

CHƯƠNG 2 CƠ SỞ LÝ THUYÊT 7

Trang 4

223 Unchecked-calls

2.2.4 Arithmetic 0.020000 0222 eee 2.3 Các mô hình Deep Learning co bản

2.3.1 Multi-layer Perceptron 000.

2.3.2 Recurrent neural network 0

2.3.3 Long short-term memory -.

2.3.4 BHLSTM 000002000000.

2.4 Cơ chế Attention 0.0.0.0 000000.

2.4.1 Attention 2 0.2 ee 2.4.2 Kiến trúc Transformer 00

2.4.3 Encoder-only models

2.5 MôhìnhhBERI - cho 2.5.1 BERIZ⁄⁄ @ À

2.5.2 DiStilBERI co 2.66 MôhìnhGNN Q0 va 2.6.1 Graph Neural Networks

2.6.2 Đồ thị luồng điều khiển

2.6.3 Graph Convolutional Network

2.7 Các công trình nghiên cứu liên quan

-CHƯƠNG 3 MÔ HÌNH PHÁT HIỆN 3.1 Tổng quan 0.0 va 3.2 Phương pháp phát hiện 16 hổng dựa trên mô hình DistilIBERT 3.21 Quy trình token hóa (Tokenization pipeline)

3.2.2 Pre-traning cv KV 3.2.3 Quá trình tỉnh chỉnh (Fine-tuning)

3.2.4 Cấu trúc của mô hình phát hiện dựa trên DistiIBERT .

3.3 Mô hình phát hiện lỗ hong dựa trên đồ thị

3.3.1 Xây dựng đồ thi Control Flow Graph

lv

Trang 5

3.3.2 Mô hình GƠỚN Q.0 Qua 48

3.3.3 Mô hình phát hiện lỗ hong sử dụng mô hình GƠN 48 3.4 Mô hình kết hợp phát hiện lỗ hong - 49

CHƯƠNG 4 THÍ NGHIỆM VÀ ĐÁNH GIÁ 51

4.1 Môi trường thực nghiệm ẶẶẶẶẶ 51

4.2 Dữ liệu và mã nguồn thucnghiém - 51

4.3 Quá trình thu thập và xử lý dữ liệu 51

43.1 Smartbugs Wild Datasets 51

4.3.2 Hugging Face Datasets .00.- 53

4.3.3 Tổng quan quy trình thu thập và gan nhãn dữ liệu 53

4.5 Các trường hợp thực nghiệm 58 4.6 Quá trình xây dựng mô hình pretrained DistilBERT và tỉnh chỉnh

(Fine-tuning) ee 58

4.6.1 Quá trình tokenize Q Q sỦ 58

4.6.2 Quá trình xây dựng pre-train models 60

4.6.3 Quá trình fine-tuning cho bài toán phát hiện đa lỗ hong 64

4.6.4 Thực nghiệm l,23Ä Ặ ốc 68 4.6.5 Thực nghệm 4 Q2 69 4.6.6 Thực nghiệm 5,6,7,8 220004 69 4.6.7 Thực nghiệm 910,11 69

Trang 6

4.7 Mo hình phát hiện dựa trên Graph

4.7.1 Quy trình xây dựng đồ thi CFG 4.7.2 Huấn luyện mô hình với GCN

4.73 Thực nghiệm 12

4.9 Nhận xét/Đánh giá kết quả thực nghiệm

CHƯƠNG 5 KET LUẬN VÀ HƯỚNG PHÁT TRIEN

5.1 Kết luận - Dánh gid 2.2.0.0 00000000 ee eee

5.2 Hướng phat triển ee

TAI LIEU THAM KHAO

4.8 Thực nghiệm kết hợp mô hình DistiIBERT và mô hình GCN .

77

77 78

79

Trang 7

DANH MỤC CÁC HÌNH VE

Hình 21 Mối tương quan giữa sourcecode, opcode va bytecode của

Smart COntfaGCE va 7

Hình 2.2 Phương thức hoạt động củaEVM 9

Hình 2.3 Các bước khai thác lỗ hong Reentrancy 13

Hình 2.4 Mô hình MLP 200 16

Hinh 2.5 Mô hìnhRNN va 18 Hình 2.6 Mô tả kiến trúc mạng LSTM 20

Hình2.7 Mô hình BiLSTM 22

Hình 2.8 Các bước tính toán trong cơ chế attention 24

Hình 2.9 Tiến trình Pre-training và Fine-tuning của BERT 28

Hình 2.10 Minh họa đồ thị luồng điều khiển trong Solidity 32

Hình 3.1 Tổng quan quá trình xây dựng mô hình dựa trên kiến trúc TransÍOTMGT ee 40 Hình 3.2 Quy trình token hóa (Tokenization pipeline) 42

Hình 3.3 Mô hình phát hiện lỗ hồng sử dụng kiến trúc DistiIBERT 45 Hình 3.4 Đồ thị luồng điều khiển (CFG) 47

Hình 35 Quy trình trích xuất và huấn luyện với mô hình GCN 49

Hình 3.6 Mô hình kết hợp: DistilBERT -GCN 50

Hình 41 Bộ dữ liệu SmartBugsWild 52

Hình 4.2 Bộ dữ liệu Huggingface co 53

Hình 4.3 Kết quả mô hình tiền huần luyện với tác vụ MLM

(Smart-Bug Wild) Quy 62

Vil

Trang 8

Hình 4.4 Loss and accuracy mô hình DistlBERT-BILSTM

(Smart-BugWid) ee 72

Hình 4.5 Kết quả mô hình GCN phân loại dựa trên đồ thi CFG (biểu

diễn onehot vec-to của nút) 2 0 00.0 00004 74

Hình 4.6 Kết quả mô hình GCN sử dung DistiIBERT biểu diễn gia

tTỊ HÚI QC Q Q Q Q ng gà và và và kg va 75

vill

Trang 9

DANH MỤC CAC BANG BIEU

Bang 2.1 Bảng kết quả đánh giá các m6 hinh 3ĩ

Bang 2.2 Bảng khảo sát các mô hình hiện có 38

Bang 41 Bộ dữ liệu SmartBugs Wild 52 Bang 4.2 Bo dữ liệu Huggingface 2.22 20 54

Bang 43 Kich ban thực nghiém 58

Bảng 4.4 Kết quả thực nghiệm 1,2,3 trên các mô hình (source code) 68 Bảng 4ð Kết quả thực nghiệm 4 trên mô hình DistilBERT-BiLSTM

Trang 10

TÓM TẮT KHÓA LUẬN

Tính quan trọng của đề tài nghiên cứu:

Blockchain đã ngày càng được ua chuộng và chấp nhận rộng rãi, và Smart Contract đã thu hút được sự quan tâm đặc biệt trong thời gian gần đây do khả

năng đặc biệt và tùy chỉnh cao của nó Nó có thể được cấu hình theo nhiều hìnhthức khác nhau để cung cấp nhiều loại dịch vụ và giải pháp Với hàng tỷ đô la

tiền kỹ thuật số được giữ trong các Smart Contract, và sự gia tăng số lượng các

hợp đồng này, nhiều vấn đề về bảo mật đã xuất hiện, gây ra ton thất tài chínhlớn và làm mất ổn định của hệ sinh thái hợp đồng trên Blockchain Vì vậy, việcphát hiện hiệu quả các khuyết điểm trong hợp đồng đã trở thành một vấn đềmới nhưng cần thiết để giải quyết

Hiện đã có nhiều công trình nghiên cứu va các công cụ kiểm tra lỗ hong bảomật khác nhau được phát triển nhưng đa số đều tồn tại một số nhược điểm như

tốn thời gian phân tích, hoặc phân tích không có hiệu quả, không được đánh

giá cao Sau khi nghiên cứu hướng sử dụng các mô hình BERT, GPT và các mô

hình mở rộng khác dựa trên kiến trúc Transformer được ứng dụng và đạt được kết quả rất tốt, chúng tôi nhận thấy đây là một hướng có nhiều tiềm năng.

Trang 11

CHƯƠNG 1 TONG QUAN

Chương 1 mô tả về các lỗ hong bảo mật tồn tại trong Smart Contract trên

nền tảng Ethereum Blockchain Đồng thời, cấu trúc và phạm vi của khóa luận

cũng được trình bày trong chương này.

1.1 Giới thiệu vấn đề

Ethereum là một nền tang tính toán phân tán dựa trên Blockchain, cho phép thực hiện các hợp đồng thông minh (Smart Contract) - đây là các điều khoản

được tự động thực thi khi đáp ứng các điều kiện đã định trước, không thể bị can

thiệp từ bên ngoài Smart Contract được tạo ra bằng các ngôn ngữ lập trình có khả năng tồn tại một số hạn chế về bảo mật, ví dụ như Solidity Do đó, trong

Smart Contract thường có các lỗ hổng mà kẻ tấn công có thể lợi dụng

Trong hệ thống Smart Contract, các thuộc tính bất biến (immutability) và

đặc tính chống giả mạo (tamper-resistance) tuân theo nguyên tắc “code is law”,

nghĩa là các điều kiện được ghi trong Smart Contract không được sửa đổi [12]

Tuy nhiên, Smart Contract vẫn có những rủi ro và thách thức bảo mật riêng của

chúng như chúng được viết bằng ngôn ngữ lập trình dễ xảy ra lỗi như Solidity

và có thể chứa các lỗi lập trình có thể bị khai thác nhưng thường bị bỏ qua hoặcphát hiện chậm khi mà nó đã triển khai trên blockchain và sửa đổi rất khó khănhoặc không thể sửa đổi Các 16 hong bảo mật đó có thể bị lợi dụng để tạo ra các

Trang 12

an toàn của các Smart Contract DAO là một Smart Contract mã nguồn mở

cho phép bất kỳ ai trao đổi DAO token với ether Tuy nhiên, hợp đồng DAO có

những sai sót nghiêm trọng trong mã nguồn, cho phép những kẻ tấn công thực

hiện lấy tiền Một lỗ hồng đã tồn tại cho phép kẻ tấn công yêu cầu tiền từ sốlần Smart Contract trước khi số dư được cập nhật Lỗ hổng bảo mật xảy ra dolỗi trong mã mà các nhà phát triển không xem xét tiềm năng cho một cuộc gọi

đệ quy (recursive call) Do đó, nó cho phép những kẻ tấn công đánh cắp ether trị giá hàng triệu đô la trong vòng vài giờ đầu tiên Kịch bản tấn công DAO cho

thấy một lỗ hổng Smart Contract đơn giản có thể gây tác hại như thế nào

Cho đến nay thì đã có nhiều công cụ để phát hiện các lỗ hổng trên SmartContract chang hạn như Oyente - static analysis - sử dụng giải pháp Symbolic

execution, ContractWard [23] sử dung machine learning, nhưng vẫn còn gặp

nhiều hạn chế Nhóm nhận thấy việc sử dụng mô hình học sâu (DL) và cơ chế

Attention có khả năng cải thiện và nâng cao phát hiện tự động các lỗ hổng trong

Smart Contract.

Nói tóm gọn lại thì thiệt hại của các lỗ hong trong hợp đồng thông minh có ảnh hưởng mạnh mẽ và không thể phục hồi Bên cạnh đó thì việc phân tích

và phát hiện lỗ hổng bảo mật rất khó khăn và đầy thách thức Cuối cùng, các

nghiên cứu trước nay dựa vào phân tích truyền thống sẽ không đạt được mức

độ phán đoán chính xác trong khi kết quả sai lệch nghiên về False Positive và

Ealse Negative cao Do đó, trong ngữ cảnh hiện tại, các phương pháp ấp dụng

bảo mật Smart Contract được yêu cầu khẩn cấp Day cũng chính là những luậnđiểm cốt lỗi để nhóm thực hiện nghiên cứu và triển khai nhằm đề xuất mộthướng giải pháp triệt để và toàn diện hơn

Trang 13

1.2 Tính ứng dụng

Đề tài khoá luận này tập trung vào việc nghiên cứu các mô hình tự động hóa

xác định 16 hổng bảo mật trên các Smart Contract dựa trên mô hình hoc sâukết hợp với cơ chế Attention giúp tăng cường bảo mật và giảm thiểu những rủi

ro của Smart Contract Sau đó nhóm sẽ đánh giá hiệu năng, độ chính xác, thời

gian dự đoán của mô hình với các tập dữ liệu Smart Contract chứa lỗ hong bao

mật (tập dit liệu công khai, va tap dữ liệu tự thu thập) So sánh kết quả thực

nghiệm với các mô hình trong các nghiên cứu về phát hiện lỗ hong trong Smart

Contract khác.

1.3 Những thách thức

Mặc dù một số công cụ phân tích dựa trên học sâu cho các Smart Contract

đã được đề xuất, nhưng có một số hạn chế như các mô hình chỉ đánh giá việc

phát hiện lỗ hong trong Smart Contract, hoặc các quá trình trích xuất các đặc

trưng (feature) và vector hoá có thể làm mất tính liên kết trong mã nguồn ban đầu, làm ảnh hưởng đến việc phát hiện lỗ hồng.

Nói chung, mô hình máy học cần đặc trưng (feature) làm đầu vào (input),

được trích xuất theo cách thủ công, sau đó tìm hiểu các đặc trưng một cách

rõ ràng Tuy nhiên các đặc trưng đại diện cho các Smart Contract được phân

tích không rõ ràng bởi Ethereum Smart Contract còn mới so với ngôn ngữ C và

Java Một lý do khác cho việc khai thác không đủ các tính năng là thiếu các mã nguồn của Smart Contract.

Trang 14

1.4 Mục tiêu, đối tượng, phạm vi của nghiên cứu

1.4.1 Mục tiêu nghiên cứu

Trong đề tài nghiên cứu này, nhóm sẽ tập trung vào việc phân tích bảo

mật ngôn ngữ Solidity như một mục tiêu phân tích tĩnh của Ethereum Smart

Contract, nghiên cứu các mô hình tự động hóa xác định 16 hổng bảo mật trên

các hợp đồng thông minh dựa trên mô hình học sâu (DL) kết hợp với cơ chế tập

trung (attention machanism) Cụ thể, nhóm nghiên cứu đặt mục tiêu thực hiện

các công việc như sau:

e Tìm hiểu về các mô hình học sâu (DL), cơ chế tập trung (Attention

Mech-anism), các mô hình kiến trúc Transformer trong bài toán phát hiện lỗ

hồng

e Tìm hiểu việc trích xuất và xây dưng các đặc trưng từ mã nguồn Smart

Contract

e Đánh giá hiệu năng, độ chính xác, thời gian dự doán của mô hình với các

tập dữ liệu Smart Contract chứa lỗ hổng bảo mật (tập dữ liệu công khai,

và tập dữ liệu tự thu thập).

e So sánh và đánh giá kết quả thu được của mô hình với các nghiên cứu đã

có sử dụng DL và cơ chế attention Đưa ra các nhận xét và phân tích về kết

quả của mô hình.

1.4.2 Đối tượng nghiên cứu

e Ethereum Smart Contract

e Các lỗ hổng trong Smart Contract: Reentrancy, Arithmetic Overflow and

Underflow,

Trang 15

e Các mô hình học sâu: MLP, LSTM, BiLSTM, GCN,

e Các mô hình hoc máy dựa trên kiến trúc Transformer: DistiIBERT

e Các mô hình phát hiện lỗ hồng ứng dụng học sâu và kiến trúc Transformer

e Thư viện hỗi trợ máy học Pytorch, sklearn, pytorch geometric

1.4.3 Pham vi nghiên cứu

Dé tài tap trung phát triển và xây dựng mô hình phát hiện lỗ hong trong

Smart Contract sử dụng các phương pháp và thuật toán liên quan đến DL và

cơ chế attention sẽ được áp dụng và tuỳ chỉnh để phù hợp với mục dích nghiên

4

cứu.

1.4.4 Cấu trúc khóa luận tốt nghiệp

Nhóm xin trình bày nội dung của khóa luận theo cấu trúc như sau:

e Chương 1: Tổng quan về khóa luận.

e Chương 2: Dưa ra cơ sở lý thuyết và các nghiên cứu có liên quan.

e Chương 3: Giới thiệu về phương pháp và mô hình dùng để phát hiện lỗ hồng

trong Smart Contracts.

e Chương 4: Thực hiện và đánh giá thí nghiệm.

e Chương 5: Rút ra kết luận và định hướng phát triển tiếp theo cho đề tài

Trang 16

CHƯƠNG 2 CƠ SỞ LÝ THUYET

Chương 2 sẽ giới thiệu lý thuyết cơ bản cho nghiên cứu này, bao gồm:

Ethereum, Smart Contract, ngôn ngữ lập trình Solidity, các lỗ hổng tồn tại

trong Smart Contract, mô hình dùng Deep Learning để phát hiện 16 hong va cơ

chế attention.

2.1 Ethereum

2.1.1 Nền tảng Ethereum

Ethereum áp dụng công nghệ Blockchain, là một hệ thống điện toán phân

tán, để thực hiện Smart Contract Có nghĩa là các điều khoản trong Contract sẽ

tự động được thực thi khi moi điều kiện được đặt trước đó đã được thoả mãn, không cho phép bất kì sự tác động nào từ bên ngoài.

Contract trên mạng Ethereum Source code ban đầu được viết bằng ngôn ngữ

ĩ

Trang 17

cấp cao (solidity) Tuy nhiên, con người tạo ra một số lượng biến tự định nghĩa

trong mã nguồn (ví dụ như có thể đặt là address _ to hoặc address _ receiver)

làm cho việc phân tích Smart Contract có thé không phù hợp.

Có thể biên dịch source code thành opcode để EVM thực thi nó EVM sửdụng các opcode để thực thi những nhiệm vụ khác nhau Có khoảng 140 opcode

khác nhau giúp nâng cao EVM trở nên hoàn chỉnh, cho phép nó đánh giá mọi

thứ, cụ thể là stop và các phép tính toán số học, phép so sánh, logic, sha3, thông

tin biến environment, block, stack, memory, storage, luồng hoạt động, EVM định nghĩa các lệnh opcodes bằng các con số, với mỗi số nhất định nó sẽ gắn liền với một opcode.

Các opcode này được mã hóa thành mã bytecode để xác định mức độ bảo

mật thích hợp EVM thống trị phần bên trong của Pthereum blockchain và cũng

bao gồm danh sách chỉ tiết về trạng thái để bắt đầu giao dich Bytecode thường

là các mã số nhỏ gọn, chứa các câu lệnh cho máy tính ở dang nhị phan, mỗi lệnh

là một opcode Hình 2.1 thể hiện mối tương quan giữa source code, opcode và

bytecode của Smart Contract

2.1.2 Solidity

Solidity là một ngôn ngữ lập trình với cú pháp va cấu trúc mã tương tự như

Javascript và C, được dùng để tao contract - một thành phần quan trọng để tạo

block cho ứng dụng Ethereum trên EVM (Ethereum Virtual Machine).

Solidity được xây dựng xoay quanh một khái niệm chính: contract Cơ bản

thì contract giống như class trong lập trình tạo ra các đối tượng (OOP), với các biến trang thái (state variables) và chức năng (functions) Các khái niệm contract trừu tượng (contract có ít nhất một chức năng chưa được thực hiện)

va interface (gồm các chữ ký của các tác vu) cũng giống như trong OOP.

Trang 18

2.1.3 Smart Contract

Smart Contract - hợp đồng thong minh, là những chương trình thực thi trên blockchain Chúng giống như những hợp đồng số được điều chỉnh bởi một tập quy tắc rõ ràng Tập quy tắc đó được định nghĩa bởi mã máy tính mà tất cả các node trong mạng phải sao chép và tuân theo Thực chat thi smart Contract chỉ

là một đoạn mã (code) thực thi trên hệ thống phân tan (blockchain), nó có thể

tạo ra các giao thức không cần quyền truy cập (permissionless) Trên Ethereum,

Smart Contract đảm nhận việc thực hiện và quản lý các hoạt động xảy ra trên

blockchin khi các người dùng (address) tương tác.

Smart Contract sẽ được thực thi trong môi trường của Ethereum Virtual

Machine (EVM), hay còn gọi là máy ảo Ethereum Don giản, EVM hoạt động

như một trung gian trong việc thực thi Smart Contract trên mạng Ethereum.

Hình 2.2 cho thấy mỗi nút Ethereum được trang bị mot EVM riêng, giúp dam

bảo tính an toàn dữ liệu và phan tấn của mạng EVM hỗ trợ thực thi và gọi các

Smart Contract EVM có kích thước stack đơn giản với kích thước stack tối đa

là 1024 Do đó, nếu số lượng cuộc gọi vượt quá 1024 thì có thể xảy ra tình trạng

Ethereum Node Ethereum Node

Hinh 2.2: Phương thúc hoạt động của EVM

Trang 19

oOo On nn FF Ww b2

ma¬ CC

12

2.2 Các lỗ hổng trong Smart Contract

Phần này trình bày một số 16 hổng bảo mật trong các Smart Contract dựatrên Ethereum blockchain Vì một Smart Contract có thể chứa hàng triệu đô

la dưới dạng tiền điện tử nên những lỗ hong này có thể gây ra những ton thất

nghiêm trọng.

2.2.1 Reentrancy

Reentrancy là một lỗ hổng Smart Contract có thể khai thác nổi tiếng xảy ra

khi một Smart Contract gọi một Smart Contract và tiếp tục thực hiện sau khi cuộc gọi mới hoàn thành Điều này yêu cầu Smart Contract dễ bị tấn công gửi

một cuộc gọi bên ngoài (external call), sau đó những kẻ lừa đảo có thể đánh cắp

và thực hiện cuộc gọi đệ quy (recursive call) trở lại Smart Contract Kẻ lừa đảo

có thể tạo Smart Contract tại một dia chỉ bên ngoài bằng mã độc và rút tiền từ

Smart Contract nếu không cập nhật trạng thái trước khi gửi tiền.

Một ví dụ về smart contract tồn tại 16 hỗng này bị tan công này là cuộc tấn công DAO, dẫn đến mat ETH trị giá 150 triệu đô la từ Smart Contract của

DAO (tổ chức tự trị phi tập trung)

contract EtherStore {

mapping(address => uint) public balances;

function deposit() public payable {

balances[msg.sender] += msg.value;

function withdraw() public {

uint balance = balances[msg.sender];

require(balance > 0);

// Not secure

10

Trang 20

(bool transferred, ) = msg.sender.call{value:

require(transferred, “Khong the gui Ether");

function attack() external payable {

Trang 21

Listing 2.1: Mã nguồn minh hoa lỗ hổng Reentrancy

Doan mã nguồn trên mô tả một Smart Contract có chứa lỗ hồng Reentrancy

(EtherStore) và Smart Contract Attack là hợp đồng thông minh dùng để khai

thác lỗ hong Reentrancy Hình 2.3 mô tả các bước khai thác 16 hong Reentrancy

Khi contract EtherStore được deploy Gỉa sử contract Attack sau khi deploy

sẽ gọi ham deposit() của EtherStore và gửi vào một (ether) Sau đó contract

Attack gọi hàm withdraw() để rút tiền đã gửi Khi các hợp đồng EtherStorekhông tiến hành cập nhật số dư của người dùng trước khi thực hiện việc chuyểntiền, người tấn công - attacker có thể liên tiếp gọi hàm withdraw để lấy hết sốtiền (ether) trong contract Bất kể khi nào contract của người tan công - attacker

nhận Ether, hợp đồng đó sẽ tự động thực thi ham fallback (chức năng không

có tên trong contract, được kích hoạt khi function được gọi không khớp với moi

hàm trong contract, hoặc khi gửi các ether tới mà không chứa dữ liệu), nơi mà

lại gọi hàm withdraw thêm một lần nữa Tại điểm này, cuộc tấn công bắt đầumột chu kỳ đệ quy và hợp đồng đó không thể cập nhật số dư của người thực

hiện tấn công.

2.2.2 Access-control

Access control xác định các hạn chế xung quanh đặc quyền và vai trò của

người dùng trong một ứng dung Access control trong Smart Contract có thể

liên quan đến quan trị và logic quan trọng như đúc mã thông báo, bỏ phiếu cho

các đề xuất, rút tiền, tạm dừng và nâng cấp hợp đồng, thay đổi quyền sở hữu

e Không xác thực việc sửa đổi - điều quan trọng là cần có xác thực Access

control trên các chức năng quan trọng thực hiện các thao tác như sửa đổichủ sở hữu, chuyển tiền và tokens, tạm dừng và bỏ tạm dừng hợp đồng, v.v.Không xác thực việc sửa đổi rất có thể sẽ dẫn đến sự thỏa hiệp của hợp

12

Trang 23

oOo ON Det FF C23 bw

PoP —no mm ©

đồng hoặc mất tiền.

e Sửa đổi tên (names) không chính xác - Do lỗi của nhà phát triển và lỗi chính

tả, có thể xảy ra trường hợp tên của việc sửa đổi hoặc chức năng không

chính xác so với dự định Các tác nhân độc hại cũng có thể khai thác nó

để gọi chức năng (function) quan trọng mà không cần có công cụ sửa đổi,điều này dẫn đến mất tiền hoặc sửa đổi quyền sở hữu tùy thuộc vào logic

của chức năng.

e Các vai trò (roles) bị áp đảo - Việc cho phép người dùng có các vai trò bị

áp đảo có thé dẫn đến các lỗ hong bảo mật Việc thực hành đặc quyền tốithiểu phải luôn được tuân theo khi gan đặc quyền

2.2.3 Unchecked-calls

Unchecked-calls là một loại lỗ hong xảy ra khi giá trị trả về (return value)của cuộc gọi tin nhắn không được kiểm tra Do đó mà việc thực thi sẽ tiếp tục

ngay cả khi Smart Contract được gọi đưa ra một ngoại lệ Nếu cuộc gọi (call)

không thành công ngẫu nhiên hoặc do ké tấn công buộc cuộc gọi không thành công, gây ra hành vi không mong muốn, làm ảnh hưởng đến logic chương trình

contract Lotto f{

bool public isPayedDut = false;

address public winnerAddress;

uint public winningAmount ;

function transferToWinner() public {

Trang 24

14 }

Lỗ hổng xảy ra ở dòng số 8, khi winner nhận một lượng winAmount ether, trong

đó lệnh gửi (send) được sử dụng mà không kiểm tra phản hồi Trong trường

hợp một người chiến thắng có giao dịch không thành công (ví dụ như hết gas

hoặc hợp đồng cố ý dưa vào ham fallback function) cho phép payedOut được đặt

thành true bất kể ether có được gửi hay không Thì trường hợp này, bất kể ai

cũng có thể rút tiền của winner qua hàm withdrawLeftOver

2.2.4 Arithmetic

Day là một lỗ hong pho biến, nó lưu các dữ liệu bằng định dang nhị phan

trong đó, số nhị phân là tập hợp các bit và mỗi bit bằng 0 hoặc 1 Arithmetic overflow là lỗi xảy ra khi mà có kết quả của một phép toán vượt qua giá trị tối

đa mà chương trình có thể lưu trữ Attacker có thể khai thác Smart Contract

bằng cách làm cho số dư bằng 0 gửi một đơn vị Ether, buộc số dư của Smart quay trở lại giá trị tối đa cho phép (4,3 tỷ Ether)

Một ví dụ về các 16 hong underflow va overflow là Proof of Week Hands Coin,

một cơ chế Ponzi tiền điện tử đã mat 800 nghìn đô là do lỗi số học

2.3 Các mô hình Deep Learning cơ ban

2.8.1 Multi-layer Perceptron

Multi-layer Perceptron - MLP là một mô hình máy hoc (ML) truyền thống

và áp dụng rộng rãi trong các nhiệm vụ như phân loại, dự đoán và có thể xử lý

các dit liệu đa chiều MLP là một loại mạng nơ-ron tiến hóa (feedforward neural network), bao gồm nhiều lớp neuron, trong đó mỗi neuron trong một class được kết nối đến tất cả các neuron trong lớp kế tiếp thông qua quá trình tiến hóa

15

Trang 25

(sản phẩm của nơ-ron trong class trước đó sẽ là đầu vào cho nơ-ron trong lớp

sau) Trong MLP, không có chu trình nào Cấu trúc của một MLP cơ bản bao gồm input layer, một hoặc nhiều hidden layer và một lớp output layer như được

Input layer là lớp ban đầu của mạng, nó nhận đầu vào (input) xử lý (tính

toán tổng weight và sẽ gửi tới hàm truyền) rồi đưa kết quả tới lớp sau Lớp thứ

hai là hidden layer, các neural tại đây tiếp nhận, xử lý các thông tin nhận được

từ input layer, quá trình xử lý này ở dạng tính toán Cuối cùng là output layer,

chịu trách nhiệm tạo ra kết quả từ các tính toán được áp dụng cho dữ liệu.

Trong một mô hình MLP có n layers thì sẽ có n ma trận trọng số Các Ma

trận này se được ký hiệu là WO e R®TM XA | = 12, n trong đó WTM thể

hiện các kết nối từ layer thứ n-1 tới layer thứ n Cu thể hơn thì phần tử Wi},

thể hiện kết nối từ nút thứ i của lớp thứ (n-1) tới nút thứ j của lớp thứ n Cac

bias của layer thứ n được kí hiệu là bứ e R@” Mỗi output của một phan tử

được tính dựa trên công thức 2.1 Trong đó f() là một hàm kích hoạt nonlinear

16

Trang 26

2.3.2 Recurrent neural network

Mang nơ ron hồi quy (Recurrent Neural Network - RNN) có nhiều điểm tươngđồng với mang neural truyền thống, ngoại trừ việc nó bổ sung một ’memory-

state’ vào các nơ-ron Trong mang neural truyền thống, mọi đầu vào và đầu ra đều không phụ thuộc vào nhau, tức là chúng không hình thành một chuỗi liên kết Tuy nhiên, loại mô hình này không thích hợp cho nhiều vấn đề RNN được

gọi là 'hồi quy’ vì nó có thể ghi nhớ các thông tin đã xử lý từ trước đó, sử dụng

thông tin này để có thể đưa ra các dự đoán chính xác cho bước dự đoán tiếp

theo Nói một cách khác, RNNIà một loại mạng nơ ron có khả năng thực hiện

xử lý dữ liệu theo chuỗi.

Máy tính không thể trực tiếp học từ các dữ liệu thô như hình ảnh, âm thanh,tệp văn bản, đoạn video Do đó, máy tính cần một quy trình thay đổi thông tinnày từ đỉnh dạng thô sang định dạng số, sau đó giải mã kết quả số hóa để lấy

kết quả đầu ra Dây chính là hai quá trình được gọi là mã hóa (encoder) và giải

mã (decoder):

e Encoder: Day là quá trình thực hiện biến đổi dữ liệu đầu vào (input) thành

các đặc trưng (feature) có thể học, phù hợp cho các nhiệm vụ cụ thể Trong

mô hình Mang neural, Encoder đại diện cho các lớp an Trong mô hình

Mang neuron tích chập (CNN), Encoder là chuỗi các lớp Tích chập va gop

tối da (Convolutional + Maxpooling) Trong mô hình mạng néuon hồi tiếp

(RNN), quy trình Encoder thực sự diễn ra trong các lớp Nhúng và Mạng

nơ-ron hồi tiếp.

e Decoder: Kết quả đầu ra từ quá trình mã hóa (Encoder) trở thành đầu vào

cho Decoder Phần này có mục tiêu là để xác định phân phối xác suất từ các

17

Trang 27

đặc trưng hoc được từ Encoder, từ đó xác định nhãn cho đầu ra Kết qua

có thể là một nhãn duy nhất đối với các mô hình phân loại, hoặc một chuỗi

các nhãn theo thứ tự đối với các mô hình dạng chuỗi-tới-chuỗi (seq2seq).

Hình 2.5 mô tả mô hình của RNN với việc xử lý tuần tự dữ liệu input Mỗi hình tròn gọi là một trạng thái (state), state t có input là z¿ và S(t—1) là đầu

ra của state trước và S; là output của state hiện tại Được tính toán bằng biểu

thức 2.2 với f là một hàm kích hoạt (activative function) thường là tanh hoặc

ReLU

Trang thái S; mang thông tin dữ liệu từ trạng thái (state) trước đó (5;_¡) và

cũng như đầu vào của trạng thai (state) hiện tại Nó giống như là bộ nhớ, lưu trữ các đặc trưng của các đầu vào từ z¡ đến z; Do chỉ có một đầu ra - output nên sẽ được đặt ở trạng thái cuối cùng Khi đó S,, sẽ học được dữ liệu thong tin từ tất cả các input Trên thực tế, mô hình chuỗï-tới-chuỗi (seq2seq) với kiến

trúc dựa trên Mạng nơ-ron hồi tiếp (RNN) hoạt động rất hiệu quả cho các chuỗi ngắn Tuy nhiên, khi chiều dài của chuỗi tăng lên, hiệu suất của mô hình này

18

Trang 28

sẽ giảm một cách đáng kể Diéu này xảy ra do RNN gặp phải hai vấn đề khi xử

lý chuỗi dài, đó là hiện tượng vanishing gradient và exploding gradient Long

Short-Term Memory (LSTM) được tạo ra để có thể giải quyết những hạn chế

của RNN.

2.3.8 Long short-term memory

Mang trí nhớ ngắn - dài han (LSTM) là một dạng đặc biệt của mạng nơ-ron hồi tiếp (RNN) có khả năng học các liên hệ dài hạn và có thể giải quyết các vấn

đề không thể xử lý dữ liệu song song của RNN Nguyên lý hoạt động của LSTM

là việc lựa chọn ghi nhớ những dữ liệu thông tin quan trọng, có liên quan cho

việc dự đoán, trong khi đó, sẽ loại bỏ những dữ liệu thông tin không cần thiết.

LSTM hoạt động theo một hướng nhất định (hướng tiến) Nói cách khác, những

mạng này chi có thể mang dữ liệu thông tin tới thời điểm hiện tại Tuy nhiên

thì trong nhiều vấn đề của NLP, việc biết dữ liệu thông tin của các bước thời

gian kế tiếp có thể phần nào cải thiện được đáng kể đầu ra (dịch, nhận danggiọng nói và nhận dang chữ viết tay, ) Trong tình huống này, ta có thể sửdụng một RNN hai chiều để xử lý thông tin theo cả hai hướng (tiến và lùi)

LSTM có khả năng học các mối liên hệ ngắn và dài Trong RNN thì những

module này có kết cấu rất đơn giản, chỉ gồm một class tanh LSTM cũng có kết cấu dạng chuỗi, nhưng các module của nó lại có kết cấu khác Thay vì chỉ có

một lớp mang neuron thì LSTM có tới 4 lớp (được miêu ta trong hình 2.6).

Ý tưởng của LSTM là trạng thái (state) của các cell, được biểu diễn bởi đường

thang phía trên cùng Trang thái cell (cell state) hoạt động tương tư một dây chuyền, nó chạy liên tục qua chuỗi với một số tương tác tuyến tính nhỏ, điều

này giúp cho thông tin dễ dàng trôi qua mà không có thay đổi nào

LSTM cũng có khả năng thêm vào hoặc xoá bỏ dữ liệu thông tin từ trạng

thai cell (cell state), điều này được chỉnh sửa ti mỉ bởi các kết cấu được gọi là

Gate Cổng (gate) là cách để kiểm soát thông tin đi qua Chúng được tạo ra

19

Trang 29

Hình 2.6: Mô tả kiến trúc mạng LSTM

từ một lớp mang neuron sigmoid và một phép nhân Dầu ra (output) của class

sigmoid là các số từ không đến một, thể hiện mức độ các thành phần được cho

phép đi qua Giá trị "không" có nghĩa là thông tin bị bỏ qua và giá trị "một có

nghĩa là ghi nhớ thông tin đi qua đó Một Long short-term memory có ba cổng

sigmoid để quan lý và điều chỉnh state cell

Cách thực hoạt động của Long short-term memory:

e Bước đầu tiên trong một LSTM là định nghĩa dữ liệu thông tin nào cần

được xoá bỏ từ state cell, việc này có thể thực hiện bởi một class sigmoid

và được gọi là "forget gate" Lớp này nhận đầu vào là h;_¡ và z¿, và xuất

ra một giá trị nằm trong khoảng từ 0 đến 1 cho mỗi số state Nếu giá trị là

"một", dư liệu thông tin sẽ được giữ lại và khi giá trị "không" thì có nghĩa

là dữ liệu thông tin được loại bỏ.

fe = o(Wy.[he-1, vt] + bự) (2.3)

e Bước kế tiếp là xác định thông tin dữ liệu mới nào sẽ bổ sung vào trạng thai

- state cell Điều này được thực hiện thong qua hai lớp, một lớp sigmoid

gọi là 'forget gate’ quyết định giá trị nào sẽ được cập nhập Tiếp là một

lớp tanh tạo ra một vector mới, (Ci), có thể thêm vào state Kết hợp cả hai

20

Trang 30

phần tử này, chúng ta tạo ra bản cập nhập cho trạng thái.

“= o(W;.[ht-1, x4] + bi) (2.4)

C, = tanh(We.[hi—1, 1] + be (2.5)

e Bay giờ, chúng ta cập nhật state cell cũ, C_) vào state cell mới C(¿) như

sau

e Cuối cùng, chúng ta tính toán giá trị output dựa trên trạng thái - state cell,

nhưng đây là phiên ban đã qua xử lý Đầu tiên, là chạy một class sigmoid

để định nghĩa đoạn nào của trạng thái cell được xuất ra Tiếp theo là chúng

ta sẽ đưa trạng thái -state cell qua hàm tanh và sẽ nhân kết quả với đầu ra

của sigmoid gate.

Of = a(W,.[hi_, x4] + bo) (2.7)

hy = 04 * tanh(C}) (2.8)

2.3.4 BiLSTM

Quy trình xử ly dữ liệu của LSTM có thể nắm bắt ngữ nghĩa tốt bằng cách

quên và nhớ các thông tin quan trọng bang memory state, nhưng nó có nhược điểm là chỉ một chiều thông tin và không thể phân tích dữ liệu Smart Contract.

Vì vậy mà nhóm đề xuất sử dụng mô hình BiLSTM [8] để có thể nắm bắt ngữ

nghĩa thông tin hai chiều của Smart Contract.

BiLSTM là một mô xử lý chuỗi gồm hai lớp LSTM BiLSTM tăng cường

lượng thông tin mà mạng có thể truy cập, cung cấp một ngữ cảnh tốt hơn cho

21

Trang 31

thuật toán (ví dụ: nó có thể xác định từ ngay trước và sau một từ cụ thể trong

cả câu) Hình 2.7 là một ví dụ cơ bản về mô hình biLSTM với ba bước liên

tiếp Với các LSTM kết nối mạng neural hai chiều Do đó mà dự đoán có thể

được thực hiện theo cả hai chiều Với mỗi phần tử bao gồm một input và một output và một forget port điều chỉnh luồng thông tin Tat cả các phần tử được kết nối theo hai chiều, bằng cách thực hiện truyền tiến (forward) và ngược lại (backward) Việc đào tạo BiLSTM dựa trên tất cả thông tin input trong quá

khứ và tương lai ở một thời điểm

BiLSTM là kết hợp giữa forward LSTM va backward LSTM, các input của

BiLSTM được mô tả như sau: X = z¡, + € R7*# và output của BiLSTM tính

bằng biểu thức 2.9 trong đó O là output của vector của BiLSTM, Cp là output

của neuron cho forward LSTM va Cg cho output của neuron cho backward

LSTM và U,, Wo và bo là các tham số đào tạo.

O = U,Cp(X) + W„Cp(X) + bo (2.9)

22

Trang 32

2.4 Cơ chế Attention

2.4.1 Attention

Co chế Attention là hành động tập trung có chon lọc vào một vai thứ có liên

quan, trong khi đó sẽ bỏ qua những thứ khác có trong mạng nơ-ron sâu (deep

neural networks) Cũng có thể hiểu là cơ chế này cho phép mô hình hoá các

dependences mà không quan tâm đến khoảng cách của chúng trong các chuỗi

đầu vào (input sequences) và đầu ra (output sequences) Cơ chế Attention nổi

lên như một sự cải tiến so với hệ thống dịch máy dựa trên bộ giải mã (encoder

decoder-based neural machine translation) trong xử lý ngôn ngữ tự nhiên (NLP).

Nó đã được áp dụng phổ biến và đạt được sự cải thiện cao trong các tác vụ khác

nhau trong NLP như tóm tắt văn ban.

Cơ chế Attention có thể hướng sự chú ý đến thứ tự chính xác đó bằng cách

sử dung các dấu hiệu tiềm an trong ngữ cảnh cu thể [21] Qua các nghiên cứu

gần đây, cơ chế attention chứng tỏ nó không phức tạp quá mà còn mang lại hiệu suất cao trong các bài toán dự đoán, đặc biệt là với mô hình Self-attention và

mô hình Tranformer Điều này cho thấy, việc ứng dụng cơ chế Attention và các

mô hình DL có thể giúp cai thiện khả năng phát hiện chính xác các lỗ hong bảo mật trong Smart Contract mà vẫn đảm bảo hiệu suất về thời gian xử lý và tài

nguyên tính toán.

Cơ chế attention đóng vai trò như một phương pháp để tính toán trọng số

trung bình của các "phần tử" được xác định là quan trọng cho bài toán, và

điểm nổi bật của cơ chế này là khả năng tự động học các trọng số này Cơ chếattention có thể được coi như một quá trình tổng hợp mở rộng, tổng hợp các

input dựa trên hệ số trọng số khác nhau Thành phần quan trọng nhất là tầng attention Đầu vào của tầng này là một câu truy vấn và nó cung cấp kết quả

dựa trên bộ nhớ, là tập hợp các cặp "key-value" đã được mã hóa Cụ thể, bộ

nhớ của tầng attention chứa m cặp "key-value" Đối với mỗi vector truy vấn,

23

Trang 33

tầng attention sẽ cung cấp đầu ra Vector ngữ cảnh là tổ hợp tuyến tính của

các đầu ra theo trọng số attention Ưu điểm của việc sử dụng cơ chế attention

là mô hình có thể nắm bắt toàn bộ ngữ cảnh của câu, không chỉ dừng lại ở một

từ so với các mô hình trước đây không sử dụng cơ chế attention.

Mục đích của cơ chế attention nay là học các trọng số cho các encoder states

an Để xây dựng được một cơ chế học như vậy thì cần trải qua các bước được

Hình 2.8: Các bước tính toán trong cơ chế attention

e Tính toán điểm (score) cho mỗi trạng thái an của encoder dựa trên một

hàm số score function

e Dưa các score đã tính được qua một lớp softmax để tổng các trọng số có

tổng là 1 Các trọng số này biểu diễn phân bố attention

e Nhân các trọng số tính được với các hidden states của lớp encoder Các

24

Trang 34

trọng số này chính là mức độ quan trọng giữa một hidden state của lớp

decoder với các hidden state của lớp encoder (của input)

e Tính tổng các giá trị thu được

e Kết hợp vector ngữ cảnh vừa thu được với decoder hidden state của timestep

trước để tạo nên decoder hidden state của timestep đang xét

2.4.2 Kiến trúc Transformer

Kiến trúc Transformer được giới thiệu trong [21] là một mô hình deep learning

được thiết kế để phục vụ giải quyết nhiều bài toán trong NLP Cũng tương tự

như mô hình RNN, Transformer cũng dựa trên kiến trúc Encoder và Decoder.

Encoder dùng để học các vector biểu điễn của câu, mục đích là vector này sẽ

mang thông tin hoàn hảo cho câu đó Trong khi đó thì bộ mã hoá sẽ thực hiện

chức năng biến đổi các vector biểu diễn thành ngôn ngữ đích Ưu điểm của

Transformer là có khả năng xử lý song song cho các từ Transformer thay thế các current layer bằng các multi-head attention, kết hợp thông tin vị trí thông

qua biểu diễn vị trí (opsitional encoding) và áp dụng chuẩn hoá tầng (layer

normalization)

Trong bộ Encoder, các tầng attention có khả năng xử lý tất cả các từ trong

một câu, mang lại hiệu quả cao hơn so với RNN Khi mã hóa một câu, RNN sẽ

cần một khoảng thời gian để tuần tự xử lý từng từ trong câu, điều này làm lãng

phí thời gian đối với một câu dài Tuy nhiên, với Transformer, quá trình mã hóa

sử dụng cơ chế attention và cố gắng hiểu nghĩa của câu Transformer bao gồm

6 Encoder và 6 Decoder, mỗi Encoder chứa hai tang là Self-attention và mạng

feed forward (ENN).

25

Trang 35

2.4.8 Encoder-only models

Encoder models là mô hình chi sử dụng bộ Encoder của mô hình Transformer.

O mỗi giai đoạn thì attention layers có thể truy cập tất cả các từ (words) trongcâu ban đầu Những mô hình này thường đặc trưng là có sự chú ý hai chiều

(bi-directional) và thường được gọi là mô hình mã hoá tự động (auto-encodeing models)

Encoder models phù hợp nhất cho các nhiệm vụ đòi hỏi phải hiểu toàn bộ câunhư phân loại câu, nhận dạng các tên thực thể và trả lời các câu trích xuất Một

số Encoder models phổ biến như là ALBERT, BERT, DistilBERT, ELECTRA,

RoBERTa

Điểm đặc sắc so với các mô hình khác như RNN là cơ chế đẩy các input vào

cùng một thời điểm với nhau và không có khái niệm từng bước Đó chính là

cơ chế Self-Attention Input được thể hiện dưới dạng một chuỗi các vector Sửdụng nhiều layer Self-Attention để định nghĩa sự quan trọng của các phan tử

trong chuỗi input và xây dựng biểu diễn các phụ thuộc của phần tử khác Các

phần tử này sau đó được truyền qua lớp feed-forward để tính toán output của

mô hình.

Encoder: gồm 6 layer xếp chồng lên nhau, mỗi layer chứa 2 layer layer đầu là cơ chế self-attention đa đầu ra Sub-layer thứ 2 gồm feed-forward layers được kết nối đầy đủ:

Sub-e Multi-hSub-ead SSub-elf-AttSub-ention : Input được chia thành các vSub-ector quSub-ery, kSub-ey va

value để tính toán trọng số attention, cho phép mô hình hướng sự chú ývào các phần trọng điểm của input và tạo ra các biểu diễn dependeney vàocác phần tử khác trong chuỗi dữ liệu Kết quả chuyển vào layer sau NO mở

rộng cơ chế self-attention bằng cách thực hiện nhiều phép tính self-attention đồng thời, sử dụng các bộ trọng số (weight matrices) khác nhau Mỗi phép

tính được gọi là một head Các head khác nhau có thể tìm ra các mẫu thông

26

Trang 36

tin, mối quan hệ khác nhau trong dữ liệu Việc kết hợp kết quả từ các head

giúp mô hình học được biểu diễn phức tạp của dữ liệu

e Feed-Forward Neural Network: gồm 2 lớp kết nối day đủ với 1 hàm kích hoạt

ReLU ở giữa, thành phần này sẽ ánh xạ các biểu diễn của self-attention layerthành các biểu diễn mới, có chiều sâu hơn và chứa thông tin tóm tắt từ các

lớp trước đó Lớp này giúp tăng tính phi tuyến của mô hình và làm cho nó

có khả năng học được các mô hình phức tạp hơn Output từ self-attention

layer sẽ được đưa vào lớp này làm input và đi qua một tuyến tính đầu tiên, được ánh xạ thông qua ma trận trọng số và thêm một vector bias Sau đó

sẽ đi qua được các mô hình phi tuyến Sau đó, nó sẽ qua một lớp tuyến tính

thứ hai và kết quả là một vector biểu diễn đã được biến đổi từ input ban

x

dau.

2.5 M6 hinh BERT

2.5.1 BERT

BERT là một phương pháp học máy dựa trên kiến trúc Transformer, được

áp dụng cho việc huấn luyện trước trong NLP Day là một mô hình được huấn

luyện trước, hay còn gọi là pre-trained model, nó học được các vector biểu diễn

từ theo ngữ cảnh hai chiều và được dùng để chuyển giao cho các bài toán khác

trong lĩnh vực xử lý ngôn ngữ tự nhiên.

BERT áp dụng kiến trúc Transformer đa lớp, một mô hình dựa trên cơ chế

attention để nắm bắt các mối liên hệ giữa các từ (hoặc phần của từ) trong mộtđoạn văn Kiến trúc Transformer gồm hai thành phần chủ yếu: Encoder để đọc

dữ liệu đầu vào và Decoder để thực hiện dự đoán Tuy nhiên, BERT chỉ áp dụng

phần Encoder Diéu này tạo nên sự khác biệt với những mô hình hướng dan truyền thống (những mô hình chỉ đọc dữ liệu theo một hướng duy nhất) doc dữ liệu theo thứ tự tuần tự, Encoder của BERT đọc toàn bộ dữ liệu cùng một lúc.

27

Trang 37

Điều này cho phép BERT có thể huấn luyện dữ liệu theo cả hai hướng, giúp mô

hình có khả năng học hỏi ngữ cảnh của từ một cách sâu sắc hơn bằng cách sử

dụng các từ xung quanh nó (ở cả hai phía).

BERT có hai giai đoạn chính là Pre-training và Fine-tuning, được mô tả trong

hình 2.9 Trước đây chưa có mô hình embedding nào có nên tạo nên tính độc

đáo cho BERT Chúng ta có thể lấy kết quả huấn luyện và có thể tỉnh chỉnh

được.

Unlabeled AB and 8 Pair Question ae Pair

Pre-training Fine-Tuning

Hình 2.9: Tiến trình Pre-training va Fine-tuning của BERT

e Pre-training: là giai đoạn đào tạo mô hình trước với các weight được khởi

tạo ngẫu nhiên và đào tạo bắt đầu mà không có bất kỳ kiến thức nào trước

đó Thường được thực hiện trên một lượng lớn dữ liệu nên đòi hỏi bô dữ

liệu lớn và thời gian đào tạo lâu, có thể mất đến vài tuần

e Fine-tuning: thực hiện sau Pre-training, đào tao bổ sung với một bộ dit liệu

cụ thể cho từng nhiệm vụ riêng Do nó được đào tạo trên bộ dữ liệu đặc

thù hơn nên nó tối ưu hoá và nhanh hơn, đưa ra kết quả tốt hơn

Bộ dữ liệu của cả hai giai đoạn có một số điểm tương đồng nên Fine-tuning

có thể tận dụng kiến thức thu được từ pretraing trong quá trình xử lý (transfer

learning) Do đó việc lặp lại (iterate) các mô hình Fine-tuning sẽ nhanh va dễ

dàng hơn, do quá trình đào tạo ít bị ràng buộc hơn Quá trình này cũng sẽ đạt

28

Trang 38

được kết quả tốt hơn so với Pre-training Đây là lí do nên tận dụng một số mô

hình Pre-training và Fine-tuning nó.

2.5.2 DistIBERT

Cũng tương tự mô hình BERT gốc, DistiIBERT sử dụng kiến trúc Transformer

với nhiều lớp biến đổi để học biểu diễn văn bản thích hợp với các tác vụ NLP

khác nhau:

e Input được mã hoá dưới dạng các chuỗi token, trong đó mỗi từ được mã

hoá bằng một vector trong từ điển (vocabulary) Các vector này được đưavào lớp nhúng (embedding layer) để tạo các biểu idén vector có cùng kích

thước và đồng nhất cho các từ.

e Các lớp Transformer sử dụng kiến trúc self-attention để học biểu diễn văn

bản tốt hơn Các word embedding được kết hợp và tính toán dưa trên sự

tương quan giữa các từ trong câu để tính tổng trọng số của các vector input

e Sau khi qua các lớp biến đổi transformer, vector biểu diễn của từ đầu vào

được kết hợp lại để tạo ra một veetor biểu diễn duy nhất cho cả câu Vectorbiểu diễn này được sử dụng để giải quyết các tác vụ NLP khác nhau, chẳng

hạn như phân loại văn bản.

Mô hình DistilBERT có thể được sử dung để phân loại văn bản, dự đoán từ

khóa, phát hiện ngôn ngữ tự nhiên và nhiều tác vụ NLP khác.

2.6 Mô hình GNN

2.6.1 Graph Neural Networks

Graph neural networks (GNN) là mô hình mang neuron được thiết kế đặc

biết để làm việc trên dữ liệu có cấu trúc đồ thị.Mô hình nắm bắt sự phụ thuộc

29

Trang 39

của đồ thị (graph) thông qua truyền thông tin (message passing) giữa các node

của đồ thị Có các biến thể đã thể hiện hiệu suất đột phá trên nhiều nhiệm vụ

DL như graph convolutional network (GCN), graph attention network (GAT),

graph recurrent network (GRN) Graph là một loại cấu trúc dữ liệu mô hình hoá một tập hợp các đối tượng (nodes) và các mối quan hệ của chúng (edges) GNN

thực hiện quá trình truyền thông tin trên đồ thị để tính toán các đặc trưng của

mỗi node dựa trên thông tin của các node lân cận.

Một mô hình GNN đơn giản nhất là sử dụng một MLP riêng biệt trên từng

thành phần của biểu đồ, đối với mỗi node vector, áp dụng MLP và nhận lại một

learned node vector Làm tương tự cho từng edge, learning mỗi edge embedding.

Tương tự global-context , learning single embedding cho toàn bộ biểu đồ

Sự khác biệt với các mô hình trước đó là mô hình GNN không chỉ có duy

nhất các features của các node mà nó còn yêu cầu thêm cả sự mô tả kết nối các node lại với nhau Một mô hình GNN đòi hỏi phải có hai ma trận đầu vào, một

ma trân biểu diễn encoding của các điểm trong đồ thì và một ma trận biểu diễnkết nối các điểm với nhau Một cấu trúc cơ bản của mô hình GNN bao gồm:

e Node feature: Mỗi node trong đồ thị được gán một vector đặc trưng ban

đầu, biểu diễn các thuộc tính hoặc thông tin liên quan đến node đỏ

e Quá trình lan truyền thông tin (message passing): đây là một bước quan

trọng trong GNN để đưa ra các dự đoán phức tạp hơn bằng cách sử dụng

tính năng pooling trong GNN layer để làm cho các embedding đã học nhận biết được graph connectivity Trong mỗi layer thì thông tin từ các node lân cận được truyền qua các edge và cập nhật đặc trưng cho các node Quá

trình này cho phép mỗi node tích hợp thông tin từ các node lân cận và edge

kết nối với nó để tính toán các đặc trưng mới

e Hàm kích hoạt (activation function): được áp dụng để tạo ra đặc trưng phi

tuyến tính từ đặc trưng của ccác node

30

Trang 40

e Gop thông tin (pooling): tổng hợp các thông tin từ các node lân cận thành

một đặc trưng tổng thể cho node hiện tại

e Lớp đầu ra (output layer): các đặc trưng tính toán được sử dụng để dự đoán

hoặc phân loại đối tượng trên đồ thị.

Một lợi thế của GNN là khả năng nắm bắt thông tin cấu trúc và ngữ nghĩa của mã nguồn thông qua mô hình đồ thị Diều này giúp cải thiện khả năng mô

hình hiểu và biểu diễn ngôn ngữ tự nhiên phức tạp hơn

2.6.2 Đồ thi luồng điều khiển

Đồ thị luồng điều khiển (Control-flow graph) và đồ thị lời gọi hàm (call graph)đại diện cho các luồng thực thi mã phần mềm và các quan hệ cuộc gọi Biểu đồluồng điều khiển mô tả các tất cả các trình tự có thể có của các câu lệnh hoặcdòng mã có thể được duyệt qua trong một hàm trong quá trình thực thi chươngtrình Ngược lại, một đồ thị cuộc gọi (call graph) biểu diễn mọi quan hệ cuộcgọi có thể có giữa các hàm trong một chương trình

Đồ thị luồng điều khiển là một biểu đồ đại diện cho luồng điều khiển của một

chương trình No biểu thị cấu trúc của chương trình, các rẽ nhánh (branching),

vòng lặp (loop) và thứ tự thực thi các câu lệnh CFG được tạo thành bằng cách chia nhỏ mã nguồn thành các khối cơ bản (như khối câu lệnh, điều kiện

rẽ nhánh, ) và các khối này đại diện cho một bước thực thi duy nhất trong chương trình, được kết nối thong qua các edge Nghĩa là, trong một CFG thi các node đại diện cho các khối cơ bản và các edge đại diện cho các điều kiện và

quyết định luồng điều khiển Vì vậy mà CFG có thể cung cấp một cái nhìn tổngquan về đường đi thực thi và các điểm cuối của chương trình, nó cũng hữu íchtrong việc phân tích lỗi và tối ưu hoá kiểm tra chương trình Hình 2.10 là một

ví dụ minh hoạ cho đồ thị luồng điều khiển

31

Ngày đăng: 02/10/2024, 05:19

TRÍCH ĐOẠN

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN