Máy Boltzmann hạn chế

Máy Boltzmann hạn chế (restricted Boltzmann machine, hoặc RBM) là một loại mô hình tạo sinh ngẫu nhiên của mạng thần kinh nhân tạo, nó có thể học các mẫu xác suất trên các dữ liệu đầu vào mà nó nhận được.

RBM ban đầu được Paul Smolensky giới thiệu với tên Harmonium vào năm 1986. Về sau, nó trở nên phổ biến khi Geoffrey Hinton và nhóm của ông phát triển cách học nhanh hơn cho RBM vào những năm 2000. RBM đã được sử dụng trong nhiều lĩnh vực khác nhau như giảm chiều dữ liệu, phân loại, lọc dữ liệu hợp tác, học đặc trưng, mô hình hóa chủ đề, nghiên cứu miễn dịch học, và thậm chí trong cơ học lượng tử.

RBM có thể được huấn luyện theo cả hai cách có giám sát hoặc không có giám sát, tùy thuộc vào loại nhiệm vụ cần thực hiện.

RBM là một dạng của máy Boltzmann, nhưng có một điểm khác biệt quan trọng: các nơ-ron trong RBM phải sắp xếp thành một mạng lưới hai phía. Điều này có nghĩa là:

- một cặp nút từ mỗi nhóm trong hai nhóm đơn vị (thường được gọi là các đơn vị "nhìn thấy" và "ẩn" tương ứng) có thể có kết nối đối xứng giữa chúng; và
- không có kết nối nào giữa các nút trong cùng một nhóm.

Ngược lại, máy Boltzmann không bị hạn chế có thể có các kết nối giữa các đơn vị ẩn. Điều này giúp việc đào tạo hiệu quả hơn bằng các thuật toán so với lớp máy Boltzmann thông thường, đặc biệt là thuật toán phân kỳ đối nghịch dựa trên suy giảm độ dốc.

Máy Boltzmann hạn chế cũng có thể được dùng trong các mạng học sâu. Cụ thể, mạng niềm tin sâu được tạo ra bằng cách "xếp chồng" các RBM, và có thể điều chỉnh lại mạng này bằng suy giảm độ dốc và truyền ngược.

==Cấu trúc==
Loại RBM chuẩn có các đơn vị ẩn và đơn vị nhìn thấy có giá trị nhị phân (Boolean), với một ma trận trọng số formula_1 kích thước formula_2. Mỗi trọng số formula_3 của ma trận kết nối đơn vị nhìn thấy (đầu vào) formula_4 và đơn vị ẩn formula_5. Ngoài ra, còn có các trọng số bù formula_6 cho formula_4 và formula_8 cho formula_5. Với các trọng số và bù, "năng lượng" của một cấu hình (cặp vector Boolean) được định nghĩa như sau:

hoặc, theo dạng ma trận:

Hàm năng lượng này tương tự với của mạng Hopfield. Cũng giống các máy Boltzmann khác, phân phối xác suất đồng thời cho các vector nhìn thấy và ẩn được định nghĩa dựa trên hàm năng lượng:

trong đó formula_13 là một hằng số chuẩn hóa đảm bảo tổng tất cả xác suất là 1. Xác suất biên của một vector nhìn thấy là tổng của formula_14 trên tất cả các cấu hình của lớp ẩn,

và ngược lại. Vì RBM có cấu trúc đồ thị hai phía (không có kết nối trong cùng một lớp), các đơn vị ẩn hoạt động độc lập khi đã biết các đơn vị nhìn thấy, và ngược lại. Điều này có nghĩa là, với "m" đơn vị nhìn thấy và "n" đơn vị ẩn, xác suất có điều kiện của các đơn vị nhìn thấy , khi biết cấu hình của các đơn vị ẩn , là:

Ngược lại, xác suất có điều kiện của khi biết là:

Xác suất kích hoạt của từng đơn vị được cho bởi:

trong đó formula_20 là hàm sigmoid logistic.

Các đơn vị nhìn thấy của Máy Boltzmann hạn chế có thể là đa thức, dù các đơn vị ẩn tuân theo phân phối Bernoulli. Khi đó, hàm logistic cho các đơn vị nhìn thấy được thay bằng hàm softmax:

trong đó "K" là số giá trị rời rạc mà các giá trị nhìn thấy có. Chúng được sử dụng trong mô hình chủ đề, và hệ thống gợi ý.

===Quan hệ với các mô hình khác===
Máy Boltzmann Hạn chế là một dạng đặc biệt của máy Boltzmann và các trường ngẫu nhiên Markov.

Mô hình đồ thị của RBM tương ứng với phân tích nhân tố.

==Thuật toán huấn luyện==
Máy Boltzmann hạn chế được huấn luyện để tối đa hóa các xác suất được gán cho một tập huấn luyện formula_22 (một ma trận mà mỗi hàng là một vector nhìn thấy formula_23),

