Logo Zephyrnet

DeepMind's AlphaCode chinh phục mã hóa, hoạt động tốt như con người

Ngày:

Bí quyết để lập trình tốt có thể là bỏ qua mọi thứ chúng ta biết về viết mã. ít nhất là cho AI.

Nghe có vẻ phi lý, nhưng AI viết mã mới của DeepMind vừa đánh bại khoảng 50% các lập trình viên con người trong một cuộc thi lập trình có tính cạnh tranh cao. Nhìn bề ngoài, các nhiệm vụ nghe có vẻ tương đối đơn giản: mỗi lập trình viên được đưa ra một vấn đề bằng ngôn ngữ hàng ngày và các thí sinh cần viết một chương trình để giải quyết nhiệm vụ đó nhanh nhất có thể—và hy vọng là không mắc lỗi.

Nhưng đó là một thách thức khổng lồ đối với các lập trình viên AI. Trước tiên, các tác nhân cần phải hiểu nhiệm vụ—điều gì đó đến với con người một cách tự nhiên—rồi sau đó tạo mã cho các vấn đề phức tạp thách thức ngay cả những lập trình viên giỏi nhất của con người.

Các lập trình viên AI không có gì mới. Trở lại năm 2021, phòng thí nghiệm nghiên cứu phi lợi nhuận OpenAI đã phát hành Sách thuốc, một chương trình thành thạo hơn chục ngôn ngữ lập trình và được điều chỉnh theo ngôn ngữ tự nhiên, hàng ngày. Điều gì thiết lập bản phát hành AI của DeepMind—được mệnh danh là Mã chữ cái—apart là một phần những gì nó không cần.

Không giống như các trình lập trình AI trước đây, AlphaCode tương đối ngây thơ. Nó không có bất kỳ kiến ​​thức tích hợp nào về cấu trúc hoặc cú pháp mã máy tính. Thay vào đó, nó học phần nào tương tự như việc trẻ mới biết đi nắm bắt ngôn ngữ đầu tiên của chúng. AlphaCode sử dụng cách tiếp cận "chỉ dữ liệu". Nó học bằng cách quan sát các nhóm mã hiện có và cuối cùng có thể giải cấu trúc và kết hợp “từ” và “cụm từ” một cách linh hoạt—trong trường hợp này là các đoạn mã—để giải quyết các vấn đề mới.

Khi được thử thách với CodeContest—cuộc chiến rap cực hình của lập trình cạnh tranh—AI đã giải quyết được khoảng 30% vấn đề, trong khi đánh bại một nửa đối thủ cạnh tranh là con người. Tỷ lệ thành công có vẻ thấp, nhưng đây là những vấn đề vô cùng phức tạp. Ví dụ, Codex của OpenAI đã quản lý thành công ở mức một chữ số khi đối mặt với các điểm chuẩn tương tự.

“Thật ấn tượng, hiệu suất mà họ có thể đạt được đối với một số vấn đề khá khó khăn,” nói Tiến sĩ Armando Solar-Lezama tại MIT, người không tham gia nghiên cứu.

Các vấn đề mà AlphaCode giải quyết khác xa với các ứng dụng hàng ngày—hãy nghĩ về nó như một giải đấu toán tinh vi ở trường học. Cũng không có khả năng AI sẽ tiếp quản hoàn toàn việc lập trình, vì mã của nó có rất nhiều lỗi. Nhưng nó có thể đảm nhận các nhiệm vụ thông thường hoặc đưa ra các giải pháp vượt trội mà các lập trình viên con người không thể làm được.

Có lẽ quan trọng hơn, AlphaCode mở đường cho một cách mới để thiết kế các lập trình viên AI: quên đi kinh nghiệm trong quá khứ và chỉ lắng nghe dữ liệu.

Tiến sĩ J. Zico Kolter tại Đại học Carnegie Mellon và Trung tâm Trí tuệ nhân tạo Bosch ở Pittsburgh, người không tham gia nghiên cứu, cho biết: “Có vẻ ngạc nhiên khi quy trình này có bất kỳ cơ hội nào để tạo ra mã chính xác. Nhưng những gì AlphaCode thể hiện là khi “được cung cấp dữ liệu phù hợp và độ phức tạp của mô hình, cấu trúc mạch lạc có thể xuất hiện”, ngay cả khi vẫn còn tranh cãi liệu AI có thực sự “hiểu” nhiệm vụ đang thực hiện hay không.

ngôn ngữ để mã

AlphaCode chỉ là nỗ lực mới nhất trong việc khai thác AI để tạo ra các chương trình tốt hơn.

Viết mã giống như viết một cuốn sách dạy nấu ăn. Mỗi tác vụ yêu cầu nhiều cấp độ chính xác: một là cấu trúc tổng thể của chương trình, giống như tổng quan về công thức. Một cách khác là trình bày chi tiết từng quy trình bằng ngôn ngữ và cú pháp cực kỳ rõ ràng, chẳng hạn như mô tả từng bước phải làm gì, mỗi thành phần cần cho vào bao nhiêu, ở nhiệt độ nào và bằng công cụ gì.

Mỗi tham số này—ví dụ, ca cao để làm sô cô la nóng—được gọi là “biến số” trong một chương trình máy tính. Nói một cách đơn giản, một chương trình cần xác định các biến—giả sử “c” cho ca cao. Sau đó, nó trộn “c” với các biến số khác, chẳng hạn như sữa và đường, để giải quyết vấn đề cuối cùng: tạo ra một cốc sô cô la nóng hấp dẫn.

Phần khó là dịch tất cả những điều đó sang AI, đặc biệt là khi nhập một yêu cầu có vẻ đơn giản: làm cho tôi một sô cô la nóng.

Trở lại trong 2021, Codex có bước đột phá đầu tiên vào lĩnh vực viết mã AI. Ý tưởng của nhóm là dựa vào GPT-3, một chương trình đang gây bão trên toàn thế giới với khả năng phiên dịch và bắt chước ngôn ngữ của con người. Nó kể từ khi phát triển thành ChatGPT, một niềm vui và không quá ác chatbot tham gia vào các cuộc trò chuyện phức tạp và thú vị đáng ngạc nhiên.

Vậy vấn đề là gì? Cũng giống như các ngôn ngữ, viết mã là về một hệ thống các biến, cú pháp và cấu trúc. Nếu các thuật toán hiện có hoạt động với ngôn ngữ tự nhiên, tại sao không sử dụng một chiến lược tương tự để viết mã?

AI mã hóa AI

AlphaCode đã áp dụng cách tiếp cận đó.

AI được xây dựng trên một mô hình máy học có tên là “mô hình ngôn ngữ lớn”, làm nền tảng cho GPT-3. Khía cạnh quan trọng ở đây là rất nhiều dữ liệu. Ví dụ, GPT-3 đã được cung cấp hàng tỷ từ từ các tài nguyên trực tuyến như sách kỹ thuật số và các bài viết trên Wikipedia để bắt đầu "thông dịch" ngôn ngữ của con người. Codex đã được đào tạo trên hơn 100 gigabyte dữ liệu được lấy từ Github, một thư viện phần mềm trực tuyến phổ biến, nhưng vẫn thất bại khi gặp các vấn đề phức tạp.

AlphaCode kế thừa “trái tim” của Codex ở chỗ nó cũng vận hành tương tự như một mô hình ngôn ngữ lớn. Nhưng có hai khía cạnh làm cho nó khác biệt, Kolter giải thích.

Đầu tiên là dữ liệu đào tạo. Ngoài việc đào tạo AlphaCode về mã Github, nhóm DeepMind đã xây dựng bộ dữ liệu tùy chỉnh từ CodeContests từ hai bộ dữ liệu trước đó, với hơn 13,500 thử thách. Mỗi người đi kèm với một lời giải thích về nhiệm vụ trong tay và nhiều giải pháp tiềm năng trên nhiều ngôn ngữ. Kết quả là một thư viện dữ liệu đào tạo khổng lồ được điều chỉnh phù hợp với thách thức hiện tại.

Kolter cho biết: “Có thể cho rằng, bài học quan trọng nhất đối với bất kỳ hệ thống ML [machine learning] nào là nó phải được đào tạo về dữ liệu tương tự như dữ liệu mà nó sẽ thấy trong thời gian chạy”.

Bí quyết thứ hai là sức mạnh về số lượng. Khi AI viết mã từng đoạn mã (hoặc từng mã thông báo), thật dễ dàng để viết mã không hợp lệ hoặc không chính xác, khiến chương trình gặp sự cố hoặc đưa ra kết quả kỳ lạ. AlphaCode giải quyết vấn đề bằng cách tạo ra hơn một triệu giải pháp tiềm năng cho một vấn đề duy nhất—lớn hơn nhiều lần so với các nỗ lực AI trước đây.

