Chương 19

- 59 mins

Chương 19: Suy diễn thống kê xấp xỉ

Huấn luyện là một thách thức đối với nhiều mô hình xác suất bởi sự khó khăn khi thực hiện suy diễn. Với các mô hình học sâu, chúng thường có một tập biến khả kiến $\boldsymbol{v}$ và một tập biến tiềm ẩn $\boldsymbol{h}$. Thách thức trong bước suy diễn đến từ việc tính toán $p$($\boldsymbol{h}$|$\boldsymbol{v}$) hoặc lấy kỳ vọng theo nó. Đó là những phép toán ta thường cần đến khi giải quyết các tác vụ như học dựa trên hợp lý cực đại.

Có nhiều mô hình đồ thị đơn giản chỉ có một tầng ẩn, chẳng hạn như máy Boltzmann hạn hẹp và PCA xác suất (probabilistic PCA), được định nghĩa để đơn giản hóa các phép toán phục vụ việc suy diễn như tính $p$($\boldsymbol{h}$|$\boldsymbol{v}$) hoặc lấy kỳ vọng theo nó. Tuy vậy, phần lớn mô hình đồ thị nhiều tầng ẩn đều có phân phối hậu nghiệm khó tính toán, đòi hỏi một lượng thời gian tính theo hàm mũ để thực hiện suy diễn chính xác. Thậm chí, ngay cả những mô hình chỉ với một tầng, ví dụ như mã hóa thưa (sparse coding), cũng gặp phải vấn đề này.

Trong chương này, chúng tôi giới thiệu một số kỹ thuật để đối phó với vấn đề suy diễn khó tính toán nói trên. Trong chương 20, chúng tôi sẽ mô tả cách sử dụng chúng để huấn luyện các mô hình xác suất gặp vấn đề khó tính toán, chẳng hạn như DBN (deep belief network) và máy Boltzmann đa tầng (deep Boltzmann machine).

Vấn đề khó (về mặt tính toán) suy diễn trong học sâu thường phát sinh từ sự tương tác giữa các biến tiềm ẩn trong một mô hình đồ thị có cấu trúc. Đó có thể là tương tác trực tiếp trong mô hình vô hướng, hoặc tương tác “explaining away” giữa các nút cha của cùng một đơn vị khả kiến trong mô hình có hướng. Một vài ví dụ sẽ được mô tả trong hình $19.1$.

Hình 19.1: Vấn đề suy diễn khó tính toán trong học sâu thường là kết quả của tương tác giữa các biến tiềm ẩn trong mô hình đồ thị có cấu trúc. Những tương tác này có thể đến từ cạnh kết nối trực tiếp hai biến tiềm ẩn với nhau, hoặc đến từ các đường đi dài hơn được kích hoạt khi nút con trong cấu trúc chữ V được quan sát. (Hình trái) Một máy Boltzmann bán hạn hẹp (semi-restricted Boltzmann machine; Osindero và Hinton, 2008) với kết nối giữa các đơn vị ẩn. Những kết nối trực tiếp giữa các biến tiềm ẩn khiến phân phối hậu nghiệm trở nên khó tính toán do sự xuất hiện của các bè lớn của các biến tiềm ẩn. (Hình giữa) Một máy Boltzmann đa tầng, được tổ chức thành các tầng nhưng không có kết nối nội tầng, vẫn có phân phối hậu nghiệm khó tính toán do sự kết nối giữa các tầng với nhau. (Hình phải) Các biến tiềm ẩn của mô hình có hướng tương tác với nhau khi các biến khả kiến được quan sát, do mỗi một cặp biến tiềm ẩn đều cùng là nút cha của một biến khả kiến nào đó. Một số mô hình xác suất vẫn có thể có quá trình suy diễn dễ tính toán theo các biến tiềm ẩn mặc dù sở hữu cấu trúc đồ thị thuộc một trong những dạng trên, nếu như các phân phối xác suất có điều kiện được lựa chọn để bổ sung các quan hệ độc lập khác ngoài những gì được thể hiện trong đồ thị. Ví dụ, PCA xác suất có cấu trúc đồ thị như hình bên phải, nhưng vẫn có bước suy diễn đơn giản do thuộc tính đặc biệt của các phân phối có điều kiện đặc thù mà nó sử dụng (phân phối có điều kiện Gauss-tuyến tính với hệ cơ sở trực giao).

19.1 Suy diễn bằng tối ưu hóa

Rất nhiều hướng tiếp cận nhằm đối mặt với vấn đề suy diễn khó tính toán được phát triển dựa trên nhận định rằng: suy diễn chính xác có thể được mô tả dưới dạng một bài toán tối ưu. Do đó, suy diễn xấp xỉ cũng có thể được suy ra bằng cách xấp xỉ bài toán tối ưu tương ứng.

Để xây dựng bài toán tối ưu, giả sử ta có một mô hình xác suất bao gồm biến khả kiến $\boldsymbol{v}$ và biến tiềm ẩn $\boldsymbol{h}$. Chúng ta sẽ muốn tính toán logarit xác suất của dữ liệu khả kiến $\log\,p(\boldsymbol{v};\boldsymbol{\theta})$. Tuy nhiên, việc tính $\log\ p(\boldsymbol{v};\boldsymbol{\theta})$ là rất khó khăn nếu phép lấy biên đối với $\boldsymbol{h}$ quá tốn kém. Thay vào đó, ta có thể tính toán một cận dưới $\mathcal{L} (\boldsymbol{v}, \boldsymbol{\theta}, q)$ của $\log\,p(\boldsymbol{v}; \boldsymbol{\theta})$, được gọi là cận dưới thực nghiệm (evidence lower bound; ELBO), hay giá trị đối của năng lượng tự do biến phân (negative variational free energy). Cụ thể, cận dưới thực nghiệm được xác định như sau

\[\begin{align} \mathcal{L} (\boldsymbol{v}, \boldsymbol{\theta},q)=\log\,p(\boldsymbol{v};\boldsymbol{\theta})-D_{KL}(q(\boldsymbol{h}|\boldsymbol{v})||p(\boldsymbol{h}|\boldsymbol{v} ;\boldsymbol{\theta})),\tag{19.1} \end{align}\]

trong đó $q$ là một phân phối xác suất tùy ý của $\boldsymbol{h}$.

Sự chênh lệch giữa $\log\,p(\boldsymbol{v})$ và $\mathcal{L} (\boldsymbol{v}, \boldsymbol{\theta}, q)$ được xác định bởi độ phân kỳ KL, và bởi đại lượng này luôn không âm, nên $\mathcal{L}$ luôn có giá trị nhỏ hơn hoặc bằng logarit xác suất của dữ liệu. Hai giá trị này bằng nhau khi và chỉ khi phân phối $q$ và phân phối $p(\boldsymbol{h}|\boldsymbol{v})$ tương đồng.

Một điều đáng ngạc nhiên là $\mathcal{L}$ có thể được tính toán dễ dàng hơn đáng kể đối với một số phân phối $q$. Bằng biến đổi đại số đơn giản, ta có thể viết lại $\mathcal{L}$ dưới dạng thuận tiện hơn nhiều:

\[\begin{align} \mathcal{L} (\boldsymbol{v}, \boldsymbol{\theta}, q) = \log\, p(\boldsymbol{v}; \boldsymbol{\theta}) - D_{KL} (q(\boldsymbol{h}|\boldsymbol{v}) || p (\boldsymbol{h}|\boldsymbol{v} ; \boldsymbol{\theta})) \tag{19.2} \end{align}\] \[\begin{align} \qquad = \log\,p(\boldsymbol{v};\boldsymbol{\theta}) - \mathbb{E}_{\boldsymbol{h}\sim q} \log\frac{q(\boldsymbol{h}|\boldsymbol{v})}{p(\boldsymbol{h}|\boldsymbol{v})} \tag{19.3} \end{align}\] \[\begin{align} \qquad = \log \space p(\boldsymbol{v}; \boldsymbol{\theta}) - \mathbb{E}_{\boldsymbol{h}\sim q} \log\frac{q(\boldsymbol{h}|\boldsymbol{v})}{\frac{p (\boldsymbol{h},\boldsymbol{v} ; \boldsymbol{\theta})}{p (\boldsymbol{v} ; \boldsymbol{\theta})}} \tag{19.4} \end{align}\] \[\begin{align} \qquad = \log \space p(\boldsymbol{v}; \boldsymbol{\theta}) - \mathbb{E}_{\boldsymbol{h}\sim q}[\log \space q (\boldsymbol{h}|\boldsymbol{v}) - \log \space p (\boldsymbol{h},\boldsymbol{v}; \boldsymbol{\theta}) + \log \space p(\boldsymbol{v};\boldsymbol{\theta}) ] \tag{19.5} \end{align}\] \[\begin{align} \qquad = - \mathbb{E}_{\boldsymbol{h}\sim q}[\log \space q (\boldsymbol{h}|\boldsymbol{v}) - \log \space p (\boldsymbol{h},\boldsymbol{v}; \boldsymbol{\theta}) ]. \tag{19.6} \end{align}\]

Ta thu được một dạng chính tắc của cận dưới thực nghiệm,

\[\begin{align} \mathcal{L} (\boldsymbol{v}, \boldsymbol{\theta}, q) = \mathbb{E}_{\boldsymbol{h}\sim q}[\log \space p (\boldsymbol{h},\boldsymbol{v})] + H(q) \tag{19.7}. \end{align}\]

Khi $q$ được lựa chọn phù hợp, ta có thể dễ dàng tính toán $\mathcal{L}$. Với bất kỳ sự lựa chọn nào của $q$, $\mathcal{L}$ đều là một cận dưới của \gls{do-hop-ly}. Phân phối $q (\boldsymbol{h}|\boldsymbol{v})$ càng xấp xỉ $p (\boldsymbol{h}|\boldsymbol{v})$ tốt, cận dưới $\mathcal{L}$ sẽ càng chặt, hay nói cách khác là gần hơn với $\log \space p (\boldsymbol{v})$. Khi $q (\boldsymbol{h}|\boldsymbol{v})$ = $p (\boldsymbol{h}|\boldsymbol{v})$, xấp xỉ sẽ hoàn hảo, và $\mathcal{L} (\boldsymbol{v}, \boldsymbol{\theta}, q)=\log \space p (\boldsymbol{v}; \boldsymbol{\theta})$

