Quantcast
Channel: Probability – mlcvGru
Viewing all articles
Browse latest Browse all 30

RBM 2: Model definition and training of RBMs

$
0
0

Chuỗi bài viết về RBMs:
RBM 1: Hopfield nets and Boltzmann Machines
RBM 2: Model definition and training of RBMs
RBM 3: Contrastive Divergence
RBM 4: Contrastive Divergence in training RBMs and practical applications

Bài trước đã trình bày về Boltzmann Machines như một công cụ để mô hình hóa một joint distribution nào đó. Mặc dù tỏ ra rất có tiềm năng trên lí thuyết, nhưng việc huấn luyện Boltzmann Machines trên thực tế gặp nhiều khó khăn, chủ yếu bởi 2 lí do sau:

  1. Giống như các undirected graphical model khác, sự xuất hiện của partition function trong phân phối xác suất biểu diễn bởi Boltzmann Machines khiến cho việc phân tích mô hình này trở nên phức tạp. Việc tính chính xác partition function yêu cầu phải xem xét tất cả các configuration của các neuron, và ta biết số lượng configuration là exponential theo số neuron.
  2. Ngay cả việc lấy mẫu từ mô hình này cũng khá phức tạp. Trong thuật toán huấn luyện, ta phải lấy mẫu từ phân phối xác suất của mô hình (proposed distribution) và từ phân phối xác suất của tập huấn luyện (data distribution/target distribution). Vì các hidden units và visible units trong Boltzmann Machines có thể liên kết tự do với nhau, nên bất kì thao tác lấy mẫu nào cũng phải được thực hiện bằng phương pháp MCMC. Chẳng hạn muốn lấy mẫu từ data distribution, ta clamp 1 vector \textbf{v} thuộc tập huấn luyện vào các visible units của Boltzmann Machines, sau đó thực hiện các bước Gibbs sampling lần lượt cho từng hidden units cho đến khi hội tụ. Việc thực hiện Gibbs sampling cho lần lượt từng hidden units là vô cùng quan trọng, vì các hidden units có thể có các liên kết với nhau nên nếu sampling cho toàn bộ các hidden units trong 1 bước thì mô hình có thể oscillate và không bao giờ hội tụ. Mà MCMC thì nói chung là khó dùng trong thực tế.

Tóm lại khó khăn của việc huấn luyện Boltzmann Machines là ở partition function và bước lấy mẫu từ mô hình. Trong hai khó khăn này thì partition function không phải là quan trọng vì thông thường ta không cần phải tính chính xác partition function khi huấn luyện hay sử dụng mô hình này. Chính khó khăn trong việc lấy mẫu mới là quan trọng và là nguyên nhân chính khiến Boltzmann Machines không được sử dụng rộng rãi trong các ứng dụng thực tế. Mặc dù có một số cải tiến (Simulated Annealing…) nhưng nói chung Boltzmann Machines vẫn còn quá phức tạp.

Mặc dù vậy, bằng cách giới hạn các liên kết giữa các neuron trong Boltzmann Machines, ta có thể đơn giản hóa bước lấy mẫu, từ đó tận dụng được năng lực của Boltzmann Machines. Restricted Boltzmann Machines là một cách tiếp cận như thế.

1. RBM – model definition

Một RBM đơn giản với 3 hidden units và 2 visible units.

Hình 1: Một RBM đơn giản với 3 hidden units và 2 visible units.

Restricted Boltzmann Machines (RBMs) là Boltzmann Machines mà trong đó các hidden units không được kết nối với nhau, và các visible units cũng không được kết nối với nhau.

Nói cách khác, RBM là Boltzmann Machine mà các neuron tạo thành một đồ thị bipartite gồm visible và hidden units, như mình họa trong hình.

Với mô hình này, hàm năng lượng của RBM được viết thành:

-E\left(\textbf{v}, \textbf{h}\right) = \sum_{i \in vis} v_i b_i + \sum_{j \in hid} h_j b_j + \sum_{i, j} v_i h_j W_{ij}        (1)