Để kiểm tra mức độ tỉnh táo và thu hẹp kết quả, AI chạy ứng viên giải quyết thông qua các trường hợp thử nghiệm đơn giản. Sau đó, nó phân cụm các cụm tương tự để chỉ xác định một cụm từ mỗi cụm để vượt qua thử thách. Tiến sĩ Kevin Ellis tại Đại học Cornell, người không tham gia vào công việc, cho biết đó là bước đổi mới nhất.

Hệ thống hoạt động tốt một cách đáng ngạc nhiên. Khi gặp thách thức với một loạt vấn đề mới, AlphaCode đưa ra các giải pháp tiềm năng bằng hai ngôn ngữ điện toán—Python hoặc C++—đồng thời loại bỏ những giải pháp không phù hợp. Khi đọ sức với hơn 5,000 người tham gia, AI vượt trội hơn khoảng 45% so với các lập trình viên chuyên nghiệp.

Một thế hệ lập trình viên AI mới

Mặc dù chưa đạt đến trình độ của con người, nhưng sức mạnh của AlphaCode là sự khéo léo hoàn toàn của nó.

Thay vì sao chép và dán các phần của mã đào tạo trước đó, AlphaCode đã tạo ra các đoạn mã thông minh mà không cần sao chép các đoạn mã hoặc logic lớn trong “tài liệu đọc” của nó. Sự sáng tạo này có thể là do cách học tập dựa trên dữ liệu của nó.

Kolter cho biết điều còn thiếu ở AlphaCode là “bất kỳ thiết kế kiến ​​trúc nào trong mô hình máy học liên quan đến…tạo mã”. Viết mã máy tính giống như xây dựng một tòa nhà phức tạp: nó có cấu trúc cao, với các chương trình cần một cú pháp xác định với ngữ cảnh được nhúng rõ ràng để tạo ra giải pháp.

AlphaCode không làm điều đó. Thay vào đó, nó tạo mã tương tự như cách các mô hình ngôn ngữ lớn tạo văn bản, viết toàn bộ chương trình và sau đó kiểm tra các lỗi tiềm ẩn (với tư cách là người viết, điều này cảm thấy quen thuộc một cách kỳ lạ). Làm thế nào chính xác AI đạt được điều này vẫn còn là điều bí ẩn—các hoạt động bên trong của quá trình được chôn vùi bên trong “tâm trí” cỗ máy vẫn chưa thể hiểu được của nó.

Điều đó không có nghĩa là AlphaCode đã sẵn sàng tiếp quản công việc lập trình. Đôi khi nó đưa ra những quyết định đau đầu, chẳng hạn như tạo một biến nhưng không sử dụng nó. Ngoài ra còn có mối nguy hiểm là nó có thể ghi nhớ các mẫu nhỏ từ một số ví dụ hạn chế—một bầy mèo cào tôi coi như tất cả mèo đều xấu xa—và đầu ra của các mẫu đó. Điều này có thể biến chúng thành những con vẹt ngẫu nhiên, Kolter giải thích, đó là AI không hiểu vấn đề nhưng có thể nói như vẹt hoặc “bắt chước một cách mù quáng” các giải pháp có khả năng xảy ra.

Tương tự như hầu hết các thuật toán học máy, AlphaCode cũng cần sức mạnh tính toán mà ít người có thể khai thác được, mặc dù mã được phát hành công khai.

Tuy nhiên, nghiên cứu gợi ý về một con đường thay thế cho các lập trình viên AI tự trị. Thay vì trang bị cho máy móc trí tuệ lập trình truyền thống, chúng ta có thể cần cân nhắc rằng bước này không phải lúc nào cũng cần thiết. Thay vào đó, tương tự như xử lý ngôn ngữ tự nhiên, tất cả những gì một lập trình viên AI cần để thành công là dữ liệu và tỷ lệ.

Kolter nói hay nhất: “AlphaCode gieo xúc xắc. Các bộ dữ liệu được công khai. Hãy để chúng tôi xem những gì tương lai nắm giữ.

Ảnh: Deepmind

tại chỗ_img

Tin tức mới nhất

tại chỗ_img