Như vậy, bước suy diễn có thể được hiểu như một quá trình tìm kiếm $q$ để cực đại hóa $\mathcal{L}$. Phép suy diễn chính xác sẽ cực đại hóa $\mathcal{L}$ một cách hoàn hảo bằng cách tìm kiếm trong một họ hàm $q$ có chứa $p (\boldsymbol{h}|\boldsymbol{v})$. Xuyên suốt chương này, chúng tôi sẽ trình bày cách để thu được nhiều dạng suy diễn xấp xỉ khác nhau bằng cách sử dụng tối ưu xấp xỉ để tìm $q$. Thủ tục tối ưu có thể trở nên ít tốn kém hơn nhưng vẫn thu được kết quả gần đúng nếu ta giới hạn họ phân phối của $q$ mà quá trình tối ưu được phép tìm kiếm, hoặc sử dụng một thủ tục tối ưu không hoàn hảo không hoàn toàn cực đại hóa $\mathcal{L}$ nhưng có thể làm nó tăng lên đáng kể.

Hãy nhớ rằng dù $q$ được lựa chọn như thế nào, $\mathcal{L}$ vẫn là một cận dưới. Chúng ta có thể thu được cận dưới chặt chẽ hơn hoặc lỏng lẻo hơn, với chi phí tính toán cao hơn hoặc thấp hơn, phụ thuộc vào hướng tiếp cận bài toán tối ưu mà ta chọn. Ta có thể thu được một phân phối $q$ có khả năng xấp xỉ tồi nhưng giảm được chi phí tính toán bằng một thủ tục tối ưu không hoàn hảo, hoặc bằng một thủ tục tối ưu hoàn hảo trên một họ phân phối bị giới hạn của $q$.

19.2 Cực đại hóa kỳ vọng

Trong phần này, chúng tôi giới thiệu thuật toán đầu tiên dựa trên nguyên lý cực đại hóa một cận dưới $\mathcal{L}$, đó là cực đại hóa kỳ vọng (expectation maximization; EM), một thuật toán huấn luyện thường dùng cho mô hình biến tiềm ẩn. Chúng tôi sẽ phác họa một cái nhìn tổng quan về thuật toán EM được phát triển bởi Neal và Hinton (1999). Khác với hầu hết thuật toán được mô tả trong chương này, EM không phải là một phương pháp để suy diễn xấp xỉ, mà là một phương pháp để học với một phân phối hậu nghiệm xấp xỉ.

Thuật toán EM luân phiên thực hiện hai bước sau cho đến khi đạt tiêu chuẩn hội tụ:

$\qquad$ $\bullet$ Bước E (bước kỳ vọng): Đặt $\boldsymbol{\theta}^{(0)}$ là giá trị của tham số tại thời điểm bắt đầu. Thiết lập $q(\boldsymbol{h}^{(i)}|\boldsymbol{v})$ = $p (\boldsymbol{h}^{(i)}|\boldsymbol{v}^{(i)}; \boldsymbol{\theta}^{(0)})$ cho toàn bộ chỉ số $i$ của các mẫu $\boldsymbol{v}^i$ mà ta muốn sử dụng để huấn luyện (sử dụng toàn bộ dữ liệu hoặc \gls{lo-nho} đều hợp lệ). Như vậy, $q$ được xác định theo giá trị của tham số hiện tại $\boldsymbol{\theta}^{(0)}$; nếu $\boldsymbol{\theta}$ thay đổi thì $p (\boldsymbol{h},\boldsymbol{v}|\boldsymbol{\theta})$ sẽ thay đổi, nhưng $q(\boldsymbol{h}|\boldsymbol{v})$ vẫn bằng $p (\boldsymbol{h}|\boldsymbol{v}; \boldsymbol{\theta}^{(0)}).$

$\qquad$ $\bullet$ Bước M (bước cực đại hóa): Cực đại hóa hoàn toàn hoặc một phần

\[\begin{align} \sum\limits_i \space \mathcal{L} (\boldsymbol{v}^{(i)} ,\boldsymbol{\theta}, q) \tag{19.8} \end{align}\]

theo $\boldsymbol{\theta}$, bằng thuật toán tối ưu mà ta lựa chọn.

Có thể thấy quy trình này giống như một thuật toán leo theo tọa độ (coordinate ascent) để cực đại hóa $\mathcal{L}$. Ở bước E, $\mathcal{L}$ được cực đại hóa theo $q$, và ở bước M, $\mathcal{L}$ được cực đại hóa theo $\boldsymbol{\theta}$.

Thuật toán leo gradient ngẫu nhiên (stochastic gradient ascent) đối với mô hình biến tiềm ẩn có thể được xem như một trường hợp đặc biệt của EM trong đó bước M thực hiện một bước cập nhật theo gradient. Các biến thể khác của EM có thể thực hiện những bước cập nhật lớn hơn nhiều. Đối với một số họ mô hình, bước M thậm chí có thể được thực hiện bằng giải tích (nghiệm có dạng đóng), nhảy trực tiếp đến cấu hình tối ưu cho $\boldsymbol{\theta}$ khi biết $q$ ở bước hiện tại.

Mặc dù bước E bao gồm phép suy diễn chính xác, nhưng ta có thể coi, theo một khía cạnh nào đó, thuật toán EM sử dụng suy diễn xấp xỉ. Cụ thể hơn, bước M giả định rằng cùng một giá trị của $q$ có thể được dùng cho toàn bộ giá trị của $\boldsymbol{\theta}$. Điều này sẽ tạo ra khoảng cách giữa $\mathcal{L}$ và giá trị thực của $\log p(\boldsymbol{v})$ khi bước M dịch chuyển $\boldsymbol{\theta}$ xa dần khỏi $\boldsymbol{\theta}^{(0)}$ sử dụng trong bước E. May mắn thay, bước E sẽ xóa bỏ khoảng cách này trước khi bắt đầu vòng lặp tiếp theo.

Thuật toán EM hàm chứa một vài ý tưởng khác. Đầu tiên, có một cấu trúc cơ bản của quá trình học trong đó tham số của mô hình được cập nhật để cải thiện \gls{do-hop-ly} của một tập dữ liệu hoàn chỉnh, với giá trị của toàn bộ biến khuyết được cung cấp bởi một ước lượng của phân phối hậu nghiệm. Dù vậy, EM không phải là thuật toán duy nhất sử dụng ý tưởng này. Ví dụ, thuật toán cực đại hóa \gls{do-hop-ly-thang-log} dựa trên gradient cũng sở hữu tính chất tương tự; việc tính toán gradient của \gls{do-hop-ly-thang-log} yêu cầu phép lấy kỳ vọng theo phân phối hậu nghiệm của các đơn vị ẩn. Một ý tưởng quan trọng khác trong thuật toán EM là chúng ta có thể tiếp tục sử dụng một giá trị của $q$ ngay cả sau khi đã chuyển sang một giá trị khác của $\boldsymbol{\theta}$. Ý tưởng này được sử dụng xuyên suốt trong học máy cổ điển để thu được các cập nhật lớn tại bước M. Đối với học sâu, phần lớn mô hình đều là quá phức tạp để có lời giải dễ tính toán cho một bước cập nhật tối ưu tại bước M. Do đó, ý tưởng thứ hai này là một đặc trưng của thuật toán EM và hiếm khi được sử dụng cùng với học sâu.

19.3 Suy diễn MAP và mã hóa thưa

Thuật ngữ suy diễn thống kê thường được sử dụng để đề cập đến việc tính toán phân phối xác suất của một tập biến khi biết một tập biến khác. Khi huấn luyện mô hình xác suất với biến tiềm ẩn, ta thường quan tâm đến việc tính $p(\boldsymbol{h}|\boldsymbol{v})$. Một dạng thức khác của suy diễn là chỉ tính toán một giá trị có khả năng xảy ra cao nhất của biến khuyết thay vì suy diễn ra toàn bộ phân phối của các giá trị có thể. Điều này có nghĩa là trong mô hình biến tiềm ẩn, ta cần tính

\[\begin{align} \boldsymbol{h}^{*} = \underset{\boldsymbol{h}}{\text{arg max}} \space p(\boldsymbol{h}\space|\space\boldsymbol{v}). \tag{19.9} \end{align}\]

Thủ tục này được gọi là suy diễn hậu nghiệm cực đại (maximum a posteriori), viết tắt là suy diễn MAP.

Suy diễn MAP thường không được xem là suy diễn xấp xỉ - nó tính chính xác giá trị có khả năng xảy ra cao nhất của $\boldsymbol{h}^{*}$. Tuy nhiên, nếu muốn phát triển một quá trình học dựa trên cực đại hóa $\mathcal{L}(\boldsymbol{v}, \boldsymbol{h}, q)$, ta có thể coi suy diễn MAP như một thủ tục để thu được một giá trị của $q$. Theo góc nhìn này, có thể xem suy diễn MAP như một phép suy diễn xấp xỉ bởi nó không cung cấp $q$ tối ưu.

Nhớ lại công thức $19.1$, ta thấy suy diễn chính xác bao gồm phép cực đại hóa

\[\begin{align} \mathcal{L}(\boldsymbol{v}, \boldsymbol{\theta}, q) = \mathbb{E}_{\mathbf{h} \sim q}[\log p(\boldsymbol{h}, \boldsymbol{v})] + H(q) \tag{19.10} \end{align}\]

theo $q$ trên một họ phân phối xác suất không giới hạn, bằng một thuật toán tối ưu chính xác. Suy diễn MAP có thể được biến đổi thành một dạng suy diễn xấp xỉ bằng cách ràng buộc họ phân phối của $q$. Cụ thể, ta quy định rằng $q$ có dạng một phân phối Dirac:

\[\begin{align} q(\boldsymbol{h\space |\space v}) = \delta(\boldsymbol{h} - \boldsymbol{\mu}).\tag{19.11} \end{align}\]

Bằng cách này, $q$ được kiểm soát hoàn toàn bởi $\boldsymbol{\mu}$. Lược bỏ những số hạng của $\mathcal{L}$ không phụ thuộc vào $\boldsymbol{\mu}$, bài toán tối ưu trở thành

\[\begin{align} \boldsymbol{\mu}^{*} = \underset{\boldsymbol{\mu}}{\arg \max} \log p(\boldsymbol{h\space = \boldsymbol{\mu}, \space v}), \tag{19.12} \end{align}\]

hay tương đương với bài toán suy diễn MAP

\[\begin{align} \boldsymbol{h}^{*} = \underset{\boldsymbol{h}}{\arg\max} \space p(\boldsymbol{h\space |\space v}). \tag{19.13} \end{align}\]

Từ đó, có thể chứng minh rằng đây là một thủ tục học tương tự với thuật toán EM, trong đó ta luân phiên thực hiện suy diễn MAP để suy ra $\boldsymbol{h}^{*}$ và sau đó cập nhật $\boldsymbol{\theta}$ để tăng giá trị của $\log p\boldsymbol{(h^{*}, v)}$. Giống với EM, đây là một dạng tối ưu leo tọa độ trên $\mathcal{L}$, luân phiên sử dụng suy diễn để tối ưu $\mathcal{L}$ theo $q$ và cập nhật tham số để tối ưu $\mathcal{L}$ theo $\boldsymbol{\theta}$. Thủ tục này được chứng minh là đúng bởi lý do $\mathcal{L}$ là một cận dưới của $\log p(\boldsymbol{v})$. Tuy nhiên, đối với suy diễn MAP, lập luận kiểu này tương đối ngớ ngẩn bởi cận của $\log p(\boldsymbol{v})$ vô cùng lỏng lẻo, do entropy vi phân của phân phối Dirac là âm vô cùng. Ta có thể thêm nhiễu vào $\boldsymbol{\mu}$ để làm cận trở nên có ý nghĩa.