Để ý rằng công thức này hoàn toàn tương tự như công thức (6) của Boltzmann Machines trong bài trước, nhưng đã bỏ đi các liên kết hidden-to-hidden và visible-to-visible. Phần còn lại hoàn toàn tương tự, phân phối joint distribution của RBM và phân phối marginal distribution của các visible units lần lượt được viết là:

\displaystyle p\left(\textbf{v}, \textbf{h}\right) = \frac{e^{-E\left(\textbf{v},\textbf{h}\right)}}{\sum_{\textbf{u}, \textbf{g}}e^{-E\left(\textbf{u},\textbf{g}\right)}}             (2)

\displaystyle p\left(\textbf{v}\right) = \sum_{\textbf{h}}p\left(\textbf{v}, \textbf{h}\right) = \frac{\sum_{\textbf{h}}e^{-E\left(\textbf{v},\textbf{h}\right)}}{\sum_{\textbf{u}, \textbf{g}}e^{-E\left(\textbf{u},\textbf{g}\right)}}      (3)

Các công thức này hoàn toàn tương tự như Boltzmann Machines. Tuy nhiên bằng cách hạn chế các connection, xác suất của 1 hidden unit nhận giá trị h_j = 1 được viết là:

\displaystyle p\left(h_j = 1\right) = \sigma\left(-\Delta E_j\right) = \frac{1}{1+\exp\left(-\left(b_j + \sum_{i\in vis}v_iW_{ij}\right)\right)}       (4)

Nghĩa là activation của hidden unit j chỉ phụ thuộc vào các visible unit. Hơn nữa, nếu biết trước giá trị của các visible units, thì các hidden unit đôi một độc lập với nhau (conditional independence). Tính chất này khiến việc lấy mẫu từ data distribution trong lúc huấn luyện RBM trở nên vô cùng đơn giản vì ta chỉ cần một bước lấy mẫu cho toàn bộ hidden units, thay vì phải sử dụng nhiều bước Gibbs sampling như trong Boltzmann Machines.

Như vậy bằng việc hạn chế các liên kết trong Boltzmann Machines, ta có thể lấy mẫu từ data distribution một cách dễ dàng hơn và từ đó có thể huấn luyện RBMs. Đương nhiên việc hạn chế các liên kết sẽ làm giảm đáng kể sức mạnh của RBMs, nhưng ta sẽ thấy cách để bù đắp phần thiếu hụt đó trong các bài sau.

2. Huấn luyện Boltzmann Machines và tại sao huấn luyện RBM là khả thi

Như đã nói trong bài trước, mục tiêu của Boltzmann Machines là mô hình hóa một joint distribution, và việc huấn luyện nó được thực hiện bằng Maximum Likelihood Estimation. Cụ thể hàm likelihood của một training vector v được viết như trong công thức (3), và đạo hàm của nó theo trọng số W_{ij} là:

{\displaystyle \frac{\partial\log\left(\textbf{v}\right)}{\partial W_{ij}}=\left\langle s_{i}s_{j}\right\rangle _{\textbf{v}}-\left\langle s_{i}s_{j}\right\rangle _{model}}        (5)

trong đó \left\langle \cdot \right\rangle là toán tử kì vọng, \left\langle s_i s_j\right\rangle_\textbf{v} là kì vọng của tích s_i s_j tại thermal equilibrium khi training vector v được clamp trên các visible units, và \left\langle s_i s_j\right\rangle_{model} là kì vọng của s_i s_j tại thermal equilibrium khi các visible units được thả tự do.

Như vậy công thức cập nhật trọng số cho Boltzmann Machines (sử dụng trong gradient descent) đơn giản là:

\Delta W_{ij} \propto \left\langle s_i s_j\right\rangle_{data} - \left\langle s_i s_j\right\rangle_{model}        (6)

