Chuyển đến nội dung chính

LDA trong thực tế: Huấn luyện và đánh giá mô hình chủ đề

Khi đã hiểu Latent Dirichlet Allocation (LDA) biểu diễn tài liệu bằng hỗn hợp chủ đề, câu hỏi tiếp theo là: huấn luyện mô hình trên dữ liệu thật như thế nào và làm sao biết chủ đề tìm được có hữu ích? Bài 2 tập trung vào quy trình từ văn bản đến phân phối xác suất, cách đọc kết quả của scikit-learn và phương pháp đánh giá mà không đánh đồng một chỉ số thống kê với chất lượng ngữ nghĩa.

Tóm tắt nội dung

1. Đầu vào phù hợp với LDA là ma trận đếm từ (bag-of-words), còn đầu ra chủ yếu là phân phối chủ đề–từ và tài liệu–chủ đề.

2. Số chủ đề K, tiền xử lý từ, cùng các tham số tiên nghiệm α và η đều ảnh hưởng đến mô hình tìm được.

3. Có thể xây dựng pipeline LDA bằng Python để khám phá chủ đề và suy ra hỗn hợp chủ đề của văn bản mới.

4. Perplexity chỉ phản ánh một khía cạnh của khả năng mô hình hóa dữ liệu; cần đối chiếu thêm từ nổi bật, tài liệu đại diện và mục tiêu ứng dụng.

Nếu chưa quen với ý nghĩa của phân phối Dirichlet, biến ẩn và hai lớp xác suất trong LDA, nên đọc trước Bài 1: LDA (Latent Dirichlet Allocation) – Cơ chế và ví dụ. Phần dưới giả định người đọc đã nắm được trực giác này [1].

1. LDA thực sự học được những gì?

Giả sử có D tài liệu, V từ trong từ vựng và K chủ đề cần khám phá. Với mỗi chủ đề k, LDA ước lượng phân phối xác suất trên V từ, thường viết là φk,v. Với mỗi tài liệu d, mô hình ước lượng tỷ trọng của K chủ đề, ký hiệu θd,k. Hai đại lượng đều không âm; tổng các giá trị theo từ trong từng chủ đề hoặc theo chủ đề trong từng tài liệu đều bằng 1 [1].

Một cách nhìn hữu ích là xem φ và θ như hai ma trận. Ma trận chủ đề–từ có kích thước K × V: mỗi hàng trả lời “chủ đề này ưu tiên những từ nào?”. Ma trận tài liệu–chủ đề có kích thước D × K: mỗi hàng trả lời “tài liệu này thiên về những chủ đề nào?”. Trong thực hành, nhà phân tích thường đặt tên cho từng hàng của ma trận đầu tiên rồi dùng ma trận thứ hai để phân tích kho văn bản.

Về mặt xác suất, khi đã biết θ và φ, xác suất của một từ tại vị trí bất kỳ trong tài liệu được tính bằng cách cộng đóng góp từ tất cả các chủ đề. Công thức này bỏ qua thứ tự từ, đúng với giả định túi từ (bag of words) của LDA cơ bản:

P(w = v | d, θ, φ) = ∑k=1K θd,k · φk,v

Ở đây, w là từ quan sát, v là một mục trong từ vựng, d là tài liệu và K là số chủ đề. Công thức không khẳng định mô hình hiểu ngữ nghĩa của từ: cùng một từ có thể được đóng góp bởi nhiều chủ đề. Khi áp dụng vào dữ liệu đã có, việc suy ra phân phối ẩn là bài toán khó tính trực tiếp, nên phần mềm dùng những thuật toán suy luận xấp xỉ thay vì duyệt mọi cách gán chủ đề có thể xảy ra [1].

2. Chuẩn bị dữ liệu: vì sao nên bắt đầu từ số lần xuất hiện?

Đầu vào phổ biến của LDA là ma trận tài liệu–từ gồm các số đếm nguyên không âm. Nếu một văn bản chứa “dữ_liệu” ba lần và “thuật_toán” một lần thì hai ô tương ứng nhận giá trị 3 và 1. CountVectorizer chuyển kho văn bản thành ma trận thưa kiểu này; nó không tạo embedding và cũng không tự khám phá chủ đề [2].