Trong học sâu, suy diễn MAP vừa được dùng như một bộ trích xuất đặc trưng, vừa được dùng như một cơ chế học. Nó chủ yếu được sử dụng cho mô hình mã hóa thưa.

Nhớ lại phần $13.4$, mã hóa thưa là một mô hình nhân tử tuyến tính áp đặt một tiên nghiệm tạo ra tính thưa lên những đơn vị ẩn của nó. Một lựa chọn phổ biến là tiên nghiệm Laplace nhân tử, với

\[\begin{align} p(h_i) = \frac{\lambda}{2}e^{-\lambda|h_i|}. \tag{19.14} \end{align}\]

Sau đó, các đơn vị khả kiến được sinh ra bằng một phép biến đổi tuyến tính và thêm nhiễu:

\[\begin{align} p(\boldsymbol{x\space|\space h}) = \mathcal{N}(\boldsymbol{v}; \boldsymbol{Wh + b}, \beta^{-1}\boldsymbol{I}). \tag{19.15} \end{align}\]

Việc tính toán, hay thậm chí biểu diễn $p(\boldsymbol{h\space|\space v})$ rất khó khăn. Mọi cặp biến $h_i$ và $h_j$ đều là nút cha của $\boldsymbol{v}$. Điều này có nghĩa là khi $\boldsymbol{v}$ được quan sát, một đường đi kết nối $h_i$ và $h_j$ sẽ được kích họat. Toàn bộ biến tiềm ẩn do đó đều có mặt trong một bè khổng lồ trong $p(\boldsymbol{h\space|\space v})$. Nếu mô hình là Gauss, những tương tác này có thể được mô hình hóa một cách hiệu quả thông qua ma trận hiệp phương sai, nhưng tiên nghiệm về tính thưa khiến các tương tác này không phải là Gauss.

Do $p(\boldsymbol{h\space|\space v})$ khó tính toán, nên \gls{do-hop-ly-thang-log} và gradient của nó cũng khó tính toán. Vì vậy ta không thể sử dụng học hợp lý cực đại một cách chính xác. Thay vào đó, ta sử dụng suy diễn MAP và học tham số bằng cách cực đại hóa ELBO xác định bởi phân phối Dirac xung quanh ước lượng MAP của $\boldsymbol{h}$.

Nếu ta nối toàn bộ vector $\boldsymbol{h}$ trong \gls{tap-huan-luyen} thành một ma trận $\boldsymbol{H}$, và nối toàn bộ vector $\boldsymbol{v}$ thành một ma trận $\boldsymbol{V}$, quá trình học mã hóa thưa sẽ trở thành việc cực tiểu hóa

\[\begin{align} J(\boldsymbol{H, W})= \sum_{i, j}|H_{i,j}|+ \sum_{i, j} (\boldsymbol{V} - \boldsymbol{HW}^\top)^{2}_{i, j}. \tag{19.16} \end{align}\]

Hầu hết mô hình mã hóa thưa đều sử dụng suy giảm trọng số hoặc một ràng buộc đối với chuẩn (norm) của các cột trong ma trận $\boldsymbol{W}$, để ngăn ngừa lời giải bất ổn với $\boldsymbol{H}$ cực nhỏ và $\boldsymbol{W}$ lớn.

Chúng ta có thể cực tiểu hóa $J$ bằng cách luân phiên cực tiểu hóa theo $\boldsymbol{H}$ và cực tiểu hóa theo $\boldsymbol{W}$. Cả hai bài toán con này đều là các bài toán lồi. Trên thực tế, cực tiểu hóa theo $\boldsymbol{W}$ chỉ là một bài toán \gls{hoi-quy-tuyen-tinh}. Tuy nhiên, cực tiểu hóa $J$ theo cả hai đối số thường không phải bài toán lồi.

Cực tiểu hóa theo $\boldsymbol{H}$ yêu cầu những thuật toán chuyên biệt như tìm kiếm dấu của đặc trưng (feature-sign search) [Lee et al., 2007].

19.4 Suy diễn biến phân và học biến phân

Chúng ta đã biết rằng cận dưới thực nghiệm $\mathcal{L}(\boldsymbol{v}, \boldsymbol{\theta}, q)$ là một cận dưới của $\log p(\boldsymbol{v};\boldsymbol{\theta})$, suy diễn có thể được xem như cực đại hóa $\mathcal{L}$ theo $q$, và quá trình học có thể được xem như cực đại hóa $\mathcal{L}$ theo $\boldsymbol{\theta}$. Ta cũng đã biết rằng thuật toán EM cho phép tạo ra các bước học lớn khi cố định $q$, và thuật toán học dựa trên suy diễn MAP cho phép học bằng một ước lượng điểm của $p(\boldsymbol{h\space|\space v})$ thay vì suy diễn ra toàn bộ phân phối. Tiếp theo, chúng tôi sẽ phát triển một hướng tiếp cận tổng quát hơn cho học biến phân.

Ý tưởng chính đằng sau học biến phân là cực đại hóa $\mathcal{L}$ trên một họ phân phối $q$ bị ràng buộc. Họ phân phối này được lựa chọn để có thể dễ dàng tính toán $\mathbb{E}_{q} \log p(\boldsymbol{h, v})$. Một cách thức điển hình để đạt được điều này là đưa ra giả định về cách phân tích $q$ thành các nhân tử.

Một hướng tiếp cận phổ biến cho học biến phân là áp đặt một ràng buộc rằng $q$ là một phân phối nhân tử:

\[\begin{align} q(\boldsymbol{h\space|\space v}) =\prod_i q(h_i \space | \space \boldsymbol{v}). \tag{19.17} \end{align}\]

Phương pháp này được gọi là trường trung bình (mean-field). Tổng quát hơn, ta có thể áp đặt bất kỳ cấu trúc mô hình đồ thị nào lên $q$, để xác định một cách linh động số lượng tương tác mà ta muốn phân phối xấp xỉ nắm bắt. Phương pháp tổng quát sử dụng mô hình đồ thị đầy đủ này được gọi là suy diễn biến phân có cấu trúc (structured variational inference) [Saul and Jordan, 1996].

Cái đẹp của phương pháp biến phân đến từ việc ta không cần xác định một dạng tham số hóa cụ thể cho $q$, mà chỉ cần chỉ định cách nó được phân tích thành nhân tử, sau đó bài toán tối ưu sẽ xác định phân phối xác suất tối ưu trong phạm vi ràng buộc của phép phân tích trên. Đối với biến tiềm ẩn rời rạc, điều này chỉ tương đương với việc sử dụng các kỹ thuật tối ưu truyền thống để tối ưu một lượng hữu hạn các biến mô tả phân phối $q$. Đối với biến tiềm ẩn liên tục, điều này tương đương với việc sử dụng một nhánh của toán học là phương pháp tính biến phân (calculus of variation) để thực hiện tối ưu trên một miền không gian hàm số và xác định hàm nào nên được dùng để biểu diễn $q$. Phương pháp tính biến phân là nguồn gốc của những cái tên như “học biến phân” và “suy diễn biến phân”, tuy vậy cách gọi này cũng được dùng trong trường hợp biến tiềm ẩn là rời rạc và không cần dùng đến phương pháp tính biến phân. Với biến tiềm ẩn liên tục, phương pháp tính biến phân là một kỹ thuật mạnh mẽ giúp giải tỏa nhiều gánh nặng cho người thiết kế mô hình, vì họ chỉ cần chỉ định cách $q$ phân tích thành các nhân tử, thay vì phải dự đoán cách thiết kế một $q$ cụ thể có thể xấp xỉ chính xác phân phối hậu nghiệm.

Do $\mathcal{L}(\boldsymbol{v}, \boldsymbol{\theta}, q)$ được xác định bởi $\log p(\boldsymbol{v}; \boldsymbol{\theta}) - D_{KL}(q(\boldsymbol{h\space|\space v})\parallel p(\boldsymbol{h}|\boldsymbol{v}; \boldsymbol{\theta}))$, chúng ta có thể hiểu cực đại hóa $\mathcal{L}$ theo $q$ có nghĩa là cực tiểu hóa $D_{KL}(q(\boldsymbol{h\space|\space v})\parallel p(\boldsymbol{h} \space|\space \boldsymbol{v}))$.

Theo góc nhìn này, chúng ta đang điều chỉnh $q$ để khớp với $p$. Tuy nhiên, ta thực hiện điều này với độ phân kỳ KL có hướng ngược lại so với hướng trước đây ta từng dùng để khớp một xấp xỉ. Cụ thể, sử dụng học hợp lý cực đại để điều chỉnh một mô hình khớp với dữ liệu tương đương với việc cực tiểu hóa $D_{KL}(p_{data}\parallel p_{model})$. Như đã mô tả trong hình 3.6, hợp lý cực đại khuyến khích mô hình phân bố xác suất cao ở mọi nơi mà dữ liệu có xác suất cao, trong khi đó thủ tục suy diễn dựa trên tối ưu hóa của chúng ta khuyến khích $q$ phân bố xác suất thấp tại mọi điểm mà hậu nghiệm thực có xác suất thấp. Cả hai hướng của độ phân kỳ KL đều có những tính chất mong muốn và không mong muốn. Lựa chọn phương pháp nào để sử dụng tùy thuộc vào những thuộc tính được được ưu tiên nhất trong từng ứng dụng. Trong bài toán suy diễn bằng tối ưu hóa, ta sử dụng $D_{KL}(q(\boldsymbol{h}|\boldsymbol{v})\parallel p(\boldsymbol{h}|\boldsymbol{v}))$ vì lý do tính toán. Cụ thể, việc tính toán $D_{KL}(q(\boldsymbol{h}|\boldsymbol{v})\parallel p(\boldsymbol{h}|\boldsymbol{v}))$ yêu cầu tính toán các kỳ vọng theo $q$. Bằng cách thiết kế $q$ đơn giản, ta có thể đơn giản hóa các kỳ vọng cần tính. Hướng ngược lại của độ phân kỳ KL sẽ yêu cầu tính giá trị kỳ vọng theo hậu nghiệm thực. Do dạng của hậu nghiệm thực được quyết định bởi sự lựa chọn mô hình, việc thiết kế một hướng tiếp cận ít tốn kém hơn để tính toán chính xác $D_{KL}(p(\boldsymbol{h}|\boldsymbol{v})\parallel q(\boldsymbol{h}|\boldsymbol{v}))$ là bất khả thi.

