มีหลักฐานว่าเสียงกระเพื่อมจริงดีกว่าภาษาอื่น ๆ ที่ปัญญาประดิษฐ์? [ปิด]


21

ดูเหมือนว่าจะมีความเชื่อมานาน (โดยส่วนใหญ่ที่ไม่ใช่เสียงกระเพื่อม) ที่เสียงกระเพื่อมดีกว่าภาษาส่วนใหญ่ที่ AI

ความเชื่อนี้มาจากไหน? และมีพื้นฐานใด ๆ ในความเป็นจริงหรือไม่


4
ชื่อถาม: เสียงกระเพื่อมดีกว่าภาษาอื่น ๆ ที่ AI หรือไม่ คำถามนั้นถามตัวเอง: Lisp ไม่ดีในทุกสิ่งที่นอกเหนือจาก AI หรือไม่? เหล่านี้เป็นคำถามที่แตกต่างกันมาก (พิจารณาสถานการณ์ที่ 1: เสียงกระเพื่อมเป็นภาษาที่ดีที่สุดสำหรับทุกสิ่งและสถานการณ์ที่ 2: เสียงกระเพื่อมเป็นภาษาที่แย่ที่สุดสำหรับทุกสิ่ง) คุณอาจต้องการแก้ไขชื่อเรื่องหรือเนื้อความของคำถามเพื่อให้ชัดเจนว่าคำถามใดที่คุณถามจริง
Gareth McCaughan

9
ฉันคิดว่าถ้าคำตอบที่ยอมรับนั้นมาจากเครื่อง Lisp เราจะแก้ปัญหาได้หรือไม่?
Martin Beckett

1
@ มาร์ตินแม้ว่า AI พื้นฐานใด ๆ ควรมีหน้าที่ปกป้องผู้สร้างหรือถูกทิ้งให้สงสัยการมีอยู่ของตนเอง
นิโคล

นี่คือรูปลักษณ์ที่ยอดเยี่ยมและซื่อสัตย์ของ Lisp สำหรับ AI จาก Peter Norvig เขียน 10 ปีหรือมากกว่านั้นหลังจากกระบวนทัศน์ของการเขียนโปรแกรม AI ได้รับการเผยแพร่ norvig.com/Lisp-retro.html
michiakig

1
@ jwenting: ฉันคิดว่า Norvig จุดที่สำคัญที่สุดเกี่ยวกับ Java ยังคงเป็นจริงสิบปีต่อมา: Java ไม่มีสิ่งอำนวยความสะดวกการเขียนโปรแกรมเมตาและไม่สนับสนุนการเขียนโปรแกรมการทำงาน
วินไคลน์

คำตอบ:


22

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

อีกแง่มุมหนึ่งที่เข้ามาถึงสิ่งนี้ถึงแม้จะไม่มากนักก็คือความสามารถของ LISP ในการเพิ่มความหมายของภาษาใหม่ ๆ ผ่านมาโครได้อย่างง่ายดาย สิ่งนี้ทำให้เป็นไปได้จริง ๆ และกำหนด DSL ที่ AI ของคุณทำงานด้วยและสามารถพัฒนาด้วยศักยภาพของภาษานั้นในการเติบโตแก้ไขด้วยตนเองและพัฒนาในขณะที่ AI กำลังทำงานอยู่

เห็นด้วยกับ Quadrescence ประวัติศาสตร์การใช้งาน LISPs จะไปสู่ภาพ LISPs ที่ดีสำหรับ AI เหตุใด LISP ที่ใช้สำหรับ AI จึงครอบคลุมประวัติโดยละเอียดยิ่งขึ้น


3
คุณสมบัตินี้เรียกว่าHomoiconicity BTW
MSalters

5

