- vừa được xem lúc

LLM 101 - Paper reading | Think-in-Memory: Recalling and Post-thinking Enable LLMs with Long-Term Memory

0 0 3

Người đăng: Viblo AI

Theo Viblo Asia

Giới thiệu

Việc thiết kế Large Language Models (LLMs) có Long-term memory là rất quan trọng và hữu ích trong các đoạn hội thoại dài giữa người và máy. Dựa vào việc nhớ và thực hiện suy luận lặp đi lặp lại từ lịch sử chat, các mô hình này cho ra chất lượng phản hồi tốt hơn so với việc chỉ đơn giản dùng window context có sẵn của LLM.

Tuy nhiên, các bước nhớ và suy luận lặp đi lặp lại này dễ tạo ra suy nghĩ thiên lệch, nghĩa là kết quả suy luận không nhất quán khi nhớ lại cùng một lịch sử cho các câu hỏi khác nhau. Trong khi đó, con người lại có thể giữ suy nghĩ trong trí nhớ và chỉ cần nhớ lại mà không cần suy luận lặp lại 😄

Ví dụ, bạn học cách làm món bánh hamburger. Sau một vài lần làm theo công thức, bạn đã thuộc lòng các bước. Khi bạn quyết định làm lại món bánh mì kẹp thịt vào một ngày khác, bạn không cần phải xem lại công thức và suy luận lại từng bước như lần đầu tiên 😄 Thay vào đó, bạn chỉ cần nhớ lại những gì bạn đã học và áp dụng nó một cách tự nhiên. Đây chính là khả năng giữ và nhớ lại thông tin mà không cần suy luận lặp lại của con người.

Lấy cảm hứng từ khả năng nhớ con người, nhóm tác giả đề xuất một cơ chế trí nhớ mới gọi là TiM (Think-in-Memory) cho phép các LLM duy trì một bộ nhớ để lưu trữ các suy nghĩ lịch sử trong suốt quá trình trò chuyện.

TiM bao gồm hai giai đoạn quan trọng: (1) trước khi tạo ra phản hồi, một Agent LLM sẽ nhớ lại các suy nghĩ liên quan từ bộ nhớ, và (2) sau khi tạo ra phản hồi, Agent LLM sẽ thực hiện suy nghĩ lại và kết hợp cả các suy nghĩ trong lịch sử và hiện tại để cập nhật bộ nhớ 😄

Do vậy, TiM có thể loại bỏ vấn đề suy luận lặp lại bằng cách lưu lại các suy nghĩ sau quá trình suy luận. Ý tưởng khá giống thuật toán Quy hoạch động, lưu lại kết quả trước đó để dùng cho quá trình tính toán tiếp theo.

Bên cạnh đó, nhóm tác giả cũng đề ra các nguyên tắc cơ bản để tổ chức các suy nghĩ trong bộ nhớ dựa trên các thao tác đã được thiết lập, tức là các thao tác chèn (insert), quên (forget) và hợp nhất (merge), cho phép cập nhật và phát triển động các suy nghĩ.

Nhóm tác giả giới thiệu phương pháp Locality-Sensitive Hashing vào TiM để đạt được việc truy xuất hiệu quả cho các cuộc trò chuyện dài hạn. Nhóm tác giả tiến hành các thí nghiệm định tính và định lượng trên các cuộc trò chuyện thực tế và giả lập bao gồm nhiều chủ đề khác nhau, cho thấy việc trang bị cho các LLM hiện tại với TiM cải thiện đáng kể hiệu suất trong việc tạo ra phản hồi cho các tương tác dài hạn.

Phương pháp

Đặt vấn đề

Nhìn chung, tính hữu ích của các memory-augmented Large Language Models (LLMs) chủ yếu phụ thuộc vào khả năng nhớ lặp đi lặp lại và suy luận liên tục từ lịch sử trong bộ nhớ đệm bên ngoài. Cụ thể, đối với các cuộc trò chuyện ở turn thứ kk, LLM cần phải hiểu lại và suy luận lại từ các cuộc trò chuyện từ turn thứ 0 đến turn thứ k1k-1.