19.4.1 Biến tiềm ẩn rời rạc

Suy diễn biến phân với biến tiềm ẩn rời rạc tương đối đơn giản. Ta định nghĩa một phân phối $q$, thường là một phân phối trong đó mỗi nhân tử của $q$ được xác định chỉ bởi một bảng các trạng thái rời rạc. Trong trường hợp đơn giản nhất, $\boldsymbol{h}$ là các giá trị nhị phân và ta có thể áp đặt một giả định rằng $q$ được phân tích thành tích của từng thành phần cho mỗi $h_i$. Khi đó, ta có thể tham số hóa $q$ bằng một vector $\hat{\boldsymbol{h}}$ có phần tử là các giá trị xác suất, $q(h_i=1 \space|\space \boldsymbol{v}) = \hat{h_i}$.

Sau khi xác định cách biểu diễn $q$, ta chỉ cần tối ưu hóa tham số của nó. Với biến tiềm ẩn rời rạc, đây chỉ là bài toán tối ưu thông thường. Về nguyên tắc, ta có thể sử dụng bất kỳ thuật toán tối ưu nào, chẳng hạn như \gls{truot-gradient}.

Do bước tối ưu này được thực hiện ở vòng lặp bên trong của thuật toán học, nó cần phải rất nhanh. Để đạt được tốc độ này, ta thường cần những thuật toán tối ưu đặc biệt được thiết kế để giải quyết các bài toán tương đối nhỏ và đơn giản trong một vài bước lặp. Một lựa chọn phổ biến là lặp lại các phương trình điểm cố định, nói cách khác, ta giải phương trình

\[\begin{align} \frac{\partial}{\partial{\hat{h_i}}}\mathcal{L} = 0 \tag{19.18} \end{align}\]

để tìm $\hat{h_i}$. Các phần tử của $\hat{\boldsymbol{h}}$ liên tục được cập nhật cho đến khi thoả mãn điều kiện hội tụ.

Để minh họa, chúng tôi sẽ trình bày một ví dụ áp dụng suy diễn biến phân vào mô hình mã hóa thưa nhị phân (binary sparse coding model; chúng tôi trình bày mô hình được phát triển bởi Henniges và cộng sự [2010], nhưng mô tả phương pháp trường trung bình cổ điển và tổng quát cho mô hình, trong khi các tác giả giới thiệu một thuật toán chuyên biệt). Những suy diễn dưới đây đi sâu vào chi tiết toán học và hướng tới các độc giả muốn xua tan sự mơ hồ về các khái niệm mang tính trừu tượng cao mà chúng tôi đã trình bày về suy diễn biến phân và học biến phân. Những độc giả không có kế hoạch suy diễn hoặc lập trình giải thuật học biến phân có thể bỏ qua phần này mà không cần lo ngại bỏ lỡ bất kỳ khái niệm mang tính trừu tượng cao mới nào. Những độc giả tiếp tục với ví dụ này được khuyến nghị xem lại danh sách tính chất hữu ích của các hàm số thường phát sinh trong mô hình xác suất ở phần $3.10$. Chúng tôi sử dụng những tính chất này xuyên suốt quá trình suy diễn dưới đây mà không nhấn mạnh nơi chúng được sử dụng.

Trong mô hình mã hóa thưa nhị phân, giá trị đầu vào $\boldsymbol{v} \in \mathbb{R}^{n}$ được sinh từ mô hình bằng cách thêm nhiễu Gauss vào tổng của $m$ thành phần khác nhau, một thành phần có thể xuất hiện hoặc không. Mỗi thành phần được bật hoặc tắt bởi các đơn vị ẩn tương ứng trong $\boldsymbol{h} \in {0, 1}^m$:

\[\begin{align} p(h_i = 1) = \sigma(b_i), \tag{19.19} \end{align}\] \[\begin{align} p(\boldsymbol{v \space|\space h}) = \mathcal{N}(\boldsymbol{v} ; \boldsymbol{Wh}, \beta^{-1}), \tag{19.20} \end{align}\]

trong đó $\boldsymbol{b}$ là tập hệ số tự do, $\boldsymbol{W}$ là ma trận trọng số, và $\beta$ là ma trận chéo độ chính xác (precision); cả ba tham số này đều có thể học được.

Để huấn luyện mô hình này với hợp lý cực đại, ta cần tính đạo hàm theo các tham số. Xét đạo hàm theo một trong các hệ số tự do:

\[\begin{align} \frac{\partial}{\partial b_i} \log p(\boldsymbol{v}) \tag{19.21}\\\\ = \frac{\frac{\partial}{\partial b_i} p(\boldsymbol{v})}{p(\boldsymbol{v})} \tag{19.22}\\\\ = \frac{\frac{\partial}{\partial b_i} \sum_{\boldsymbol{h}} p(\boldsymbol{h,v})}{p(\boldsymbol{v})} \tag{19.23}\\\\ =\frac{\frac{\partial}{\partial b_i} \sum_{\boldsymbol{h}} p(\boldsymbol{h})p(\boldsymbol{v\mid h})}{p(\boldsymbol{v})} \tag{19.24}\\\\ = \frac{\sum_{\boldsymbol{h}} p(\boldsymbol{v \space\|\space h}) \frac{\partial}{\partial b_i}p(\boldsymbol{h})}{p(\boldsymbol{v})}\tag{19.25}\\\\ = \sum_{h}p(\boldsymbol{h}\mid\boldsymbol{v})\frac{\frac{\partial}{\partial b_i}p(\boldsymbol{h})}{p(\boldsymbol{h})}\tag{19.26}\\\\ = \mathbb{E}_{\mathbf{h}\sum p(\boldsymbol{h}|\boldsymbol{v})}\frac{\partial}{\partial b_i}\log p(\boldsymbol{h}) \tag{19.27} \end{align}\]

Biểu thức này đòi hỏi tính toán một kỳ vọng theo $p(\boldsymbol{h}\mid \boldsymbol{v})$. Tuy nhiên, $p(\boldsymbol{h}\mid \boldsymbol{v})$ là một phân phối phức tạp. Hình $19.2$ thể hiện cấu trúc đồ thị của $p(\boldsymbol{h},\boldsymbol{v})$ và $p(\boldsymbol{h}\mid \boldsymbol{v})$. Phân phối hậu nghiệm tương ứng với đồ thị đầy đủ của các đơn vị ẩn, nên thuật toán khử biến không giúp ta tính toán kỳ vọng cần thiết nhanh hơn vét cạn.

Hình 19.2: Cấu trúc đồ thị của một mô hình mã hóa thưa nhị phân với bốn đơn vị ẩn. (Hình trái) Cấu trúc đồ thị của $p(\boldsymbol{h},\boldsymbol{v})$. Lưu ý rằng các cạnh của đồ thị đều có hướng, và mỗi cặp đơn vị ẩn đều cùng là cha của mọi đơn vị khả kiến. (Hình phải) Cấu trúc đồ thị của $p(\boldsymbol{h}\mid \boldsymbol{v})$. Để biểu diễn những đường đi hoạt động giữa các cặp nút cùng là nút cha, phân phối hậu nghiệm cần có cạnh nối giữa tất cả các đơn vị ẩn.

Ta có thể giải quyết khó khăn này bằng suy diễn biến phân và học biến phân.

Ta có thể tạo một xấp xỉ (gọi là xấp xỉ trường trung bình) như sau:

\[\begin{align} q(\boldsymbol{h}\mid \boldsymbol{v}) =\prod_{i}q\left(h_{i}\mid \boldsymbol{v}\right) \tag{19.28} \end{align}\]

Biến tiềm ẩn của mô hình mã hóa thưa nhị phân đều là nhị phân, nên để biểu diễn phân phối nhân tử $q$, ta chỉ cần mô hình hóa $m$ phân phối Bernoulli $q({h}_i\space|\space\boldsymbol{v})$. Một cách thức tự nhiên để biểu diễn giá trị trung bình của các phân phối Bernoulli là dùng một vector gồm các xác suất $\hat{\boldsymbol{h}}$, với $q\left(h_i=1 \space|\space\boldsymbol{v}\right) = \hat{h}_i$. $\hat{h}_i$ được áp đặt một ràng buộc rằng nó không thể nhận giá trị $0$ hay $1$ để tránh gặp lỗi trong quá trình tính, ví dụ như, $\log\hat{h}_i$.

Theo giải tích, ta thấy rằng các phương trình suy diễn biến phân không bao giờ gán giá trị $0$ và $1$ cho $\hat{h}_i$. Tuy nhiên, khi thực thi chương trình, phép làm tròn của máy tính thường dẫn tới các giá trị $0$ hoặc $1$. Ta sẽ mong muốn lập trình mô hình mã hóa thưa nhị phân sử dụng một vector không ràng buộc $\boldsymbol{z}$ của các tham số biến phân, và thu được $\hat{\boldsymbol{h}}$ thông qua liên hệ $\hat{\boldsymbol{h}} = \sigma(z)$. Từ đó, ta có thể tính log $\hat{h}_i$ trên máy tính một cách an toàn bằng đồng nhất thức log $\sigma \left(z_i \right) = - \zeta \left(-z_i \right)$, thể hiện mối liên hệ giữa hàm sigmoid và hàm softplus.

Để bắt đầu diễn giải về học biến phân trong mô hình mã hóa thưa nhị phân, chúng tôi sẽ chỉ ra rằng xấp xỉ trường trung bình giúp việc học trở nên dễ tính toán.

Cận dưới thực nghiệm được xác định bởi

