IBM เปิด CodeNet สำหรับระบบการเรียนรู้ของเครื่องที่แปลและตรวจสอบโค้ด

IBM ได้เปิดตัวโครงการริเริ่ม CodeNet ซึ่งมีเป้าหมายเพื่อให้นักวิจัยมีชุดข้อมูลที่ช่วยให้พวกเขาสามารถทดลองใช้เทคนิคการเรียนรู้ของเครื่องเพื่อสร้างนักแปลภาษาการเขียนโปรแกรม เครื่องสร้างโค้ด และเครื่องวิเคราะห์ CodeNet มีคอลเลกชันตัวอย่างโค้ด 14 ล้านตัวอย่างที่ช่วยแก้ปัญหาการเขียนโปรแกรมทั่วไป 4053 รายการ โดยรวมแล้ว คอลเลกชันประกอบด้วยโค้ดประมาณ 500 ล้านบรรทัดและครอบคลุมภาษาการเขียนโปรแกรม 55 ภาษา ทั้งภาษาสมัยใหม่ เช่น C++, Java, Python และ Go และภาษาดั้งเดิม เช่น COBOL, Pascal และ FORTRAN การพัฒนาของโครงการได้รับการเผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0 และชุดข้อมูลได้รับการวางแผนให้เผยแพร่ในรูปแบบของสาธารณสมบัติ

ตัวอย่างมีคำอธิบายประกอบและใช้อัลกอริธึมที่เหมือนกันในภาษาการเขียนโปรแกรมที่แตกต่างกัน คาดว่าชุดที่นำเสนอจะช่วยฝึกอบรมระบบการเรียนรู้ของเครื่องและพัฒนานวัตกรรมในด้านการแปลและการแยกวิเคราะห์รหัสเครื่อง คล้ายกับวิธีที่ฐานข้อมูลภาพที่มีคำอธิบายประกอบของ ImageNet ช่วยในการพัฒนาระบบการจดจำรูปแบบและระบบการมองเห็นของคอมพิวเตอร์ การแข่งขันเขียนโปรแกรมต่างๆ ถือเป็นแหล่งที่มาหลักประการหนึ่งของการรวบรวม

ต่างจากนักแปลแบบดั้งเดิมซึ่งดำเนินการตามกฎการแปล ระบบการเรียนรู้ของเครื่องสามารถจับภาพและคำนึงถึงบริบทของการใช้โค้ดได้ เมื่อแปลงจากภาษาโปรแกรมหนึ่งเป็นภาษาอื่น บริบทมีความสำคัญพอๆ กับการแปลจากภาษามนุษย์หนึ่งเป็นอีกภาษาหนึ่ง การขาดการพิจารณาบริบทนี้เป็นสิ่งที่ป้องกันไม่ให้โค้ดถูกแปลงเป็นภาษาเดิมเช่น COBOL

การมีฐานข้อมูลขนาดใหญ่ของการใช้งานอัลกอริทึมในภาษาต่างๆ จะช่วยสร้างระบบการเรียนรู้ของเครื่องสากลที่แทนที่จะแปลโดยตรงระหว่างภาษาใดภาษาหนึ่ง จัดการการแสดงโค้ดที่เป็นนามธรรมมากขึ้น โดยไม่ขึ้นอยู่กับภาษาโปรแกรมเฉพาะ ระบบดังกล่าวสามารถใช้เป็นนักแปลโดยแปลรหัสที่ส่งในภาษาใด ๆ ที่รองรับเป็นการเป็นตัวแทนนามธรรมภายในซึ่งสามารถสร้างรหัสได้ในภาษาต่างๆ

ระบบยังสามารถทำการแปลงแบบสองทิศทางได้อีกด้วย ตัวอย่างเช่น ธนาคารและหน่วยงานของรัฐยังคงใช้โครงการในภาษา COBOL ที่ล้าสมัย นักแปลที่ใช้แมชชีนเลิร์นนิงจะสามารถแปลงโค้ด COBOL เป็นรูปแบบ Java ได้ และหากจำเป็น สามารถแปลแฟรกเมนต์ Java กลับเป็นโค้ด COBOL ได้

นอกเหนือจากการแปลระหว่างภาษาแล้ว ยังกล่าวถึงขอบเขตการใช้งาน CodeNet เช่น การสร้างระบบค้นหาโค้ดอัจฉริยะและการตรวจจับโคลนอัตโนมัติ รวมถึงการพัฒนาเครื่องมือเพิ่มประสิทธิภาพและระบบแก้ไขโค้ดอัตโนมัติอีกด้วย โดยเฉพาะอย่างยิ่ง ตัวอย่างที่นำเสนอใน CodeNet มีข้อมูลเมตาที่อธิบายผลลัพธ์ของการทดสอบประสิทธิภาพ ขนาดโปรแกรมผลลัพธ์ การใช้หน่วยความจำ และสถานะ ซึ่งช่วยให้เราสามารถแยกแยะรหัสที่ถูกต้องจากรหัสที่มีข้อผิดพลาด (เพื่อแยกความแตกต่างรหัสที่ถูกต้องจากรหัสที่ไม่ถูกต้อง คอลเลกชันรวมตัวอย่างที่มีข้อผิดพลาดโดยเฉพาะซึ่งมีส่วนแบ่ง 29.5%) ระบบการเรียนรู้ของเครื่องสามารถนำข้อมูลเมตานี้มาพิจารณาเพื่อสร้างโค้ดที่เหมาะสมที่สุดหรือเพื่อระบุการถดถอยในโค้ดที่วิเคราะห์ (ระบบสามารถเข้าใจได้ว่าอัลกอริทึมในโค้ดที่ส่งมาไม่ได้ถูกนำมาใช้อย่างเหมาะสมที่สุดหรือมีข้อผิดพลาด)

ที่มา: opennet.ru

เพิ่มความคิดเห็น