โมเดลแมชชีนเลิร์นนิงที่ขับเคลื่อนเครื่องมือสร้างโค้ดรุ่นถัดไป เช่น GitHub Copilot สามารถช่วยให้นักพัฒนาซอฟต์แวร์เขียนโค้ดที่ใช้งานได้จริงมากขึ้น โดยไม่ทำให้ปลอดภัยน้อยลง
นั่นเป็นผลลัพธ์เบื้องต้นจากการสำรวจผู้เข้าร่วม 58 คนกลุ่มเล็กๆ ที่ดำเนินการโดยกลุ่มนักวิทยาศาสตร์คอมพิวเตอร์ของมหาวิทยาลัยนิวยอร์ก
In กระดาษ เผยแพร่ผ่าน ArXiv, Gustavo Sandoval, Hammond Pearce, Teo Nys, Ramesh Karri, Brendan Dolan-Gavitt และ Siddharth Garg เล่าถึงวิธีที่พวกเขานำความปลอดภัยของซอร์สโค้ดที่สร้างขึ้นด้วยความช่วยเหลือของแบบจำลองภาษาขนาดใหญ่ (LLM) มาทดสอบ
LLM เช่น OpenAI GPT family ได้รับการฝึกอบรมเกี่ยวกับข้อมูลข้อความสาธารณะจำนวนมาก หรือซอร์สโค้ดสาธารณะในกรณีของ Codex ของ OpenAI ซึ่งเป็นลูกหลานของ GPT และรากฐานของ Copilot ของ GitHub ด้วยเหตุนี้ พวกเขาอาจสร้างข้อผิดพลาดที่เกิดขึ้นในอดีตโดยโปรแกรมเมอร์ที่เป็นมนุษย์ โดยแสดงให้เห็นหลักคำสอนที่ว่า “ขยะเข้า ขยะออก” มีความกลัวว่าเครื่องมือเหล่านี้จะสำรอกออกมาและแนะนำโค้ดที่ไม่ดีให้กับนักพัฒนา ซึ่งจะแทรกข้อมูลลงในโปรเจ็กต์ของพวกเขา
ยิ่งไปกว่านั้น ความปลอดภัยของรหัสสามารถกำหนดบริบทได้: รหัสที่มีการรักษาความปลอดภัยแบบแยกส่วนอาจไม่ปลอดภัยเมื่อดำเนินการตามลำดับเฉพาะกับซอฟต์แวร์อื่น ดังนั้นเครื่องมือเติมข้อความอัตโนมัติเหล่านี้อาจเสนอคำแนะนำเกี่ยวกับโค้ดที่สามารถทำได้เอง แต่เชื่อมต่อกับโค้ดอื่น ตอนนี้มีความเสี่ยงที่จะถูกโจมตีหรือใช้งานไม่ได้ ที่กล่าวว่าเครื่องมือเหล่านี้อาจไม่ทำให้มนุษย์การเขียนโปรแกรมแย่ลง
ในแง่หนึ่ง นักวิจัยกำลังดับไฟของตัวเอง ประมาณหนึ่งปีที่แล้ว นักวิทยาศาสตร์คอมพิวเตอร์สองคนเดียวกันได้ร่วมเขียนบทความเรื่อง “Asleep at the Keyboard? การประเมินความปลอดภัยของการมีส่วนร่วมโค้ดของ GitHub Copilot” พบว่าผลงาน เกี่ยวกับร้อยละ 40 ของผลลัพธ์จาก Copilot รวมถึงจุดอ่อนที่อาจใช้ประโยชน์ได้ (CWE).
“ความแตกต่างระหว่างเอกสารทั้งสองฉบับคือ 'Asleep at the Keyboard' กำลังมองหาการสร้างโค้ดอัตโนมัติเต็มรูปแบบ (ไม่มีมนุษย์อยู่ในลูป) และเราไม่มีผู้ใช้ที่เป็นมนุษย์เพื่อเปรียบเทียบ ดังนั้นเราจึงไม่สามารถพูดอะไรเกี่ยวกับวิธี ความปลอดภัยของ Copilot เมื่อเทียบกับความปลอดภัยของรหัสที่มนุษย์เขียนขึ้น” Brendan Dolan-Gavitt ผู้ร่วมเขียนบทความและผู้ช่วยศาสตราจารย์ในแผนกวิทยาการคอมพิวเตอร์และวิศวกรรมของ NYU Tandon กล่าวในอีเมลถึง ลงทะเบียน.
“เอกสารการศึกษาผู้ใช้พยายามที่จะจัดการกับชิ้นส่วนที่หายไปเหล่านั้นโดยตรง โดยให้ผู้ใช้ครึ่งหนึ่งได้รับความช่วยเหลือจาก Codex (โมเดลที่ขับเคลื่อน Copilot) และให้อีกครึ่งหนึ่งเขียนโค้ดด้วยตนเอง อย่างไรก็ตาม มันยังแคบกว่า 'Asleep at the Keyboard' ด้วย: เราดูแค่งานเดียวและหนึ่งภาษา (เขียนรายการที่เชื่อมโยงใน C)”
ในรายงานล่าสุด "ผลกระทบด้านความปลอดภัยของผู้ช่วยโค้ดโมเดลภาษาขนาดใหญ่: การศึกษาผู้ใช้" นักวิจัยจาก NYU หลายคนยอมรับว่างานก่อนหน้านี้ล้มเหลวในการสร้างแบบจำลองการใช้เครื่องมือแบบ LLM เช่น Copilot อย่างสมจริง
“ประการแรก การศึกษาเหล่านี้สันนิษฐานว่า LLM สร้างรหัสทั้งหมดโดยอัตโนมัติ (เราจะเรียกโหมดนี้ว่าโหมดนักบินอัตโนมัติ)” โลงศพอธิบายในเอกสารของพวกเขา
“ในทางปฏิบัติ LLM ในการเติมโค้ดช่วยให้นักพัฒนามีคำแนะนำว่าจะเลือกยอมรับ แก้ไข หรือปฏิเสธ ซึ่งหมายความว่าในขณะที่โปรแกรมเมอร์มีแนวโน้มที่จะมีอคติแบบอัตโนมัติอาจยอมรับการเสร็จสิ้นของบั๊กกี้อย่างไร้เดียงสา แต่นักพัฒนารายอื่นอาจสร้างโค้ดบั๊กน้อยลงโดยใช้เวลาที่บันทึกไว้เพื่อแก้ไขข้อบกพร่อง”
ประการที่สอง พวกเขาสังเกตเห็นว่าในขณะที่ LLM แสดงให้เห็นว่าผลิตโค้ดแบบบั๊กกี้ มนุษย์ก็ทำเช่นกัน ข้อบกพร่องในข้อมูลการฝึกอบรม LLM มาจากผู้คน
ดังนั้น แทนที่จะประเมินข้อบกพร่องของโค้ดที่สร้าง LLM ด้วยตนเอง พวกเขาจึงเริ่มเปรียบเทียบว่าโค้ดที่สร้างโดยนักพัฒนาที่เป็นมนุษย์ซึ่งได้รับความช่วยเหลือจากโมเดลการเรียนรู้ด้วยเครื่องนั้นแตกต่างจากโค้ดที่สร้างโดยการเขียนโปรแกรมที่ทำงานด้วยตนเองอย่างไร
นักวิทยาศาสตร์คอมพิวเตอร์ของ NYU ได้คัดเลือกผู้เข้าร่วมการสำรวจ 58 คน – นักศึกษาระดับปริญญาตรีและบัณฑิตศึกษาในหลักสูตรการพัฒนาซอฟต์แวร์ – และแบ่งออกเป็นกลุ่มควบคุม ซึ่งจะทำงานโดยไม่มีข้อเสนอแนะ และกลุ่มที่ได้รับความช่วยเหลือซึ่งเข้าถึงระบบคำแนะนำที่กำหนดเองซึ่งสร้างขึ้นโดยใช้ OpenAI โคเดกซ์ API พวกเขายังใช้โมเดล Codex เพื่อสร้าง 30 วิธีแก้ปัญหาสำหรับปัญหาการเขียนโปรแกรมที่กำหนดเป็นจุดเปรียบเทียบ กลุ่ม Autopilot นี้ทำหน้าที่เป็นกลุ่มควบคุมที่สองเป็นหลัก
ทั้งกลุ่มที่ได้รับความช่วยเหลือและกลุ่มควบคุมได้รับอนุญาตให้ปรึกษาแหล่งข้อมูลบนเว็บ เช่น Google และ Stack Overflow แต่ไม่สามารถขอความช่วยเหลือจากผู้อื่นได้ งานเสร็จสิ้นใน Visual Studio Code ภายในคอนเทนเนอร์บนเว็บที่สร้างด้วยโอเพ่นซอร์ส สุสาน.
ผู้เข้าร่วมถูกขอให้กรอกโปรแกรมรายการซื้อของโดยใช้ภาษา C เพราะ “นักพัฒนาสามารถแสดงรูปแบบการออกแบบที่เปราะบางใน C ได้โดยไม่ได้ตั้งใจ” และเนื่องจากเครื่องมือคอมไพเลอร์ C ที่ใช้ไม่ได้ตรวจสอบข้อผิดพลาดในระดับเดียวกันสำหรับ toolchains ภาษาสมัยใหม่เช่น Go และ Rust ทำ
เมื่อนักวิจัยวิเคราะห์โค้ดที่ผลิตโดยกลุ่มควบคุมและผู้ช่วยด้วยตนเอง พวกเขาพบว่าคำแนะนำโค้ด AI ไม่ได้ทำให้ทุกอย่างแย่ลงโดยรวม ตรงกันข้ามกับงานก่อนหน้า
ดูใสแต่มีรายละเอียด
“[W]e ไม่พบหลักฐานที่บ่งชี้ว่าความช่วยเหลือจาก Codex เพิ่มอุบัติการณ์จุดบกพร่องด้านความปลอดภัย” รายงานระบุ ขณะที่สังเกตว่าขนาดกลุ่มตัวอย่างที่เล็กของการศึกษาหมายความว่าต้องมีการศึกษาเพิ่มเติม “ในทางตรงกันข้าม มีหลักฐานบางอย่างที่ชี้ให้เห็นว่า CWEs/LoC [lines of code] ลดลงด้วยความช่วยเหลือของ Codex”
“เป็นเรื่องยากที่จะสรุปสิ่งนี้ด้วยความมั่นใจทางสถิติมาก” Siddharth Garg นักวิจัยด้านความปลอดภัยทางไซเบอร์และรองศาสตราจารย์ในแผนกวิศวกรรมของ NYU Tandon กล่าวในการสัมภาษณ์ทางโทรศัพท์กับ ลงทะเบียน.
เป็นการยากที่จะสรุปด้วยความมั่นใจทางสถิติมาก
อย่างไรก็ตาม เขากล่าว "ข้อมูลแสดงให้เห็นว่าผู้ใช้ Copilot ไม่ได้แย่ไปกว่านี้มาก"
Dolan-Gavitt ระมัดระวังในการค้นพบเช่นเดียวกัน
“การวิเคราะห์ผลการศึกษาผู้ใช้ของเราในปัจจุบันไม่พบความแตกต่างที่มีนัยสำคัญทางสถิติ เรายังคงวิเคราะห์สิ่งนี้ รวมถึงในเชิงคุณภาพ ดังนั้นฉันจะไม่ได้ข้อสรุปที่ชัดเจนจากเรื่องนี้ โดยเฉพาะอย่างยิ่งเนื่องจากเป็นการศึกษาขนาดเล็ก (ผู้ใช้ทั้งหมด 58 ราย) และ ผู้ใช้ทั้งหมดเป็นนักเรียนมากกว่านักพัฒนามืออาชีพ” เขากล่าว
“ถึงกระนั้น เราสามารถพูดได้ว่ากับผู้ใช้เหล่านี้ ในงานนี้ ผลกระทบด้านความปลอดภัยของการได้รับความช่วยเหลือจาก AI อาจไม่ใหญ่มาก หากมีผลกระทบมาก เราจะสังเกตเห็นความแตกต่างที่มากขึ้นระหว่างทั้งสองกลุ่ม เรากำลังทำการวิเคราะห์ทางสถิติอีกเล็กน้อยเพื่อให้แม่นยำในตอนนี้”
นอกนั้นก็มีความเข้าใจอื่นๆ เกิดขึ้น หนึ่งคือผู้เข้าร่วมกลุ่มผู้ช่วยมีประสิทธิผลมากขึ้น สร้างบรรทัดของโค้ดได้มากขึ้น และทำงานในส่วนที่มากขึ้นในงานที่ได้รับมอบหมาย
“ผู้ใช้ในกลุ่ม Assisted ผ่านการทดสอบการทำงานมากขึ้นและผลิตโค้ดที่ใช้งานได้มากขึ้น” Garg กล่าว และเสริมว่าผลลัพธ์ประเภทนี้อาจช่วยให้บริษัทต่างๆ ที่มองหาเครื่องมือเข้ารหัสความช่วยเหลือตัดสินใจว่าจะปรับใช้หรือไม่
อีกประการหนึ่งคือนักวิจัยสามารถแยกแยะผลลัพธ์ที่ผลิตโดยกลุ่ม Control, Assisted และ Autopilot ซึ่งอาจบรรเทาได้ ความกังวล เกี่ยวกับการโกงพลังงาน AI ในการตั้งค่าการศึกษา
โลงศพยังพบว่าเครื่องมือ AI จำเป็นต้องได้รับการพิจารณาในบริบทของข้อผิดพลาดของผู้ใช้ “ผู้ใช้แจ้งข้อความที่อาจรวมถึงข้อบกพร่อง ยอมรับข้อความแจ้งของรถที่ลงเอยในโปรแกรมที่ 'เสร็จสมบูรณ์' รวมทั้งยอมรับข้อบกพร่องซึ่งจะถูกลบออกในภายหลัง” กระดาษกล่าว “ในบางกรณี ผู้ใช้ก็มีจุดบกพร่องมากกว่าที่โมเดลแนะนำ!”
คาดหวังการทำงานต่อไปตามแนวทางเหล่านี้ ®
- AI
- ไอ อาร์ต
- เครื่องกำเนิดไออาร์ท
- หุ่นยนต์ไอ
- ปัญญาประดิษฐ์
- ใบรับรองปัญญาประดิษฐ์
- ปัญญาประดิษฐ์ในการธนาคาร
- หุ่นยนต์ปัญญาประดิษฐ์
- หุ่นยนต์ปัญญาประดิษฐ์
- ซอฟต์แวร์ปัญญาประดิษฐ์
- blockchain
- การประชุม blockchain ai
- เหรียญอัจฉริยะ
- ปัญญาประดิษฐ์สนทนา
- การประชุม crypto ai
- ดัล-อี
- การเรียนรู้ลึก ๆ
- google ai
- เรียนรู้เครื่อง
- เพลโต
- เพลโตไอ
- เพลโตดาต้าอินเทลลิเจนซ์
- เกมเพลโต
- เพลโตดาต้า
- เพลโตเกม
- ขนาดไอ
- วากยสัมพันธ์
- ลงทะเบียน
- ลมทะเล