\[\begin{align} \mathcal{L}(\boldsymbol{v},\boldsymbol{\theta},q) \tag{19.29} \\\\ = \mathbb{E}_{\mathbf{h} \sim q}[\log p(\boldsymbol{h},\boldsymbol{v}) ] + H(q) \tag{19.30} \\\\ = \mathbb{E}_{\mathbf{h} \sim q}[\log p(\boldsymbol{h}) + \log p(\boldsymbol{v} \mid \boldsymbol{h}) - \log q(\boldsymbol{h} \mid \boldsymbol{v}) ] \tag{19.31} \\\\ = \mathbb{E}\_{\mathbf{h} \sim q} \left[\sum_{i = 1}^{m} \log p \left(h_i \right) + \sum_{i = 1}^{n} \log p \left(v_i | \boldsymbol{h} \right) - \sum_{i = 1}^{m} \log q \left(h_i | \boldsymbol{v} \right) \right] \tag{19.32} \\\\ = \sum_{i = 1}^{m} \left[\hat{h}\_i \left(\log \sigma \left(b_i \right) - \log \hat{h}\_i \right) + \left(1 - \hat{h}\_i \right) \left(\log \sigma \left(- b_i \right) - \log \left(1 - \hat{h}_i \right) \right) \right] \tag{19.33} \\\\ + \mathbb{E}\_{\mathbf{h} \sim q} \left[\sum_{i = 1}^{n} \log \sqrt{\frac{\beta_i}{2\pi}} \exp \left(- \frac{\beta_i}{2} \left(v_i - \boldsymbol{W}_{i,:} \boldsymbol{h} \right)^{2} \right) \right] \tag{19.34} \\\\ = \sum_{i = 1}^{m} \left[\hat{h}\_i \left(\log \sigma \left(b_i \right) - \log \hat{h}\_i \right) + \left(1 - \hat{h}\_i \right) \left(\log \sigma \left(- b_i \right) - \log \left(1 - \hat{h}_i \right) \right) \right] \tag{19.35} \\\\ + \frac{1}{2} \sum_{i = 1}^{n} \left[\log \frac{\beta_i}{2\pi} - \beta_i \left(v_i^{2} - 2 v_i \boldsymbol{W}\_{i,:} \hat{\boldsymbol{h}} + \sum_j \left[ W_{i,j}^{2} \hat{h}\_j + \sum_{k \neq j} W_{i,j} W_{i,k} \hat{h}\_j \hat{h}_{k} \right] \right) \right] \tag{19.36} \\\\ \end{align}\]

Phương trình trên tuy không đẹp, nhưng chúng cho thấy rằng $\mathcal{L}$ có thể được biểu diễn bằng một số lượng nhỏ các phép toán số học đơn giản. Do đó cận dưới thực nghiệm $\mathcal{L}$ sẽ dễ tính toán, và $\mathcal{L}$ có thể được dùng để thay thế cho \gls{do-hop-ly-thang-log} khó tính toán.

Về cơ bản, ta có thể sử dụng phương pháp leo gradient cho cả $\boldsymbol{v}$ và $\boldsymbol{h}$, tạo ra một thuật toán hoàn toàn hợp lệ kết hợp cả suy diễn và huấn luyện. Tuy nhiên, phương pháp này thường không được sử dụng vì hai lý do. Thứ nhất, nó đòi hỏi lưu trữ $\hat{\boldsymbol{h}}$ với mỗi $\boldsymbol{v}$. Ta thường ưu tiên các thuật toán không đòi hỏi bộ nhớ cho mỗi mẫu huấn luyện. Sẽ rất khó để mở rộng giải thuật học tập cho hàng tỷ mẫu nếu ta phải ghi nhớ một vector được cập nhật thường xuyên tương ứng với mỗi mẫu. Thứ hai, ta cần trích xuất các đặc trưng $\hat{\boldsymbol{h}}$ nhanh nhất có thể để nhận diện nội dung của $\boldsymbol{v}$. Trong triển khai thực tế, ta thậm chí cần tính toán $\hat{\boldsymbol{h}}$ theo thời gian thực.

Bởi hai lý do nêu trên, \gls{truot-gradient} thường không được sử dụng để tính toán tham số trường trung bình $\hat{\boldsymbol{h}}$. Thay vào đó, ta ước lượng chúng một cách nhanh chóng bằng các phương trình điểm cố định.

Ý tưởng đằng sau phương trình điểm cố định là tìm kiếm một cực đại cục bộ theo $\hat{\boldsymbol{h}}$ sao cho $\nabla_{\boldsymbol{h}} \mathcal{L}(\boldsymbol{v},\boldsymbol{\theta},\hat{\boldsymbol{h}}) = \mathbf{0}$. Chúng ta không thể đồng thời giải phương trình này với mọi phần tử của $\hat{\boldsymbol{h}}$ một cách hiệu quả. Tuy nhiên ta có thể giải phương trình cho từng biến riêng lẻ:

\[\begin{align} \frac{\partial}{\partial\hat{h}_i}\mathcal{L}(v,\theta,\hat{h})=0 \tag{19.37} \end{align}\]

Sau đó, áp dụng lặp đi lặp lại lời giải của phương trình trên với $i = 1,\dots,m,$ và tiếp tục chu kỳ cho đến khi thỏa mãn điều kiện hội tụ. Các điều kiện hội tụ phổ biến bao gồm: khi một chu kỳ cập nhật đầy đủ không cải thiện $\mathcal{L}$ với độ lệch vượt quá một dung sai nào đó, hoặc khi chu kỳ không thay đổi $\hat{\boldsymbol{h}}$ với độ lệch vượt quá một giá trị nào đó.

Lặp lại các phương trình điểm cố định trường trung bình là một kĩ thuật khá tổng quát cho phép thực hiện suy diễn biến phân nhanh chóng trên nhiều loại mô hình. Để làm rõ điều này, chúng tôi sẽ trình bày các bước để suy ra cập nhật cho mô hình mã hóa thưa nhị phân.

Đầu tiên, chúng ta tính đạo hàm theo $\hat{h}_i$. Thế phương trình $19.36$ vào vế trái của phương trình $19.37$:

