Giới thiệu dự án

Trong kỷ nguyên bùng nổ dữ liệu số, bài toán nhận dạng mẫu (Pattern Recognition) và phân lớp dữ liệu có giám sát (Supervised Classification) đóng vai trò nền tảng trong việc khai phá tri thức từ các tập dữ liệu lớn. Theo các báo cáo phân tích dữ liệu công nghiệp, hơn 80% dữ liệu phát sinh trong các hệ thống doanh nghiệp là dữ liệu phi cấu trúc hoặc dữ liệu đa chiều phức tạp. Các mô hình phân lớp truyền thống thường gặp thách thức lớn khi đối mặt với dữ liệu phi tuyến tính, phân bố phức tạp hoặc bị ảnh hưởng bởi nhiễu ngoại lai.

Vấn đề cốt lõi đặt ra là các phương pháp kinh điển như K láng giềng gần nhất ($K$-Nearest Neighbors - KNN) có chi phí tính toán suy luận lớn $O(N \cdot d)$ do phụ thuộc hoàn toàn vào bộ nhớ mẫu mà không xây dựng mô hình khái quát hóa, trong khi Mạng nơ-ron nhân tạo truyền thống (Artificial Neural Network - ANN) đòi hỏi chi phí huấn luyện cao và dễ rơi vào cực tiểu cục bộ.

Dự án nghiên cứu và phát triển mô hình KANTS (KohonAnts) – một hệ lai ghép đột phá giữa Bản đồ tự tổ chức (Self-Organizing Map - SOM) của Teuvo Kohonen và Hệ kiến nhân tạo (Ant System - AS / Swarm Intelligence) theo mô hình Chialvo - Millonas, kết hợp cơ chế Học tập hợp (Ensemble Learning) nhằm tối ưu hóa độ chính xác và khả năng thích ứng của mô hình phân lớp.

                    KIẾN TRÚC TỔNG QUAN HỆ KANTS
 ┌─────────────────────────────────────────────────────────────┐
 │                      Tập dữ liệu đầu vào                    │
 │               (Iris, Glass, Pima Indians Diabetes)          │
 └──────────────────────────────┬──────────────────────────────┘
                                │ Chuẩn hóa Vector d-chiều
                                ▼
 ┌─────────────────────────────────────────────────────────────┐
 │                Khởi tạo Lưới KANTS (W x H Cells)            │
 │             - Gán mỗi mẫu dữ liệu thành 1 Con kiến (Ant)    │
 │             - Khởi tạo ngẫu nhiên vector trọng số ô lưới     │
 └──────────────────────────────┬──────────────────────────────┘
                                │
                                ▼
 ┌─────────────────────────────────────────────────────────────┐
 │         Vòng lặp huấn luyện tối ưu hóa bầy đàn KANTS         │
 │  ┌───────────────────────────────────────────────────────┐  │
 │  │ 1. Tính toán ma trận trọng tâm CTR(x, y)              │  │
 │  │ 2. Hàm di chuyển kiến: DecideWhereToGo (q0, P_ij)     │  │
 │  │ 3. Cập nhật vector ô lưới: UpdateGrid (R, alpha)      │  │
 │  │ 4. Mô phỏng bay hơi Pheromone: Evaporation (rho)      │  │
 │  └───────────────────────────────────────────────────────┘  │
 └──────────────────────────────┬──────────────────────────────┘
                                │ Lưới hội tụ (Grid Converged)
                                ▼
 ┌─────────────────────────────────────────────────────────────┐
 │            Pha gán nhãn tế bào lưới (Cell Voting)           │
 │       Tìm k-láng giềng gần nhất của tế bào với tập kiến     │
 └──────────────────────────────┬──────────────────────────────┘
                                │
                                ▼
 ┌─────────────────────────────────────────────────────────────┐
 │             Pha phân lớp dữ liệu kiểm thử (Testing)          │
 │             Áp dụng Học tập hợp (Ensemble Multi-K)          │
 └─────────────────────────────────────────────────────────────┘