Việc xử lý tiếng Việt cần thêm một bước thường bị bỏ qua: tách từ (word segmentation). Chuỗi “trí tuệ nhân tạo” bao gồm nhiều âm tiết nhưng thường được xem là một đơn vị từ ghép trong phân tích chủ đề. Nếu dùng bộ tách mặc định của CountVectorizer, các âm tiết bị đếm độc lập; vì vậy ví dụ Python bên dưới giả định đã tách từ và nối các âm tiết của một từ ghép bằng dấu gạch dưới, chẳng hạn tri_tue_nhan_tao. Với dữ liệu thật, có thể dùng công cụ tách từ tiếng Việt phù hợp và kiểm tra chất lượng kết quả trước khi vector hóa.

Ngoài tách từ, cần chuẩn hóa cách viết, xử lý văn bản rỗng, loại nội dung sao chép và cân nhắc loại từ dừng (stop words) quá phổ biến hoặc từ xuất hiện quá hiếm. Các tham số min_df và max_df giúp lọc từ theo số lượng hoặc tỷ lệ tài liệu có chứa từ đó [2]. Tuy nhiên, không nên loại mọi từ tần suất cao một cách máy móc: trong tập tài liệu y khoa, một thuật ngữ xuất hiện rộng rãi vẫn có thể cần thiết cho mục tiêu phân tích.

Không nên mặc định thay số đếm bằng TF-IDF khi dùng LDA sinh xác suất chuẩn. TF-IDF biến trọng số từ theo độ phổ biến của chúng trong toàn bộ kho tài liệu, trong khi giả định quan sát của mô hình cơ bản là các lần xuất hiện của từ. Một số quy trình biến thể có thể sử dụng trọng số khác, nhưng khi áp dụng API LDA chuẩn của scikit-learn, lựa chọn có căn cứ và dễ diễn giải nhất là bắt đầu từ số đếm của từ [1], [2], [3].

Pipeline thực hành LDA từ văn bản đến khám phá chủ đề Pipeline LDA có thể kiểm tra Kho tài liệu Bài báo, phản hồi, hồ sơ Tiền xử lý & đếm từ Tách từ → CountVectorizer Ma trận đếm X D tài liệu × V từ vựng Huấn luyện LDA K, α, η, suy luận xấp xỉ Chủ đề → từ K × V Tài liệu → chủ đề D × K Kiểm tra → Diễn giải → Ứng dụng

Hình 1. Sơ đồ tự dựng mô tả pipeline LDA trong thực hành. Kích thước ma trận biểu thị số hàng và cột, không phải hiệu năng của thuật toán.

3. Huấn luyện LDA: vai trò của K, α, η và thuật toán suy luận

Trước khi huấn luyện, người dùng chọn K, tức số chủ đề mà mô hình sẽ tìm. K không được tự động xác định bởi LDA hữu hạn tiêu chuẩn. Nếu K quá nhỏ, nhiều lĩnh vực nội dung có thể bị trộn; nếu quá lớn, một chủ đề có thể bị chia thành nhiều nhóm gần giống nhau hoặc tạo ra những chủ đề dựa trên nhiễu. Không có công thức đơn giản bảo đảm chọn đúng K cho mọi tập dữ liệu.

Hai tham số tiên nghiệm (prior) đóng vai trò điều tiết phân phối. α chi phối xu hướng phân bố chủ đề trong mỗi tài liệu; η chi phối phân bố từ trong mỗi chủ đề. Với các prior Dirichlet đối xứng và những yếu tố khác giữ nguyên, giá trị từng thành phần nhỏ hơn thường ưu tiên phân phối tập trung vào ít thành phần hơn. Điều đó là một xu hướng tiên nghiệm, không phải bảo đảm đầu ra luôn “sắc nét” hoặc mang ngữ nghĩa tốt [1], [3].

Trong scikit-learn, doc_topic_prior tương ứng α, còn topic_word_prior tương ứng η. Nếu để mặc định None, thư viện dùng giá trị 1/K cho từng tham số. Cũng cần phân biệt giữa prior và ước lượng sau khi xem dữ liệu: một prior có xu hướng tạo hỗn hợp thưa không thể thay thế bằng chứng từ hàng nghìn tài liệu quan sát được [3].

Vì có các biến ẩn, LDA thường dùng suy luận biến phân (variational inference) để xấp xỉ phân phối hậu nghiệm; phương pháp này tối ưu một cận dưới của log-likelihood, gọi là bằng chứng cận dưới (evidence lower bound, ELBO) [1]. Cách làm của scikit-learn dựa trên suy luận biến phân trực tuyến (online variational Bayes), hỗ trợ huấn luyện batch hoặc online. Batch dùng toàn bộ tập huấn luyện khi cập nhật; online cập nhật từ các minibatch, phù hợp khi số tài liệu lớn. Cả hai đều là phương pháp xấp xỉ và có thể hội tụ đến các nghiệm cục bộ khác nhau [3], [4].

4. Thực hành Python: từ kho văn bản đến tài liệu mới

Ví dụ dưới đây dùng 24 văn bản huấn luyện tự tạo và 6 văn bản giữ lại thuộc ba miền nội dung quen thuộc: bóng đá, công nghệ và tài chính. Những nhóm này chỉ được dùng để soạn dữ liệu minh họa; mô hình không nhận nhãn lĩnh vực nào khi học. Cần cài đặt thư viện scikit-learn trước khi chạy. Đây là thí nghiệm nhỏ để học cách sử dụng API, không phải bộ dữ liệu đánh giá chất lượng LDA trong thực tế.

Python · huấn luyện và suy luận tài liệu mới
from sklearn.decomposition import LatentDirichletAllocation
from sklearn.feature_extraction.text import CountVectorizer

# Các chuỗi đã tách từ; dấu gạch dưới nối một từ ghép tiếng Việt.
train_docs = [
    "bong_da cau_thu doi_bong tran_dau ban_thang san_co",
    "cau_thu ghi_ban ban_thang doi_bong bong_da",
    "tran_dau bong_da huan_luyen_vien cau_thu doi_bong",
    "san_co cau_thu chien_thuat bong_da tran_dau",
    "doi_bong ban_thang giai_dau cau_thu bong_da",
    "bong_da cau_thu huan_luyen_vien giai_dau",
    "chien_thuat huan_luyen_vien tran_dau doi_bong",
    "ghi_ban ban_thang san_co doi_bong tran_dau",
    "phan_mem may_tinh lap_trinh thuat_toan du_lieu",
    "tri_tue_nhan_tao mo_hinh du_lieu thuat_toan may_tinh",
    "lap_trinh phan_mem he_thong may_tinh du_lieu",
    "du_lieu mo_hinh tri_tue_nhan_tao thuat_toan",
    "he_thong phan_mem thuat_toan lap_trinh may_tinh",
    "may_tinh tri_tue_nhan_tao mo_hinh du_lieu",
    "lap_trinh du_lieu phan_mem thuat_toan he_thong",
    "mo_hinh he_thong tri_tue_nhan_tao may_tinh",
    "ngan_hang lai_suat tin_dung tai_chinh khoan_vay",
    "tai_chinh dau_tu thi_truong co_phieu ngan_hang",
    "lai_suat ngan_hang khoan_vay tin_dung tai_chinh",
    "thi_truong dau_tu co_phieu tai_chinh loi_nhuan",
    "tin_dung khoan_vay ngan_hang lai_suat",
    "tai_chinh co_phieu thi_truong dau_tu ngan_hang",
    "loi_nhuan dau_tu thi_truong co_phieu",
    "khoan_vay lai_suat tin_dung ngan_hang",
]

# Tập giữ lại chỉ dùng để kiểm tra; không được học từ vựng từ tập này.
test_docs = [
    "doi_bong cau_thu tran_dau ban_thang",
    "bong_da chien_thuat huan_luyen_vien san_co",
    "du_lieu thuat_toan phan_mem tri_tue_nhan_tao",
    "lap_trinh he_thong may_tinh mo_hinh",
    "lai_suat ngan_hang tin_dung khoan_vay",
    "dau_tu thi_truong co_phieu tai_chinh",
]

vectorizer = CountVectorizer(token_pattern=r"(?u)\b\w+\b", min_df=1)
X_train = vectorizer.fit_transform(train_docs)
X_test = vectorizer.transform(test_docs)

lda = LatentDirichletAllocation(
    n_components=3,
    doc_topic_prior=0.1,
    topic_word_prior=0.1,
    learning_method="batch",
    max_iter=100,
    random_state=0,
)
theta = lda.fit_transform(X_train)
words = vectorizer.get_feature_names_out()
phi = lda.components_ / lda.components_.sum(axis=1, keepdims=True)