\[\begin{align} \frac{\partial}{\partial \hat{h}_i} \mathcal{L}(\boldsymbol{v},\boldsymbol{\theta},\hat{\boldsymbol{h}}) \tag{19.38} \\\\ = \frac{\partial}{\partial \hat{h}\_i}[\sum_{j = 1}^{m} \left[\hat{h}_j \left(\log \sigma \left(b_j \right) - \log \hat{h}_j \right) + \left(1 - \hat{h}_j \right) \left(\log \sigma \left(- b_j \right) - \log \left(1 - \hat{h}_j \right) \right) \right] \tag{19.39} \\\\ + \frac{1}{2} \sum_{j = 1}^{n} \left[\log \frac{\beta_j}{2\pi} - \beta_j \left(v_j^{2} - 2 v_j \boldsymbol{W}_{j,:} \hat{\boldsymbol{h}} + \sum_k \left[ W_{j,k}^{2} \hat{h}\_k + \sum_{l \neq k} W_{j,k} W_{j,l} \hat{h}_k \hat{h}_l \right] \right) \right] \tag{19.40} \\\\ = \log \sigma \left(b_i \right) - \log \hat{h}_i - 1 + \log \left(1 - \hat{h}_i \right) + 1 - \log \sigma \left(- b_i \right) \tag{19.41} \\\\ + \sum_{j = 1}^{n} \left[\beta_j \left(v_j W_{j,i} - \frac{1}{2} W_{j,i}^{2} - \sum_{k \neq i} \boldsymbol{W}\_{j,k} \boldsymbol{W}_{j,i} \hat{h}_k \right) \right] \tag{19.42} \\\\ = b_i - \log \hat{h}\_i + \log \left(1 - \hat{h}\_i \right) + \boldsymbol{v}^\top \boldsymbol{\beta} \boldsymbol{W}\_{:,i} - \frac{1}{2} \boldsymbol{W}\_{:,i}^\top \boldsymbol{\beta} \boldsymbol{W}\_{:,i} - \sum_{j \neq i} \boldsymbol{W}\_{:j}^\top \boldsymbol{\beta} \boldsymbol{W}_{:,i} \hat{h}_j\tag{19.43} \\\\ \end{align}\]

Để áp dụng quy tắc suy diễn cập nhật điểm cố định, ta tìm $\hat{h}_i$ để phương trình $19.43$ nhận giá trị $0$:

\[\begin{align} \hat{h}_i = \sigma \left(b_i + \boldsymbol{v}^\top \boldsymbol{\beta} \boldsymbol{W}\_{:,i} - \frac{1}{2} \boldsymbol{W}\_{:,i}^\top \boldsymbol{\beta} \boldsymbol{W}\_{;,i} - \sum_{j \neq i} \boldsymbol{W}\_{:j}^\top \boldsymbol{\beta} \boldsymbol{W}_{:,i} \hat{h}_j \right). \tag{19.44} \end{align}\]

Đến đây, ta có thể nhận thấy mối liên hệ chặt chẽ giữa mạng neuron truy hồi và phép suy diễn trong mô hình đồ thị. Cụ thể, các phương trình điểm cố định trường trung bình đã định nghĩa một mạng neuron truy hồi. Nhiệm vụ của nó là thực hiện suy diễn. Chúng ta vừa suy ra mạng này từ mô tả của mô hình, nhưng mạng suy diễn cũng có thể được huấn luyện một cách trực tiếp. Một số ý tưởng dựa trên chủ đề này sẽ được đề cập trong chương 20.

Trong mô hình mã hóa thưa nhị phân, ta thấy rằng kết nối truy hồi trong phương trình $19.44$ liên tục cập nhật đơn vị ẩn dựa trên việc thay đổi giá trị của các đơn vị ẩn láng giềng. Đầu vào luôn gửi một thông điệp cố định $\boldsymbol{v}^\top \beta\boldsymbol{W}$ tới đơn vị ẩn, nhưng các đơn vị ẩn liên tục cập nhật các thông điệp mà chúng gửi cho nhau. Cụ thể, hai đơn vị ẩn $\hat{h}_i$ và $\hat{h}_j$ kiềm chế lẫn nhau khi các vector trọng số của chúng cùng hướng. Đây là một dạng cạnh tranh - giữa hai đơn vị ẩn có cùng vai trò giải thích cho đầu vào, chỉ đơn vị nào giải thích tốt hơn mới được phép kích hoạt. Sự cạnh tranh này là một nỗ lực của xấp xỉ trường trung bình nhằm nắm bắt các tương tác explaining away trong hậu nghiệm của mô hình mã hóa thưa nhị phân. Thực tế, hiệu ứng explaining away sẽ dẫn tới một hậu nghiệm đa mode, sao cho nếu ta lấy mẫu từ phân phối hậu nghiệm, một vài mẫu sẽ có một đơn vị nào đó được kích hoạt, một vài mẫu khác sẽ có một đơn vị khác được kích hoạt, nhưng có rất ít mẫu đồng thời kích hoạt hai đơn vị. Không may thay, các tương tác explaining away không thể được mô hình hóa bởi phân phối nhân tử $q$ dùng cho trường trung bình, vì vậy xấp xỉ trường trung bình buộc phải chọn một mode để mô hình hóa. Đây chính là một ví dụ cho hành vi được mô tả ở hình $3.6$.

Chúng ta có thể viết lại phương trình $19.44$ dưới một dạng tương đương giúp gợi mở những góc nhìn sâu hơn:

\[\begin{align} \hat{h}_i = \sigma \left(b_i + \left(v - \sum_{j \neq i} \boldsymbol{W}\_{:,j},\hat{h}\_j \right)^\top \beta \boldsymbol{W}\_{:,i} - \frac{1}{2} \boldsymbol{W}\_{:,i}^\top \boldsymbol{\beta} \boldsymbol{W}_{:,i} \right)\tag{19.45}. \end{align}\]

Trong công thức này, ta thấy rằng đầu vào tại mỗi bước bao gồm $\boldsymbol{v} - \sum_{j \neq i} \boldsymbol{W}_{:j} \hat{h}_j$ thay vì $\boldsymbol{v}$. Do đó ta có thể hiểu rằng đơn vị $i$ đang cố gắng mã hóa sự sai lệch của $\boldsymbol{v}$ khi biết bộ mã của những đơn vị còn lại. Vì vậy mô hình mã hóa thưa giống như một bộ tự mã hóa lặp lại, liên tục mã hóa và giải mã đầu vào của nó, cố gắng sửa những lỗi sai trong quá trình phục hồi dữ liệu sau mỗi vòng lặp.

Trong ví dụ trên, chúng ta đã suy ra một quy tắc giúp cập nhật mỗi đơn vị tại một thời điểm. Sẽ tốt hơn nếu có thể cập nhật đồng thời nhiều đơn vị cùng lúc. Một số mô hình đồ thị, ví dụ như máy Boltzmann đa tầng, được cấu trúc để có thể đồng thời cập nhật nhiều phần tử của $\hat{\boldsymbol{h}}$. Không may thay, mã hóa thưa nhị phân không cho phép cập nhật theo từng khối như vậy. Thay vào đó, ta có thể sử dụng một kỹ thuật suy nghiệm gọi là giảm xóc (damping) để thực hiện việc cập nhật theo khối. Trong cách tiếp cận này, ta tìm giá trị tối ưu cho mỗi phần tử của $\hat{\boldsymbol{h}}$, sau đó dịch chuyển toàn bộ giá trị một bước nhỏ theo hướng đó. Phương pháp này không đảm bảo rằng sẽ làm tăng $\mathcal{L}$ sau mỗi bước, nhưng nó hoạt động tốt trong thực tế với nhiều mô hình. Bạn đọc có thể tham khảo [Koller and Friedman, 2009] để hiểu thêm về cách lựa chọn mức độ đồng bộ và chiến lược giảm xóc trong các giải thuật truyền thông điệp.

19.4.2 Phương pháp tính biến phân

Trước khi tiếp tục phần trình bày về học biến phân, chúng tôi cần giới thiệu ngắn gọn về một tập hợp các công cụ toán học quan trọng được sử dụng trong học biến phân: phương pháp tính biến phân (calculus of variations).

Hầu hết các kỹ thuật trong học máy đều dựa trên việc tối thiểu hóa một hàm $J(\boldsymbol{\theta})$ bằng cách tìm vector đầu vào $\boldsymbol{\theta} \in \mathbb{R}^{n}$ sao cho hàm số đạt giá trị nhỏ nhất. Điều này có thể được thực hiện bằng phương pháp tính đa biến (multivariate calculus) và đại số tuyến tính, bằng cách tìm một điểm tới hạn thỏa mãn phương trình $\nabla_{\boldsymbol{\theta}} J(\boldsymbol{\theta}) = 0$. Trong nhiều trường hợp, ta sẽ muốn tìm một hàm $f(\boldsymbol{x})$, chẳng hạn như hàm mật độ xác suất của một biến ngẫu nhiên nào đó, thỏa mãn điều kiện trên. Phương pháp tính biến phân cho phép thực hiện điều này.

Một hàm số của hàm $f$ được gọi là phiếm hàm (functional) $J[f]$. Giống như việc ta có thể tính đạo hàm riêng của một hàm theo các phần tử thuộc vector đối số của hàm, ta cũng có thể tính đạo hàm phiếm hàm (functional derivatives), hay đạo hàm biến phân (variational derivatives), của phiếm hàm $J[f]$ theo mỗi giá trị của hàm $f(x)$ tại giá trị $x$ bất kỳ. Đạo hàm phiếm hàm của phiếm hàm $J$ theo giá trị của hàm $f$ tại điểm $x$ được kí hiệu là $\frac{\delta}{\delta f(x)} J$.

Ta không thể trình bày đầy đủ về đạo hàm phiếm hàm trong phạm vi của cuốn sách này. Thay vào đó, để hiểu về học biến phân, chúng ta chỉ cần biết rằng, với những hàm $f(x)$ khả vi và $g(y,x)$ khả vi với đạo hàm liên tục thì

\[\begin{align} \frac{\delta}{\delta f(\boldsymbol{x})} \int g(f(\boldsymbol{x}),\boldsymbol{x}) d \boldsymbol{x} = \frac{\partial}{\partial y} g(f(\boldsymbol{x}),\boldsymbol{x}). \tag{19.46} \end{align}\]

Để có một góc nhìn đơn giản hơn về đồng nhất thức này, ta có thể hình dung $f(\boldsymbol{x})$ là một vector với vô số phần tử, mỗi phần tử đặc trưng bởi một vector giá trị thực $\boldsymbol{x}$. Theo góc nhìn (chưa trọn vẹn trong một mức độ nào đó) này, đồng nhất thức trên cung cấp đạo hàm phiếm hàm giống như những gì ta sẽ thu được cho một vector $\boldsymbol{\theta} \in \mathbb{R}^n$, mỗi phần tử đặc trưng bởi một số nguyên dương:

\[\begin{align} \frac{\partial}{\partial\theta_i}\sum_j g(\theta_j, j)=\frac{\partial}{\partial\theta_i}g(\theta_i, i) \tag{19.47} \end{align}\]

Nhiều kết quả trong các nghiên cứu học máy khác sử dụng phương trình Euler-Lagrange tổng quát hơn, cho phép $g$ phụ thuộc đồng thời vào đạo hàm của $f$ cũng như giá trị của $f$. Tuy nhiên chúng ta không cần đến dạng tổng quát đầy đủ này trong phạm vi cuốn sách.

Để tối ưu một hàm số theo một vector, ta tính gradient của hàm số theo vector đó và tìm những điểm mà tại đó mọi phần tử của gradient bằng $0$. Tương tự như vậy, ta tối ưu một phiếm hàm bằng cách tìm hàm số nơi mà đạo hàm phiếm hàm tại mọi điểm bằng $0$.

Để minh họa quá trình này, ta xét bài toán tìm hàm phân phối xác suất của $x \in \mathbb{R}$ có entropy vi phân cực đại. Nhớ lại rằng entropy của một phân phối xác suất $p(x)$ được định nghĩa như sau

\[\begin{align} H\left[p \right] = -\mathbb{E}_x\log p\left(x\right). \tag{19.48} \end{align}\]

Đối với giá trị liên tục, kỳ vọng là một tích phân:

\[\begin{align} \displaystyle H\left[p \right] = -\int p\left(x\right)\log p\left(x\right)dx. \tag{19.49} \end{align}\]

Ta không thể đơn giản chỉ cực đại hóa $H[p]$ theo $p(x)$, bởi kết quả có thể không phải là một phân phối xác suất. Thay vào đó, ta cần sử dụng nhân tử Lagrange để ràng buộc sao cho $p(x)$ có tích phân bằng $1$. Ngoài ra, entropy sẽ tăng không giới hạn khi phương sai tăng. Điều này khiến câu hỏi phân phối nào có entropy lớn nhất không mang nhiều giá trị. Thay vào đó, ta quan tâm đến phân phối có entropy lớn nhất khi phương sai $\sigma^2$ không đổi. Sau cùng, bài toán là vô định bởi phân phối có thể dịch chuyển tùy ý mà entropy không thay đổi. Để đạt được nghiệm duy nhất, ta cần thêm ràng buộc rằng giá trị trung bình của phân phối bằng $\mu$. Phiếm hàm Lagrangian cho bài toán tối ưu này là:

\[\begin{align} \mathcal{L}\left[ p \right] = \lambda_1\left(\int p\left(x \right)dx-1\right)+\lambda_2\left(\mathbb{E}\left[x \right]-\mu\right)+\lambda_3\left(\mathbb{E}\left[ \left(x-\mu\right)^2\right]-\sigma^2\right)+H\left[ p \right] \tag{19.50} \\\\ = \int\left(\lambda_1p\left(x\right)+\lambda_2p\left(x\right)x+\lambda_3p\left(x\right)\left(x-\mu\right)^2+p\left(x\right)\log p\left(x\right)\right)dx-\lambda_1-\mu\lambda_2-\sigma^2\lambda_3. \tag{19.51} \end{align}\]

Để cực tiểu hóa phiếm hàm Lagrangian theo $p$, ta giải phương trình đạo hàm bằng $0$:

\[\begin{align} \forall x, \frac{\delta}{\delta p\left(x\right)}\mathcal{L}=\lambda_1+\lambda_2x+\lambda_3\left(x-\mu\right)^2-1-\log p\left(x\right)=0. \tag{19.52} \end{align}\]

Từ đó suy ra dạng hàm của $p(x)$:

\[\begin{align} p\left(x \right) = \exp \left(\lambda_1 + \lambda_2 x + \lambda_3\left(x-\mu\right)^2-1\right). \tag{19.53} \end{align}\]

Chúng ta không bao giờ trực tiếp giả định rằng $p(x)$ sẽ nhận dạng hàm này; ta thu được biểu thức này khi cực tiểu hóa phiếm hàm bằng phương pháp giải tích. Để hoàn thành bài toán cực tiểu hóa, ta cần chọn các giá trị $\lambda$ sao cho toàn bộ điều kiện ràng buộc được thỏa mãn. $\lambda$ có thể được chọn tùy ý, bởi vì gradient của Lagrange theo biến $\lambda$ sẽ bằng $0$, miễn là các điều kiện ràng buộc được thỏa mãn. Để thỏa mãn toàn bộ điều kiện ràng buộc, ta có thể chọn $\lambda_1 = 1 - \log(\sigma \sqrt{2\pi})$, $\lambda_2 = 0$, và $\lambda_3 = -\frac{1}{2\sigma^2}$ để thu được

\[\begin{align} p\left(x \right) = \mathcal{N} \left(x;\mu,\sigma^2 \right). \tag{19.54} \end{align}\]

Đây là một lý do khiến phân phối chuẩn được sử dụng khi chúng ta chưa biết phân phối thực sự. Bởi vì phân phối chuẩn có entropy lớn nhất, nên số lượng giả thuyết được áp đặt về cấu trúc của phân phối là nhỏ nhất có thể.

Khi khảo sát các điểm tới hạn của phiếm hàm Lagrangian cho entropy, ta chỉ tìm một điểm tới hạn, tương ứng với việc cực đại hóa entropy với phương sai cố định. Vậy còn hàm phân phối xác suất nào sẽ cực tiểu hóa entropy? Vì sao ta không tìm một điểm tới hạn thứ hai tương ứng với cực tiểu? Lý do là không có một hàm số đặc biệt nào đạt được entropy cực tiểu. Khi hàm số đặt mật độ xác suất cao hơn vào hai điểm $x=\mu + \sigma$ và $x=\mu - \sigma$, và mật độ xác suất thấp hơn vào các giá trị khác của $x$, chúng mất mát entropy trong khi duy trì phương sai mong muốn. Tuy nhiên, bất kì hàm số nào đặt mật độ xác suất chính xác bằng không tại mọi điểm ngoại trừ hai điểm nói trên sẽ có tích phân khác $1$ và không phải là một phân phối xác suất hợp lệ. Do đó, không có hàm phân phối xác suất đơn lẻ nào có entropy nhỏ nhất, cũng giống như việc không có số thực dương nào là nhỏ nhất vậy. Thay vào đó, có thể giả sử rằng có một chuỗi phân phối xác suất hội tụ tới các hàm chỉ tập trung mật độ vào hai điểm đó. Trường hợp suy biến này có thể mô tả bằng một hỗn hợp các phân phối Dirac. Vì phân phối Dirac không thể được mô tả bằng một hàm phân phối xác suất riêng lẻ, nên không phân phối Dirac hay hỗn hợp phân phối Dirac nào tương ứng với một điểm cụ thể trong không gian hàm. Những phân phối này không nằm trong phạm vi tìm kiếm của phương pháp của chúng ta khi tìm một điểm cụ thể mà tại đó đạo hàm phiếm hàm bằng không. Đây là một hạn chế của phương pháp này. Do đó các phân phối như phân phối Dirac phải được tìm kiếm bằng một phương pháp khác, chẳng hạn như dự đoán nghiệm rồi chứng minh chúng tính chính xác.

19.4.3 Biến tiềm ẩn liên tục

Khi mô hình đồ thị chứa biến tiềm ẩn liên tục, ta vẫn có thể thực hiện suy diễn biến phân và học biến phân bằng cách cực đại hóa $\mathcal{L}$. Tuy nhiên, khi đó ta cần đến các phương pháp tính biến phân khi cực đại hóa $\mathcal{L}$ theo $q(\boldsymbol{h}\mid\boldsymbol{v})$.

Trong hầu hết các trường hợp, người thực hiện không cần tự giải quyết bất kỳ bài toán phương pháp tính biến phân nào. Thay vào đó, có một phương trình tổng quát cho các cập nhật điểm cố định khi áp đặt giả thuyết trường trung bình. Nếu ta sử dụng xấp xỉ trường trung bình

\[\begin{align} q\left(\boldsymbol{h}\mid\boldsymbol{v}\right) =\prod_i q\left(h_i\mid\boldsymbol{v}\right), \tag{19.55} \end{align}\]

và cố định $q(h_j\mid \boldsymbol{v})$ với mọi $j \neq i$, có thể thu được $q(h_i\mid \boldsymbol{v})$ tối ưu bằng cách chuẩn hóa phân phối chưa chuẩn hóa sau

\[\begin{align} \tilde{q}\left(h_i\mid\boldsymbol{v}\right) = \exp \left(\mathbb{E}\_{\mathbf{h}\_{-i}\sim q \left(\mathbf{h}_{-i}\mid\boldsymbol{v} \right)} \log\tilde{p} \left(\boldsymbol{v},\boldsymbol{h}\right) \right), \tag{19.56} \end{align}\]

miễn là $p$ không gán xác suất bằng $0$ cho bất kì cấu hình biến số nào. Tính toán kỳ vọng bên trong phương trình giúp ta trực tiếp suy ra dạng của $q(h_i|\boldsymbol{v})$. Việc sử dụng phương pháp tính biến phân để suy ra dạng phiếm hàm của $q$ chỉ cần thiết nếu ta muốn phát triển một dạng học biến phân mới; phương trình $19.56$ cho ta xấp xỉ trường trung bình của bất kì mô hình xác suất nào.

Phương trình $19.56$ là một phương trình điểm cố định, được thiết kế để áp dụng lặp đi lặp lại cho mỗi giá trị của $i$ cho đến khi hội tụ. Tuy nhiên, nó còn cho ta biết nhiều hơn thế. Nó cho ta biết dạng hàm mà nghiệm tối ưu sẽ nhận cho dù ta có thể tới được đó bằng các phương trình điểm cố định hay không. Có nghĩa là ta có thể sử dụng dạng hàm từ phương trình đó, và coi một số giá trị xuất hiện trong nó như các tham số mà ta có thể tối ưu hóa bằng bất kì thuật toán tối ưu nào (xem ví dụ dưới đây).

Xét một mô hình thống kê đơn giản với biến tiềm ẩn liên tục $\boldsymbol{h} \in \mathbb{R}^2$ và chỉ một biến khả kiến $v$. Giả sử rằng $p(\boldsymbol{h}) = \mathcal{N}(\boldsymbol{h}; 0, \boldsymbol{I})$ và $p(v|\boldsymbol{h}) = \mathcal{N}(v; \boldsymbol{w}^\top\boldsymbol{h}; 1)$. Thực tế, ta có thể đơn giản hóa mô hình này bằng cách lấy tích phân theo $\boldsymbol{h}$; kết quả chỉ đơn giản là một phân phối Gauss theo $v$. Bản thân mô hình không có gì thú vị; chúng tôi xây dựng ví dụ này chỉ để minh họa cách mà phương pháp tính biến phân được áp dụng vào mô hình hóa xác suất.

Hậu nghiệm thực sự, bỏ qua hằng số chuẩn hóa, được cho bởi

\[\begin{align} p\left(\boldsymbol{h}\mid\boldsymbol{v}\right)\tag{19.57}\\\\ \propto p\left(\boldsymbol{h},\boldsymbol{v}\right) \tag{19.58}\\\\ =p\left(h_1\right)p\left(h_2\right)p\left(\boldsymbol{v}\mid\boldsymbol{h}\right)\tag{19.59}\\\\ \propto \exp\left(-\frac{1}{2}\left[ h_1^2 + h_2^2 + \left(v-h_1w_1-h_2w_2\right)^2 \right]\right)\tag{19.60}\\\\ =\exp\left(h_1^2+h_2^2+v^2+h_1^2w_1^2+h_2^2w_2^2-2vh_1w_1-2vh_2w_2+2h_1w_1h_2w_2\right). \tag{19.61} \end{align}\]

Bởi sự xuất hiện của các nhân tử chứa tích của $h_1$ và $h_2$, có thể thấy rằng hậu nghiệm thực sự không được phân tích thành nhân tử theo $h_1$ và $h_2$.

Áp dụng phương trình $19.56$, ta có

\[\begin{align} \tilde{q} \left( h_1 \mid \boldsymbol{v} \right) \tag{19.62} \\\\ = \exp \left( \mathbb{E}_{h_2 \sim q\left(h_2\mid\boldsymbol{v} \right)} \log\tilde{p} \left( \boldsymbol{v}, \boldsymbol{h} \right) \right) \tag{19.63} \\\\ = \exp \left( - \frac{1}{2} \mathbb{E}_{h_2 \sim q (h_2 \mid \boldsymbol{v})} [ h_1^2 + h_2^2 + v^2 + h_1^2 w_1^2 +h_2^2 w_2^2 \\\\ - 2vh_1 w_1 - 2vh_2 w_2 + 2h_1 w_1 h_2 w_2] \right) \tag{19.64 , 19.65} \end{align}\]

Như vậy, ta thấy rằng thực tế chỉ có hai giá trị cần thu được từ $q(h_2|\boldsymbol{v})$ là $\mathbb{E}_{h_2\sim q(h_2\mid\boldsymbol{v})}[h_2]$ và $\mathbb{E}_{h_2\sim q(h_2\mid\boldsymbol{v})}[h_2^2]$. Kí hiệu chúng là $\langle h_2\rangle$ và $\langle h_2^2\rangle$, ta có

\[\begin{align} \tilde{q}\left(h_1 \mid \boldsymbol{v} \right) = \exp \left(-\frac{1}{2} \left[h_1^2 + \langle h_2^2\rangle + v^2 + h_1^2w_1^2 +\langle h_2^2\rangle w_2^2 \\\\ -2vh_1 w_1 - 2v\langle h_2\rangle w_2 + 2h_1 w_1\langle h_2\rangle w_2 \right] \right). \tag{19.66 , 19.67} \end{align}\]

Có thể thấy rằng $\tilde{q}$ có dạng hàm của một phân phối Gauss. Vì vậy có thể kết luận rằng $q(\boldsymbol{h}|\boldsymbol{v}) = \mathcal{N}(\boldsymbol{h};\boldsymbol{\mu}, \boldsymbol{\beta}^{-1})$ với $\boldsymbol{\mu}$ và ma trận đường chéo $\boldsymbol{\beta}$ là các tham số biến phân có thể được tối ưu bằng bất kỳ kĩ thuật nào. Điều quan trọng cần nhắc lại là chúng ta chưa từng giả định $q$ sẽ là Gauss; dạng Gauss của nó được suy ra một cách tự động bằng cách sử dụng phương pháp tính biến phân để tối ưu $q$ theo $\mathcal{L}$. Sử dụng cách tiếp cận tương tự trên các mô hình khác nhau có thể tạo ra các dạng hàm khác nhau của $q$.

Trường hợp trên, hiển nhiên, chỉ là một ví dụ đơn giản phục vụ mục đích minh họa. Để tìm hiểu thêm về ứng dụng thực tế của học biến phân với biến tiềm ẩn liên tục trong học sâu, tham khảo [Goodfellow et al., 2013d].

19.4.4 Tương tác giữa học và suy diễn

Sử dụng suy diễn xấp xỉ như một phần của một thuật toán học tập làm ảnh hưởng tới quá trình học, và do đó, theo hiệu ứng domino, ảnh hưởng tới độ chính xác của thuật toán suy diễn.

Cụ thể, thuật toán huấn luyện có xu hướng điều chỉnh mô hình theo hướng hiện thực hóa các giả định xấp xỉ ẩn sau thuật toán suy diễn xấp xỉ. Khi huấn luyện tham số, học biến phân làm tăng giá trị

\[\begin{align} \mathbb{E}_{\mathbf{h} \sim q} \log p(\boldsymbol{v, h}). \tag{19.68} \end{align}\]

Với một $\boldsymbol{v}$ cụ thể, quá trình học làm tăng $p(\boldsymbol{h}\mid\boldsymbol{v})$ ở những giá trị $\boldsymbol{h}$ có xác suất theo $q(\boldsymbol{h}\mid\boldsymbol{v})$ cao và giảm $p(\boldsymbol{h}\mid\boldsymbol{v})$ ở những giá trị $\boldsymbol{h}$ có xác suất theo $q(\boldsymbol{h}\mid\boldsymbol{v})$ thấp.

Hành vi này khiến các giả định xấp xỉ trở thành những lời tiên tri tự ứng nghiệm. Nếu huấn luyện một mô hình với một hậu nghiệm xấp xỉ đơn mode, chúng ta sẽ thu được một mô hình với hậu nghiệm thực gần với dạng đơn mode hơn nhiều so với mô hình sẽ thu được khi huấn luyện với suy diễn chính xác.

Việc tính toán mức độ nguy hại thực sự mà phép xấp xỉ biến phân mang đến là rất khó khăn. Thường thì ta sẽ ước lượng $\log p(v,\boldsymbol{\theta})$ sau khi huấn luyện mô hình và nhận thấy rằng sự chênh lệch của nó so với $\mathcal{L}(\boldsymbol{v},\boldsymbol{\theta},q)$ là nhỏ. Từ đó ta có thể kết luận rằng phép xấp xỉ biến phân chính xác đối với giá trị $\boldsymbol{\theta}$ nhất định thu được từ quá trình học. Tuy nhiên, nhìn chung ta không nên kết luận rằng phép xấp xỉ biến phân này là chính xác hay phép xấp xỉ biến phân đã không gây thiệt hại đáng kể cho quá trình học. Để đo lường tác hại thực sự khi sử dụng xấp xỉ biến phân, ta cần biết giá trị của $\boldsymbol{\theta}^\star$ = $\max_{\boldsymbol{\theta}} \log p(\boldsymbol{v};\boldsymbol{\theta})$. Hai khả năng sau có thể đồng thời xảy ra: $\mathcal{L}(\boldsymbol{v},\boldsymbol{\theta},q) \approx \log p(v;\theta)$ và $\log p(\boldsymbol{v};\boldsymbol{\theta}) \ll \log p(\boldsymbol{v};\boldsymbol{\theta}^\star)$. Nếu $\max_q \mathcal{L}(\boldsymbol{v},\boldsymbol{\theta}^\star,q) \ll \log p(\boldsymbol{v};\boldsymbol{\theta}^\star)$, bởi $\boldsymbol{\theta}^\star$ tương ứng với một phân phối hậu nghiệm quá phức tạp mà họ phân phối $q$ của chúng ta không thể nắm bắt, khi đó quá trình học sẽ không bao giờ tiếp cận giá trị $\boldsymbol{\theta}^\star$. Vấn đề này rất khó bị phát hiện, bởi vì ta chỉ có thể biết chắc rằng nó đã xảy ra nếu có một thuật toán ưu việt có khả năng tìm ra $\boldsymbol{\theta}^\star$ để so sánh.

19.5 Học suy diễn xấp xỉ

Suy diễn có thể được xem như một thủ tục tối ưu hóa nhằm tăng giá trị của một hàm $\mathcal{L}$. Chúng tôi đã giới thiệu một số phương pháp để thực hiện tối ưu hóa một cách tường minh thông qua thủ tục lặp như sử dụng phương trình điểm cố định hay tối ưu hóa dựa trên gradient, tuy nhiên những hướng tiếp cận này thường rất đắt đỏ và tốn thời gian. Thay vào đó, ta có thể sử dụng một phương pháp giúp tiết kiệm chi phí đó là học cách thực hiện suy diễn xấp xỉ. Cụ thể, ta coi quá trình tối ưu như một hàm $f$ ánh xạ trực tiếp một đầu vào $\boldsymbol{v}$ tới một phân phối xấp xỉ $q^\star = \arg \max_q \mathcal{L}(\boldsymbol{v},q)$. Khi đã coi quá trình tối ưu hóa như một hàm số, ta có thể xấp xỉ nó bằng một mạng neuron thực hiện xấp xỉ $\hat{f}(\boldsymbol{v};\boldsymbol{\theta})$.

19.5.1 Thức-ngủ

Một trong những khó khăn chính khi huấn luyện mô hình suy diễn $\boldsymbol{h}$ từ $\boldsymbol{v}$ là ta không có một \gls{tap-huan-luyen} có giám sát. Với mỗi $\boldsymbol{v}$, ta không biết $\boldsymbol{h}$ phù hợp là gì. Ánh xạ từ $\boldsymbol{v}$ tới $\boldsymbol{h}$ phụ thuộc vào họ mô hình được lựa chọn, và tiến hóa xuyên suốt quá trình học khi $\boldsymbol{\theta}$ thay đổi. Thuật toán thức-ngủ (wake-sleep; Hinton et al., 1995b; Frey et al. 1996) giải quyết vấn đề này bằng cách lấy mẫu cả $\boldsymbol{h}$ và $\boldsymbol{v}$ từ phân phối mô hình. Ví dụ, trong một mô hình có hướng, bước này có thể được thực hiện với chi phí thấp bằng cách thực hiện phép lấy mẫu di truyền, bắt đầu từ $\boldsymbol{h}$ và kết thúc ở $\boldsymbol{v}$. Sau đó, mạng suy diễn được huấn luyện để thực hiện ánh xạ ngược: dự đoán $\boldsymbol{h}$ nào dẫn tới $\boldsymbol{v}$ hiện tại. Hạn chế duy nhất của phương pháp này là chúng ta chỉ có thể huấn luyện mạng suy diễn trên những giá trị $\boldsymbol{v}$ mà mô hình gán xác suất cao. Khi quá trình học mới bắt đầu, phân phối mô hình sẽ không giống với phân phối dữ liệu, mạng suy diễn vì thế sẽ không có cơ hội học trên những mẫu giống với dữ liệu.

Trong phần $18.2$, ta đã biết một giải thích khả dĩ cho vai trò của giấc mơ đối với con người và động vật: giấc mơ có thể cung cấp mẫu ở pha âm mà thuật toán huấn luyện Monte Carlo sử dụng để ước lượng gradient pha âm của logarit phân hàm trong mô hình vô hướng. Một cách giải thích khả dĩ khác cho giấc mơ sinh học đó là nó cung cấp các mẫu từ $p(\boldsymbol{h},\boldsymbol{v})$ được sử dụng để huấn luyện một mạng suy diễn để dự đoán $\boldsymbol{h}$ khi biết $\boldsymbol{v}$. Giải thích này theo khía cạnh nào đó có vẻ hợp lý hơn giải thích dựa trên phân hàm. Các thuật toán Monte Carlo thường không thực hiện tốt nếu chúng chỉ thực thi pha dương của gradient trong một vài bước và sau đó là với pha âm trong một vài bước. Loài người và động vật thường thức trong nhiều giờ liên tục rồi sau đó ngủ trong nhiều giờ liên tục. Chưa rõ liệu lịch trình này có thể hỗ trợ việc huấn luyện Monte Carlo của một mô hình vô hướng như thế nào. Tuy nhiên, các thuật toán học dựa trên cực đại hóa $\mathcal{L}$ có thể được thực thi với chu kỳ cải thiện $q$ kéo dài và chu kỳ cải thiện $\boldsymbol{\theta}$ kéo dài. Nếu vai trò của giấc mơ sinh học là huấn luyện mạng để dự đoán $q$, thì điều này giải thích tại sao các loài động vật có khả năng thức trong nhiều giờ (thời gian thức càng thức lâu thì khoảng cách giữa $\mathcal{L}$ và $\log p(\boldsymbol{v})$ càng lớn, tuy nhiên $\mathcal{L}$ sẽ luôn là một cận dưới) cũng như duy trì giấc ngủ trong nhiều giờ (mô hình sinh mẫu sẽ không tự điều chỉnh trong giấc ngủ) mà không gây hại đến các mô hình nội bộ của chúng. Hiển nhiên, những ý tưởng này hoàn toàn là phỏng đoán, không có một minh chứng rõ ràng nào về việc giấc mơ thực hiện một trong những mục đích trên. Giấc mơ cũng có thể trợ giúp học tăng cường thay vì mô hình hóa xác suất, bằng cách lấy mẫu các kinh nghiệm tổng hợp từ mô hình chuyển tiếp của động vật để huấn luyện bản năng của nó. Giấc ngủ cũng có thể phục vụ những mục đích khác chưa được khám phá bởi cộng đồng học máy.

19.5.2 Các dạng thức khác của học suy diễn

Chiến lược học cách suy diễn xấp xỉ cũng từng được áp dụng cho các mô hình khác. Salakhutdinov và Larochelle (2010) chỉ ra rằng trong một DBM, một lần lan truyền qua mạng suy diễn đã được huấn luyện có thể thực hiện suy diễn nhanh hơn so với việc lặp lại các phương trình điểm cố định trường trung bình. Thủ tục huấn luyện dựa trên việc thực thi một mạng suy diễn, sau đó áp dụng một bước của trường trung bình để cải thiện ước lượng của nó, và huấn luyện mạng suy diễn để xuất ra ước lượng đã được tinh chỉnh thay vì ước lượng ban đầu.

Như đã thấy trong phần $14.8$, mô hình phân rã thưa tiên đoán (predictive sparse decomposition - PSD) huấn luyện một mạng mã hóa nông để dự đoán một bộ mã thưa cho dữ liệu đầu vào. Mô hình này có thể được xem như một sự lai tạp giữa bộ tự mã hóa và mã hóa thưa. Ta có thể đề xuất ý nghĩa về mặt xác suất cho mô hình này là coi bộ mã hóa như đang học cách suy diễn MAP. Do tính nông của bộ mã hóa, PSD không có khả năng thực hiện sự cạnh tranh giữa các đơn vị như ta đã thấy trong suy diễn trường trung bình. Vấn đề này có thể được giải quyết bằng cách huấn luyện một bộ mã hóa sâu để thực hiện học suy diễn xấp xỉ, giống như trong phương pháp ITSA [Greror and LeCun, 2010b].

Học suy diễn xấp xỉ gần đây đã trở thành một trong những hướng tiếp cận chủ đạo cho mô hình sinh dữ liệu, với đại diện tiêu biểu là bộ tự mã hóa biến phân [Kingma, 2013; Rezende et al., 2014]. Trong phương pháp tiếp cận khéo léo này, ta không cần xây dựng mục tiêu tường minh cho mạng suy diễn. Thay vào đó, mạng suy diễn chỉ đơn giản được sử dụng để xác định $\mathcal{L}$, rồi sau đó các tham số của mạng suy diễn sẽ được điều chỉnh để tăng giá trị của $\mathcal{L}$. Mô hình này sẽ được mô tả chi tiết trong phần $20.10.3$.

Với suy diễn xấp xỉ, chúng ta có thể huấn luyện và sử dụng nhiều loại mô hình khác nhau. Nhiều trong số đó sẽ được mô tả trong chương tiếp theo.


Việt hóa hình ảnh: Phạm Hoàng Nhật
Người dịch: Nguyễn Hoàng Dũng, Hưng Nguyễn, Tuan Pham, Lại Minh Duy, Trương Thảo Nguyên, Hung Le

DeepLearning Book VN

DeepLearning Book VN

Sách DeepLearning phiên bản Việt ngữ

rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora