14.2. Huấn luyện Gần đúng

Hãy nhớ lại nội dung của phần trước. Đặc điểm cốt lõi của mô hình skip-gram là việc sử dụng các toán tử softmax để tính xác suất có điều kiện sinh ra từ ngữ cảnh \(w_o\) dựa trên từ đích trung tâm cho trước \(w_c\).

(14.2.1)\[P(w_o \mid w_c) = \frac{\text{exp}(\mathbf{u}_o^\top \mathbf{v}_c)}{ \sum_{i \in \mathcal{V}} \text{exp}(\mathbf{u}_i^\top \mathbf{v}_c)}.\]

Mất mát logarit tương ứng với xác suất có điều kiện trên được tính như sau

(14.2.2)\[-\log P(w_o \mid w_c) = -\mathbf{u}_o^\top \mathbf{v}_c + \log\left(\sum_{i \in \mathcal{V}} \text{exp}(\mathbf{u}_i^\top \mathbf{v}_c)\right).\]
Do toán tử softmax xem xét từ ngữ cảnh có thể là bất kỳ từ nào trong từ điển \(\mathcal{V}\),
nên mất mát được đề cập ở trên thật ra bao gồm phép lấy tổng qua tất cả phần tử trong từ điển. Ở phần trước, ta đã biết rằng cả hai mô hình skip-gram và CBOW đều tính xác suất có điều kiện thông qua toán tử softmax, do đó việc tính toán gradient cho mỗi bước bao gồm phép lấy tổng qua toàn bộ các phần tử trong từ điển. Đối với các từ điển lớn hơn với hàng trăm nghìn hoặc thậm chí hàng triệu từ, chi phí tính toán cho mỗi gradient có thể rất cao. Để giảm độ phức tạp tính toán này, chúng tôi sẽ giới thiệu hai phương pháp huấn luyện gần đúng trong phần này, đó là lấy mẫu âm (negative sampling) và toán tử softmax phân cấp (hierarchical softmax). Do không có sự khác biệt lớn giữa mô hình skip-gram và mô hình CBOW, trong phần này ta chỉ sử dụng mô hình skip-gram làm ví dụ để giới thiệu hai phương pháp huấn luyện trên.

14.2.1. Lấy mẫu Âm

Phương pháp lấy mẫu âm sửa đổi hàm mục tiêu ban đầu. Cho một cửa sổ ngữ cảnh với từ đích trung tâm \(w_c\), ta xem việc từ ngữ cảnh \(w_o\) xuất hiện trong cửa sổ ngữ cảnh là một sự kiện và tính xác suất của sự kiện này theo

(14.2.3)\[P(D=1\mid w_c, w_o) = \sigma(\mathbf{u}_o^\top \mathbf{v}_c),\]

Ở đây, hàm \(\sigma\) có cùng định nghĩa với hàm kích hoạt sigmoid:

(14.2.4)\[\sigma(x) = \frac{1}{1+\exp(-x)}.\]

Đầu tiên, ta sẽ xem xét việc huấn luyện vector từ (word vector) bằng cách cực đại hóa xác suất kết hợp của tất cả các sự kiện trong chuỗi văn bản. Cho một chuỗi văn bản có độ dài \(T\), ta giả sử rằng từ tại bước thời gian \(t\)\(w^{(t)}\) và kích thước cửa sổ ngữ cảnh là \(m\). Bây giờ, ta sẽ xem xét việc cực đại hóa xác suất kết hợp

(14.2.5)\[\prod_{t=1}^{T} \prod_{-m \leq j \leq m,\ j \neq 0} P(D=1\mid w^{(t)}, w^{(t+j)}).\]

Tuy nhiên, các sự kiện trong mô hình chỉ xem xét các mẫu dương. Trong trường hợp này, chỉ khi tất cả các vector từ bằng nhau và giá trị của chúng tiến tới vô cùng, xác suất kết hợp trên mới có thể đạt giá trị cực đại bằng 1. Rõ ràng, các vector từ như vậy là vô nghĩa. Phương pháp lấy mẫu âm khiến hàm mục tiêu có ý nghĩa hơn bằng cách lấy thêm các mẫu âm. Giả sử sự kiện \(P\) xảy ra khi từ ngữ cảnh \(w_o\) xuất hiện trong cửa sổ ngữ cảnh của từ đích trung tâm \(w_c\), và ta lấy mẫu \(K\) từ không xuất hiện trong cửa sổ ngữ cảnh, đóng vai trò là các từ nhiễu, theo phân phối \(P(w)\). Ta giả sử sự kiện từ nhiễu \(w_k\)(\(k=1, \ldots, K\)) không xuất hiện trong cửa sổ ngữ cảnh của từ đích trung tâm \(w_c\)\(N_k\). Giả sử các sự kiện \(P\)\(N_1, \ldots, N_K\) cho cả mẫu dương lẫn và mẫu âm là độc lập với nhau. Bằng cách xem xét phương pháp lấy mẫu âm, ta có thể viết lại xác suất kết hợp chỉ xem xét các mẫu dương ở trên như sau

(14.2.6)\[\prod_{t=1}^{T} \prod_{-m \leq j \leq m,\ j \neq 0} P(w^{(t+j)} \mid w^{(t)}),\]

Ở đây, xác suất có điều kiện được tính gần đúng bằng

(14.2.7)\[P(w^{(t+j)} \mid w^{(t)}) =P(D=1\mid w^{(t)}, w^{(t+j)})\prod_{k=1,\ w_k \sim P(w)}^K P(D=0\mid w^{(t)}, w_k).\]

Đặt chỉ số của từ \(w^{(t)}\) trong chuỗi văn bản tại bước thời gian \(t\)\(i_t\) và chỉ số của từ nhiễu \(w_k\) trong từ điển là \(h_k\). Mất mát logarit cho xác suất có điều kiện ở trên là

(14.2.8)\[\begin{split}\begin{aligned} -\log P(w^{(t+j)} \mid w^{(t)}) =& -\log P(D=1\mid w^{(t)}, w^{(t+j)}) - \sum_{k=1,\ w_k \sim P(w)}^K \log P(D=0\mid w^{(t)}, w_k)\\ =&- \log\, \sigma\left(\mathbf{u}_{i_{t+j}}^\top \mathbf{v}_{i_t}\right) - \sum_{k=1,\ w_k \sim P(w)}^K \log\left(1-\sigma\left(\mathbf{u}_{h_k}^\top \mathbf{v}_{i_t}\right)\right)\\ =&- \log\, \sigma\left(\mathbf{u}_{i_{t+j}}^\top \mathbf{v}_{i_t}\right) - \sum_{k=1,\ w_k \sim P(w)}^K \log\sigma\left(-\mathbf{u}_{h_k}^\top \mathbf{v}_{i_t}\right). \end{aligned}\end{split}\]

Ở đây, tính toán gradient trong mỗi bước huấn luyện không còn liên quan đến kích thước từ điển, mà có quan hệ tuyến tính với \(K\). Khi \(K\) có giá trị nhỏ hơn, thì phương pháp lấy mẫu âm có chi phí tính toán cho mỗi bước thấp hơn.

14.2.2. Softmax Phân cấp

Softmax phân cấp (Hierarchical softmax) là một phương pháp huấn luyện gần đúng khác. Phương pháp này sử dụng cấu trúc dữ liệu cây nhị phân như minh hoạ trong Fig. 14.2.1, với các nút lá của cây biểu diễn tất cả các từ trong từ điển \(\mathcal{V}\).

../_images/hi-softmax.svg

Fig. 14.2.1 Softmax Phân cấp. Mỗi nút lá của cây biểu diễn một từ trong từ điển.

Ta giả định \(L(w)\) là số nút trên đường đi (gồm cả gốc lẫn các nút lá) từ gốc của cây nhị phân đến nút lá của từ \(w\). Gọi \(n(w, j)\) là nút thứ \(j\) trên đường đi này, với vector ngữ cảnh của từ là \(\mathbf{u}_{n(w, j)}\). Ta sử dụng ví dụ trong Fig. 14.2.1, theo đó \(L(w_3) = 4\). Softmax phân cấp tính xấp xỉ xác suất có điều kiện trong mô hình skip-gram như sau

(14.2.9)\[P(w_o \mid w_c) = \prod_{j=1}^{L(w_o)-1} \sigma\left( [\![ n(w_o, j+1) = \text{leftChild}(n(w_o, j)) ]\!] \cdot \mathbf{u}_{n(w_o, j)}^\top \mathbf{v}_c\right),\]

Trong đó hàm \(\sigma\) có định nghĩa giống với hàm kích hoạt sigmoid, và \(\text{leftChild}(n)\) là nút con bên trái của nút \(n\). Nếu \(x\) đúng thì \([\![x]\!] = 1\); ngược lại \([\![x]\!] = -1\). Giờ ta sẽ tính xác suất có điều kiện của việc sinh ra từ \(w_3\) dựa theo từ \(w_c\) được cho trong Fig. 14.2.1. Ta cần tìm tích vô hướng của vector từ \(\mathbf{v}_c\) (cho từ \(w_c\)) với mỗi vector nút mà không phải là nút lá trên đường đi từ nút gốc đến \(w_3\). Do trong cây nhị phân, đường đi từ nút gốc đến nút lá \(w_3\) là trái, phải, rồi lại trái (đường đi được in đậm trong Fig. 14.2.1) nên ta có

(14.2.10)\[P(w_3 \mid w_c) = \sigma(\mathbf{u}_{n(w_3, 1)}^\top \mathbf{v}_c) \cdot \sigma(-\mathbf{u}_{n(w_3, 2)}^\top \mathbf{v}_c) \cdot \sigma(\mathbf{u}_{n(w_3, 3)}^\top \mathbf{v}_c).\]

Do \(\sigma(x)+\sigma(-x) = 1\) nên điều kiện mà tổng xác suất có điều kiện của bất kì từ nào trong từ điển \(\mathcal{V}\) được sinh ra dựa trên từ đích trung tâm cho trước \(w_c\) phải bằng 1 cũng được thoả mãn:

(14.2.11)\[\sum_{w \in \mathcal{V}} P(w \mid w_c) = 1.\]

Hơn nữa, do độ lớn của \(L(w_o)-1\)\(\mathcal{O}(\text{log}_2|\mathcal{V}|)\) nên khi kích thước từ điển \(\mathcal{V}\) lớn, chi phí tính toán phụ trợ tại mỗi bước trong softmax phân cấp được giảm đáng kể so với khi không áp dụng huấn luyện gần đúng.

14.2.3. Tóm tắt

  • Lấy mẫu âm xây dựng hàm mất mát bằng cách xét các sự kiện độc lập bao gồm cả mẫu âm lẫn mẫu dương. Chi phí tính toán gradient tại mỗi bước trong quá trình huấn luyện có mối quan hệ tuyến tính với số từ nhiễu mà ta lấy mẫu.
  • Softmax phân cấp sử dụng một cây nhị phân và xây dụng hàm mất mát dựa trên đường đi từ nút gốc đến nút lá. Chi phí phụ trợ khi tính toán gradient tại mỗi bước trong quá trình huấn luyện có mối quan hệ theo hàm logarit với kích thước từ điển.

14.2.4. Bài tập

  1. Trước khi đọc phần tiếp theo, hãy nghĩ xem ta nên lấy mẫu các từ nhiễu như thế nào trong kĩ thuật lấy mẫu âm.
  2. Điều gì giúp cho công thức cuối cùng trong phần này là đúng?
  3. Ta có thể áp dụng lấy mẫu âm và softmax phân cấp như thế nào trong mô hình skip-gram?

14.2.5. Thảo luận

14.2.6. Những người thực hiện

Bản dịch trong trang này được thực hiện bởi:

  • Đoàn Võ Duy Thanh
  • Nguyễn Văn Quang
  • Nguyễn Văn Cường
  • Đỗ Trường Giang
  • Nguyễn Lê Quang Nhật
  • Phạm Minh Đức
  • Lê Khắc Hồng Phúc

Lần cập nhật gần nhất: 12/09/2020. (Cập nhật lần cuối từ nội dung gốc: 29/08/2020)