Giải Thích Mô Hình Với LIME & ANCHOR – Ứng Dụng Trong XAI

Nhóm: CONQ024
Học viên: Lê Hồ Anh Duy
Tổ chức: AI Việt Nam – AIO 2025
Ngày: 19/10/2025


1. Giới thiệu tổng quan

Explainable Artificial Intelligence (XAI) là lĩnh vực giúp con người hiểu và tin tưởng kết quả của mô hình học máy.
Hai phương pháp nổi bật trong XAI là LIME (Local Interpretable Model-Agnostic Explanations) và ANCHOR (High-Precision Model-Agnostic Explanations).

Phương pháp Mục tiêu chính
LIME Giải thích cục bộ (local) bằng mô hình tuyến tính xấp xỉ
ANCHOR Giải thích logic bằng tập luật điều kiện chính xác cao

2. LIME – Local Interpretable Model-Agnostic Explanations

2.1. Ý tưởng chính

LIME giải thích một dự đoán cụ thể của mô hình phức tạp bằng một mô hình tuyến tính đơn giản huấn luyện trên dữ liệu “giả lập” xung quanh điểm cần giải thích.

Lime.png

Công thức tổng quát:

$$\text{argmin}_{g \in G} \; L(f, g, \pi_x) + \Omega(g)$$

Trong đó:
- $f$: mô hình gốc (black-box).
- $g$: mô hình tuyến tính xấp xỉ (white-box).
- $\pi_x$: trọng số khoảng cách (điểm càng gần $x$, trọng số càng lớn).
- $\Omega(g)$: độ phức tạp của mô hình xấp xỉ.

Tư tưởng: Mô hình phức tạp $f$ được “chiếu” thành một mô hình tuyến tính $g$ ở vùng lân cận điểm cần giải thích.


2.2. Quy trình hoạt động của LIME

  1. Chọn mẫu cần giải thích $x_0$.
  2. Sinh dữ liệu giả lập xung quanh $x_0$.
  3. Tính dự đoán của mô hình gốc $f(x_i)$.
  4. Tính trọng số theo khoảng cách giữa $x_i$ và $x_0$.
  5. Huấn luyện mô hình tuyến tính $g$ bằng dữ liệu có trọng số.
  6. Giải thích kết quả: Hệ số $w_i$ của $g$ thể hiện mức ảnh hưởng của từng feature.

LIME_framework.png

2.3. Minh họa bằng Python

import lime
import lime.lime_tabular
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier

# Dữ liệu
X, y = load_iris(return_X_y=True)
model = RandomForestClassifier().fit(X, y)

# Tạo bộ giải thích
explainer = lime.lime_tabular.LimeTabularExplainer(X, feature_names=['sepal_length','sepal_width','petal_length','petal_width'], class_names=['setosa','versicolor','virginica'], discretize_continuous=True)

# Chọn mẫu và giải thích
i = 10
exp = explainer.explain_instance(X[i], model.predict_proba, num_features=2)
exp.show_in_notebook(show_table=True)

Trong đó:
- $i$: là mẫu cần giải thích ( dòng thứ 10 )
- model.predict_proba: Hàm dự đoán xác suất của mô hình gốc
- num_features=2: Chỉ hiển thị 2 đặc trưng quan trọng nhất ảnh hưởng đến quyết định.


2.4. Ưu và nhược điểm của LIME

Ưu điểm Nhược điểm
Giải thích dễ hiểu, trực quan Không ổn định nếu dữ liệu lân cận thay đổi
Áp dụng cho mọi mô hình (model-agnostic) Tốn thời gian khi nhiều mẫu cần giải thích
Có thể dùng cho dữ liệu tabular, ảnh, text Phụ thuộc cách sinh mẫu giả lập

3. ANCHOR – High-Precision Model-Agnostic Explanations

3.1. Ý tưởng chính

ANCHOR khắc phục điểm yếu của LIME bằng cách tạo tập luật điều kiện (if–then rules)độ chính xác cao (precision),
bảo đảm rằng khi luật đúng → mô hình dự đoán cùng kết quả với xác suất cao.

LIMEvsANCHOR.png

Ví dụ:
Nếu income > 50kage > 30 → mô hình dự đoán "Chấp nhận vay" với xác suất 97%.


3.2. Cơ chế tìm “anchor”

  • Input: điểm cần giải thích $x_0$.
  • Output: tập luật $A = \{a_1, a_2, ...\}$ sao cho:
    $$ P(f(x) = f(x_0) \mid A(x)) \ge \tau $$
    với $\tau$ là ngưỡng độ tin cậy (thường 0.95 hoặc 0.99).

Thuật toán:
1. Tạo ra nhiều điều kiện ứng viên
( ví dụ: "petal_length > 4", "petal_width > 1.5" )
2. Đánh giá mức “precision” của từng tổ hợp điều kiện.
( xem trong các mẫu thỏa điều kiện đó, có bao nhiêu mẫu mô hình dự đoán giống điểm cần giải thích )
3. Chọn tập nhỏ nhất nhưng có độ chính xác cao nhất.


3.3. Ví dụ minh họa với Python

import anchor
from anchor import anchor_tabular
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris

X, y = load_iris(return_X_y=True)
model = RandomForestClassifier().fit(X, y)

explainer = anchor_tabular.AnchorTabularExplainer(
    class_names=['setosa', 'versicolor', 'virginica'],
    feature_names=['sepal_length','sepal_width','petal_length','petal_width'],
    train_data=X
)

i = 20
exp = explainer.explain_instance(X[i], model.predict, threshold=0.95)
print('Anchor:', exp.names())

3.4. So sánh LIME và ANCHOR

Tiêu chí LIME ANCHOR
Loại giải thích Tuyến tính cục bộ Tập luật logic (if–then)
Độ ổn định Nhạy với dữ liệu sinh ngẫu nhiên Ổn định, rõ ràng hơn
Độ chính xác Trung bình Cao (≥ 95%)
Dạng kết quả Trọng số của feature Tập luật điều kiện
Thời gian xử lý Nhanh hơn Chậm hơn (tìm luật tối ưu)
Tính diễn giải Dễ hiểu với mô hình tuyến tính Dễ hiểu cho người không chuyên kỹ thuật

4. Kết luận và hướng phát triển

4.1. Kết luận

  • LIME cung cấp giải thích cục bộ bằng mô hình tuyến tính.
  • ANCHOR cung cấp giải thích logic với độ chính xác cao hơn.
  • Cả hai đều là phương pháp model-agnostic, giúp “mở hộp đen” AI.
  • Chọn phương pháp phụ thuộc vào mục tiêu ứng dụng: cần trực quan hay cần độ tin cậy cao.

4.2. Hướng phát triển

  1. Kết hợp LIME & ANCHOR để tạo giải thích vừa ổn định vừa chính xác.
  2. Tích hợp XAI vào pipeline MLOps để tự động sinh giải thích khi triển khai.
  3. Áp dụng với mô hình Deep Learning (CNN, Transformer) và dữ liệu lớn.
  4. Trực quan hóa kết quả giải thích bằng dashboard tương tác.