Ví dụ, như hình minh họa trên, để trả lời các câu hỏi của lượt thứ 2 và lượt thứ 3, LLM phải nhớ lại lượt thứ 1 và suy luận về nó hai lần. Tuy nhiên, cách tiếp cận này dễ gặp phải một số vấn đề và có thể gây ra hạn chế về hiệu suất trong các ứng dụng thực tế. Cụ thể:

  • Đường suy luận không nhất quán: Các nghiên cứu trước đây đã chỉ ra rằng các LLM dễ dàng tạo ra các hướng suy luận khác nhau cho cùng một truy vấn. Trong hình minh hoạ trên (bên trái), các LLM đưa ra câu trả lời sai do suy luận không nhất quán từ ngữ cảnh.

  • Chi phí truy xuất lớn: Để truy xuất lại lịch sử liên quan, các cơ chế bộ nhớ trước đây cần tính toán sự tương đồng từng cặp giữa câu hỏi và mỗi cuộc trò chuyện lịch sử, điều này rất tốn thời gian đối với các cuộc đối thoại dài hạn.

Tổng quan

Vì vậy ta sẽ sử dụng TiM để giải quyết vấn đề này. Với một chuỗi các turn trò chuyện, mỗi turn được biểu diễn bằng một bộ (Qi,Ri)(Q_i, R_i), đại diện cho truy vấn của người dùng (QQ) và phản hồi của agent (RR) tại turn đó. Mục tiêu chính là tạo ra phản hồi chính xác hơn Rk+1R_{k+1} giống như con người cho truy vấn mới Qk+1Q_{k+1}, đồng thời ghi nhớ thông tin ngữ cảnh của các turn trò chuyện trước đó. TiM được đề xuất cho phép agent xử lý các cuộc trò chuyện dài hạn và giữ lại thông tin lịch sử hữu ích sau nhiều cuộc trò chuyện với người dùng.

Như minh họa trong hình trên, TiM của nhóm tác giả bao gồm các thành phần làm việc cùng nhau để cung cấp các phản hồi chính xác và mạch lạc hơn cho các cuộc trò chuyện dài hạn:

  • Agent A: AA là một mô hình LLM, chẳng hạn như ChatGPT và ChatGLM.
  • Bộ nhớ đệm M: MM là một bảng hash liên tục phát triển của các cặp key-value, trong đó khóa là chỉ số hash và giá trị là một suy nghĩ duy nhất.
  • Ánh xạ dựa trên hash F(·): Locality-sensitive Hashing được giới thiệu để nhanh chóng lưu và tìm các suy nghĩ liên quan trong MM.

Khung tổng thể được chia thành hai giai đoạn:

  • Giai đoạn 1: Nhớ lại và tạo phản hồi. Với một câu hỏi mới từ người dùng, agent LLM AA truy xuất các suy nghĩ liên quan để tạo ra các phản hồi chính xác. Vì nhóm tác giả lưu các suy nghĩ suy luận tự tạo ra vài bộ nhớ bên ngoài, giai đoạn này có thể trực tiếp nhớ lại và trả lời câu hỏi mà không cần suy luận lặp lại từ văn bản trò chuyện lịch sử gốc.
  • Giai đoạn 2: Suy nghĩ và cập nhật sau khi trả lời. Sau khi trả lời câu hỏi, nhóm tác giả thiết kế để agent LLM suy nghĩ thêm về cặp (Qk,Rk)(Q_k, R_k) và chèn các suy nghĩ suy luận tự tạo mới vào bộ nhớ đệm MM.

Lưu trữ vào bộ nhớ đệm

Hệ thống dựa trên suy nghĩ

Hệ thống lưu trữ MM của TiM nhằm lưu giữ kiến thức từ các tương tác giữa AI và người dùng thông qua các suy nghĩ quy nạp tự tạo dựa trên các cuộc trò chuyện.

Suy nghĩ quy nạp được định nghĩa là văn bản chứa mối quan hệ giữa hai thực thể, tức là thỏa mãn một bộ ba quan hệ (Eh,ri,Et)(E_h, r_i, E_t). EhE_h là thực thể đầu kết nối với thực thể đuôi EtE_t thông qua quan hệ rir_i, với i[0,N]i \in [0, N]NN là số lượng quan hệ. Về mặt khái niệm, Rh={r1,,rN}R_h = \{r_1, \cdots, r_N\} bao gồm tất cả các mối quan hệ một bước đối với thực thể EhE_h.

Mỗi suy nghĩ TiT_i được lưu trữ dưới dạng bộ (hash_index,Ti)(\text{hash\_index}, T_i), trong đó hash_index\text{hash\_index} là chỉ số hash được lấy từ hàm băm F(Ti)F(T_i). Hệ thống lưu trữ dựa trên hash này không chỉ hỗ trợ truy xuất bộ nhớ nhanh chóng mà còn giúp cập nhật bộ nhớ, cung cấp một chỉ mục chi tiết của các suy nghĩ lịch sử.