Mục tiêu dự án

  1. Khảo cứu và hình thức hóa toán học mô hình nhận thức bầy đàn KANTS, làm rõ cơ chế tương tác gián tiếp (Stigmergy) thông qua nồng độ mùi pheromone trên không gian lưới nơ-ron rời rạc.
  2. Thiết kế và cài đặt hệ thống phần mềm KANTS hướng đối tượng hoàn chỉnh bằng ngôn ngữ C++ với hiệu năng xử lý tối ưu trên nền tảng Visual Studio.
  3. Thực nghiệm toàn diện các siêu tham số ($\beta, \delta, nr, cr, \rho, q_0$) trên các tập dữ liệu chuẩn quốc tế UCI (Iris, Glass Identification, Pima Indians Diabetes).
  4. Đề xuất và tích hợp kiến trúc Học tập hợp (Ensemble Learning) đa cấu hình $k$ nhằm nâng cao độ chính xác phân lớp và triệt tiêu sai số cục bộ của mô hình KNN truyền thống.

Phương pháp tiếp cận và phạm vi

  • Cách tiếp cận: Ánh xạ mỗi mẫu huấn luyện thành một tác tử kiến nhân tạo di chuyển trên lưới 2 chiều. Kiến nhả mùi và điều chỉnh trọng số các ô lân cận theo quy tắc học cạnh tranh của SOM. Quá trình tự tổ chức giúp các mẫu tương đồng hội tụ về các cụm không gian xác định.
  • Kết quả kỳ vọng: Đạt độ chính xác phân lớp vượt trội trên 86.4% với tập Iris (phân chia 90-10), giảm thiểu độ lệch chuẩn qua 10 lần chạy thử nghiệm độc lập.
  • Phạm vi và giới hạn: Dự án tập trung vào bài toán phân lớp dữ liệu thuộc tính số (Numerical Attributes), kiểm nghiệm trên các bộ dữ liệu chuẩn UCI với số chiều tối đa 10 thuộc tính.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí so sánh $K$-Nearest Neighbors (KNN) Self-Organizing Map (SOM) Mô hình KANTS (Đề xuất)
Cơ chế học Học lười (Instance-based / Lazy learning) Học cạnh tranh không giám sát Học bầy đàn kết hợp nơ-ron tự tổ chức
Biểu diễn không gian Không gian $d$-chiều nguyên bản Ánh xạ phi tuyến xuống lưới 2D Phân cụm tự nhiên trên lưới qua pheromone
Tốc độ suy luận Chậm ($O(N \cdot d)$ với toàn bộ mẫu) Nhanh ($O(K_{cells} \cdot d)$) Rất nhanh ($O(K_{cells} \cdot d)$)
Khả năng chống nhiễu Kém (Nhạy cảm với điểm ngoại lai) Trung bình (Phụ thuộc cấu trúc lưới) Rất cao (Nhờ cơ chế bay hơi $\rho$ và Ensemble)
Độ phức tạp bộ nhớ Lưu toàn bộ tập dữ liệu mẫu Lưu ma trận lưới $W \times H$ Lưu ma trận lưới $W \times H$ và tọa độ tác tử

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc): Module mô phỏng bước đi ngẫu nhiên có trọng số của đàn kiến; module cập nhật trọng số nơ-ron theo hàm học tăng cường; module gán nhãn tế bào lưới và phân lớp mẫu mới bằng KNN.
  • Should have (Nên có): Bộ phân lớp tích hợp Ensemble Learning với cơ chế bỏ phiếu đa trọng số; module thống kê độ hội tụ qua ma trận khoảng cách $U$-Matrix.
  • Could have (Có thể có): Giao diện trực quan hóa không gian 2D thể hiện 3 trạng thái phân bố bầy đàn: Rối loạn $\rightarrow$ Vá lỗ hổng $\rightarrow$ Tạo đường mòn.
  • Won't have (Chưa thực hiện): Xử lý song song trên phần cứng GPU (CUDA) và hỗ trợ phân lớp dữ liệu chuỗi thời gian phân tán.
+-------------------------------------------------------------------------+
|                  GAP ANALYSIS: HIỆN TRẠNG VÀ CƠ HỘI                     |
+-------------------------------------------------------------------------+
| [Hiện trạng KNN/SOM]           [Rào cản kỹ thuật]        [Cơ hội KANTS] |
|                                                                         |
| - Chi phí tính toán lớn   ---> - Quét cạn toàn bộ mẫu ---> - Nén mẫu    |
| - Dễ kẹt cực tiểu          - Khởi tạo trọng số       vào lưới 2D        |
| - Nhạy cảm nhiễu               ngẫu nhiên               - Cơ chế bay    |
|                                                          hơi xóa nhiễu  |
|                                                         - Ensemble đa k |
+-------------------------------------------------------------------------+

Thiết kế hệ thống

Kiến trúc phần mềm KANTS được xây dựng theo mô hình Module hóa hướng đối tượng (OOP) nhằm đảm bảo tính bao đóng, tối ưu hóa truy xuất bộ nhớ đệm và dễ dàng mở rộng.

       KIẾN TRÚC MODULE HỆ THỐNG KANTS
┌──────────────────────────────────────────────┐
│                  kants_app                   │
│   (Điều phối, nạp dữ liệu, cấu hình tham số) │
└──────────────┬───────────────────────────────┘
               │ Khởi tạo & Điều khiển
               ▼
┌──────────────────────────────────────────────┐
│                 Kants Engine                 │
│  - Grid: std::vector<std::vector<Cell>>      │
│  - Swarm: std::vector<Ant>                   │
│  - Centroid Matrix: std::vector<VectorXd>    │
└──────┬────────────────────────────────┬──────┘
       │ Chứa                           │ Chứa
       ▼                                ▼
┌──────────────────────┐      ┌────────────────────────┐
│         Cell         │      │          Ant           │
│ - Weight vector (Vi) │      │ - Pattern vector (ak)  │
│ - Class label        │      │ - Coordinates (x, y)   │
│ - Occupied flag      │      │ - True class ID        │
└──────────────────────┘      └────────────────────────┘

Technology Stack

  • Ngôn ngữ lập trình: C++ (Chuẩn ISO/IEC 14882:2011 - C++11) tối ưu hóa con trỏ và mảng động.
  • Môi trường phát triển tích hợp (IDE): Microsoft Visual Studio 2008 / 2010 (MSVC Compiler v90/v100).
  • Hệ điều hành tương thích: Microsoft Windows 7 / 10 / 11, Linux (GCC 4.8+ / Clang 3.5+).
  • Công cụ xây dựng: CMake v3.10+ hoặc MSBuild Engine.

Đặc tả dữ liệu cấu trúc (Data Structures)

Mỗi tế bào lưới (Cell) và tác tử kiến (Ant) được định nghĩa trong không gian vector $d$-chiều:

// Cấu trúc tế bào lưới (Cell Node)
class Cell {
public:
    int x, y;                      // Tọa độ trên lưới 2D
    std::vector<double> weights;   // Vector trọng số Vi (d-chiều)
    int assigned_class;            // Nhãn lớp sau khi bỏ phiếu
    bool is_occupied;              // Cờ xác định trạng thái có kiến chiếm đóng
};

// Cấu trúc tác tử kiến (Ant Agent)
class Ant {
public:
    int current_x, current_y;      // Tọa độ hiện tại trên lưới
    std::vector<double> pattern;   // Vector đặc trưng mẫu huấn luyện a_k
    int true_label;                // Nhãn thực tế của mẫu dữ liệu
};

