Máy Boltzmann

Máy Boltzmann (còn gọi là mô hình Sherrington–Kirkpatrick với trường ngoài hoặc mô hình Ising ngẫu nhiên), được đặt tên theo Ludwig Boltzmann, là một mô hình "kính xoay" với trường ngoài, tức là mô hình Sherrington–Kirkpatrick, một dạng mô hình Ising ngẫu nhiên. Đây là một kỹ thuật từ cơ học thống kê được áp dụng trong khoa học nhận thức. Nó cũng được phân loại là một trường ngẫu nhiên Markov.

Máy Boltzmann có ý nghĩa lý thuyết đặc biệt vì cách hoạt động theo quy tắc Hebb, một quy tắc học tập mô phỏng sự liên kết giữa các tế bào thần kinh. Thuật toán huấn luyện của nó dựa trên cách các tế bào thần kinh kết nối với nhau. Ngoài ra, máy Boltzmann có thể hoạt động song song và có những điểm tương đồng với các quá trình vật lý đơn giản. Mặc dù máy Boltzmann với các kết nối không giới hạn chưa được chứng minh là có ích trong các bài toán thực tế của học máy hoặc suy luận, nếu các kết nối được giới hạn một cách hợp lý, nó có thể giúp giải quyết được các vấn đề thực tế.

Tên gọi "Máy Boltzmann" bắt nguồn từ phân phối Boltzmann trong cơ học thống kê, được sử dụng trong quá trình lấy mẫu của máy này. Máy Boltzmann trở nên nổi tiếng nhờ Geoffrey Hinton, Terry Sejnowski và Yann LeCun trong cộng đồng khoa học nhận thức, đặc biệt là trong học máy,

Cấu trúc

Máy Boltzmann, giống như mô hình Sherrington–Kirkpatrick, là một mạng lưới các đơn vị (giống như các tế bào thần kinh) được liên kết với nhau. Năng lượng tổng thể (Hamilton) của toàn mạng lưới được xác định theo một công thức. Kết quả của mỗi đơn vị là nhị phân, tức là nó có thể có hai trạng thái: "bật" hoặc "tắt" (0 hoặc 1). Các kết nối giữa các đơn vị được chọn ngẫu nhiên. Năng lượng toàn cục E trong máy Boltzmann được tính như sau, tương tự với cách tính trong mạng Hopfield và mô hình Ising:

:E = -\left(\sum_{i

Trong đó:
w_{ij} là sức mạnh của kết nối giữa đơn vị j và đơn vị i.
s_i là trạng thái, s_i \in \{0,1\}, của đơn vị i.
\theta_i là độ lệch của đơn vị i trong hàm năng lượng tổng thể. (-\theta_i là ngưỡng kích hoạt cho đơn vị đó.)

Thông thường, các giá trị trọng số w_{ij} được sắp xếp thành một ma trận đối xứng W=[w_{ij}] và các giá trị trên đường chéo của ma trận sẽ bằng 0.

Xác suất trạng thái của đơn vị

Khi một đơn vị i chuyển từ trạng thái 0 (tắt) sang trạng thái 1 (bật), sự thay đổi năng lượng của hệ thống, ký hiệu là \Delta E_i, có thể tính bằng công thức:

:\Delta E_i = \sum_{j>i} w_{ij} \, s_j + \sum_{j

Công thức này cho ta biết sự khác biệt giữa năng lượng khi đơn vị tắt và khi bật:

:\Delta E_i = E_\text{i=off} - E_\text{i=on}

Bây giờ, ta dùng tính chất Boltzmann để liên kết năng lượng của một trạng thái với xác suất của nó. Năng lượng càng thấp thì xác suất trạng thái đó xảy ra càng cao:

:\Delta E_i = -k_B\,T\ln(p_\text{i=off}) - (-k_B\,T\ln(p_\text{i=on}))

Ở đây, k_B là hằng số Boltzmann, và T là nhiệt độ giả định. Ta có thể đơn giản hóa:

:\frac{\Delta E_i}{T} = \ln(p_\text{i=on}) - \ln(p_\text{i=off})
:\frac{\Delta E_i}{T} = \ln(p_\text{i=on}) - \ln(1 - p_\text{i=on})
:\frac{\Delta E_i}{T} = \ln\left(\frac{p_\text{i=on}}{1 - p_\text{i=on}}\right)
:-\frac{\Delta E_i}{T} = \ln\left(\frac{1 - p_\text{i=on}}{p_\text{i=on}}\right)
:-\frac{\Delta E_i}{T} = \ln\left(\frac{1}{p_\text{i=on}} - 1\right)
:\exp\left(-\frac{\Delta E_i}{T}\right) = \frac{1}{p_\text{i=on}} - 1

Giải phương trình này, ta tìm được xác suất mà đơn vị i đang bật:

:p_\text{i=on} = \frac{1}{1+\exp(-\frac{\Delta E_i}{T})}

Ở đây, T gọi là nhiệt độ của hệ thống. Công thức trên chính là cách tạo ra hàm logistic dùng để tính xác suất trong máy Boltzmann.

Trạng thái cân bằng

Mạng hoạt động bằng cách chọn một đơn vị và thay đổi trạng thái của nó nhiều lần. Khi mạng đã chạy đủ lâu ở một nhiệt độ cố định, xác suất của mỗi trạng thái mạng chỉ phụ thuộc vào năng lượng của nó theo phân phối Boltzmann. Điều này có nghĩa là log của xác suất các trạng thái mạng sẽ tuyến tính với năng lượng của chúng. Khi mạng đạt đến "trạng thái cân bằng nhiệt", các xác suất này không còn phụ thuộc vào trạng thái ban đầu.

Nếu mạng chạy từ nhiệt độ cao và từ từ giảm xuống, nó có thể hội tụ về một trạng thái mà năng lượng của nó nằm gần mức tối thiểu. Quá trình này gọi là làm nguội mô phỏng (simulated annealing).

Để huấn luyện mạng, ta cần điều chỉnh các trọng số sao cho các trạng thái tổng thể có xác suất cao nhất cũng có năng lượng thấp nhất. Điều này được thực hiện qua quá trình huấn luyện.

Huấn luyện

Các đơn vị trong máy Boltzmann được chia thành "hiển thị" (visible), V, và "ẩn" (hidden), H. Các đơn vị hiển thị là những đơn vị nhận thông tin từ bên ngoài. Tập huấn luyện là tập hợp các vector nhị phân trên tập V. Phân phối xác suất trên tập huấn luyện được ký hiệu là P^{+}(V).

Phân phối trên các trạng thái tổng thể của mạng, khi mạng đã đạt trạng thái cân bằng, ký hiệu là P^{-}(V).

Mục tiêu là làm sao cho phân phối do máy sinh ra P^{-}(V) gần giống với phân phối "thực" P^{+}(V). Mức độ giống nhau này được đo bằng Phân kỳ Kullback–Leibler, ký hiệu là G:

:G = \sum_{v}{P^{+}(v)\ln\left({\frac{P^{+}(v)}{P^{-}(v)}}\right)}

Tổng này lấy trên tất cả các trạng thái của V. G phụ thuộc vào các trọng số vì chúng quyết định năng lượng, mà năng lượng lại quyết định P^{-}(v). Để tối ưu G, ta sử dụng thuật toán suy giảm độ dốc, điều chỉnh từng trọng số bằng cách trừ đi đạo hàm riêng của G theo trọng số đó.

Quá trình huấn luyện máy Boltzmann có hai giai đoạn luân phiên nhau. Giai đoạn đầu gọi là "giai đoạn dương" (positive phase), ở đó các đơn vị hiển thị được ghim vào các vector từ tập huấn luyện (theo P^{+}). Giai đoạn còn lại gọi là "giai đoạn âm" (negative phase), khi mạng được phép chạy tự do, nghĩa là chỉ có các đơn vị đầu vào bị cố định, còn các đơn vị khác thì tự do thay đổi. Đạo hàm riêng của G theo trọng số w_{ij} là:

Một ví dụ về ứng dụng thực tế của RBM là trong nhận dạng giọng nói.

Máy Boltzmann sâu
Máy Boltzmann sâu (DBM) là một loại trường ngẫu nhiên Markov cặp nhị phân (đồ thị phi hướng xác suất dạng đồ thị) với nhiều lớp ẩn ngẫu nhiên. Đây là một mạng lưới các đơn vị nhị phân đối xứng liên kết ngẫu nhiên. Nó bao gồm một tập hợp các đơn vị hiển thị \boldsymbol{\nu} \in \{0,1\}^D và các lớp đơn vị ẩn \boldsymbol{h}^{(1)} \in \{0,1\}^{F_1}, \boldsymbol{h}^{(2)} \in \{0,1\}^{F_2}, \ldots, \boldsymbol{h}^{(L)} \in \{0,1\}^{F_L}. Không có kết nối nào liên kết các đơn vị của cùng một lớp (giống như RBM). Đối với , xác suất được gán cho vector là
: p(\boldsymbol{\nu}) = \frac{1}{Z}\sum_h e^{\sum_{ij}W_{ij}^{(1)}\nu_i h_j^{(1)} + \sum_{jl}W_{jl}^{(2)}h_j^{(1)}h_l^{(2)}+\sum_{lm}W_{lm}^{(3)}h_l^{(2)}h_m^{(3)}},
trong đó \boldsymbol{h} = \{\boldsymbol{h}^{(1)}, \boldsymbol{h}^{(2)}, \boldsymbol{h}^{(3)} \} là tập hợp các đơn vị ẩn, và \theta = \{\boldsymbol{W}^{(1)}, \boldsymbol{W}^{(2)}, \boldsymbol{W}^{(3)} \} là các tham số của mô hình, đại diện cho tương tác giữa các đơn vị hiển thị và ẩn, cũng như tương tác giữa các đơn vị ẩn với nhau. Trong một DBN (deep belief network) chỉ có hai lớp trên cùng tạo thành một máy Boltzmann hạn chế (là một mô hình đồ thị dạng đồ thị phi hướng), trong khi các lớp dưới tạo thành một mô hình tạo sinh theo hướng. Trong DBM, tất cả các lớp đều đối xứng và phi hướng.

Giống như các mạng niềm tin sâu (DBNs), máy Boltzmann sâu (DBMs) có thể học các biểu diễn phức tạp và trừu tượng từ dữ liệu, giúp ích cho các nhiệm vụ như nhận dạng giọng nói. DBMs sử dụng dữ liệu nhãn ít để tinh chỉnh kết quả từ một lượng lớn dữ liệu không nhãn. Khác với DBNs và mạng thần kinh tích chập sâu, DBMs học theo cả hai hướng: từ dưới lên và từ trên xuống. Điều này giúp DBMs hiểu rõ hơn về cấu trúc của dữ liệu đầu vào.

Tuy nhiên, DBMs có tốc độ học rất chậm, ảnh hưởng đến hiệu quả và khả năng của chúng. Vì việc học tối ưu chính xác là không thể, DBMs chỉ có thể sử dụng phương pháp học xấp xỉ. Một cách khác là dùng suy luận trường trung bình để dự đoán dữ liệu, bằng cách dùng Markov chain Monte Carlo (MCMC). Giống như các RBMs cơ bản, ssRBM cũng là một đồ thị hai phía, nhưng các đơn vị đầu vào (hiển thị) có giá trị thực. Sự khác biệt nằm ở lớp ẩn: mỗi đơn vị ẩn có một biến spike nhị phân và một biến slab giá trị thực. Một spike là một khối xác suất rời rạc ở 0, trong khi slab là một mật độ trên miền liên tục; hỗn hợp của chúng tạo ra một phân phối tiên nghiệm.

Một phiên bản mở rộng của ssRBM được gọi là μ-ssRBM, cung cấp khả năng mô hình hóa mạnh hơn nhờ thêm các thành phần vào hàm năng lượng. Một trong các thành phần này cho phép mô hình dự đoán biến spike bằng cách tính trung bình các biến slab dựa trên một quan sát.

Trong toán học

Trong toán học, phân phối Boltzmann còn được gọi là Phân bố Gibbs. Trong Thống kê và Học máy, nó được gọi là mô hình log-tuyến tính. Trong Học sâu, phân phối Boltzmann được sử dụng để lấy mẫu trong các mạng nơ-ron ngẫu nhiên như máy Boltzmann.

Lịch sử
Máy Boltzmann dựa trên mô hình "spin glass" Sherrington–Kirkpatrick. John Hopfield là người tiên phong khi ông đã áp dụng các phương pháp từ cơ học thống kê, như lý thuyết "spin glass" (kính xoay), để nghiên cứu bộ nhớ liên kết vào năm 1982.

Những đóng góp ban đầu về việc ứng dụng mô hình dựa trên năng lượng vào khoa học nhận thức được thể hiện trong các bài báo của Hinton và Sejnowski. Trong một cuộc phỏng vấn năm 1995, Hinton cho biết vào đầu năm 1983, ông đã thiết kế một thuật toán học để phục vụ cho buổi thuyết trình về "làm nguội mô phỏng" trong mạng Hopfield, và kết quả là sự ra đời của thuật toán máy Boltzmann.

Ý tưởng dùng mô hình Ising với phương pháp lấy mẫu Gibbs "làm nguội" đã được sử dụng trong dự án Copycat của Douglas Hofstadter vào năm 1984.

Cách trình bày của máy Boltzmann liên quan đến các thuật ngữ từ vật lý như "năng lượng", do mô hình này có sự tương đồng với cơ học thống kê. Việc dùng các thuật ngữ này đã giúp áp dụng nhiều khái niệm và phương pháp từ cơ học thống kê. Các đề xuất sử dụng phương pháp làm nguội mô phỏng để suy luận có vẻ đã xuất hiện độc lập ở nhiều nơi.

Những ý tưởng tương tự, nhưng thay đổi một chút trong hàm năng lượng, cũng được tìm thấy trong "Lý thuyết hòa hợp" (Harmony Theory) của Paul Smolensky. Mô hình Ising có thể được mở rộng thành trường ngẫu nhiên Markov, và được áp dụng rộng rãi trong Ngôn ngữ học, Robot học, Thị giác máy tính và Trí tuệ nhân tạo.

Năm 2024, John J. Hopfield và Geoffrey E. Hinton đã nhận Giải Nobel Vật lý nhờ những đóng góp nền tảng của họ cho Học máy, bao gồm cả máy Boltzmann.

Tham khảo

Đọc thêm



Kothari P (2020): https://www.forbes.com/sites/tomtaulli/2020/02/02/coronavirus-can-ai-artificial-intelligence-make-a-difference/?sh=1eca51e55817


Liên kết ngoài
Bài viết Scholarpedia của Hinton về máy Boltzmann
Bài nói chuyện tại Google của Geoffrey Hinton