hoặc tương đương, để tối đa hóa logarit kỳ vọng của một mẫu huấn luyện formula_23 được chọn ngẫu nhiên từ formula_22:

Thuật toán phổ biến nhất để huấn luyện RBM, tức là tối ưu hóa ma trận trọng số formula_1, là thuật toán phân kỳ đối nghịch (CD) do Hinton phát triển, ban đầu để huấn luyện các mô hình PoE (product of experts). 
Thuật toán này sử dụng kỹ thuật lấy mẫu Gibbs và nằm trong quy trình suy giảm độ dốc (tương tự như cách truyền ngược hoạt động khi huấn luyện mạng thần kinh tiến thẳng) để tính toán cập nhật trọng số.

Quy trình cơ bản của phân kỳ đối nghịch một bước (CD-1) cho một mẫu đơn lẻ có thể được tóm tắt như sau:

1. Lấy một mẫu huấn luyện , tính toán xác suất của các đơn vị ẩn và lấy mẫu một vector kích hoạt ẩn từ phân phối xác suất này.
2. Tính tích ngoài của và , gọi đó là "gradient dương".
3. Từ , lấy mẫu một bản dựng lại của các đơn vị nhìn thấy, sau đó lại lấy mẫu các kích hoạt ẩn từ đó. (Bước lấy mẫu Gibbs)
4. Tính tích ngoài của và và gọi đó là "gradient âm".
5. Cập nhật ma trận trọng số formula_1 bằng cách lấy gradient dương trừ đi gradient âm, nhân với một hệ số học: formula_30.
6. Cập nhật các trọng số bù và tương tự: formula_31, formula_32.

A Practical Guide to Training RBMs (Hướng dẫn Thực hành để Huấn luyện Máy Boltzmann Hạn chế) được viết bởi Hinton có thể được tìm thấy trên trang chủ của ông.

==Máy Boltzmann Hạn chế Xếp chồng==
- Sự khác biệt giữa Máy Boltzmann Hạn chế Xếp chồng (Stacked Restricted Boltzmann Machines) và RBM là ở chỗ, trong RBM, các kết nối ngang giữa các nút trong cùng một lớp không được phép, điều này giúp dễ phân tích hơn. Còn Máy Boltzmann Xếp chồng thì kết hợp một mạng ba lớp, trong đó có lớp học tự động (không giám sát) với trọng số đối xứng, và một lớp trên được huấn luyện có giám sát để giúp nhận dạng tốt hơn ba lớp.
- Máy Boltzmann Xếp chồng được dùng để hiểu ngôn ngữ tự nhiên, tìm kiếm tài liệu, tạo ra hình ảnh và phân loại dữ liệu. Những chức năng này được học qua quá trình học không giám sát (học mà không có sự can thiệp của con người) và/hoặc được tinh chỉnh bằng cách học có giám sát (học với hướng dẫn). Khác với mạng có trọng số đối xứng ở lớp trên, RBM có một lớp hai chiều kết nối không đối xứng. Máy Boltzmann Hạn chế có ba lớp với trọng số không đối xứng và kết hợp hai mạng thành một.
- Máy Boltzmann Xếp chồng có một số điểm tương đồng với RBM, như các neuron trong Máy Boltzmann Xếp chồng cũng là các neuron nhị phân giống như trong Máy Boltzmann Hạn chế. Cả Máy Boltzmann Hạn chế và RBM đều dựa trên một hàm gọi là hàm xác suất Gibbs: formula_33. Quá trình huấn luyện của Máy Boltzmann Hạn chế tương tự như RBM, huấn luyện từng lớp một và dùng một quy trình ba bước để ước lượng trạng thái cân bằng, không dùng cách lan truyền ngược. Máy Boltzmann Hạn chế có thể dùng cả phương pháp giám sát và không giám sát để huấn luyện các RBM khác nhau, nhằm phân loại và nhận dạng. Quá trình huấn luyện sử dụng phân kỳ đối nghịch kết hợp với lấy mẫu Gibbs: Δw = e*(p - p').
- Ưu điểm của Máy Boltzmann Hạn chế là nó có thể thực hiện biến đổi phi tuyến, dễ mở rộng và tạo ra các lớp đặc trưng theo tầng. Tuy nhiên, nhược điểm là nó tính toán phức tạp hơn khi sử dụng các neuron với giá trị là số nguyên hoặc số thực. Nó không tuân theo gradient của bất kỳ hàm nào, vì vậy cần ước lượng phân kỳ đối nghịch với xác suất cực đại để cải thiện.

== Xem thêm ==
- Bộ tự mã hóa

== Liên kết ngoài ==
- Python implementation của Bernoulli RBM và hướng dẫn
- SimpleRBM là một mã nguồn RBM nhỏ (24kB) hữu ích để học cách các RBM hoạt động và học hỏi.
- Triển khai Julia của máy Boltzmann hạn chế: https://github.com/cossio/RestrictedBoltzmannMachines.jl