Thảo luận về việc sử dụng công cụ (tool) hỗ trợ trong NLP

Language Models & Tools

LMs are powerful for text generation tasks. But …

Mô hình ngôn ngữ hiện nay rất mạnh mẽ trong việc giải quyết nhiều nhiệm vụ, đặc biệt là trong việc tạo ra văn bản. Tuy nhiên, câu hỏi đặt ra là liệu mô hình ngôn ngữ có đủ khả năng để xử lý mọi tình huống hay không. Theo quan điểm cá nhân của tôi, câu trả lời là không.

Có một số tình huống mà mô hình ngôn ngữ không hoạt động hiệu quả. Đầu tiên, khi được yêu cầu thực hiện các phép toán phức tạp, mô hình ngôn ngữ có thể không thực hiện một cách chính xác hoặc hiệu quả. Ví dụ, phương pháp phổ biến là sử dụng “Chain of Thought” để xử lý chi tiết, nhưng điều này có thể dẫn đến việc không đưa ra được câu trả lời đúng. Ngược lại, nếu bạn sử dụng một công cụ máy tính, bạn có thể nhập trực tiếp biểu thức và nhận được kết quả ngay lập tức.

Một ví dụ khác là khi cần truy cập thông tin thực tế mà mô hình ngôn ngữ không có sẵn. Chẳng hạn, nếu bạn hỏi “What is the current time?”, thời gian hiện tại có thể không nằm trong dữ liệu huấn luyện của mô hình. Tùy thuộc vào thời điểm bạn đặt câu hỏi, câu trả lời sẽ khác nhau. Do đó, cách duy nhất để mô hình ngôn ngữ trả lời câu hỏi này là sử dụng một công cụ bên ngoài, chẳng hạn như gọi API “get time” để lấy thời gian hiện tại.

Những hạn chế này đã thúc đẩy sự quan tâm của mọi người đối với việc sử dụng các công cụ bổ sung để nâng cao khả năng của mô hình ngôn ngữ.

Tools benefit language models a lot

Trong lĩnh vực nghiên cứu về mô hình ngôn ngữ, có nhiều công trình tập trung vào việc tích hợp công cụ (tool) với các mô hình này. Một trong những nghiên cứu tiên phong là “toolformer”, đề xuất sử dụng 5 công cụ như máy tính và công cụ tìm kiếm Wiki để mở rộng khả năng của mô hình ngôn ngữ.

Tuy nhiên, các nghiên cứu sau đó đã sử dụng và đánh giá nhiều loại công cụ khác nhau trên các bộ dữ liệu đa dạng:

  • Công cụ phần mềm: Như trong “toolformer” và “ART”, sử dụng máy tính và công cụ tìm kiếm Wiki.
  • API: Một số nghiên cứu sử dụng các API web như “get weather” hoặc “get time”.
  • Mô hình neural: Có công trình sử dụng các mô hình từ Hugging Face Hub làm công cụ, bao gồm cả mô hình ngôn ngữ và các mô hình chuyên biệt cho từng tác vụ.
  • Hàm tự định nghĩa: Một số nghiên cứu tập trung vào việc sử dụng các hàm được định nghĩa cục bộ và được thiết kế bởi chuyên gia làm công cụ.

Sự đa dạng này trong việc định nghĩa và sử dụng “công cụ” có thể gây ra một số nhầm lẫn.

What Is A Tool Anyway?

Trong phần này, chúng ta sẽ khám phá ba khía cạnh chính liên quan đến công cụ. Đầu tiên, chúng ta sẽ tìm hiểu về khái niệm cơ bản của công cụ, định nghĩa và các chức năng chính của chúng. Tiếp theo, chúng ta sẽ xem xét các kịch bản sử dụng công cụ, bao gồm những công cụ nào hiện có, nhiệm vụ nào có thể áp dụng công cụ này và phương pháp sử dụng. Cuối cùng, chúng ta sẽ thảo luận về khía cạnh đánh giá, bao gồm các tiêu chí đánh giá và lợi ích thực nghiệm, nếu có, của các công cụ này.

Tool Basics: Definition

