Long short-term memory trong xử lý ngôn ngữ tự nhiên

Năm 2017, Google công bố bài báo “Attention Is All You Need” thông tin về Transformer như tạo ra bước ngoặt mới trong lĩnh vực NLP: “𝑻𝒓𝒂𝒏𝒔𝒇𝒐𝒓𝒎𝒆𝒓 𝑵𝒆𝒖𝒓𝒂𝒍 𝑵𝒆𝒕𝒘𝒐𝒓𝒌 𝒊𝒔 𝒕𝒉𝒆 𝒄𝒖𝒓𝒓𝒆𝒏𝒕 𝒔𝒕𝒂𝒕𝒆-𝒐𝒇-𝒕𝒉𝒆-𝒂𝒓𝒕 𝒕𝒆𝒄𝒉𝒏𝒊𝒒𝒖𝒆 𝒊𝒏 𝒕𝒉𝒆 𝒇𝒊𝒆𝒍𝒅 𝒐𝒇 𝑵𝑳𝑷”. Trước khi Transformer ra đời, hầu như các tác vụ xử lý ngôn ngữ tự nhiên, đặc biệt trong mảng Machine Translation (dịch máy) đều sử dụng kiến trúc Recurrent Neural Networks (RNNs). Do phải xử lý câu đầu vào một cách tuần tự nên nhược điểm của RNNs là tốc độ xử lý chậm và hạn chế trong việc biểu diễn sự phụ thuộc xa giữa các từ trong một câu.. 

Khi Transformer xuất hiện, các vấn đề mà RNNs gặp phải gần như đã được giải quyết triệt để. Sau này, Transformer là nền tảng cho các mô hình nổi tiếng khác như Bidirectional Encoder Representations from Transformer – BERT (2019), mô hình mà Google đã áp dụng cho cỗ máy tìm kiếm của mình hay trong AlphaStar của DeepMind – một chương trình có khả năng đánh bại những người chơi đỉnh cao của Starcraft. Bài viết này chỉ ra những điểm tiên tiến mà Transformer đã mang đến so với các mô hình nơ ron nhân tạo trước đó. 

Recurrent Neural Networks (RNNs)

Recurrent Neural Networks (RNNs) – mạng nơ-ron hồi quy, được xây dựng  từ các Neural Networks – mạng nơ-ron truyền thống dùng để mô hình hoá các chuỗi ví dụ như chuỗi các từ trong một câu. RNNs được gọi là hồi quy (Recurrent) bởi lẽ chúng thực hiện cùng một tác vụ cho tất cả các phần tử của một chuỗi với đầu ra tại mỗi phần tử phụ thuộc vào các tính toán trên  các phần tử  trước đó. Nói cách khác mạng RNNs được thiết kế để có khả năng ghi nhớ các thông tin của các phần tử phía trước, do đó nó phù hợp để biểu diễn mối quan hệ phụ thuộc tuần tự của các phần tử trong 1 chuỗi.

Do tính chất trên, nên mạng RNNs từng được áp dụng nhiều trong các bài toán xử lý ngôn ngữ sử dụng học sâu. Ví dụ mô hình sequence-to-sequence hay được sử dụng nhiều trong bài toán dịch máy (machine translation). Mô hình này nhận input là một chuỗi là câu cần dịch sau đó mã hoá câu này  và giải mã ramột chuỗi chính là câu được dịch. Quá trình mã hoá (encoder) và giải mã (decoder) trong mô hình này đều sử dụng mạng RNNs. Ngoài ra các mạng RNNs cũng hay được sử dụng để xử lý các dữ liệu dạng chuỗi khác ví dụ như để dự đoán thị trường chứng khoán.

Tuy nhiên, sau thời gian áp dụng, RNNs cũng thể hiện một số điểm yếu nhất định.

  • Tốc độ huấn luyện (train) rất chậm, ngay cả khi sử dụng phiên bản Truncated Backpropagation để train.
  • Xử lý chưa hiệu quả với các chuỗi dài do hiện tượng Gradient Vanishing. Khi số lượng các từ ngày càng tăng, thì số lượng units cũng ngày càng lớn, gradient giảm dần ở các units cuối do công thức Đạo hàm chuỗi, dẫn đến mất thông tin về sự phụ thuộc xa giữa các units.

Ví dụ: Với câu “I grew up in Germany with my parents, I spent many years and have proper knowledge about their culture, that’s why I speak fluent ____.” Chúng ta dễ dàng đoán ra từ còn thiếu là German, vì nó liên quan đến “grew up in Germany”, nhưng RNNs lại không thể đoán ra vì khoảng cách quá xa giữa từ cần đoán và thông tin này. 

Long short-term memory trong xử lý ngôn ngữ tự nhiên
Mô hình Long Short Term Memory (LSTM). Nguồn ảnh: colah’s (CC0).

Sau này, người ta đã phát triển mô hình Long Short Term Memory (LSTM) để giải quyết vấn đề Gradient Vanishing của RNNs. Tuy nhiên, với sự phức tạp của LSTM, thì tốc độ train đã trở nên chậm hơn nhiều lần so với RNNs. Vấn đề này ảnh hưởng đáng kể tới tốc độ xử lý để phát triển sản phẩm của NLP nên LSTM cũng chưa được đánh giá cao. 

Transformer Neural Network – Mạng nơ-ron nhân tạo giải quyết triệt để 2 bài toán của RNNs, mở ra kỷ nguyên tiên tiến trong lĩnh vực NLP. 

Transformer là một mô hình học sâu được thiết kế để phục vụ giải quyết nhiều bài toán trong xử lý ngôn ngữ và tiếng nói, ví dụ như bài toán dịch tự động, bài toán sinh ngôn ngữ, phân loại, nhận dạng thực thể, nhận dạng tiếng nói, chuyển văn bản thành tiếng nói. Tuy nhiên, khác với RNNs, Transformer không xử lý các phần tử trong một chuỗi một cách tuần tự. Nếu dữ liệu đầu vào là một câu ngôn ngữ tự nhiên, Transformer không cần phải xử lý phần đầu câu trước rồi mới tới phần cuối câu. Do tính năng này, Transformer có thể tận dụng khả năng tính toán song song của GPU và giảm thời gian xử lý đáng kể. 

Long short-term memory trong xử lý ngôn ngữ tự nhiên
Kiến trúc của Transformer Neural Network. Nguồn ảnh: arXiv:1706.03762 [cs.CL].

Không sử dụng kiến trúc Recurrent (hồi quy) như RNNs mà Transformer sử dụng self-attention. Trong kiến trúc của mình, Transformer chứa 6 encoder và 6 decoder. Mỗi encoder chứa hai lớp: Self-attention và mạng truyền thẳng (FNN).

Self-Attention là cơ chế giúp encoder nhìn vào các từ khác trong lúc mã hóa một từ cụ thể, vì vậy,Transformers có thể hiểu được sự liên quan giữa các từ trong một câu, kể cả khi chúng có khoảng cách xa. Các decoder cũng có kiến trúc giống như vậy nhưng giữa chúng có một lớp attention để nó có thể tập trung vào các phần liên quan của đầu vào.

Self-Attention có 4 bước:

  1. Tạo ra bộ 3 vectơ từ các vectơ đầu vào của encoder. Tại encoder đầu tiên, véctơ đầu vào là word embedding của từ. Như vậy với mỗi từ, ta sẽ có 3 vectơ Query, Key và Value. Các vectơ này được tạo nên bởi phép nhân ma trận giữa véctơ đầu vào và 3 ma trận trọng số tương ứng với query, key, value mà chúng ta sử dụng trong quá trình huấn luyện. 3 vectơ này đóng vai trò khác nhau và đều quan trọng đối với attention.
  2. Tính điểm. Với mỗi từ, ta cần tính điểm của các từ khác trong câu đối với từ này. Giá trị này giúp quyết định từ nào cần được chú ý và chú ý bao nhiêu khi mã hóa một từ. Điểm được tính bằng tích vô hướng giữa véctơ Query của từ đang xét với lần lượt các vectơ Key của các từ trong câu. Ví dụ, khi ta tính self-attention trên từ có vị trí 1, điểm của nó với chính nó là q1.k1, điểm của nó với từ thứ hai là q1.k2, v..v..
  3. Chuẩn hóa điểm. Trong bài báo gốc, điểm được chia cho 8 (căn bậc 2 của 64 – số chiều của vectơ Key). Điều này giúp cho độ dốc trở nên ổn định hơn. Tiếp theo, giá trị này được truyền qua hàm softmax để đảm bảo các giá trị điểm đều dương và có tổng không vượt quá 1.
  4. Nhân vectơ Value với mỗi giá trị điểm đã tính phía trên rồi cộng lại với nhau. Ý đồ của việc này là bảo toàn giá trị vectơ của các từ cần được chú ý và loại bỏ vectơ của các từ không liên quan (bằng cách nhân nó với một số rất nhỏ, ví dụ như 0.001).

Dịch tự động cũng là một những bài toán đang được nghiên cứu tại Trung tâm công nghệ Trợ lý ảo của Viện Nghiên cứu Dữ liệu lớn Vingroup – VinBigdata. Bên cạnh dịch tự động, Trung tâm Trợ lý ảo liên tục nghiên cứu và phát triển các giải pháp, sản phẩm công nghệ như chatbot tự động phản hồi được huẩn luyện theo nghiệp vụ khách hàng, trợ lý nhập liệu cho bác sĩ,…

Nguồn tham khảo: Towards Data Science