Thứ Ba, 4 tháng 12, 2018

[Natural Language Processing] Giới thiệu về RNN trong xử lý ngôn ngữ tự nhiên

RNN là một biến thể của mạng neuron (Neraul Network) trong đó ta có thể xử lý các chuỗi dữ liệu liên quan tới nhau ví dụ trong các ứng dụng như nhận dạng giọng nói, mô hình hóa ngôn ngữ, dịch ngôn ngữ hay viết tiêu đề cho ảnh tự động.

Ta có thể thấy tại mỗi bước của RNN, chúng đều sử dụng chung tham số U (ma trận trọng số cho input), W (ma trận chuyển trạng thái) và vocabulary V. Ta thấy rằng, mỗi state sẽ phụ thuộc vào kết quả của state trước đó, nhưng việc ta xử lý 1 chuỗi dữ liệu dài trong thực tế là rất khó.

Do đó, ta sẽ phải sử dụng các kiến trúc khác nhau là biến thể của RNN ví dụ như LSTM để giải quyết vấn đề này.

Để hiểu rõ hơn, ta có ví dụ như sau:



Trong ví dụ này, V là [h,e,l,o] gồm 4 phần tử mà training sequence của ta là từ "hello". Khi này, với một kí tự ví dụ như 'h', ta thu được đầu ra là từ 'e', từ 'e' này lại là đầu vào để dự đoán từ tiếp theo trong chuỗi. Quá trình này kết thúc, ta thu được từ 'hello'.

Hình dưới đây thể hiện rõ hơn quá trình hoạt động của RNN.


Trong hình trên, Lt-1, Lt và Lt+1 là thứ tự của các layer.
Output của trạng thái trước sẽ là input của trạng thái sau, ví dụ như Ot-1 sẽ tương ứng với xt.


Không có nhận xét nào:

Đăng nhận xét