Avatar
1
Xuan Trang Beginner
Xuan Trang Beginner
Cách xây dựng Model deep learning Resnet18
Dạ anh ơi cho em hỏi, em đang làm đồ án về xây dựng mô hình phát hiện tấn công botnet bằng công nghệ AI và dùng dataset ISOT HTTP Botnet, thầy em hướng em dùng CNN resnet18 có sẵn (đã luyện trước trên tập ảnh CIFAR10) để finetuning cho nhanh. Vì tập ISOT HTTP Botnet thường ở dạng PCAP (Packet Capture) nên em đã dùng CICFlowMeter để chuyển về file csv được 82 cột. Em đang vướng chỗ tiền xử lý dữ liệu: biến target là cột "Label" có 9 loại: 'citadel.botnet.isot', 'gaudox.botnet.isot', 'zeus.botnet.isot', 'blue.botnet.isot', 'benign', 'blackout.botnet.isot', 'blackenergy.botnet.isot', 'zyklon.botnet.isot', 'liphyra.botnet.isot'. Còn các cột còn lại chứa dữ liệu là số nhưng chênh lệnh nhau khá lớn và có 2 cột là "Src IP" và "Dst IP" là chứa dữ liệu chuỗi. Em có dùng LabelEncoder để mã hóa cho cột Label, và dùng OneHotEncoder để mã hóa cho 2 cột "Src IP" và "Dst IP". Sau đó em dùng StandardScaler để scale những cột chứa giá trị số. Em không biết em làm vầy đã đúng logic chưa, mong anh cho em lời khuyên với ạ. Sau khi tiền xử lý dữ liệu như trên thì thầy có yêu cầu là chuyển mỗi hàng (record) thành một ảnh rồi phân chia thành các tập train, val, test để huấn luyện. Em cũng đang bị vướng khúc này, không biết nên dùng cách nào để chuyển cho phù hợp với mô hình resnet18, em có thử dùng dataloader nhưng khi train mô hình nó ra kết quả ko khả quan, em cũng ko biết là do cách em chuyển ảnh sai hay do mô hình em chưa ổn nữa, anh cho em lời khuyên với ạ. Em cám ơn anh, hy vọng sẽ sớm nhận được phản hồi từ anh.
  • Answer
Remain: 5
1 Answer
Avatar
Vu Luong Anh Beginner
Chào bạn,

Theo những gì bạn mô tả, mình hiểu rằng dữ liệu bạn đang làm việc có 82 features (số chiều) và 9 classes (nhãn). Đây là dạng dữ liệu bảng, mỗi quan sát được biểu diễn bằng một vector 82 chiều. Trong khi đó, mô hình pretrained ResNet18 lại được thiết kế để nhận đầu vào là ảnh, dưới dạng tensor 3D (width, height, channel). Vì vậy, để sử dụng ResNet18, bạn cần chuyển đổi vector 1x82 thành một tensor có kích thước 224x224.

Một cách tiếp cận là sắp xếp 82 số liệu này thành một ma trận 2D kích thước 10x10 (thêm padding để không mất dữ liệu), sau đó phóng to ma trận này thành ảnh 224x224.

Tuy nhiên, mình không thực sự khuyến khích sử dụng ResNet18 cho dữ liệu dạng 1 chiều. Lý do là ở ảnh 2D, các điểm ảnh thường có mối liên hệ không gian mà các convolutional layer có thể khai thác để trích xuất đặc trưng. Trong dữ liệu 1 chiều, những mối liên hệ tương tự không tồn tại, và việc chuyển dữ liệu thành 2D không tạo ra các tương quan thực sự ý nghĩa.

  • 0
  • Reply