Áp dụng Convolutional Neural Networks cho Xử lý ngôn ngữ tự nhiên

Illustration of a Convolutional Neural Network (CNN)
Illustration of a Convolutional Neural Network (CNN)

bài viết trước, ta đã tìm hiểu về mô hình Convolutional Neural Networks (CNNs) ứng dụng như thế nào trong Thị giác máy tính (Computer Vision). Trong phần này, tôi xin tiếp tục bài viết của mình về cách làm thế nào để ứng dụng CNNs vào xử lý ngôn ngữ tự nhiên (Natural Language Processing).


CNNs ứng dụng vào NLP

Thay vì sử dụng các pixel như trong xử lý ảnh, trong xử lý ngôn ngữ tự nhiên, ta biến đổi các câu hay văn bản thành một ma trận đầu vào. Mỗi dòng của ma trận tương ứng với một token (một từ trong câu, nhưng cũng có thể là một ký tự – character). Nghĩa là, mỗi dòng là một vector đại diện cho một từ. Thông thường, những vector này là word embedding (word2vec hay GloVe), nhưng chúng cũng có thể là one-hot vector (một cách đánh chỉ số sự xuất hiện của từ này trong dữ liệu từ điển – vocabulary). Giả sử ta có một câu gồm 10 từ được biểu diễn thành word embedding vector gồm 100 chiều, ta sẽ có đầu vào là một ma trận 10×100, tương ứng trong xử lý ảnh, ta có một bức ảnh 10×100 pixel.

A Word is Worth a Thousand Vectors

Trong xử lý ảnh, filter của chúng ta sẽ duyệt (sliding window) qua từng mảng cục bộ (local patches), nhưng trong xử lý ngôn ngữ, ta sẽ duyệt qua từng từ một. Nghĩa là, ta sẽ duyệt qua từng dòng của ma trận đầu vào. Khi đó, chiều rộng của filter sẽ bằng với chiều rộng của ma trận đầu vào (trong ví dụ trên, chiều rộng bằng 10). Chiều cao (region size) của filter có thể tùy ý thay đổi sao cho phù hợp, thường là từ 2 đến 5 từ (như 2 đến 5-grams trong n-grams).

Quan sát hình minh họa ở đầu bài viết, ta có đầu vào là một câu gồm 7 từ (kể cả ký tự !) “I like this movie very much !”. Các từ này được chuyển đổi thành word embedding có số chiều d = 5. Khi đó, ta có một ma trận đầu vào là 7×5. Ở layer tiếp theo, ta sử dung các filter với region size khác nhau gồm 2, 3, và 4. Gấp đôi số lượng từng dạng filter này lên, ta có tổng cộng 6 filter. Tiếp đến, ta thực hiện nhân tích chập tương ứng với từng filter và cho qua activate function (softmax hay tanh) để thu được các vector đầu ra. Sau đó, ta sẽ cho các vector này đi qua bộ lọc max-pooling (average-pooling hay các phép toán tương tự khác), mục đích chính là để chuẩn hóa đầu ra các vector sao cho chúng có số chiều là như nhau. Ở layer cuối cùng, tùy theo bài toán cuả chúng ta là Text classification, Sentiment Analysis, Spam Detection hay Topic Categorization mà ta sẽ giới hạn số chiều của vector phân lớp này thành 2 hay nhiều chiều tương ứng.

Max pooling in CNN
Max pooling in CNN

Đánh giá

CNNs phù hợp với các tác vụ phân lớp như Sentiment Analysis, Spam Detection hay Topic Categorization. Các phép toán convolution và pooling làm thất thoát thông tin về thứ tự cục bộ giữa các từ (local order of words). Do đó, các tác vụ liên quan đến gán nhãn cho chuỗi (sequence tagging) như POS Tagging hay Entity Extraction sẽ không phù hợp khi sử dụng kiến trúc của CNNs.

Một ưu điểm lớn của CNNs là tốc độ tính toán. Đối với các phép toán convolution, ta hoàn toàn có thể triển khai trên các phần cứng có tốc độ tính toán cao như GPUs (card đồ họa máy tính). Khi so sánh với mô hình truyền thống như n-grams, CNNs biểu diễn thông tin hiệu quả hơn. Cho tập dữ liệu từ điển, ở cấp độ 3-grams, ta đã tốn rất nhiều chi phí để tính toán. Ngay cả Google cũng không thể xây dựng hệ thống của mình nhiều hơn 5-grams. Thay vì xây dựng một hệ thống 5-grams lớn như vậy, CNNs sẽ xây dựng các convolution filter có khả năng biểu diễn trừu tượng cho toàn bộ n-grams này. Nói cách khác, các filter này có khả năng nắm bắt thông tin tương tự như n-grams nhưng lại có cách biểu diễn tinh gọn hơn.

Xem thêm về cách cài đặt

Tham khảo

2 thoughts on “Áp dụng Convolutional Neural Networks cho Xử lý ngôn ngữ tự nhiên

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s