Thách thức chính của việc sử dụng suy nghĩ quy nạp cho LLM là tạo ra các câu có chất lượng cao phù hợp với các bộ ba quan hệ. Dưới đây là hai giải pháp để có được các suy nghĩ quy nạp: (1) mô hình đã được pretrained cho việc khai thác thông tin mở bên ngoài, như OpenIE; (2) ) In-context learning với các few-shot prompts dựa trên LLM. Trong bài báo này, nhóm tác giả sử dụng giải pháp thứ hai, tức là sử dụng agent LLM AA để tạo ra các suy nghĩ quy nạp, như minh họa dưới đây.

Prompt để tạo ra suy nghĩ: Given the following question and response pairs, please extract the relation (subject, relation, object) with corresponding text:

**Example 1.**
**Input:**
Question: Do you have any company recommendations for me?
Response: I recommend Google.
**Output:**
(Company, Recommended, Google). Recommended company is Google. **Example 2.**
**Input:**
Question: Which City is the capital of China?
Response: Beijing.
**Output:**
(China, Capital, Beijing). The capital of China is Beijing. **Input:**
Question: Do you have any book recommendations for me?
Response: I recommend “The Little Prince”.
**Output:**

Lưu trữ dựa trên hash

Nhóm tác giả hướng đến việc lưu các suy nghĩ quy nạp vào bộ nhớ theo một quy tắc nhất định, tức là các suy nghĩ tương tự nên được lưu trữ trong cùng một nhóm trong bộ nhớ sẽ ok hơn 😄. Để làm điều này, nhóm tác giả áp dụng một bảng hash làm kiến trúc của hệ thống lưu trữ TiM, trong đó các suy nghĩ tương tự được gán cùng một chỉ số hash.

Với một truy vấn, nhóm tác giả đề xuất tìm kiếm nhanh các suy nghĩ gần nhất trong không gian embedding nhiều chiều, điều này có thể được giải quyết bằng phương pháp locality-sensitive hashing (LSH). Kế hoạch hash LSH là gán mỗi vector embedding dd-chiều xRdx \in \mathbb{R}^d một chỉ số hash F(x)F(x), trong đó các vector gần nhau sẽ nhận cùng một chỉ số hash với xác suất cao hơn. Nhóm tác giả đạt được điều này bằng cách sử dụng một phép chiếu ngẫu nhiên như sau:

F(x)=argmax([xR;xR])F(x) = \arg\max([xR;-xR])

trong đó RR là ma trận ngẫu nhiên có kích thước (d,d/2)(d, d/2)bb là số lượng nhóm trong bộ nhớ. [u;v][u;v] biểu diễn phép concat của hai vector.

Truy xuất thông tin từ bộ nhớ

Dựa trên hệ thống lưu trữ bộ nhớ, việc truy xuất bộ nhớ thực hiện nhiệm vụ truy xuất hai giai đoạn để tìm ra các suy nghĩ liên quan nhất, tức là truy xuất dựa trên LSH (Locality-Sensitive Hashing) và sau đó là truy xuất dựa trên độ tương đồng. Cụ thể như sau:

Giai đoạn 1: Truy xuất dựa trên LSH

  • Đầu tiên, với truy vấn mới QQ, ta thu được vector embed vv của truy vấn dựa trên agent LLM.
  • Sau đó, sử dụng hàm LSH F(v)F(v), ta tính toán chỉ số hash của truy vấn.
  • Chỉ số hash này sẽ chỉ ra nhóm gần nhất chứa các suy nghĩ tương tự trong bộ nhớ đệm.

Giai đoạn 2: Truy xuất dựa trên độ tương đồng

  • Trong nhóm gần nhất, ta tính toán độ tương đồng từng cặp giữa truy vấn và mỗi suy nghĩ trong nhóm.
  • Chọn ra top-kk suy nghĩ có độ tương đồng cao nhất để nhớ lại và sử dụng làm lịch sử liên quan cho việc trả lời truy vấn.

Với việc kết hợp hai giai đoạn truy xuất này, hệ thống TiM có thể truy xuất các suy nghĩ liên quan một cách hiệu quả và chính xác, giúp cải thiện khả năng phản hồi của các mô hình LLM trong các cuộc trò chuyện dài hạn.

Tổ chức thông tin bộ nhớ

Lấy cảm hứng từ trí nhớ con người, cần có một số nguyên tắc tổ chức dựa trên các thao tác đã được thiết lập để cập nhật và phát triển các suy nghĩ, chẳng hạn như chèn các suy nghĩ mới, quên đi những suy nghĩ kém quan trọng, và hợp nhất các suy nghĩ lặp lại, điều này sẽ làm cho cơ chế bộ nhớ trở nên tự nhiên và khả thi hơn.