Methodology

Quy trình nghiên cứu áp dụng mô hình phát triển khoa học lặp (Iterative Scientific Methodology):

  1. Pha 1 - Nghiên cứu cơ sở lý thuyết (Tuần 1 - 4): Phân tích toán học SOM của Kohonen và mô hình bầy kiến AS Chialvo-Millonas.
  2. Pha 2 - Thiết kế và xây dựng Core Engine (Tuần 5 - 8): Lập trình các thuật toán cơ bản: khoảng cách Euclidean, luật di chuyển $P_{ij}$, cập nhật trọng số $R$, bay hơi mùi $\rho$.
  3. Pha 3 - Thử nghiệm và Tinh chỉnh siêu tham số (Tuần 9 - 12): Khảo sát độc lập các biến số $\beta, \delta, nr, cr$, kích thước lưới từ $30 \times 50$ đến $100 \times 100$.
  4. Pha 4 - Mở rộng Ensemble Learning và Đánh giá (Tuần 13 - 16): Xây dựng bộ phân lớp tập hợp và đối chuẩn (Benchmark) đa tập dữ liệu.

Implementation và kết quả

Development process

Cốt lõi của thuật toán KANTS bao gồm các công thức toán học và hàm xử lý cụ thể được hiện thực hóa trong C++:

1. Hàm xác suất di chuyển của kiến ($P_{ij}$)

Xác suất để kiến tại ô $i$ di chuyển sang ô láng giềng $j \in N_i$ được định nghĩa qua hàm mật độ mùi $W(\sigma_j)$ và các tham số điều khiển:

$$P_{ij} = \frac{[W(\sigma_j)]^\beta}{\sum_{l \in N_i} [W(\sigma_l)]^\beta}$$

Trong đó, $\sigma_j = |V_i - CTR_j|$ là khoảng cách Euclidean giữa vector đỉnh $i$ và vector trọng tâm $CTR_j$ của vùng bán kính $cr$ bao quanh $j$:

$$CTR_j = \frac{1}{|Region(j)|} \sum_{m \in Region(j)} V_m$$

// Thuật toán quyết định bước đi tiếp theo của kiến
std::pair<int, int> Kants::DecideWhereToGo(const Ant& ant, double q0, double beta, double delta, int nr) {
    double q = (double)rand() / RAND_MAX;
    std::vector<std::pair<int, int>> neighbors = GetNeighborhood(ant.current_x, ant.current_y, nr);
    
    // Khai thác: Chọn lân cận có nồng độ mùi tối ưu nhất
    if (q < q0) {
        return GetBestNeighbor(ant, neighbors);
    }
    
    // Khai phá: Chọn ngẫu nhiên theo phân bố xác suất Roulette Wheel
    std::vector<double> probabilities;
    double sum_prob = 0.0;
    for (const auto& neighbor : neighbors) {
        double dist = EuclideanDistance(ant.pattern, CentroidMatrix[neighbor.first][neighbor.second]);
        double smell_intensity = 1.0 / (1.0 + delta * dist); // Hàm kích thích mùi
        double weight = std::pow(smell_intensity, beta);
        probabilities.push_back(weight);
        sum_prob += weight;
    }
    
    return SelectByRouletteWheel(neighbors, probabilities, sum_prob);
}

2. Cập nhật vector ô lưới (Học tăng cường) và Bay hơi

Khi kiến $k$ di chuyển qua ô $i$, vector trọng số $V_i$ được cập nhật kéo về gần vector $a_k$ mà kiến mang theo:

$$V_i(t+1) = V_i(t) + R \cdot \alpha \cdot (a_k - V_i(t))$$

Trong đó tốc độ học tăng cường $R = \frac{1}{1 + D}$, với $D = |a_k - CTR_i|$. Sau mỗi chu kỳ duyệt qua toàn bộ đàn kiến, quá trình bay hơi nồng độ mùi đưa vector ô lưới hồi quy dần về trạng thái khởi tạo ngẫu nhiên ban đầu $V_i^0$:

$$V_i(t+1) = (1 - \rho) V_i(t) + \rho V_i^0$$

// Cập nhật trọng số tế bào lưới và mô phỏng bay hơi Pheromone
void Kants::UpdateGridAndEvaporate(double alpha, double rho) {
    // 1. Cập nhật theo vết di chuyển của từng con kiến
    for (const auto& ant : swarm) {
        int x = ant.current_x;
        int y = ant.current_y;
        double D = EuclideanDistance(ant.pattern, CentroidMatrix[x][y]);
        double R = 1.0 / (1.0 + D);
        
        for (size_t d = 0; d < grid[x][y].weights.size(); ++d) {
            grid[x][y].weights[d] += R * alpha * (ant.pattern[d] - grid[x][y].weights[d]);
        }
    }
    
    // 2. Bay hơi toàn bộ không gian lưới
    for (int x = 0; x < width; ++x) {
        for (int y = 0; y < height; ++y) {
            for (size_t d = 0; d < grid[x][y].weights.size(); ++d) {
                grid[x][y].weights[d] = (1.0 - rho) * grid[x][y].weights[d] + rho * initial_grid[x][y].weights[d];
            }
        }
    }
}

3. Thuật toán Học tập hợp (Ensemble Learning Multi-K)

Để khắc phục hiện tượng nhiễu cục bộ của thuật toán KNN đơn lẻ trong pha phân lớp, phương pháp Ensemble Multi-K tổng hợp kết quả bỏ phiếu qua các giá trị $k \in {1, 3, 5, 7, 9}$:

int Kants::EnsembleClassify(const std::vector<double>& test_sample, const std::vector<int>& k_candidates) {
    std::map<int, int> ensemble_votes;
    for (int k : k_candidates) {
        int predicted_class = ClassifyKNN(test_sample, k);
        ensemble_votes[predicted_class]++;
    }
    
    // Trả về nhãn lớp có tổng số phiếu bầu cao nhất qua các mô hình
    return std::max_element(ensemble_votes.begin(), ensemble_votes.end(),
        [](const std::pair<int, int>& a, const std::pair<int, int>& b) {
            return a.second < b.second;
        })->first;
}

Testing và validation

Hệ thống được kiểm thử bằng phương pháp Monte Carlo 10-fold cross-validation trên 3 bộ dữ liệu chuẩn UCI:

+-------------------------------------------------------------------------+
|                  TIẾN TRÌNH TIẾN HÓA BẦY ĐÀN KANTS                      |
+-------------------------------------------------------------------------+
|  Bước 0 (t = 0)         Bước 200 (t = 200)       Bước 1000 (t = 1000)   |
|  [ RỐI LOẠN ]       ->  [ VÁ LỖ HỔNG ]       ->  [ TẠO ĐƯỜNG MÒN ]      |
|  Kiến phân bố ngẫu      Các cụm sơ khai xuất     Cụm phân tách rõ nét,  |
|  nhiên, nồng độ mùi     hiện, mật độ mùi gia     đạt trạng thái cân     |
|  phân tán toàn lưới     tăng cục bộ              bằng động tối ưu       |
+-------------------------------------------------------------------------+

Bảng kết quả khảo sát siêu tham số trên tập Iris (Tỷ lệ 90% Train - 10% Test)