บางโปรแกรมแรกในเสียงกระเพื่อมคือผู้พิสูจน์ทฤษฎีคณิตศาสตร์สัญลักษณ์ ELIZA แบบคลาสสิกเป็นต้นนอกจากหนังสือ PAIP ของ Peter Norvig รวมถึงความจริงที่เสียงกระเพื่อมนั้นมาจากห้องแล็บ MIT AI มันจัดเรียงภาพนั้น เสียงกระเพื่อมนั้นดีสำหรับ AI

DARPA ยังให้ทุนสนับสนุนมหาวิทยาลัยเพื่อการวิจัยใน AI และซื้อฮาร์ดแวร์จำนวนมากจาก Symbolics การขาดแคลนเงินทุนในที่สุดนำไปสู่สิ่งที่เรียกว่า "AI winter"

ในที่สุดภาษาดั้งเดิมเช่น Fortran (หรือ "languages" เช่น ASM) ถูกนำมาใช้เป็นหลักในการคำนวณเชิงตัวเลข คุณทำงานกับตัวเลขและอาร์เรย์ของพวกเขา วันนี้เรามีสัญลักษณ์หรือความสามารถในการสร้างเกือบทุกสิ่งที่เราต้องการในภาษาที่ทันสมัยที่สุด

ดังนั้นเหตุผลที่เสียงกระเพื่อมนั้นดีกว่าสำหรับ AI ในคราวเดียวก็ไม่เป็นเช่นนั้นอีกต่อไป อย่างไรก็ตามความคิดที่ว่า "เสียงกระเพื่อมเป็นสิ่งที่ดีสำหรับ AI" ยังคงอืดอาดอยู่

