Trong những năm gần đây, các Mạng Neural Module Networks (Mạng Nơ-ron Phân hệ) đã đóng vai trò tiên phong trong việc chia nhỏ các nhiệm vụ phức tạp thành các phân hệ đơn giản hơn. Mỗi phân hệ được huấn luyện từ đầu đến cuối cho các vấn đề khác nhau, học cách thực hiện nhiệm vụ cụ thể của nó và trở thành một thành phần có thể tái sử dụng. Tuy nhiên, việc ứng dụng chiến lược này trong thế giới thực gặp nhiều khó khăn do hàng loạt vấn đề. Đặc biệt, việc phát triển chương trình cần phải dựa vào học tăng cường từ đầu hoặc sử dụng các bộ phân tích ngôn ngữ tự nhiên được điều chỉnh bằng tay, khiến cho việc tối ưu hóa trở nên thách thức. Sự phát triển của chương trình cũng bị giới hạn trong từng lĩnh vực cụ thể. Điều này càng trở nên phức tạp hơn khi phải học đồng thời cả mô hình nhận thức và trình tạo chương trình, thường không đạt được cấu trúc mô-đun mong muốn.
Thách thức từ các mô hình hiện tại
Hãy tưởng tượng một ví dụ đơn giản như sau: “Mỗi đứa trẻ có thể ăn bao nhiêu bánh muffin để đảm bảo công bằng?” Để trả lời câu hỏi này, hệ thống phải tìm kiếm hình ảnh có trẻ em và bánh muffin, đếm số lượng của mỗi đối tượng và quyết định phân chia sao cho hợp lý. Đối với con người, đây là sự kết hợp của nhiều bước tư duy logic, từ nhận dạng đối tượng đến thực hiện phép toán đơn giản như chia đều. Tuy nhiên, các mô hình học sâu hiện tại chủ yếu sử dụng cách tiếp cận end-to-end (đầu vào – đầu ra liền mạch), không tận dụng được tư duy phân tích từng bước.
Mặc dù các lĩnh vực như nhận diện đối tượng và ước lượng độ sâu đã có những bước tiến lớn, nhưng khi đối mặt với những nhiệm vụ phức tạp, các mô hình end-to-end thường gặp phải giới hạn. Điều này dẫn đến việc chúng không thể xử lý những bài toán đơn giản như phép chia mà máy tính có thể làm dễ dàng, và không thể tổng quát hóa một cách hệ thống khi số lượng đối tượng trong hình ảnh thay đổi. Ngoài ra, các mô hình này còn có tính “mờ” (opaque) do quá trình ra quyết định không được chia nhỏ thành các bước cụ thể để xác định lỗi, gây khó khăn cho việc kiểm tra và đánh giá kết quả.
ViperGPT: Kết hợp giữa Thị giác và Ngôn ngữ thông qua Sinh mã
Để giải quyết những hạn chế này, các nhà nghiên cứu từ Đại học Columbia đã giới thiệu ViperGPT, một framework (khung) kết hợp các mô hình ngôn ngữ lớn (ví dụ như GPT-3 Codex) để tự động sinh mã và xây dựng các mô hình thị giác cho mọi câu hỏi liên quan đến hình ảnh hoặc video. Đặc biệt, thay vì yêu cầu huấn luyện mô hình từ đầu, ViperGPT chỉ cần nhận một API cho phép truy cập vào các chức năng liên quan đến thị giác (như tìm kiếm đối tượng, tính toán độ sâu) và sử dụng khả năng của mô hình ngôn ngữ để viết mã, nhằm giải quyết câu hỏi đó.
ViperGPT có khả năng tạo ra các chương trình độc nhất cho từng bài toán, với đầu vào là hình ảnh hoặc video và đầu ra là câu trả lời tương ứng. Thông qua việc sử dụng các module sẵn có, Codex có thể tạo ra mã Python, kết hợp các chức năng xử lý hình ảnh, logic toán học và ngôn ngữ, tất cả chỉ trong một hệ thống duy nhất.
Các Ưu điểm của ViperGPT
- Tính giải thích được: Mỗi bước của quá trình đều được định nghĩa rõ ràng dưới dạng các lệnh gọi hàm trong mã, với các giá trị trung gian dễ dàng kiểm tra.
- Tính hợp lý: Nó tận dụng các phép toán và logic toán học đã có sẵn trong Python, không phụ thuộc hoàn toàn vào học máy.
- Tính linh hoạt: Dễ dàng mở rộng để bao gồm bất kỳ module thị giác hoặc ngôn ngữ nào bằng cách chỉ thêm định nghĩa của module đó vào API.
- Tính phân tích thành phần: Mỗi nhiệm vụ phức tạp được chia nhỏ thành các tác vụ con, được thực hiện từng bước một.
- Khả năng mở rộng với tiến bộ công nghệ: Bất kỳ cải tiến nào đối với các module sử dụng trong hệ thống đều trực tiếp cải thiện hiệu suất tổng thể của ViperGPT.
- Không cần huấn luyện lại: Không yêu cầu huấn luyện hoặc tinh chỉnh mô hình mới cho từng nhiệm vụ cụ thể.
- Tính tổng quát: ViperGPT có thể kết hợp tất cả các nhiệm vụ vào một hệ thống duy nhất, áp dụng cho nhiều loại bài toán khác nhau.
Đóng góp của ViperGPT
Dựa trên các ưu điểm trên, nhóm nghiên cứu đã giới thiệu một framework đơn giản nhưng hiệu quả cho việc xử lý các bài toán liên quan đến hình ảnh bằng cách kết hợp mô hình sinh mã vào thị giác máy tính thông qua API và trình thông dịch Python. Kết quả thực nghiệm của họ đã cho thấy ViperGPT đạt được điểm số vượt trội trong các bài toán liên quan đến định vị hình ảnh, trả lời câu hỏi dựa trên hình ảnh và video, mà không cần huấn luyện trên dữ liệu cụ thể của từng nhiệm vụ.
Điều đặc biệt ở đây là tính khả giải và linh hoạt của phương pháp này không làm giảm hiệu suất, mà ngược lại còn cải thiện kết quả so với các mô hình end-to-end truyền thống. Để thúc đẩy nghiên cứu trong lĩnh vực này, nhóm sẽ cung cấp thư viện Python của ViperGPT dưới dạng mã nguồn mở sau khi công bố bài báo.
Kết luận
ViperGPT đánh dấu một bước tiến quan trọng trong việc kết hợp mô hình thị giác và ngôn ngữ bằng cách sinh mã tự động, mở ra tiềm năng mới cho các ứng dụng AI trong thị giác máy tính. Bằng cách sử dụng các mô hình ngôn ngữ lớn như GPT-3 Codex và kết hợp với khả năng xử lý hình ảnh, ViperGPT đã chứng minh rằng không chỉ có thể tạo ra các hệ thống hiệu suất cao mà còn đảm bảo tính minh bạch, linh hoạt và dễ dàng mở rộng.
Với việc mở mã nguồn, ViperGPT hứa hẹn sẽ trở thành công cụ quan trọng giúp các nhà nghiên cứu và kỹ sư xây dựng những hệ thống AI tiên tiến hơn mà không cần quá nhiều công sức trong việc huấn luyện mô hình từ đầu.