แบบจำลองการถดถอยที่แม่นยำและรวดเร็วโดยอาศัยพื้นฐานทางคณิตศาสตร์ที่มั่นคง
รหัสนี้แสดงถึงการนำแบบจำลองการถดถอยของโคลโมโกรอฟ-อาร์โนลด์ไปใช้และวิธีการระบุแบบจำลองสองวิธี แนวทางนี้เพิ่งได้รับความนิยมภายใต้ชื่อ "KAN: Kolmogorov-Arnold Networks"
รหัสนี้เขียนด้วย MATLAB
รหัสนี้เป็นผลมาจากโครงการความร่วมมือระหว่างฉันกับ Andrew Polar ที่ดำเนินการในปี 2562-2566 แนวคิดพื้นฐานของแนวทางนี้ได้รับการเผยแพร่ใน Ref. ฉบับที่ 1 ในปี 2021 เอกสารล่าสุดของเรา Ref. ฉบับที่ 2 เผยแพร่เป็นฉบับก่อนพิมพ์ในเดือนพฤษภาคม พ.ศ. 2566 (เวอร์ชันแรก) มีการกำหนดแนวทางที่กว้างที่สุด อัปเดตการอ้างอิง ฉบับที่ 2 ซึ่งตีพิมพ์เป็นฉบับก่อนตีพิมพ์ในเดือนมิถุนายน 2567 (ฉบับที่สอง) ยังรวมเอาคำตอบที่ขับเคลื่อนด้วยข้อมูลของสมการเชิงอนุพันธ์ย่อยด้วย
จุดเด่นหลักของโค้ดคือ:
สคริปต์หลัก mainTriang
รันโค้ด ในสคริปต์ flag modelMethod
เลือกประเภทโมเดล (splines หรือ piecewise-linear) และวิธีการประมาณค่าพารามิเตอร์ (GN หรือ NK) สิ่งที่เพิ่มเข้ามาล่าสุดคือวิธีเร่ง NK (ดูอ้างอิง 2 หัวข้อเรื่องการขนาน/การทำให้เป็นเวกเตอร์) ในฟังก์ชันการสร้างแบบจำลอง การตั้งค่าสถานะ printProgr
จะสลับการพิมพ์ความคืบหน้าในหน้าต่างคำสั่ง
โค้ดจะสร้างโมเดลและบันทึก log(RMSE)
เป็นฟังก์ชันของจำนวนการส่งผ่านข้อมูล แบบจำลองนี้ประกอบด้วยเมทริกซ์สองตัวที่มีพารามิเตอร์: fnB
และ fnT
โมเดลที่ได้รับสามารถใช้เพื่อทำนายชุดข้อมูลใหม่ได้ สำหรับรุ่น spline ของโมเดล
y = modelKA_basisC( x, xmin, xmax, ymin, ymax, fnB, fnT );
ควรดำเนินการ โดยที่ x
คือข้อมูลอินพุตในรูปแบบเดียวกับในสคริปต์ mainTriang
และ y
จะเป็นข้อมูลเอาต์พุตที่คาดการณ์ไว้ สำหรับเวอร์ชันเชิงเส้นตรงของโมเดล ฟังก์ชันที่ทำให้การทำนายคือ modelKA_linear
(มีรูปแบบเดียวกับด้านบน)
ตัวอย่างการคำนวณคือชุดข้อมูลสังเคราะห์ สำหรับแต่ละบันทึก ข้อมูลเข้าคือพิกัดของจุดสามจุดในแบบ 2D และผลลัพธ์คือพื้นที่ของสามเหลี่ยมที่เกิดจากจุดต่างๆ จุดเป็นของหน่วยกำลังสอง ตัวอย่างเริ่มต้นจะใช้เวลาประมาณ 14 วินาทีบนแล็ปท็อปที่ใช้ Intel Core i5 เจนเนอเรชั่น 11
มีสคริปต์สามสคริปต์พร้อมการทดสอบหน่วย: testBasis
สำหรับตรวจสอบอนุพันธ์ของฟังก์ชันพื้นฐาน, testDeriv
สำหรับตรวจสอบอนุพันธ์ของเอาท์พุตโมเดลโดยอินพุตและตามพารามิเตอร์ และ testSpline
สำหรับการเปรียบเทียบสไปน์ที่นำไปใช้กับสไปน์ MATLAB ในตัว .
โซลูชันที่ขับเคลื่อนด้วยข้อมูลของสมการเชิงอนุพันธ์บางส่วนถูกนำไปใช้แยกกันในสคริปต์ solvePDE_NK
ตัวอย่างการคำนวณคือ PDE ลำดับที่สอง รายละเอียดอยู่ใน Ref. เวอร์ชัน 2.2 ซึ่งเป็นเวอร์ชันอัปเดตตั้งแต่เดือนมิถุนายน 2024 ตัวอย่างเริ่มต้นจะใช้เวลาประมาณ 15 วินาทีบนแล็ปท็อปที่ใช้ Intel Core i5 เจนเนอเรชั่น 11
สคริปต์ mainMIT
รันตัวอย่างเดียวกันกับการใช้งาน Python ล่าสุดโดยนักวิจัยคนอื่น ๆ (ลิงก์ในไฟล์) มันถูกเพิ่มไว้สำหรับการสร้างผลลัพธ์การวัดประสิทธิภาพล่าสุดที่รายงานใน Ref. เท่านั้น 2 .
รหัสนี้ได้รับการพัฒนาโดย Dr Michael Poluektov (มหาวิทยาลัย Dundee ภาควิชาคณิตศาสตร์และฟิสิกส์คอมพิวเตอร์)
ผู้เขียนขอขอบคุณความช่วยเหลือที่ยอดเยี่ยมของ Dr Andrew Polar ซึ่งมีส่วนสนับสนุนโครงการวิจัยอย่างเท่าเทียมกัน และยังคงใช้งานแนวทางนี้แยกกันใน C# และ C++ บนหน้า GitHub ของเขา
A. Polar และ M. Poluektov, อังกฤษ ใบสมัคร อาร์ติฟ. Intell , 99:104137, 2021, ลิงก์.
M. Poluektov และ A. Polar, arXiv:2305.08194, 2023, ลิงก์ ↩ ↩ 2 ↩ 3 ↩ 4 ↩ 5