ไม่ว่าเสียงกระเพื่อมเป็นภาษาที่ดีกว่าเนื่องจากคุณสมบัติและโครงสร้างของมันเป็นอีกกรณีหนึ่งโดยสิ้นเชิง (เนื่องจากจริงๆแล้วสิ่งนี้มีผลกับพื้นที่อื่น ๆ มากกว่า AI เพียงอย่างเดียว


5
วิธีที่ดีกว่าในการวางไว้อาจเป็นไปได้ว่าสิ่งที่ดีใน AI เกิดขึ้นจากการใช้ Lisp

1
และมันไม่ได้เกิดขึ้นโดยบังเอิญเมื่อผู้บุกเบิกเริ่มต้น ภาษาอื่น ๆ ที่พวกเขาสามารถเลือกได้ในปี 1950?
โบเพอร์สัน

2
@Persson: ฉันเถียงมันค่อนข้างบังเอิญ ถ้า PASCAL เป็นภาษาถัดไปที่จะสร้างขึ้นหลังจาก FORTRAN ฉันมีข้อสงสัยว่า AI น่าจะถูกถอดออกไป LISP ไม่ได้เป็นเพียง "ผู้สมัครที่ดีกว่า" กว่า FORTRAN แต่มันก็เกิดขึ้น (โดยบังเอิญ!) ที่จะเป็นผู้สมัครที่ดี
Quadrescence

คุณจะอธิบายเหตุผลหนึ่งที่ชัดมีประโยชน์ (เงินทุน) แต่สรุปว่า " กระเพื่อมเหตุผลที่ดีสำหรับ AI ในครั้งเดียวคือไม่มีกรณี."
ทำเครื่องหมาย C

ฉันสูญเสียความคิดเห็นถัดไปที่ฉันกำลังทำอยู่ แต่ฉันหวังว่าจะได้กลับมาเล่นอีกครั้งในภายหลัง
ทำเครื่องหมาย C

3

ลองดูที่โปรแกรม AI ปัจจุบัน: (1) หุ่นยนต์เช่นรถยนต์ขับเคลื่อนด้วยตัวเอง ในความท้าทายที่ยิ่งใหญ่ของ DARPA ซอฟต์แวร์ขับรถที่เหนือชั้นไม่ใช่ Lisp ค่อนข้างจะเป็นภาษาเชิงโพรซีเดอร์เช่น C ++ หรือ Java (2) การแปลโดยใช้ภาษาธรรมชาติ เสียงกระเพื่อมไม่ได้ถูกใช้เพื่อจุดประสงค์นี้โดยระบบการผลิตที่ใช้กันอย่างแพร่หลาย (3) การเล่นเกมเช่นโปรแกรมหมากรุก Lisp ไม่ได้ถูกใช้เพื่อจุดประสงค์นี้โดยใช้โปรแกรมหมากรุกที่เหนือกว่าเช่น Fritz

Lisp ถูกคิดค้นและพัฒนาโดยห้องปฏิบัติการ AI ของสหรัฐในปี 1960 เพื่อที่จะสร้างโปรแกรมตรรกะเชิงสัญลักษณ์ที่รวดเร็วซึ่งโครงสร้างข้อมูล LIS ดั้งเดิมนั้นเหมาะสมกับระดับของ Abstraction เชิงสัญลักษณ์ที่จำเป็น - เช่นคำภาษาอังกฤษอาจเป็นสัญลักษณ์ในรายการ แสดงเป็นรายการของตัวดำเนินการและตัวถูกดำเนินการ

แต่สำหรับโปรแกรมการผลิตข้อได้เปรียบทางวิศวกรรมซอฟต์แวร์ของภาษาที่พิมพ์แบบคงที่และไลบรารีของบุคคลที่สามที่หลากหลายหมายความว่า Lisp ไม่ได้ถูกพิจารณาสำหรับระบบที่ทันสมัยขนาดใหญ่ที่ทำงานของ AI


2
คุณต้องคำนึงถึงเมื่อพูดคุยเกี่ยวกับผลิตภัณฑ์เชิงพาณิชย์ (และฉันถือว่า DARPA เป็นคู่แข่งที่ท้าทายเนื่องจากมันถูกสร้างขึ้นภายใต้เวลาและข้อ จำกัด ด้านงบประมาณ) ว่า LISP ไม่ใช่ภาษาที่รู้จักกันทั่วไปและ LISP โปรแกรมเมอร์ที่เก่ง เพื่อค้นหาและมีแนวโน้มว่าจะมีราคาแพง (และ / หรือสิ่งเร้าไม่ใช่สมาชิกที่ดีสำหรับทีมโดยเฉลี่ย) ดังนั้นจึงเหมาะสมที่จะใช้สิ่งอื่นแม้ว่า LISP อาจจะ "ดีกว่า" ที่มัน (ไม่ได้บอกว่ามันจำเป็นเพียงแค่ว่าข้อมูลที่คุณนำเสนอนั้นไม่สามารถสรุปได้ว่าจะไม่เป็นเช่นนั้น)
jwenting

3
ไม่มี 'สติปัญญา' ในโปรแกรมเหล่านั้น มันเป็นการประมวลผลสัญญาณจำนวนมากเป็นต้นโปรแกรมหมากรุกไม่ใช้ AI ส่วนใหญ่เป็นสัตว์เดียรัจฉานการค้นหาที่มีประสิทธิภาพสูงสุดและสิ่งอื่น ๆ
Rainer Joswig

"LISP ไม่ใช่ภาษาที่รู้จักกันทั่วไปดังนั้นโปรแกรมเมอร์ LISP ที่มีความเชี่ยวชาญนั้นหายากและมีราคาแพง": ฉันเพิ่งเริ่มเรียนรู้ Common LISP และดูเหมือนไม่ยากเลย ตกลงที่จะเป็นปรมาจารย์ Lisp มันอาจใช้เวลานาน แต่ฉันไม่คิดว่ามันจะเป็นเรื่องยากที่จะหาโปรแกรมเมอร์ที่เต็มใจที่จะเรียนรู้ Lisp หากมีโอกาสได้ทำงานในโครงการที่เป็นรูปธรรม
Giorgio

3

@ สตีเฟนรี้ดพูดดีมาก ฉันสามารถเพิ่มได้ว่าฉันอยู่ใน MIT AI Lab ในยุค 70 ฉันได้ยินเรื่องราวเกี่ยวกับต้นกำเนิดของ Lisp ฉันไม่สามารถสาบานได้เลยว่ามันเป็นเรื่องจริง แต่มันจะเป็นเช่นนี้:

John McCarthy อยู่ที่ MIT ในยุค 50 และเขาทำงานเพื่อพิสูจน์คุณสมบัติของโปรแกรมและด้วยเหตุนี้เขาจึงใช้ไวยากรณ์อย่างง่ายคล้ายกับแลมบ์ดาแคลคูลัส

เรื่องนี้เป็นเรื่องที่นักศึกษาระดับบัณฑิตศึกษาคนหนึ่งต้องการทำโครงงาน (การเปรียบเทียบหรือการพิสูจน์ทฤษฎีบทหรือคณิตศาสตร์เชิงสัญลักษณ์ฉันจำไม่ได้ว่าอันไหน) และถาม McCarthy ว่าจะใช้ภาษาใด คำตอบ - Fortran แน่นอน (มีไม่มากนักและการประมวลผลรายการนั้นค่อนข้างเป็นที่รู้จักกันดี แต่เป็นเพียงแพ็คเกจย่อยที่ไม่ใช่ภาษา) อย่างใดที่นำไปสู่โปรแกรมที่จะประมวลผลสัญลักษณ์ในโครงสร้างรายการแบบซ้อน ร่วมกับวิธีการอ่านและพิมพ์จากนั้นevalฟังก์ชั่นและ Voila '- ภาษา ภาษาการประมวลผลรายการ มันออกไปจากที่นั่น

สำหรับชนิดของอัลกอริทึมที่เราทำในสมัยนั้น (และยังมีคนน้อยมากที่ต้องทำ) จำเป็นต้องใช้ภาษาที่สามารถจัดการกับการแสดงออกของสัญลักษณ์ได้อย่างง่ายดาย นั่นคือสิ่งที่ Lisp ทำได้ดี แนวคิดพื้นฐานพื้นฐานมีการเปลี่ยนแปลงมากมายโดยใช้ชื่อที่แตกต่างกันเช่น Prolog, Scheme และอื่น ๆ

ดังนั้น AI หมายถึงหลายสิ่งหลายอย่างสำหรับผู้คนจำนวนมากและภาษาต่าง ๆ นั้นดีสำหรับสิ่งต่าง ๆ แต่สำหรับปัญหาที่สามารถอธิบายได้ว่าเป็นการจัดการสัญลักษณ์มันยากที่จะหาภาษาที่มีประโยชน์ที่ไม่ได้สืบทอดมาจาก Lisp


1
คำพูดของ John McCarthy: www-formal.stanford.edu/jmc/history/lisp/lisp.html

@ Thorbjørn: ขอบคุณสำหรับลิงค์ แม้ว่าฉันจะใช้เสียงกระเพื่อมอย่างหนักเป็นเวลาหลายปี แต่ฉันไม่เคยให้ความสนใจกับแหล่งกำเนิดของมันมากนัก
Mike Dunlavey

แม้ว่า Prolog นั้นดีพอ ๆ กับการคำนวณเชิงสัญลักษณ์ แต่ฉันก็ไม่ได้บอกว่ามันเกี่ยวข้องกับ Lisp: Lisp ขึ้นอยู่กับแคลคูลัสแลมบ์ดา, Prolog สำหรับตรรกะอันดับหนึ่ง (การคำนวณสองแบบที่แตกต่างกัน)
Giorgio

@Giorgio: บรรพบุรุษและลูกพี่ลูกน้องของ Prolog ส่วนใหญ่เขียนในอะไร? เสียงกระเพื่อม โปรแกรมหักฟิสเชอร์สีดำ, Micro-วางแผน ฯลฯ สำหรับฉันเป็นหนังสือที่ดีเกี่ยวกับเรื่องนี้เป็นฐานรากนิรนัยของการเขียนโปรแกรมคอมพิวเตอร์
Mike Dunlavey

"บรรพบุรุษและลูกพี่ลูกน้องของ Prolog ส่วนใหญ่เขียนในสิ่งที่?": อาตกลงคุณหมายถึงเกี่ยวข้องอย่างใกล้ชิดในแง่ที่ว่ามีคนใช้ในการดำเนินการอื่น ๆ ไม่ว่าพวกเขาจะทำตามกระบวนทัศน์ที่คล้ายกัน
Giorgio

1

เสียงกระเพื่อมมีข้อได้เปรียบสำหรับสิ่งต่าง ๆ ที่เรียกว่า AI - อย่างน้อยตรรกะการค้นหาและการแยกวิเคราะห์สิ่งที่เกี่ยวข้องซึ่งเป็น AI ส่วนใหญ่จนถึงประมาณ 90 ปี

ข้อได้เปรียบที่สำคัญของ Lisp คือการรองรับแมโคร - โค๊ดเป็นข้อมูล

Standard ML (SML) เป็นอีกภาษาหนึ่งที่มีการใช้กันอย่างแพร่หลายใน AI เช่นตั้งแต่ยุค 80 วัตถุประสงค์ CAML และ F # เป็นวิวัฒนาการของ SML

ข้อได้เปรียบที่สำคัญของตระกูล ML (และ Haskell ฯลฯ ) คือการจับคู่รูปแบบ นี่อาจมีให้ใน Lisp ด้วยเช่นกัน แต่ผ่านห้องสมุด metaprogramming แทนที่จะสร้างเป็นภาษา นอกจากนี้ยังมีใน Haskell ด้วย แต่อย่างน้อยในขณะนี้การจับคู่รูปแบบไม่ได้เกิดขึ้นนอกเหนือจากภาษาโปรแกรมที่ใช้งานได้

ฉันเคยเห็นการอ้างว่า LISP นั้นเป็นแคลคูลัสแลมบ์ดาที่ไม่มีการพิมพ์ส่วนขยายและ ML นั้นเป็นแลมบ์ดาแลปดาพิมพ์ที่ขยายออกไปโดยทั่วไป ฉันไม่มีความรู้เกี่ยวกับแคลคูลัสแลมบ์ดาที่จะพูดอย่างแน่นอน

AI ก็กลายเป็นวิชาที่กว้างมากขึ้นในช่วงหลายปีที่ผ่านมาจนถึงจุดที่มันเกือบจะหายไปอย่างสมบูรณ์ การขุดข้อมูลอาจถือได้ว่าเป็นหนึ่งในสาขาย่อยของ AI สิ่ง AI หลายอย่าง (OCR, การรู้จำลายมือ) เกือบจะหยุดการเป็น AI เลย - มันเป็นแค่แอปพลิเคชั่นเหมือนกับสิ่งอื่นใด และ AI นั้นขึ้นอยู่กับการประมวลผลสัญญาณและการบีบอัดตัวเลขอื่น ๆ มากกว่าที่เคยเป็นมา

สำหรับ OCR และการรู้จำเสียงเอไอนั้นขึ้นอยู่กับการประมวลผลสัญญาณและการบีบอัดจำนวนแน่นอน ใช่มีข้อโต้แย้งบางประการในเรื่องนี้ ;-) ฉันไม่สามารถให้น้ำหนักกับสิ่งต่าง ๆ ได้เพราะฉันไม่รู้จริงๆ

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

ในหนึ่งในรถยนต์ที่ขับด้วยตนเองฉันจินตนาการว่าระบบการมองเห็นนั้นเขียนด้วยภาษาที่แตกต่างกัน (และทำงานบนฮาร์ดแวร์ที่แตกต่างกัน) ไปยังระบบวางแผนเส้นทาง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.