Self-Organizing Map

Self-Organizing Map (SOM) do Teuvo Kohonen công bố năm 1982 là unsupervised neural network ánh xạ dữ liệu high-dimensional xuống một lưới neuron 2D (rectangular hoặc hexagonal), giữ tính chất topology preservation: các vector input gần nhau trong input space sẽ kích hoạt các neuron gần nhau trên lưới. Nhờ đặc tính này SOM được dùng cho visualization, clustering và là nền tảng cho Supervised SOM trong các bài toán phân loại có cấu trúc không gian.

Quy tắc cập nhật và neighborhood function

Mỗi neuron i có một weight vector w_i cùng số chiều với input. Với mỗi input x, tìm best matching unit (BMU) c = argmin ||x − w_c|| rồi cập nhật trọng số mọi neuron theo w_i(t+1) = w_i(t) + α(t) · h_{ci}(t) · (x − w_i). Tham số α(t) là learning rate giảm dần, và h_{ci}(t)neighborhood function quyết định mức độ neuron i được “kéo theo” BMU c.

Hai dạng neighborhood phổ biến đã có sẵn trong lvq_network.py:

Bán kính σ(t) cũng giảm dần theo iteration (annealing), kết hợp với giảm dần learning rate để mạng hội tụ về cấu trúc topology ổn định.

Khác biệt với clustering thông thường

Các thuật toán clustering như k-means tìm centroid tối ưu cục bộ độc lập, không có quan hệ vị trí giữa các centroid. SOM ép các neuron lân cận trên lưới cùng học giống nhau, kết quả là biểu diễn output có cấu trúc liên tục: hai vùng dữ liệu lân cận sinh ra hai vùng neuron lân cận. Đây là tính chất topology preservation, giúp SOM dùng được để visualize không gian high-dimensional thành bản đồ 2D đọc được.

Khởi tạo trọng số

Hai chiến lược khởi tạo phổ biến cài trong lvq_network.py:

Conscience để cân bằng số lần thắng

Giống LVQ, SOM thường có bias function (conscience) ngăn vài neuron thắng quá nhiều và bỏ học các neuron còn lại. Cài đặt mặc định ở ssom_util.py giảm bias mọi neuron 10% và tăng riêng bias neuron thắng để hạ “lợi thế” của nó ở vòng sau.

Cập nhật: 2026-05-29