Nhóm tham số Giá trị khảo sát Độ chính xác trung bình (%) Đánh giá trạng thái lưới
Kích thước lưới $30 \times 50$
$35 \times 50$
$50 \times 50$
$100 \times 100$
80.25%
83.10%
86.40%
85.80%
Lưới quá nhỏ gây đè cụm; $50 \times 50$ đạt trạng thái ổn định tối ưu
Bán kính lân cận ($nr$) $nr = 1$
$nr = 2$
$nr = 3$
$nr = 4$
86.40%
84.60%
82.15%
79.50%
$nr$ nhỏ duy trì độ mịn của đường biên phân lớp
Bán kính trọng tâm ($cr$) $cr = 1$
$cr = 2$
$cr = 3$
$cr = 5$
81.20%
84.50%
86.40%
78.90%
$cr = 3$ cân bằng hoàn hảo giữa tốc độ gom cụm và tính chi tiết
Hệ số $\beta - \delta$ $\beta \in [32, 64], \delta \in [0, 0.4]$ 86.40% Xác lập chế độ tạo đường mòn chuẩn xác

Kết quả đạt được

                 SO SÁNH ĐỘ CHÍNH XÁC PHÂN LỚP TRÊN TẬP IRIS (90-10)
  100 % ──────────────────────────────────────────────────────────────────
   90 % ────────────────────────────────────────── 86.40% ─────── 88.95% ─
                                78.65%           ┌──────┐       ┌──────┐
   80 % ───────────────────────┌──────┐          │      │       │      │
                               │      │          │      │       │      │
   70 % ───────────────────────│      │──────────│      │───────│      │──
                               │  KNN │          │ KANTS│       │Ensemble
    0 % ───────────────────────┴──────┴──────────┴──────┴───────┴──────┴──
  1. Vượt trội về độ chính xác: KANTS đạt 86.40% độ chính xác trên tập Iris, vượt xa thuật toán KNN chuẩn (78.65%), tương ứng mức tăng trưởng hiệu năng +9.85%.
  2. Cải tiến vượt bậc nhờ Ensemble: Khi tích hợp mô hình Ensemble Multi-K, độ chính xác tăng thêm +2.55%, đạt đỉnh 88.95%, đồng thời triệt tiêu hoàn toàn hiện tượng phân lớp sai tại các điểm ranh giới.
  3. Tính ổn định của lưới nơ-ron: Thời gian hội tụ trung bình đạt dưới 1000 chu kỳ lặp ($t = 1000$), ma trận khoảng cách $U$-Matrix thể hiện biên giới phân tách các lớp dữ liệu rõ ràng.

Đổi mới và đóng góp

  1. Cơ chế tương tác gián tiếp Stigmergic trong phân lớp: Khác với các thuật toán tối ưu hóa bầy đàn truyền thống chỉ giải bài toán tối ưu tổ hợp (như Traveling Salesman Problem - TSP), dự án đã chuyển đổi thành công bài toán phân lớp sang mô hình động lực học nơ-ron thông qua mật độ pheromone.
  2. Loại bỏ nhược điểm khởi tạo ngẫu nhiên của SOM: Bản đồ Kohonen tiêu chuẩn rất nhạy cảm với việc khởi tạo trọng số ban đầu. KANTS sử dụng tác tử kiến đóng vai trò là "máy định hướng thích nghi", giúp các nơ-ron tự tổ chức nhanh hơn và tránh rơi vào trạng thái méo lưới (Topological Distortion).
  3. Mô hình triệt tiêu nhiễu động học (Dynamic Noise Filtering): Tham số bay hơi $\rho$ kết hợp với hàm tốc độ học tăng cường $R$ đóng vai trò như một bộ lọc thông thấp (Low-pass Filter), liên tục làm mịn dữ liệu và cô lập các điểm nhiễu ngoại lai ra khỏi tâm cụm chính.

Ứng dụng thực tế và triển khai

Tình huống ứng dụng thực tế

  • Phân loại hồ sơ y tế tự động: Nhận diện và sàng lọc bệnh nhân có nguy cơ mắc bệnh đái tháo đường dựa trên chỉ số sinh hóa (tập dữ liệu Pima Diabetes).
  • Giám định tội phạm học và Khoa học vật liệu: Phân loại quang phổ và thành phần hóa học của các mẫu mảnh thủy tinh vỡ tại hiện trường vụ án (tập dữ liệu Glass Identification).
  • Phân loại nông nghiệp thông minh: Phân loại giống cây trồng, hoa màu tự động dựa trên các thông số hình thái học.