Trong trường hợp RBMs thì chỉ có các liên kết hidden-to-visible, nên s_i s_j được viết lại thành v_i h_j. Các thành phần còn lại vẫn giữ nguyên.

Công thức đơn giản và rất đẹp này này sẽ được giải thích trong bài kế tiếp, khi ta bàn về thuật toán Contrastive Divergence. Tuy nhiên ý tưởng nôm na của nó khá đơn giản:

  • \left\langle s_i s_j\right\rangle_{data} thể hiện “niềm tin” về sự “tương đầu ý hợp” của unit i và unit j trong data distribution (cũng chính là target distribution mà ta muốn mô hình bằng Boltzmann Machines).
  • \left\langle s_i s_j\right\rangle_{model} thể hiện “niềm tin” về sự “tương đầu ý hợp” của unit i và unit j của mô hình Boltzmann Machine tại thời điểm hiện tại.
  • Vậy nên ý nghĩa của công thức (6) là khiến mô hình “bớt tin” vào những gì nó đang tin (thể hiện bằng dấu trừ), và “tin hơn” vào những gì thể hiện trong data distribution. Bằng cách này, Boltzmann Machine được học để mô hình hóa data distribution. Đây chính là việc mà ta muốn nó làm.

Như vậy vấn đề còn lại là làm thế nào để tính hai đại lượng \left\langle s_i s_j\right\rangle_{data} và \left\langle s_i s_j\right\rangle_{model}. Bảng sau đây mô tả cách tính trong Boltzmann Machines và RBM. Trong bảng này, Positive phase có nhiệm vụ tính \left\langle s_i s_j\right\rangle_{data} và Negative phase tính \left\langle s_i s_j\right\rangle_{model}.

Boltzmann Machines (paper) Restricted Boltzmann Machines (paper)
Positive phase:- Clamp data vector v vào các visible units, và set giá trị ngẫu nhiên cho các hidden units.- Gibbs sampling: Cập nhật trạng thái của các hidden units cho đến khi đạt thermal equilibrium.- Lấy mẫu \left\langle s_i s_j\right\rangle cho mỗi cặp units ij.

- Lặp lại cho mỗi training vector và average kết quả.

Positive phase:- Clamp data vector v vào các visible units, tính giá trị của các hidden unit theo công thức (4).- Tính chính xác \left\langle v_i h_j\right\rangle cho mỗi cặp visible unit i và hidden unit j.- Lặp lại cho mỗi vector trong training batch và average kết quả.
Negative phase:- Set giá trị ngẫu nhiên cho tất cả các hidden và visible units.- Gibbs sampling: Cập nhật trạng thái của các hidden units cho đến khi đạt thermal equilibrium.- Lấy mẫu \left\langle s_i s_j\right\rangle cho mỗi cặp units i và j.

- Lặp lại nhiều lần average kết quả để lấy estimate cho \left\langle s_i s_j\right\rangle_{model}.

(Ngoài ra, một phiên bản cải tiến cho Negative phase của Boltzmann Machine được đề xuất năm 2010)

Negative phase: sử dụng một tập các particle, mỗi particle là một cấu hình của RBM.- Cập nhật mỗi particle vài lần (vài bước Gibbs sampling). Lưu ý là có thể cập nhật các hidden units đồng thời (trong 1 bước) vì chúng độc lập với nhau, cho trước giá trị của các visible units.

- Tính trung bình \left\langle v_i h_j\right\rangle trong tập các particle.

Như vậy với việc loại bỏ các hidden-to-hidden và visible-to-visible connection, thuật toán huấn luyện RBMs đơn giản hơn nhiều trong positive phase vì không cần dùng Gibbs sampling nữa. Tuy nhiên Negative phase của RBMs vẫn phải dùng Gibbs sampling, và thuật toán Contrastive Divergence sẽ chính thức giải quyết nốt khó khăn này. Ta sẽ trở lại với thuật toán này trong bài sau.



Viewing all articles
Browse latest Browse all 30

Trending Articles