for k, row in enumerate(phi):
    top = row.argsort()[::-1][:6]
    print(f"Chủ đề {k}: {', '.join(words[top])}")

# Một văn bản mới có thể pha trộn thể thao và công nghệ.
new_doc = ["bong_da cau_thu tran_dau doi_bong du_lieu thuat_toan mo_hinh tri_tue_nhan_tao"]
new_theta = lda.transform(vectorizer.transform(new_doc))[0]
print("Phân phối chủ đề của văn bản mới:", new_theta.round(3))

Tại đây, X_train có kích thước 24 × V, còn theta có kích thước 24 × 3. Phương thức fit_transform vừa huấn luyện mô hình vừa trả về tỷ trọng chủ đề ước lượng của tài liệu huấn luyện. Sau khi học, lda.components_ là ma trận tham số Dirichlet biến phân, không phải trực tiếp ma trận xác suất đã chuẩn hóa. Vì vậy, đoạn mã chia mỗi hàng cho tổng của hàng đó để lấy phân phối chủ đề–từ ước lượng [3].

Khi chạy thử với bộ dữ liệu và hạt giống ngẫu nhiên trong mã, những từ nổi bật có thể nhóm quanh các miền “đội_bóng – bóng_đá – cầu_thủ”, “ngân_hàng – tài_chính – tín_dụng” và “trí_tuệ_nhân_tạo – mô_hình – dữ_liệu”. Tên gọi thể thao, tài chính, công nghệ là nhãn do con người diễn giải sau khi nhìn các từ đại diện; số thứ tự chủ đề 0, 1, 2 không mang ý nghĩa học thuật cố định. Do tối ưu xấp xỉ và khác biệt phiên bản, danh sách hoặc thứ tự từ có thể thay đổi.

Phần xử lý new_doc có ý nghĩa ứng dụng trực tiếp: một bài viết vừa bàn về bóng đá vừa nhắc đến dữ liệu và thuật toán có thể nhận tỷ trọng ở cả chủ đề thể thao lẫn công nghệ. Việc gọi vectorizer.transform, thay vì fit_transform lại, giữ nguyên từ vựng đã học. Các từ chưa có trong từ vựng huấn luyện sẽ bị bỏ qua; nếu văn bản mới chỉ chứa từ ngoài từ vựng, ước lượng chủ đề có thể ít thông tin hoặc chủ yếu phản ánh prior [2], [3].

5. Đánh giá mô hình: từ perplexity đến khả năng diễn giải

Một cách so sánh cấu hình là giữ lại một tập tài liệu không tham gia huấn luyện rồi tính perplexity xấp xỉ trên tập đó. Theo quy ước của scikit-learn, chỉ số này bằng hàm mũ của âm log-likelihood xấp xỉ tính trên mỗi từ. Trong điều kiện dữ liệu và quy trình đánh giá tương đương, giá trị thấp hơn phản ánh khả năng mô hình hóa dữ liệu theo thước đo đó tốt hơn; nó không chứng minh rằng các chủ đề dễ hiểu hơn đối với người đọc [3].

Chạy phần mã sau tiếp theo khối trước để thử K từ 2 đến 5. Các mô hình chỉ học trên X_train; X_test được biến đổi bằng từ vựng đã học từ tập huấn luyện, tránh rò rỉ thông tin qua bước xây dựng từ vựng.

Python · so sánh perplexity theo số chủ đề
for k in (2, 3, 4, 5):
    candidate = LatentDirichletAllocation(
        n_components=k, doc_topic_prior=0.1, topic_word_prior=0.1,
        learning_method="batch", max_iter=100,
        random_state=0,
    ).fit(X_train)
    print(f"K={k}: perplexity giữ lại = {candidate.perplexity(X_test):.2f}")

Với một bộ dữ liệu đồ chơi chỉ vài chục văn bản, kết quả có thể không ưu tiên K = 3, dù người tạo dữ liệu cố ý soạn ba nhóm chủ đề. Điều này không mâu thuẫn: mức độ phù hợp xác suất, số miền chủ đề mà con người dự kiến và khả năng diễn giải là những khái niệm khác nhau. Không nên dùng giá trị từ thí nghiệm nhỏ này để rút ra kết luận tổng quát về cấu hình K tốt nhất.