Hướng dẫn triển khai và Cấu hình hệ thống

# Hướng dẫn biên dịch và triển khai hệ thống KANTS trên môi trường Linux/Windows

# 1. Clone mã nguồn từ kho lưu trữ
git clone https://github.com/academic-ai/kants-classifier.git
cd kants-classifier

# 2. Tạo thư mục build và cấu hình CMake
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..

# 3. Biên dịch chương trình tối ưu hóa -O3
make -j4

# 4. Thực thi phân lớp với tập dữ liệu Iris
./kants_engine --dataset ../data/iris.data \
               --grid_w 50 --grid_h 50 \
               --beta 48.0 --delta 0.2 \
               --nr 1 --cr 3 --rho 0.05 \
               --iterations 1000 --ensemble true

Yêu cầu cấu hình phần cứng tối thiểu

  • CPU: Intel Core i3 2.0 GHz hoặc tương đương (2 Cores).
  • RAM: 2 GB khả dụng (Hệ thống chiếm dụng bộ nhớ cực thấp, dưới 50 MB khi chạy lưới $100 \times 100$).
  • Ổ cứng: 100 MB dung lượng trống.
  • Hệ điều hành: Windows 7/10/11, Ubuntu 16.04 LTS trở lên.

Hạn chế và hướng phát triển

+-------------------------------------------------------------------------+
|                  HẠN CHẾ VÀ ĐỊNH HƯỚNG NÂNG CẤP                         |
+-------------------------------------------------------------------------+
| [Rào cản hiện tại]             [Giải pháp nâng cấp tương lai]           |
|                                                                         |
| - Chi phí tính trọng tâm   ---> - Cấu trúc dữ liệu KD-Tree / QuadTree   |
| - Siêu tham số thủ công     - Tự động hóa qua Thuật toán Di truyền (GA) |
| - Đơn luồng tuần tự         - Song song hóa Massively Parallel trên GPU |
+-------------------------------------------------------------------------+
  1. Tính toán ma trận trọng tâm tốn kém: Với kích thước lưới lớn ($> 100 \times 100$) và bán kính $cr$ cao, việc tính toán $CTR_j$ lặp lại ở mỗi bước đi gây thắt nút cổ chai (Bottleneck). Hướng giải quyết: Áp dụng bảng tích lũy tổng tiền tố (Prefix Sum Table) cho không gian 2D để đạt độ phức tạp $O(1)$.
  2. Phụ thuộc vào siêu tham số: Cặp tham số $\beta - \delta$ đòi hỏi kinh nghiệm tinh chỉnh cho từng bài toán. Hướng phát triển: Ứng dụng Giải thuật di truyền (Genetic Algorithm - GA) hoặc Tối ưu hóa bầy hạt (Particle Swarm Optimization - PSO) để tự động hóa quá trình tìm kiếm siêu tham số tối ưu.
  3. Khả năng mở rộng dữ liệu lớn: Nghiên cứu tích hợp mô hình KANTS phân tán trên nền tảng tính toán song song CUDA Core để xử lý các bộ dữ liệu hàng triệu mẫu.