Theo định nghĩa, công cụ là một chương trình mà mô hình ngôn ngữ có thể sử dụng để thực hiện một số chức năng nhất định. Để một chương trình được coi là công cụ, nó cần thỏa mãn hai thuộc tính: tính ngoại vi và tính chức năng.

Thứ nhất, tính ngoại vi có nghĩa là công cụ phải nằm ngoài mô hình ngôn ngữ. Điều này tương tự như định nghĩa về việc sử dụng công cụ của động vật, nơi công cụ là một đối tượng môi trường được sử dụng từ bên ngoài. 

Thứ hai, tính chức năng đề cập đến khả năng của chương trình có thể áp dụng lên các đối tượng khác trong môi trường và thay đổi trạng thái của môi trường hoặc tạo ra một kết quả đầu ra. Ví dụ đơn giản là trong một môi trường có một tấm vải trắng (canvas) và một công cụ là cọ vẽ. Chức năng của cọ vẽ là tô màu lên tấm vải và tạo ra một bức tranh.

Kết hợp hai thuộc tính này, chúng ta có thể định nghĩa công cụ là một giao diện hàm cho chương trình máy tính hoạt động bên ngoài mô hình ngôn ngữ. Mô hình ngôn ngữ sử dụng công cụ bằng cách tạo ra các lệnh hàm và các tham số đầu vào cho công cụ đó.

Tool Basics: Functionality

Sau khi hiểu rõ định nghĩa, chúng ta có thể tóm tắt ba chức năng chính của các công cụ:

  1. Công Cụ Nhận Thức: Được sử dụng để thu thập dữ liệu từ môi trường mà không thay đổi dữ liệu đó. Ví dụ, công cụ tìm kiếm có thể được coi là công cụ nhận thức khi nó tìm kiếm và thu thập thông tin liên quan đến truy vấn của bạn. Một ví dụ khác là API thời tiết, nơi bạn có thể lấy thông tin thời tiết từ web.
  2. Công Cụ Hành Động: Được sử dụng để thực hiện hành động trong môi trường và thay đổi trạng thái của nó. Ví dụ, khi bạn coi một bức tranh là một đối tượng trong môi trường, việc sử dụng cọ vẽ để thay đổi bức tranh là một hành động thay đổi trạng thái môi trường.
  3. Công Cụ Tính Toán: Thực hiện các hoạt động tính toán, không chỉ giới hạn ở các phép toán số học. Ví dụ, một công cụ dịch thuật có thể được coi là công cụ tính toán khi nó chuyển đổi ngôn ngữ từ ngôn ngữ này sang ngôn ngữ khác.

Các chức năng này không hoàn toàn tách biệt; một công cụ có thể có nhiều chức năng. Ví dụ, công cụ tìm kiếm Wikipedia có thể vừa là công cụ nhận thức khi thu thập tài liệu từ web, vừa là công cụ tính toán khi tính toán điểm tương đồng của truy vấn với các tài liệu khác và xếp hạng chúng.

Agent có thể sử dụng công cụ nhận thức để thu thập thông tin từ môi trường và công cụ hành động để thực hiện hành động trong môi trường. Tuy nhiên, một mô hình ngôn ngữ chỉ sử dụng công cụ tính toán mà không sử dụng công cụ nhận thức hay hành động thì không được coi là agent theo định nghĩa này.

Hiện tại, việc sử dụng công cụ trong xây dựng agent chưa thực sự phát triển. Các bộ dữ liệu chủ yếu hỗ trợ việc chia nhỏ nhiệm vụ thành nhiều bước, mỗi bước chỉ sử dụng một công cụ. Tuy nhiên, đây có thể là một hướng nghiên cứu thú vị trong tương lai.

The Basic Tool Use Paradigm

Trong phần này, chúng ta sẽ đi sâu vào chi tiết về các kịch bản và nhiệm vụ mà mô hình ngôn ngữ có thể áp dụng. Chúng ta bắt đầu với công cụ cơ bản sử dụng Paradigm, cho phép mô hình ngôn ngữ sử dụng công cụ một cách hiệu quả.

