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

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

 สามารถแทนความรู้ที่ซับซ้อนได้ (language is expressive)
 ความรู้ที่ถูกแทนควรอยู่ในรูปแบบที่กระชับ ประหยัดหน่วยความจำ (language is compact)
 ความรู้สามารถถูกนำไปใช้คิดหาเหตุผลหรืออนุมาน (inference) เพื่อใช้ในปัญหาต่างๆ ได้โดยง่าย (language is convenient for automated reasoning)
 สามารถเรียนรู้ความรู้ใหม่ๆ ด้วยเทคนิคการเรียนรู้ของเครื่อง ให้อยู่ในรูปภาษาที่เราใช้ได้โดยง่าย (language is convenient for automated learning)

ไม่มีภาษาใดในปัจจุบัน ที่นักวิจัยทุกคนยอมรับว่า ดีที่สุดในวงการวิจัยปัญญาประดิษฐ์ โดยภาษาที่ใช้ในการแทนความรู้แต่ละภาษา จะมี “ศักยภาพในการแทนความรู้” หรือ “ความสามารถในการแสดงความรู้ของภาษา” (expressiveness) ได้ในระดับที่ต่างกัน นั่นคือความรู้บางประเภทที่มีความซับซ้อน จะไม่สามารถนำเสนอสู่เครื่องจักรที่ใช้ภาษาง่ายเกินไปได้ แต่การแทนความรู้ที่ซับซ้อนเกินไป ก็จะถูกนำไปใช้งาน และเรียนรู้ได้ยาก นั่นคือในสถานการณ์ทั่วไป ผู้ใช้งานต้องเผชิญกับทางเลือก (dilemma/tradeoff) ว่า ต้องการนำเสนอความรู้ ในรูปแบบที่ซับซ้อนได้ดี [1. และ 2.] หรือว่าต้องการใช้งานความรู้นั้นได้อย่างสะดวก [3. และ 4.]. ในบทความนี้ จะนำเสนอเฉพาะประเด็น 1. และ 2. เท่านั้น ส่วนรายละเอียดของประเด็น 3. และ 4. สามารถดูได้ที่หัวข้อ การให้เหตุผลของเครื่อง และ การเรียนรู้ของเครื่อง

 ชนิดของการแทนความรู้ 
ในการอ่านหัวข้อนี้ถ้าผู้อ่านมีความรู้เรื่องโมเดลเชิงวัตถุ (object-oriented model) จะสามารถเข้าใจได้ดี เพราะเราสามารถมองความรู้ให้อยู่ในรูปของวัตถุและความสัมพันธ์ระหว่างวัตถุได้

ศักยภาพในการแทนความรู้ที่ซับซ้อนของภาษามีสองประเด็นหลักที่ต้องพิจารณาดังนี้

 ความสามารถในการแทนความรู้เกี่ยวกับวัตถุและความสัมพันธ์ประเภทเดียวกัน 
โดยประเด็นแรกคือ ภาษานั้นแสดงความรู้เกี่ยวกับคุณสมบัติต่างๆ ของวัตถุและความสัมพันธ์ระหว่างวัตถุได้ดีแค่ไหน โดยภาษาที่ดีควรจะความรู้ประเภทเดียวกันของวัตถุหรือความสัมพันธ์ประเภทเดียวกันได้อย่างประหยัด โดยเฉพาะกรณีที่เราพิจารณาโดเมนของวัตถุที่เป็นอนันต์(infinitely many objects) เช่น ความรู้เกี่ยวกับคณิตศาสตร์ที่มีวัตถุคือตัวเลขนั้น บางภาษาสามารถใช้ตัวอักขระจำนวนจำกัด (finite) เพื่อแทนความรู้ที่เป็นอนันต์ได้ ตัวอย่างของความรู้ประเภทนี้คือกฎการสลับที่ของการบวกของตัวเลขซึ่งเราสามารถเขียนให้อยู่ในรูปภาษาพีชคณิตอย่างง่ายได้สั้นๆ ดังนี้
 
นั่นคือเราสามารถแทน  และ  ด้วยตัวเลขใดๆในโดเมนที่พิจารณาก็ได้ ซึ่งตัวเลขทั้งหมด ในโดเมนจะมีคุณสมบัติการสลับที่นี้ทั้งหมด โดยไม่ว่าเราจะพิจารณาโดเมนของจำนวนจริง จำนวนเต็ม หรือจำนวนเชิงซ้อนก็ตามจะมีคุณสมบัติการสลับที่ที่ว่านี้ จะเห็นว่าในที่นี้เราใช้เพียง 7 อักขระแทนความรู้มากมายมหาศาล แทนที่จะเป็น

 ความสามารถในการแทนความรู้ที่ไม่แน่นอน 
