ภาษาโปรแกรมเชิงประสาท-สัญลักษณ์ Scallop
(scallop-lang.org)- Scallop เป็นภาษาเชิงประกาศสำหรับใส่ การอนุมานเชิงสัญลักษณ์บนฐานกฎตรรกะ เข้าไปในแอปพลิเคชัน AI โดยอิงจาก Datalog ซึ่งเป็นภาษาคิวรีฐานข้อมูลเชิงสัมพันธ์
- ตัว solver รองรับ การอนุมานแบบไม่ต่อเนื่อง·แบบความน่าจะเป็น·แบบที่หาอนุพันธ์ได้ ทำให้เลือกวิธีอนุมานให้เหมาะกับความต้องการของแอปพลิเคชันได้
- สามารถใส่ โมดูลอนุมานเชิงตรรกะ เข้าไปในโปรแกรมผ่าน Python binding และผสานรวมกับไปป์ไลน์แมชชีนเลิร์นนิง PyTorch ที่มีอยู่ได้
- ในงาน vision และ NLP เป็นแนวทางที่ประกอบคอมโพเนนต์เชิงประสาทที่สร้างโดย CNN หรือ Transformer เข้ากับ คอมโพเนนต์กฎตรรกะ
- มีตัวอย่างแบบ end-to-end เช่น การอนุมานเชิงภาพ CLEVR, การตัดสินการเชื่อมต่อของ Pathfinder และการประเมินสมการลายมือ ซึ่ง เรียนรู้คอมโพเนนต์เชิงประสาทร่วมกับกฎ
องค์ประกอบหลักของ Scallop
-
Language
- Scallop เป็นภาษาเชิงประกาศสำหรับจัดการ การอนุมานเชิงสัญลักษณ์ ในแอปพลิเคชัน AI
- อิงจาก Datalog ซึ่งเป็นภาษาคิวรีบนฐานกฎตรรกะสำหรับฐานข้อมูลเชิงสัมพันธ์
-
Solver
- Scallop เป็น Datalog solver ที่ขยายได้
- รองรับโหมด การอนุมานแบบไม่ต่อเนื่อง, การอนุมานแบบความน่าจะเป็น, และ การอนุมานแบบที่หาอนุพันธ์ได้
- แต่ละโหมดการอนุมานสามารถตั้งค่าให้เหมาะกับความต้องการของแอปพลิเคชัน AI ที่แตกต่างกันได้
-
Framework
- มี binding ที่ทำให้ใช้โมดูลอนุมานเชิงตรรกะภายในโปรแกรม Python ได้
- สามารถผสานรวมอย่างลึกซึ้งกับไปป์ไลน์แมชชีนเลิร์นนิง PyTorch ที่มีอยู่ได้
ตัวอย่างแอปพลิเคชัน
- CLEVR เป็นงาน การอนุมานเชิงภาพ ที่ตอบคำถามเกี่ยวกับวัตถุ 3D แบบง่ายในภาพ เช่น “มีวัตถุสีน้ำเงินกี่ชิ้น?”
- คอมโพเนนต์เชิงประสาทสร้าง กราฟฉาก (scene graph) ของภาพ และ คิวรีแบบโปรแกรม (programmatic query) ที่แทนคำถาม
- คอมโพเนนต์อนุมานระบุการดำเนินการเลือก เปรียบเทียบ และนับวัตถุตามคุณสมบัติที่กำหนดไว้เป็นกฎตรรกะ
- Scallop รวมคอมโพเนนต์เหล่านี้ไว้ในเฟรมเวิร์กร่วมกัน และทำให้ฝึกแบบ end-to-end ได้
- Pathfinder เป็นงาน การอนุมานการเชื่อมต่อระยะไกล ที่ตัดสินว่าในภาพขาวดำที่มีจุดสองจุดและเส้นประ จุดทั้งสองเชื่อมต่อกันด้วยเส้นประหรือไม่
- สามารถประกอบได้ด้วยสถาปัตยกรรมเชิงประสาทแบบง่ายที่ตรวจจับจุดและขีดประ ร่วมกับกฎตรรกะ Scallop เพียงไม่กี่บรรทัด
- กฎที่นำเสนอถือ
dash(x, y)เป็นเส้นทาง และเชื่อมpath(x, z), dash(z, y)แบบเวียนเกิดเพื่อวินิจฉัยis_connected() - การจัดวางแบบนี้ให้ประสิทธิภาพสูงกว่า Transformer รุ่นล่าสุด
- การประเมินสมการลายมือเป็นงานที่รู้จำ ลำดับสัญลักษณ์ลายมือ ซึ่งประกอบด้วยตัวเลข 0 ถึง 9 และการดำเนินการเลขคณิตแบบง่าย แล้วคำนวณนิพจน์
- ตัวอย่างมอง
1 + 3 / 5เป็นอินพุต และคำนวณผลลัพธ์1.6 - สามารถสร้าง parser ไวยากรณ์ไร้บริบท ทั้งชุดที่ parse อินพุตแบบความน่าจะเป็นด้วย Scallop ได้
- parser และ evaluator สามารถเขียนด้วยโค้ด Scallop 5 บรรทัด
- โปรแกรมนี้สามารถฝึกร่วมกับโมเดลเชิงประสาทสำหรับรู้จำสัญลักษณ์แต่ละตัวแบบ end-to-end ได้ และหลังการฝึกจะค้นหาสูตรที่มีความเป็นไปได้สูงสุดแล้วส่งคืนผลการประเมิน
- ตัวอย่างมอง
ยังไม่มีความคิดเห็น