Facebook ra mắt TransCoder: AI chuyển đổi ngôn ngữ lập trình này sang ngôn ngữ lập trình khác với độ chính xác cao

Các nhà nghiên cứu của Facebook vừa tuyên bố rằng họ đã phát triển thành công một trình chuyển đổi ngôn ngữ lập trình ứng dụng trí tuệ nhân tạo. Công cụ mang tên TransCoder này có thể chuyển đổi mã nguồn từ ngôn ngữ lập trình bậc cao này sang ngôn ngữ lập trình bậc cao khác. Ví dụ như chuyển từ C++ sang Java, Python và ngược lại.

Được phát triển dựa trên pháp học không có giám sát, TransCoder sẽ tìm kiếm các biểu mẫu chưa từng được phát hiện trong các tập dữ liệu, những thứ chưa gắn nhãn và với sự giám sát tối thiểu từ phía con người. Theo tính toán, TransCoder vượt trội hơn rất nhiều so với các công cụ thương mại hiện có.

Facebook TransCoder có thể chuyển đổi mã nguồn từ ngôn ngữ lập trình này sang ngôn ngữ lập trình khác với độ chính xác cao
Facebook TransCoder có thể chuyển đổi mã nguồn từ ngôn ngữ lập trình này sang ngôn ngữ lập trình khác với độ chính xác cao

Việc chuyển đổi mã nguồn đang dùng ngôn ngữ cũ sang các ngôn ngữ lập trình hiện đại và hiệu quả hơn như Java, C++ thường tốn kém cả về thời gian lẫn tiền bạc. Hơn nữa, những người đảm nhiệm công việc này cần có kiến thức chuyên sâu cả về ngôn ngữ cũ lẫn ngôn ngữ mới. Ví dụ, ngân hàng Commonwealth của Úc đã mất tới 5 năm cùng khoản chi phí 750 triệu USD để chuyển đổi mã nguồn toàn bộ hệ thống của họ từ COBOL sang Java.

Về lý thuyết, các trình chuyển đổi ngôn ngữ lập trình có thể hỗ trợ rất tốt cho quá trình trên, giúp các lập trình viên không cần phải viết lại mã nguồn từ đầu. Tuy nhiên, trong thực tế, rất khó để xây dựng, hoàn thiện một trình chuyển đổi bởi các ngôn ngữ lập trình có thể sử dụng bộ cú pháp khác nhau và dựa vào các nền tảng API, thư viện hàm tiêu chuẩn và các loại biến khác nhau.

Tuy nhiên, bằng cách sử dụng phương pháp học không giám sát, TransCoder của Facebook có thể chuyển đổi giữa C++, Java và Python với độ chính xác ở mức cao. TransCoder được huấn luyện bằng cách ghi nhận, lập bản đồ những đoạn mã tương tự, có chung chức năng của các ngôn ngữ lập trình. Mã nguồn được dùng để huấn luyện TransCoder thậm chí còn được che đi các đoạn mã ngẫu nhiên để TransCoder dự đoán ra chúng dựa trên ngữ cảnh.

Một quy trình khác có tên khử nhiễu mã hóa tự động sẽ đào tạo TransCoder tự tạo ra các dòng code hợp lệ khi được cung cấp dữ liệu đầu vào không được mạch lạc, rõ ràng. Cuối cùng, quy trình dịch ngược mã nguồn cho phép TransCoder tạo ra một hệ thống dữ liệu song song có thể dùng để huấn luyện trong tương lai.

Bản chất đa ngôn ngữ của TransCoder tiếp tục được "nuôi dưỡng" bằng tập hợp các "điểm neo" chung trên các ngôn ngữ lập trình như các từ khóa phổ biến "for", "while", "if" và "try", các con số, các toán tử toán học và các chuỗi tiếng Anh. Quy trình dịch ngược cũng sẽ giúp TransCoder cải thiện chất lượng của nó theo thời gian.

Các nhà nghiên cứu của Facebook đã đào tạo TransCoder trên bộ dữ liệu công khai của GitHub, chứa 2,8 triệu kho lưu trữ mã nguồn mở. Mục tiêu của quá trình đào tạo này là giúp TransCoder có thể chuyển đổi ngôn ngữ lập trình này sang ngôn ngữ lập trình khác ở cấp độ hàm. Sau khi TransCoder được thực hành trên tất cả các mã nguồn có sẵn, chỉ có các thành phần khử nhiễu bằng mã hóa tự động và dịch ngược được đào tạo tiếp về các hàm, xen kẽ với những thành phần làm việc trên 6.000 token của các ngôn ngữ lập trình.