Tóm lại, đây là sự chuyển đổi giữa chế độ tạo văn bản và chế độ thực thi công cụ. Ví dụ, khi người dùng hỏi “Thời tiết hôm nay thế nào?”, mô hình ngôn ngữ bắt đầu với quá trình tạo văn bản tiêu chuẩn. Khi mô hình cảm thấy cần sự hỗ trợ từ công cụ, nó sẽ tạo ra các token để hình thành biểu thức gọi công cụ, chẳng hạn như “kiểm tra thời tiết”. Sau khi biểu thức này hoàn thành, nó sẽ kích hoạt máy chủ thực thi từ xa, ở đây là máy chủ thời tiết, và chuyển sang chế độ thực thi công cụ. Máy chủ sẽ thực thi lệnh gọi và trả về kết quả, ví dụ như “trời nắng”, và trả lại cho mô hình ngôn ngữ.

Mô hình ngôn ngữ sau đó thay thế lệnh gọi API bằng kết quả thực thi và chuyển lại sang chế độ tạo văn bản để tiếp tục tạo các token còn lại. Sau khi hoàn tất quá trình này, mô hình sẽ trả về phản hồi cuối cùng cho người dùng ban đầu. Quá trình này khá trực quan và phương pháp để dạy mô hình sử dụng công cụ cũng khá đơn giản.

Có hai cách tiếp cận chính: Thứ nhất là suy luận trong thời gian thực, cung cấp hướng dẫn ngôn ngữ tự nhiên và ví dụ trong ngữ cảnh để hướng dẫn mô hình thực hiện quá trình này. Thứ hai là học qua đào tạo, nơi mô hình được huấn luyện với các ví dụ về truy vấn ngôn ngữ tự nhiên và giải pháp công cụ tương ứng.

Scenarios of LM Tool Using

Việc sử dụng các công cụ hỗ trợ đã được nhiều người áp dụng trong nhiều tình huống khác nhau. Dưới đây là năm kịch bản chính:

  1. Truy cập tri thức: Mục tiêu của việc này là giải quyết vấn đề về giới hạn tri thức mà các mô hình có thể ghi nhớ hoặc lưu trữ trong quá trình huấn luyện. Ví dụ, thời gian hiện tại có thể không được chia sẻ trong dữ liệu huấn luyện. Các mô hình có thể truy cập tri thức từ các nguồn khác nhau như cơ sở tri thức có cấu trúc với đồ thị tri thức. Người dùng có thể sử dụng các công cụ như SQL executor để truy vấn dữ liệu có cấu trúc và nhận kết quả cuối cùng. Ngoài ra, các công cụ tìm kiếm cũng được sử dụng để tìm kiếm thông tin trên Internet. Các mô hình truy xuất có thể được xem như là một cách để truy cập tri thức.
  2. Hoạt động tính toán: Điều này nhằm giải quyết vấn đề mà các mô hình không thể thực hiện các phép tính phức tạp một cách hiệu quả. Ví dụ, người dùng có thể sử dụng máy tính để giải các bài toán toán học hoặc sử dụng trình thông dịch Python để thực hiện các chương trình phức tạp hơn. Ngoài ra, có thể tận dụng các phần mềm hiện có như Google Sheets để thực hiện các hành động cần thiết.
  3. Tương tác với thế giới thực: Khả năng của các mô hình ngôn ngữ bị giới hạn trong dữ liệu huấn luyện. Để mở rộng khả năng này, các mô hình có thể được sử dụng để điều hướng web hoặc truy cập thông tin thực tế như thời tiết hoặc vị trí hiện tại. Chúng cũng có thể quản lý lịch và email để tự động hóa công việc.
  4. Xử lý các loại dữ liệu phi văn bản: Các mô hình ngôn ngữ chủ yếu xử lý văn bản, nhưng nếu được kết nối với các công cụ khác, chúng có thể truy cập và tương tác với các loại dữ liệu khác. Ví dụ, API như TAD Image cho phép truy cập và xử lý hình ảnh, hoặc Spotify API để nghe nhạc. Các công cụ như Visual QA có thể được sử dụng để trả lời câu hỏi về dữ liệu hình ảnh.
  5. Sử dụng các mô hình chuyên biệt: Người dùng có thể tải các mô hình QA hoặc dịch thuật chuyên biệt để thực hiện các tác vụ cụ thể. Ví dụ, mô hình Visual QA có thể được sử dụng để trả lời câu hỏi về dữ liệu hình ảnh.