ประเด็นนี้พิจารณาว่า ภาษานั้นสามารถแสดงความรู้ที่ไม่แน่นอน (uncertainty in knowledge) ได้หรือไม่ โดยความรู้ที่ไม่แน่นอนอาจเกิดได้จากหลายสาเหตุ (Ruhla, 1992) เช่น
 ความไม่แน่นอนเกิดจากการชั่ง, การตวง หรือการวัดของเรามีความคลาดเคลื่อน (error in measurement)
 ความไม่แน่นอนเกิดจากความรู้ของเราไม่สมบูรณ์ (ignorance/incomplete knowledge)
 เราไม่มีโมเดลความรู้ที่สมบูรณ์ (หมายถึงสามารถทำนายได้ถูกต้อง 100%) เกี่ยวกับสภาพแวดล้อม เช่น ในปัจจุบันเราไม่สามารถทำนายสภาพดินฟ้าอากาศล่วงหน้าได้สมบูรณ์แบบไม่ว่าเราจะมีข้อมูลเกี่ยวกับดินฟ้าอากาศในปัจจุบันมากแค่ไหนก็ตาม อย่างไรก็ตามเราก็ยังสามารถนำข้อมูลที่เรามีทั้งหมดมาหาเหตุผลที่เหมาะสมหรืออนุมานเพื่อทำนายสภาพดินฟ้าอากาศที่น่าจะเป็นในวันรุ่งขึ้นได้อยู่ดี และนี่คือพลังของภาษาที่สามารถใส่ความรู้ที่ไม่จำเป็นต้องถูกต้อง 100% ได้
 เราไม่สามารถสังเกตสิ่งที่ปรากฏทั้งหมดในธรรมชาติได้แม้ว่าเราจะมีโมเดลความรู้ที่สมบูรณ์ (หรือสมมุติว่าสมบูรณ์) ก็ตาม เนื่องจากสิ่งที่ปรากฏทั้งหมดในธรรมชาติมีมากมายมหาศาล เช่น ทฤษฎีจลนศาสตร์ของแก๊สที่ถูกคิดค้นโดยเจมส์ คล๊าก แมกซ์เวลล์ได้แสดงความรู้เกี่ยวกับความเร็วเฉลี่ยของแก๊สและพลังงานเฉลี่ยในรูปทฤษฎีความน่าจะเป็น
 ความไม่แน่นอนเกิดจากความอ่อนไหวต่อสภาวะเบื้องต้น (sensitivity to initial conditions) ในระบบพลวัต เช่น ปรากฏการณ์เคออส ซึ่งถูกค้นพบโดยอองรี ปวงกาเร
 ความไม่แน่นอนเกิดจากธรรมชาติโดยตรง เช่น ความรู้เกี่ยวกับทฤษฎีควอนตัมที่เชื่อว่าถูกต้องในวิทยาศาสตร์ปัจจุบัน

 ประเภทของการแทนความรู้ในงานวิจัยปัจจุบัน 
ด้วยเหตุนี้เราจึงพอจะแบ่งประเภทของภาษาที่ใช้แสดงความรู้ได้เป็น 4 ประเภทคือ
 ความรู้ที่แสดงความรู้จำนวนอนันต์ได้ก็ต่อเมื่ออักขระมีจำนวนอนันต์ และไม่สามารถแทนความรู้ที่มีความไม่แน่นอนได้ เช่น ตรรกศาสตร์แบบฉบับ, การเรียนรู้ต้นไม้ตัดสินใจ, หรือ ออโตมาตาสถานะจำกัด
 ความรู้ที่แสดงความรู้จำนวนอนันต์ได้ก็ต่อเมื่ออักขระมีจำนวนอนันต์ แต่สามารถแทนความรู้ที่มีความไม่แน่นอนได้ เช่น ตรรกศาสตร์คลุมเครือ, เครือข่ายเบย์
 ความรู้ที่แสดงความรู้จำนวนอนันต์ได้โดยอักขระจำนวนจำกัด แต่ไม่สามารถแทนความรู้ที่มีความไม่แน่นอนได้ (หรือไม่สามารถแทนได้อย่างมีประสิทธิภาพโดยธรรมชาติของภาษา) เช่น ตรรกศาสตร์อันดับหนึ่ง (หรือ ตรรกศาสตร์ภาคแสดงในศัพท์บัญญัติ)
 ความรู้ที่แสดงความรู้จำนวนอนันต์ได้โดยอักขระจำนวนจำกัด และสามารถแทนความรู้ที่มีความไม่แน่นอนได้

โดยความรู้ประเภทสุดท้ายนี้มีศักยภาพของภาษาสูงมากซึ่งก็ทำให้การใช้มันซับซ้อนมากไปด้วย งานวิจัยในช่วงห้าปีหลังก็เริ่มมาสร้างภาษาที่สามารถแสดงความรู้ประเภทสุดท้ายนี้กันอย่างคึกคัก (ดูเว็บไซต์ของ PLM - Probabilistic Logical Models)