Trong ứng dụng thực, bước đánh giá cần bổ sung việc đọc các từ có trọng số cao, xem những văn bản đại diện của từng chủ đề và kiểm tra liệu chủ đề có trùng lặp, lẫn nhiễu hay bỏ sót nhóm nội dung quan trọng không. Có thể kiểm tra thêm tính ổn định khi thay đổi hạt giống ngẫu nhiên hoặc lấy mẫu dữ liệu. Nghiên cứu về cách con người diễn giải topic model đã chỉ ra rằng mô hình có kết quả dự đoán trên dữ liệu giữ lại tốt hơn không nhất thiết tạo ra chủ đề dễ hiểu hơn [5].

Khi so sánh K, nên thiết kế các thử nghiệm có thể đối chiếu: cố định cách tách từ, tập huấn luyện–kiểm tra, quy tắc lọc từ và quy trình đánh giá. Với prior, cần ghi rõ chúng được giữ cố định hay thay đổi theo K. Cuối cùng, lựa chọn K nên dựa trên câu hỏi cần giải quyết: hệ thống thống kê phản hồi khách hàng có thể cần ít chủ đề rõ ràng, trong khi nghiên cứu một kho bài báo chuyên ngành có thể chấp nhận các nhóm hẹp hơn nếu chúng ổn định và giúp khám phá nội dung.

6. Từ phân phối xác suất đến ứng dụng có ích

Một ứng dụng điển hình là phân tích hàng chục nghìn phản hồi khách hàng không có nhãn. Sau khi làm sạch và tách từ, nhóm phân tích huấn luyện LDA trên tập dữ liệu đại diện, đọc các từ nổi bật và các phản hồi tiêu biểu để đặt tên chủ đề như “giao hàng”, “thanh toán”, “chất lượng sản phẩm”. Với từng phản hồi mới, vector tài liệu–chủ đề cho phép tìm những nhóm nội dung có liên quan. Một phản hồi có thể phàn nàn đồng thời về giao hàng và thanh toán; phân phối hỗn hợp bảo toàn đặc tính này tốt hơn việc gán một nhãn duy nhất.

Nếu dùng kết quả để lập báo cáo theo tháng, cần xác định rõ đại lượng đang đo. Chẳng hạn, tổng hoặc trung bình tỷ trọng chủ đề trong các phản hồi của tháng là một chỉ báo về sự hiện diện tương đối của chủ đề trong mô hình, không đồng nghĩa chính xác với tỷ lệ khách hàng đã gặp một vấn đề. Một người có thể gửi nhiều phản hồi, văn bản có độ dài khác nhau, và các chủ đề có thể chồng lấn. Muốn suy luận về tỷ lệ khách hàng thật, phải bổ sung bước tổng hợp theo người dùng và định nghĩa quy tắc đo lường phù hợp.

Trong vận hành, cần lưu lại phiên bản bộ tách từ, từ vựng, cấu hình mô hình và bản đồ diễn giải tên chủ đề. Nếu huấn luyện lại LDA trên dữ liệu mới, chủ đề số 0 của mô hình mới không nhất thiết tương đương chủ đề số 0 của mô hình cũ; việc so sánh xu hướng trực tiếp theo chỉ số hàng sẽ dễ gây sai lệch. Để báo cáo theo thời gian, nên cố định một mô hình để chấm điểm dữ liệu mới trong phạm vi phù hợp, hoặc có quy trình đối sánh và thẩm định chủ đề sau mỗi lần huấn luyện lại.

LDA đặc biệt hữu ích khi mục tiêu là khám phá cấu trúc từ ngữ ở cấp kho tài liệu, chứ không đòi hỏi hiểu sâu từng phát ngôn. Mô hình khó nắm được phủ định, ý mỉa mai, thứ tự từ và khác biệt ngữ nghĩa tinh tế vì giả định túi từ. Các tài liệu rất ngắn cũng ít cung cấp bằng chứng về đồng xuất hiện của từ; trong trường hợp đó, kết quả có thể kém ổn định. Khi nhiệm vụ là nhận diện ý định, phân loại cảm xúc hoặc tìm kiếm ngữ nghĩa theo câu, cần cân nhắc những phương pháp phù hợp hơn thay vì kỳ vọng LDA giải quyết mọi bài toán NLP.