Một điểm chung của các công cụ này là chúng đều được thiết kế bởi các chuyên gia trước khi được áp dụng vào các tác vụ cụ thể. Với sự hỗ trợ của các công cụ này, chúng ta có thể dễ dàng áp dụng chúng vào các nhiệm vụ mà không cần phải thiết kế lại từ đầu. Tuy nhiên, cũng có những nhiệm vụ không có sẵn các công cụ được thiết kế trước.

What if tools are unavailable?

Một câu hỏi thú vị đặt ra là liệu chúng ta có thể tự động tạo ra các công cụ, chẳng hạn như sử dụng các mô hình ngôn ngữ, mà không cần phụ thuộc vào các chuyên gia con người hay không. Trong nghiên cứu của bài báo “TroVE: Inducing Verifiable and Efficient Toolboxes for Solving Programmatic Tasks” của Wang và cộng sự (2024), thì câu trả lời là có.

Để tóm tắt một cách ngắn gọn, phương pháp tiêu chuẩn để giải quyết các bài toán lập trình thường là bạn sẽ được cung cấp một bài toán bằng ngôn ngữ lập trình và yêu cầu mô hình ngôn ngữ tạo ra một chương trình. Sau đó, bạn sẽ thực thi kết quả để có được câu trả lời cuối cùng. Một cách tương tự, bạn có thể có một chuỗi các ví dụ văn bản và truyền chúng vào mô hình ngôn ngữ, từ đó mô hình sẽ tạo ra các giải pháp cho từng bài toán. Tuy nhiên, các chương trình này thường có độ dài khá lớn và có thể gặp phải một số vấn đề.

Một trong những vấn đề chính là khả năng xảy ra lỗi lập trình. Ví dụ, chỉ cần gõ sai một ký tự cũng có thể khiến toàn bộ giải pháp chương trình trở nên sai lệch. Do đó, động lực của chúng tôi là: nếu chúng ta yêu cầu các mô hình ngôn ngữ không chỉ tạo ra chương trình mà còn tạo ra một bộ công cụ hỗ trợ, thì việc giải quyết bài toán sẽ trở nên đơn giản hơn rất nhiều. 

Chẳng hạn, nếu có một công cụ tính toán tỷ lệ thay đổi, thì giải pháp chỉ cần là một lệnh gọi hàm, và điều bạn cần làm chỉ là xác định các tham số đầu vào cho hàm đó. Điều này không chỉ giúp giảm thiểu các lỗi mà chúng ta đã thấy, mà còn mang lại lợi ích cho con người, vì việc xác minh giải pháp sẽ trở nên dễ dàng hơn.

How does TroVE make tools?

Trong nghiên cứu bài báo TroVE của Wang và cộng sự (2024), phương pháp TroVE gồm ba bước chính: Create mode, Import mode, và Skip mode.

  1. Create mode:
  • Đầu tiên, họ bắt đầu bằng cách khởi tạo và chuẩn bị các ví dụ. Khi gặp một ví dụ mới có tính năng chưa thấy trước đây, mô hình sẽ tạo ra một công cụ có thể tái sử dụng.
  • Sau đó, mô hình sử dụng công cụ vừa tạo để sinh ra giải pháp cho ví dụ đó.
  • Để cải thiện chất lượng của các cặp (ví dụ và giải pháp), họ thực hiện thao tác sampling và chỉ chọn các cặp tốt nhất. Giải pháp cùng với công cụ được thêm vào hộp công cụ (toolbox) để sử dụng cho các ví dụ sau này.
  1. Import mode:
  • Giả sử trong hộp công cụ đã có nhiều chức năng. Khi mô hình thấy một ví dụ sử dụng các chức năng tương tự, thay vì tạo lại công cụ mới, mô hình sẽ trực tiếp nhập công cụ từ hộp công cụ.
  • Như vậy, mô hình sẽ tái sử dụng công cụ và sinh ra giải pháp cho ví dụ mới, phù hợp với chế độ Import mode.
  1. Skip mode:
  • Trong trường hợp bài toán quá dễ, mô hình có thể bỏ qua việc tạo công cụ mới và trực tiếp đưa ra giải pháp mà không cần công cụ.