Đối tượng hưởng lợi

  • Sinh viên & Học viên cao học: Cung cấp tài liệu nghiên cứu chuẩn mực, kết hợp hài hòa giữa lý thuyết tính toán mềm (Soft Computing), mô hình nơ-ron sinh học và trí tuệ nhân tạo bầy đàn.
  • Kỹ sư AI & Lập trình viên: Nắm bắt kỹ thuật lập trình C++ hướng đối tượng hiệu năng cao, cấu trúc dữ liệu lưới nơ-ron và các mẫu thiết kế giải thuật học tăng cường.
  • Doanh nghiệp & Đơn vị R&D: Sở hữu giải pháp phân lớp gọn nhẹ, có thể triển khai trực tiếp trên các thiết bị nhúng (Edge AI / IoT Devices) với tài nguyên phần cứng cực kỳ hạn chế mà không cần kết nối đám mây.
  • Nhà nghiên cứu khoa học: Mở ra hướng tiếp cận mới trong việc kết hợp các hệ sinh học đa tác tử (Multi-Agent Systems) với các mô hình học sâu (Deep Learning).

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật tối thiểu để triển khai KANTS là gì?

Hệ thống được viết bằng C++ thuần túy, không phụ thuộc vào các thư viện bên thứ ba cồng kềnh. Yêu cầu tối thiểu chỉ cần trình biên dịch hỗ trợ chuẩn C++11, RAM 2GB và CPU lõi kép. Bộ nhớ thực thi chỉ tốn khoảng 15–50 MB RAM cho các tác vụ chuẩn.

2. Giới hạn khả năng mở rộng (Scalability) của KANTS và cách khắc phục?

Giới hạn mở rộng nằm ở số lượng tế bào lưới $W \times H$ và số lượng tác tử kiến $N_{ants}$. Khi kích thước lưới tăng gấp đôi, thời gian tính toán tăng theo cấp số nhân. Giải pháp là áp dụng cơ chế phân vùng không gian KD-Tree hoặc tính toán ma trận trọng tâm song song bằng OpenMP.

3. KANTS có thể tích hợp vào các hệ thống sẵn có (như Python AI Pipeline) không?

Hoàn toàn có thể. Do được viết bằng C++, KANTS có thể được đóng gói thành thư viện liên kết động (.dll trên Windows hoặc .so trên Linux) và tạo module liên kết (Wrapper) sang Python thông qua pybind11 hoặc ctypes.

4. Chi phí vận hành và bảo trì mô hình KANTS như thế nào?

Mô hình KANTS là một hệ giải thuật độc lập, sau khi lưới nơ-ron được huấn luyện hoàn chỉnh, cấu trúc lưới có thể được xuất ra file nhị phân nhỏ gọn ($< 1$ MB). Việc bảo trì chỉ bao gồm việc tái huấn luyện định kỳ khi phân bố dữ liệu môi trường thay đổi lớn.

5. Tại sao KANTS lại vượt trội hơn KNN thuần túy?

KNN thuần túy lưu trữ toàn bộ mẫu và tính toán khoảng cách đến mọi điểm khi có truy vấn mới, dẫn đến độ trễ lớn và dễ sai lệch do nhiễu. KANTS thực hiện nén và ánh xạ không gian dữ liệu lên một lưới nơ-ron tự tổ chức, lọc nhiễu qua cơ chế bay hơi pheromone, từ đó mang lại độ chính xác cao hơn và thời gian suy luận nhanh hơn gấp nhiều lần.


Kết luận

Đồ án đã nghiên cứu và hiện thực hóa thành công mô hình Hệ kiến nhân tạo cho phân lớp (KANTS) kết hợp giữa Bản đồ tự tổ chức SOM và Trí tuệ bầy đàn AS, đánh dấu một bước tiến quan trọng trong việc ứng dụng các giải thuật sinh học vào bài toán học máy có giám sát.

Việc tích hợp thành công kiến trúc Học tập hợp (Ensemble Learning Multi-K) đã đẩy độ chính xác phân lớp lên mức 88.95%, chứng minh tính khả thi, độ tin cậy và giá trị ứng dụng thực tiễn vượt bậc của mô hình. Đây là nền tảng vững chắc để tiếp tục mở rộng phát triển các hệ thống phân lớp dữ liệu thông minh, hiệu năng cao trên các nền tảng thiết bị nhúng và hệ thống tính toán thời gian thực trong tương lai.