7. Kết luận

Một pipeline LDA có giá trị không dừng ở việc in ra danh sách từ khóa: nó cần biến văn bản thành số đếm nhất quán, ước lượng hai lớp phân phối xác suất, rồi kiểm tra liệu các chủ đề tìm được có trả lời đúng câu hỏi phân tích hay không. Perplexity, độ ổn định và khả năng diễn giải cung cấp những góc nhìn bổ sung, không nên thay thế cho nhau. Bài 3 của chuỗi sẽ tổng hợp các sai lầm thường gặp, nguyên tắc chọn tham số và kinh nghiệm triển khai LDA trên dữ liệu thực tế.

Tài liệu tham khảo

[1] D. M. Blei, A. Y. Ng, and M. I. Jordan, “Latent Dirichlet Allocation,” Journal of Machine Learning Research, vol. 3, pp. 993–1022, 2003. Nguồn chính thức.

[2] scikit-learn developers, “CountVectorizer,” scikit-learn API Reference. Tài liệu chính thức.

[3] scikit-learn developers, “LatentDirichletAllocation,” scikit-learn API Reference. Tài liệu chính thức.

[4] M. D. Hoffman, D. M. Blei, and F. Bach, “Online Learning for Latent Dirichlet Allocation,” in Advances in Neural Information Processing Systems 23, 2010. Nguồn chính thức.

[5] J. Chang, J. Boyd-Graber, S. Gerrish, C. Wang, and D. M. Blei, “Reading Tea Leaves: How Humans Interpret Topic Models,” in Advances in Neural Information Processing Systems 22, 2009. Nguồn chính thức.

© The CS Note · THE CS NOTE

Nội dung gốc thuộc tác giả. Vui lòng không đăng lại toàn văn khi chưa được phép, trừ trường hợp pháp luật hoặc giấy phép áp dụng cho phép. Nội dung của bên thứ ba tuân theo quyền và giấy phép tương ứng.

Nguồn gốc: LDA trong thực tế: Huấn luyện và đánh giá mô hình chủ đề

Về trang chủ Về đầu bài

Bài Đăng Phổ Biến

Bài toán tháp Hà nội

Trải nghiệm Tháp Hà Nội Kéo thả đĩa hoặc chạm vào các nút bên dưới để di chuyển. Bạn phải chuyển toàn bộ đĩa sang cột ngoài cùng bên phải (Cột 3) mà không đặt đĩa to lên đĩa nhỏ. Cột 1 Cột 2 Cột 3 Điều khiển & Chế độ Số lượng đĩa 4 Tốc độ máy giải ↪ Undo ↻ Chơi lại 🤖 Máy tự giải Thống kê ván chơi Nước đã đi 0 Thời gian 00:00 Tối thiểu cần 15 Kỷ lục của bạn - Lịch sử và Nguồn gốc Truyền thuyết Bài toán Tháp Hà Nội (hay Tháp Brahma) là một trò chơi xếp hình toán học kinh điển được giới thiệu lần đầu vào năm 1883 bởi nhà toán học người Pháp Édouard L...

Bài toán phân tích cảm xúc trong văn bản

Bài toán phân tích cảm xúc (sentiment analysis) là một bài toán NLP nhằm xác định thái độ hoặc cảm xúc được thể hiện trong văn bản. Ví dụ, từ một đánh giá như “Điện thoại đẹp, chạy nhanh nhưng pin hơi yếu”, hệ thống có thể nhận biết rằng người dùng có cả nhận xét tích cực và tiêu cực. Điểm thú vị của bài toán nằm ở khoảng cách giữa cách con người hiểu ngôn ngữ và cách máy tính xử lý dữ liệu. Một hệ thống phân tích cảm xúc cần biến văn bản tự nhiên thành dữ liệu có cấu trúc, học được các mẫu ngôn ngữ từ dữ liệu huấn luyện và đưa ra dự đoán hợp lý trên những câu chưa từng gặp. 1. Bài toán phân tích cảm xúc bắt đầu từ đâu? Hãy tưởng tượng một cửa hàng trực tuyến có hàng nghìn đánh giá mỗi ngày. Con người có thể đọc từng đánh giá để biết khách hàng hài lòng hay không, nhưng việc này nhanh chóng trở nên tốn thời gian khi dữ liệu tăng lên. NLP có thể biến bài toán đó thành một bài toán phân loại. Với mỗi văn bản, hệ thống nhận vào một chuỗi ký...