Ví dụ: Khi gặp ví dụ mới với chức năng chưa thấy trước đây, mô hình sẽ tạo ra công cụ mới và sử dụng công cụ đó để giải quyết bài toán. Tuy nhiên, nếu chức năng này đã tồn tại trong hộp công cụ, mô hình chỉ cần nhập và sử dụng lại công cụ đó, giúp tiết kiệm thời gian và tài nguyên. Và trong các trường hợp đặc biệt, mô hình có thể bỏ qua việc sử dụng công cụ và trực tiếp giải quyết bài toán.

Phương pháp này cho phép tạo ra các công cụ chính xác và có thể tái sử dụng, đồng thời cải thiện hiệu suất giải quyết các nhiệm vụ lập trình một cách đáng kể.

How Can TroVE Help?

Kết quả của phương pháp TroVE được Wang và cộng sự (2024) công bố thật ấn tượng. Sau đây là tổng quan về kết quả nghiên cứu và phương pháp:

  • Cải thiện độ chính xác và hiệu suất: Phương pháp TroVE giúp cải thiện đáng kể độ chính xác so với các phương pháp cơ sở (Baselines). Mặc dù đạt được độ chính xác cao hơn, kích thước thư viện của phương pháp vẫn duy trì ở mức nhỏ, giúp giảm thiểu tài nguyên sử dụng.
  • Giảm độ phức tạp của giải pháp: Số lượng thao tác, đại diện cho độ phức tạp của giải pháp, của phương pháp TroVE được đo lường và so sánh. Kết quả cho thấy, giải pháp của phương pháp này đơn giản hơn nhiều so với các phương pháp khác.
  • Nghiên cứu xác minh bởi con người: Nhóm nghiên cứu đã thực hiện một nghiên cứu thú vị về xác minh bởi con người. Trong nghiên cứu này, con người được yêu cầu xác minh tính đúng đắn của giải pháp và đo lường thời gian xác minh. Kết quả cho thấy phương pháp TroVE giúp quá trình xác minh chính xác hơn 10% và nhanh hơn từ 30 đến 40%.

How to evaluate tool use?

Trong phần này, chúng ta sẽ thảo luận về cách đánh giá và những lợi ích thực nghiệm của việc sử dụng các công cụ. Hiện tại, chúng ta đang sử dụng hai loại chuẩn mực để đánh giá: 

  1. Tái sử dụng các chuẩn mực hiện có: Các chuẩn mực này thường được áp dụng cho các tác vụ yêu cầu lý luận, chẳng hạn như các tập dữ liệu toán học như “math dataset” hoặc “big bench dataset”. Ngoài ra, còn có các tác vụ phức tạp hơn yêu cầu dữ liệu có cấu trúc như bảng hoặc cơ sở tri thức, với các tập dữ liệu như “table, KG” cho các bảng phức tạp hơn. Cuối cùng, có những tác vụ liên quan đến các phương thức khác như “visual QA”, nơi người dùng có thể tạo ra hoặc tái sử dụng các công cụ lập trình để thực hiện các câu hỏi về hình ảnh hoặc chỉnh sửa hình ảnh.
  1. Chuẩn mực API tổng hợp: Những chuẩn mực này chủ yếu tập trung vào các công cụ API. Quá trình tạo ra các chuẩn mực này thường giống nhau: tìm kiếm các trang web cung cấp nhiều API công cộng, sau đó lập trình API và thu thập siêu dữ liệu liên quan. Tuy nhiên, khi phân tích các tập dữ liệu này, chúng tôi phát hiện hai vấn đề chính:
  • Vấn đề tự nhiên: Khi xem xét sâu hơn về cách các ví dụ sử dụng API được chọn, chúng tôi nhận thấy rằng các công cụ được chọn có thể không được sử dụng cùng nhau trong thực tế. Hơn nữa, các ví dụ được tạo ra có thể không phản ánh đúng cách sử dụng tự nhiên của các công cụ này.
  • Khả năng thực thi của công cụ: Mặc dù công cụ được coi là các chương trình có thể thực thi, nhưng thực tế không phải lúc nào cũng vậy. Hơn một nửa các tập dữ liệu mà chúng tôi phân tích cho thấy các công cụ không thể thực thi. Điều này có thể liên quan đến cách mà các ví dụ được tạo ra, khi mà các ví dụ thường chỉ được tổng hợp mà không thực thi thực tế.