Bắt đầu với kiến trúc lưu trữ cho bộ nhớ đệm, TiM sử dụng bảng hash để lưu trữ các suy nghĩ tự tạo, trong đó mỗi chỉ số hash tương ứng với một nhóm chứa các suy nghĩ tương tự. Trong cùng một nhóm, TiM hỗ trợ các thao tác sau để tổ chức các suy nghĩ trong bộ nhớ:

  • Chèn (Insert): Lưu các suy nghĩ mới vào bộ nhớ.
  • Quên (Forget): Loại bỏ các suy nghĩ không cần thiết khỏi bộ nhớ, chẳng hạn như các suy nghĩ mâu thuẫn.
  • Hợp nhất (Merge): Hợp nhất các suy nghĩ tương tự trong bộ nhớ, chẳng hạn như các suy nghĩ có cùng thực thể đầu.

Kết luận

Kết luận

Trong bài báo, nhóm tác giả đề xuất một cơ chế bộ nhớ mới gọi là TiM nhằm giải quyết vấn đề suy nghĩ thiên lệch trong các LLMs có bộ nhớ tăng cường. Bằng cách lưu trữ các suy nghĩ lịch sử trong một bộ nhớ phát triển, TiM cho phép LLMs nhớ lại các suy nghĩ liên quan và tích hợp chúng vào các cuộc trò chuyện mà không cần suy luận lặp đi lặp lại.

TiM bao gồm hai giai đoạn chính: nhớ lại suy nghĩ trước khi tạo phản hồi và suy nghĩ lại sau khi tạo phản hồi. Ngoài ra, TiM hoạt động dựa trên một số nguyên tắc cơ bản để tổ chức các suy nghĩ trong bộ nhớ, giúp cập nhật bộ nhớ một cách linh hoạt. Hơn nữa, nhóm tác giả cũng sử dụng Locality-Sensitive Hashing để đạt được việc truy xuất hiệu quả cho các cuộc trò chuyện dài hạn.

Tài liệu tham khảo

[1] Think-in-Memory: Recalling and Post-thinking Enable LLMs with Long-Term Memory

Bình luận

Bài viết tương tự

- vừa được xem lúc

Lightweight Fine-Tuning: Một hướng đi cho những người làm AI trong kỉ nguyên của các Super Large Models (Phần 1)

Note: Tiêu đề và nội dung của bài viết này được lấy cảm hứng từ bài viết của sếp mình: "Hướng đi nào cho những người làm AI trong kỉ nguyên của các Super Large Models?". Recommend các bạn nên đọc để t

0 0 40

- vừa được xem lúc

[Từ Transformer Đến Language Model] Bài 2: Kiến trúc và phương pháp Generative-Pretraining của GPT model

Tiếp nối series kiến thức nền tảng của large language model. Ở Bài 1: Bắt đầu với kiến trúc mô hình - Transformer, mình đã giới thiệu với các bạn về kiến trúc khởi nguồn của large language model - tra

0 0 36

- vừa được xem lúc

Hướng dẫn xây dựng một trang web InterviewGPT ứng dụng chatgpt cho các bạn sinh viên thực hành phỏng vấn

Giới thiệu về InterviewGPT. InterviewGPT là một ứng dụng web được phát triển nhằm cung cấp một trải nghiệm tương tác và trợ giúp trong quá trình phỏng vấn việc làm.

0 0 32

- vừa được xem lúc

Lightweight Fine-Tuning: Một hướng đi cho những người làm AI trong kỉ nguyên của các Super Large Models (Phần 2)

Note: Tiêu đề và nội dung của bài viết này được lấy cảm hứng từ bài viết của sếp mình: "Hướng đi nào cho những người làm AI trong kỉ nguyên của các Super Large Models?". Recommend các bạn nên đọc để t

0 0 37

- vừa được xem lúc

Fine-tuning một cách hiệu quả và thân thiện với phần cứng: Adapters và LoRA

Fine-tuning là gì. Parameter-efficient Fine-tuning (PEFT) với Adapters.

0 0 43

- vừa được xem lúc

Tất tần tật về LLaMA-2 - liệu có đủ làm nên một cuộc cách mạng mới

Lời giới thiệu. Xin chào tất cả các bạn, đã lâu lắm rồi kể từ sau bài viết về Trải lòng sau khi đọc GPT-4 Technical Report của OpenAI - các bác nên đổi tên công ty đi mình không có viết bài về LLM nữa

0 0 35