KAN cho phân đoạn khối u não với bộ BraTS 2020

Kolmogorov-Arnold Network (KAN) mở ra một hướng khác với MLP truyền thống: thay vì chỉ học các trọng số vô hướng trên mỗi kết nối, KAN có thể học những hàm phi tuyến một biến trên các cạnh . Khi đưa ý tưởng này vào kiến trúc encoder-decoder như U-Net, ta có thể sử dụng convolution để giữ cấu trúc không gian của ảnh MRI và dùng KAN để thực hiện các phép biến đổi phi tuyến mạnh hơn trên representation trung gian. Một bài toán phù hợp để nghiên cứu hướng này là phân đoạn u thần kinh đệm trên BraTS 2020 . Dataset cung cấp MRI đa mô thức và yêu cầu xác định các vùng Whole Tumor (WT), Tumor Core (TC) và Enhancing Tumor (ET). Đây là bài toán 3D có sự mất cân bằng voxel lớn, hình dạng khối u rất đa dạng và ranh giới giữa các mô bệnh lý không đơn giản. Lưu ý học thuật quan trọng: U-KAN gốc được công bố cho nhiều benchmark phân đoạn ảnh y tế nhưng không báo cáo kết quả BraTS 2020. Một công trình sau đó đã mở rộng U-KAN sang 3D MRI brain tumor segmentation , nhưng đánh giá trên BraTS 2...

Tách từ trong tiếng Việt Word Segmentation

Tách từ tiếng Việt là bài toán xác định ranh giới giữa các từ trong một chuỗi văn bản. Khó khăn nằm ở chỗ khoảng trắng trong tiếng Việt thường phân cách các âm tiết , nhưng một từ hoàn chỉnh có thể gồm nhiều âm tiết như “sinh viên” , “đại học” , “công nghệ” hay “tự nhiên” . Tách từ đúng giúp các hệ thống NLP dựa trên từ biểu diễn văn bản hợp lý hơn, đặc biệt trong tìm kiếm, TF-IDF, phân loại văn bản, gán nhãn từ loại và một số mô hình ngôn ngữ tiếng Việt. Tuy nhiên, với các Transformer sử dụng tokenizer dưới mức từ như subword hoặc SentencePiece, tách từ thủ công không phải lúc nào cũng là bước bắt buộc . Việc có cần tách từ trước hay không phụ thuộc vào mô hình và pipeline cụ thể. Tóm tắt nội dung Khoảng trắng trong tiếng Việt không phải lúc nào cũng là ranh giới từ ; nhiều từ gồm hai hoặc nhiều âm tiết. Word segmentation và tokenization có liên quan nhưng không hoàn toàn đồng nghĩa. Ba hướng chính gồm dựa trên từ điển, mô hình thống kê và mô hình học sâu . Tron...

KAN là gì? Mạng Kolmogorov-Arnold khác MLP thế nào?

Kolmogorov-Arnold Network (KAN) là một kiến trúc mạng nơ-ron trong đó mỗi cạnh không chỉ chứa một trọng số vô hướng mà mang một hàm một biến có thể học được . Đây là khác biệt cốt lõi so với Multi-Layer Perceptron (MLP), nơi các cạnh chủ yếu thực hiện phép nhân với trọng số còn hàm kích hoạt thường được áp dụng tại các node. KAN được lấy cảm hứng từ định lý biểu diễn Kolmogorov-Arnold và đặc biệt đáng chú ý trong các bài toán xấp xỉ hàm, mô hình hóa khoa học và symbolic regression. Tuy nhiên, KAN không nên được hiểu là kiến trúc đã thay thế MLP trong mọi bài toán Deep Learning; khả năng biểu diễn, chi phí tính toán và mức độ phù hợp của hai kiến trúc khác nhau theo từng nhiệm vụ. Tóm tắt nội dung MLP học chủ yếu trọng số trên các cạnh , còn KAN đặt hàm một biến học được trên từng cạnh . Một KAN layer cộng kết quả của nhiều hàm cạnh để tạo activation của node tiếp theo. KAN gốc sử dụng B-spline để tham số hóa các hàm phi tuyến trên cạnh. KAN có lợi thế đáng chú ý về trực...