Học sâu
Kiến trúc > Mạng niềm tin sâu (Deep belief network)

Một mạng niềm tin sâu (DBN) là một mô hình xác suất thể sinh, tạo thành bởi nhiều đơn vị ẩn nhiều lớp. Nó có thể được coi là một hàm hợp các mô-đun học đơn giản tạo thành mỗi lớp.
Một DBN có thể được sử dụng để huấn luyện trước khả sinh một DNN bằng cách sử dụng các trọng số DBN học như các trọng số DNN ban đầu. Các thuật toán truyền ngược hoặc suy xét khác sau đó có thể được áp dụng để điều chỉnh những trọng số này. Điều này đặc biệt hữu ích khi dữ liệu đào tạo giới hạn là có sẵn, vì các trọng số khởi tạo nghèo nàn có thể cản trở đáng kể hiệu suất của mô hình được học. Các trọng số đào tạo trước này là một vùng không gian trọng số là gần gũi hơn với trọng số tối ưu hơn là các trọng số ban đầu được chọn ngẫu nhiên. Điều này cho phép cả mô hình hóa được cải thiện và hội tụ tinh chỉnh pha nhanh hơn.
Một DBN có thể được huấn luyện một cách hiệu quả trong một cách thức không có giám sát, lớp kề lớp, nơi mà các lớp thường được tạo ra từ các máy Boltzmann hạn chế(RBM). Một RBM là một mô hình vô hướng, thể sinh dựa trên năng lượng với một lớp đầu vào "hiện" và một ẩn lớp, và các kết nối giữa các lớp nhưng không nằm trong các lớp. Phương pháp huấn luyện cho RBM được đề xuất bởi Geoffrey Hinton để sử dụng với các mô hình "Product of Expert" được gọi là tương phản phân kỳ (CD-contrastive divergence). CD cung cấp một xấp xỉ cho phương pháp với khả năng tối đa có vị trí lý tưởng sẽ được áp dụng cho việc học các trọng số của RBM. Trong việc huấn luyện một RBM đơn, các cập nhật trọng số được thực hiện với gradient ascent qua phương trình sau: \Delta w_{ij}(t+1)=w_{ij}(t)+\eta {\frac {\partial \log(p(v))}{\partial w_{ij}}}. Trong đó,  p(v) là xác suất của một vector hiện, được cho bởi  p(v)={\frac {1}{Z}}\sum _{h}e^{-E(v,h)}.  Z là hàm từng phần, (được sử dụng để chuẩn hóa) và  E(v,h) là hàm năng lượng được gán cho trạng thái của mạng. Một năng lượng thấp hơn chỉ thị mạng đó đang được cấu hình "đáng mong muốn" hơn. Gradient  {\frac {\partial \log(p(v))}{\partial w_{ij}}} có dạng đơn giản  \langle v_{i}h_{j}\rangle _{\text{data}}-\langle v_{i}h_{j}\rangle _{\text{model}} trong đó  \langle \cdots \rangle _{p} thể hiện các giá trị trung bình đối với phân phối  p. Vấn đề này nãy sinh trong việc lấy mẫu  \langle v_{i}h_{j}\rangle _{\text{model}} bởi vì điều này đòi hỏi phải chạy xen kẽ lấy mẫu Gibbs trong một thời gian dài. CD thay thế bwowcs này bằng cách chạy luân phiên lấy mẫu Gibbs cho  n bước (giá trị của  n=1 được lấy theo kinh nghiệm được chỉ ra là làm việc tốt). Sau  n bước, dữ liệu được lấy mẫu và mẫu này sẽ được sử dụng trong  \langle v_{i}h_{j}\rangle _{\text{model}}. Chu trình CD hoạt động như sau:
Khởi tạo các đơn vị hiện (visible) tới một vector huấn luyện.
Cập nhật các đơn vị ẩn song song với các đơn vị hiện:  p(h_{j}=1\mid {\textbf {V}})=\sigma (b_{j}+\sum _{i}v_{i}w_{ij}).  \sigma  là hàm sigmoid và  b_{j} là độ lệch của  h_{j}.
Cập nhật các đơn vị hiện song song với các đơn vị ẩn đã cho:  p(v_{i}=1\mid {\textbf {H}})=\sigma (a_{i}+\sum _{j}h_{j}w_{ij}).  a_{i} là độ lệch của  v_{i}. Điều này được gọi là bước "cải tạo".
Tái cập nhật các đơn vị ẩn song song với các đơn vị hiện cải tạo đã cho bằng cách sử dụng phương trình tương tự như trong bước 2.
Thực hiện cập nhật trọng số:  \Delta w_{ij}\propto \langle v_{i}h_{j}\rangle _{\text{data}}-\langle v_{i}h_{j}\rangle _{\text{reconstruction}}.
Khi một RBM được huấn luyện, RBM khác là "xếp chồng" trên nó, đưa đầu vào của nó từ cuối lớp đã được huấn luyện. Lớp hiện mới này được khởi tạo với một vector hiện, và các giá trị cho các đơn vị trong các lớp đã được huấn luyện phân công bằng cách sử dụng trọng số hiện tại và các độ lệch. RBM mới này sau đó lại được huấn luyện với chu trình như trên. Toàn bộ quá trình này được lặp lại cho đến khi một số tiêu chí mong muốn chặn lại được đáp ứng.
Mặc dù xấp xỉ của CD để tối đa khả năng là rất thô (CD đã được chỉ ra là theo gradient của bất kỳ hàm nào), nó đã được kinh nghiệm chỉ ra là có hiệu quả trong huấn luyện các kiến trúc sâu.