Để đánh giá các tập dữ liệu này, hiện tại chúng ta sử dụng một số tiêu chí cơ bản:

  1. Tỷ lệ hoàn thành tác vụ: So sánh phản hồi do mô hình tạo ra với phản hồi tham chiếu đã được chú thích.
  2. So sánh lựa chọn: Đối với những tác vụ mà công cụ không thể thực thi, ta so sánh các lựa chọn hoặc biểu thức để kiểm tra độ chính xác của phản hồi.
  3. Khả năng sử dụng công cụ: Đánh giá khả năng sử dụng của công cụ để khuyến khích tính năng tổng quát và hiệu quả trong thực tiễn.

Tuy nhiên, vẫn còn nhiều khía cạnh quan trọng chưa được đề cập trong các tiêu chí đánh giá này. Một số khía cạnh quan trọng có thể bao gồm:

  • Hiệu suất: So sánh chi phí tính toán khi sử dụng các công cụ.
  • Chất lượng công cụ: Đánh giá tốc độ phản hồi và hiệu quả tính toán của công cụ.
  • Độ tin cậy: Đặc biệt là đối với các công cụ không ổn định, cần có cách để người dùng nhận biết độ chính xác của công cụ.
  • Kiểm tra tái lập: Cần có các giải pháp tham chiếu có thể chạy song song với các giải pháp do mô hình tạo ra.
  • Bảo mật thông tin: Đánh giá mức độ tin cậy của các công cụ API, đặc biệt khi người dùng cần cung cấp thông tin cá nhân.

Những khía cạnh này đều là những vấn đề thú vị nhưng chưa được nghiên cứu sâu trong lĩnh vực công cụ hiện nay.

Trade-offs in tool usage: Computation Cost

Trong nghiên cứu này, các nhà nghiên cứu đã thực hiện một phân tích chi tiết về hiệu suất và chi phí tính toán của các phương pháp khác nhau. Họ đã so sánh từ hai khía cạnh: thứ nhất là những tác vụ nào hưởng lợi nhiều nhất từ các công cụ, và thứ hai là phương pháp nào sử dụng công cụ hiệu quả nhất.

Ví dụ, trong hình minh họa, các bộ dữ liệu lớn cho thấy sự cải thiện đáng kể về hiệu suất. Tuy nhiên, đối với các tác vụ đa ngôn ngữ, mặc dù không phải là không có cải thiện, nhưng hiệu suất lại giảm và vẫn tiêu tốn nhiều tài nguyên tính toán. Điều này cho thấy rằng các tác vụ đa ngôn ngữ có thể không luôn luôn được hưởng lợi từ việc sử dụng công cụ.

Ngoài ra, các nhà nghiên cứu cũng xem xét các phương pháp nào hiệu quả trong việc sử dụng công cụ ngay cả trên cùng một bộ dữ liệu. Ví dụ, khi so sánh trên các bộ dữ liệu MTH và table, có những phương pháp sử dụng ít tài nguyên tính toán hơn nhưng vẫn đạt được mức cải thiện tương tự. Điều này nhấn mạnh tầm quan trọng của việc đánh giá toàn diện để có cái nhìn rõ ràng hơn về hiệu quả của các phương pháp.

In Summary

  • Tool Basics: definition & functionality
  • Scenarios: what tools, what tasks, what methods
  • Evaluation, empirical benefit, future directions

[++++]

Rate this post

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *