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 1DAI 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 2LỜ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 3MỤ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 4223 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 53.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 64.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 .
vì
77
77 78
79
Trang 7DANH 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 8Hì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 9DANH 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 10TÓ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 11CHƯƠ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 12an 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 131.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 141.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 15e 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 16CHƯƠ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 17cấ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 182.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 19oOo 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 21Listing 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 23oOo 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 2414 }
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 262.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 28sẽ 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 29Hì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 30phầ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 31thuậ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 322.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 33tầ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 34trọ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 352.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 36tin, 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 39củ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 40e 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