Để đánh giá TransCoder, các nhà nghiên cứu đã trích xuất 852 hàm song song từ C++, Java và Python từ GeeksforGeeks, một nền tảng trực tuyến chuyên tổng hợp các vấn đề lập trình và cung cấp hướng giải quyết trong nhiều ngôn ngữ lập trình khác nhau. Bằng cách này, họ đã phát triển một hệ đo lường mới, computational accuracy (độ chính xác tính toán) để kiểm tra xem khi cung cấp cùng một input thì hàm giả thuyết có tạo ra output giống như một tham chiếu không.

Facebook thừa nhận rằng mặc dù phiên bản tốt nhất của TransCoder cũng chưa tạo ra nhiều cấu trúc hàm chính xác so với đầu vào. Tuy nhiên, nhìn chung kết quả chuyển đổi của công cụ này có độ chính xác tính toán cao. Dưới đây là thống kê độ chính xác của TransCoder mà Facebook tính toán được:

  • Khi dịch từ C++ sang Java, TransCoder đạt 74,8% so với kết quả dự kiến
  • Khi dịch từ C++ sang Python, TransCoder đạt 67,2% so với kết quả dự kiến
  • Khi dịch từ Java sang C++, TransCoder đạt 91,6% so với kết quả dự kiến
  • Khi dịch từ Python sang Java, TransCoder đạt 56,1% so với kết quả dự kiến
  • Khi dịch từ Python sang C++, TransCoder đạt 57,8% so với kết quả dự kiến
  • Khi dịch từ Java sang Python, TransCoder đạt 68,7% so với kết quả dự kiến

Theo các nhà nghiên cứu, TransCoder cho thấy nó đã hiểu rõ cú pháp cụ thể của từng ngôn ngữ cũng như cấu trúc dữ liệu và phương thức của ngôn ngữ. TransCoder cũng có thể điều chỉnh chính xác các thư viện của từng ngôn ngữ trong khi thích ứng với các sửa đổi nhỏ, ví dụ như một biến đầu vào được đổi tên. Mặc dù vậy, TransCoder vẫn chưa xác định được một số biến nhất định trong quá trình chuyển đổi. Tuy nhiên, các nhà nghiên cứu vẫn đánh giá TransCoder vượt trội hơn so với các framework được tạo ra bằng cách viết lại những quy tắc một cách thủ công dựa trên kiến thức chuyên sau.

Bên cạnh Facebook, rất nhiều ông lớn cũng quan tâm tới việc phát triển các AI có khả năng "viết code" thay cho con người
Bên cạnh Facebook, rất nhiều ông lớn cũng quan tâm tới việc phát triển các AI có khả năng "viết code" thay cho con người

"TransCoder dễ dàng khái quát hóa bất kỳ ngôn ngữ lập trình nào, không đòi hỏi phải đưa vào bất kỳ kiến thức chuyên sâu nào. Xét về mức độ hiệu quả, TransCoder vượt xa so với các giải pháp thương mại hiện có", các nhà nghiên cứu của Facebook tuyên bố. "Kết quả thử nghiệm của chúng tôi cho thấy rất nhiều lỗi của TransCoder có thể dễ dàng khắc phục bằng cách thêm vào bộ giải mã những ràng buộc đơn giản nhằm đảm bảo các hàm được tạo ra là chính xác về mặt cú pháp. Hoặc chúng tôi có thể tạo ra những kiến trúc chuyên dụng cho vấn đề này".

Ngoài Facebook, một số ông lớn khác cũng đang quan tâm, phát triển các hệ thống AI có khả năng "viết code" thay con người. Trong hội nghị Microsoft Build hồi đầu năm nay, OpenAI đã trình diễn một trí tuệ nhân tạo được huấn luyện trên GitHub với khả năng viết ra phần mềm đầy đủ chức năng dựa trên các dòng bình luận bằng tiếng Anh. Hai năm trước, Đại học Rice đã tạo ra một hệ thống mang tên Bayou có khả năng tự viết ra phần mềm bằng cách tổng hợp các "ý muốn" trong những dòng code được chia sẻ công khai.

"Những hệ thống AI này sẽ giúp loại bỏ những chi tiết vụn vặt trong quá trình phát triển phần mềm", Justin Gottschlich, giám đốc Intel Labs chia sẻ. "Chúng có thể giúp lập trình viên tăng tốc độ phát triển phần mềm bằng cách giải quyết các lỗi. Ngoài ra, chúng còn giúp tăng số lượng công việc trong ngành công nghệ khi mà những người không có nền tảng về lập trình cũng có thể gia nhập. Những người này sẽ đảm nhiệm các công việc sáng tạo và dành phần viết code lại cho AI".

Bạn nghĩ sao về AI mới này của Facebook? Hãy để lại ý kiến trong phần bình luận bên dưới bài viết nhé!

Thứ Ba, 09/06/2020 17:43
42 👨 4.158
0 Bình luận
Sắp xếp theo
    ❖ Trí tuệ nhân tạo (AI)