คุณเคยสงสัยหรือไม่ว่าการตอบกลับอัตโนมัติของ Gmail ทำงานอย่างไร หรือ WhatsApp ของคุณแนะนำคำถัดไปเมื่อส่งข้อความอย่างไร หรือแม้กระทั่งว่าเราจะสร้างโน้ตดนตรีได้อย่างไร? วิธีทั่วไปในการสร้างลำดับของข้อความคือการฝึกแบบจำลองให้คาดเดาคำ/อักขระถัดไปจากคำ/อักขระก่อนหน้าทั้งหมด โมเดลดังกล่าวเรียกว่า โมเดลภาษาเชิงสถิติ แบบจำลองภาษาเชิงสถิติคืออะไร? แบบจำลองภาษาทางสถิติคือการแจกแจงความน่าจะเป็นตามลำดับของคำที่ได้รับการฝึก
ภารกิจหลักคือการทำนายอักขระตัวถัดไปจากอักขระก่อนหน้าทั้งหมดในลำดับข้อมูล เช่น สร้างอักขระข้อความทีละอักขระ
ห่วงโซ่มาร์คอฟมีพื้นฐานอยู่บนหลักการ“ไร้ความทรงจำ” กล่าวอีกนัยหนึ่ง ขั้นต่อไปของกระบวนการจะขึ้นอยู่กับสถานะก่อนหน้าเท่านั้น ไม่ใช่ลำดับของสถานะ สมมติฐานง่ายๆ นี้ทำให้การคำนวณความน่าจะเป็นแบบมีเงื่อนไขเป็นเรื่องง่าย และช่วยให้อัลกอริทึมนี้สามารถนำไปใช้ในหลายสถานการณ์ได้
ในปัญหาในชีวิตจริง โดยทั่วไปเราใช้โมเดล Hidden Markov ซึ่งเป็นเวอร์ชันที่พัฒนาไปมากของ Markov chain
แบบจำลองความน่าจะเป็นสำหรับการสร้างข้อความ/ภาษาธรรมชาติ (วิธีที่ง่ายและมีประสิทธิภาพในการสร้างข้อความใหม่)
มันเป็นกระบวนการสุ่ม (หมายความว่ามีระบบที่มีการสังเกตในช่วงเวลาหนึ่งและผลลัพธ์คือค่าที่สังเกตได้ในแต่ละครั้งเป็นตัวแปรสุ่ม) ซึ่งมีตัวแปรสุ่ม การเปลี่ยนจากรัฐหนึ่งไปอีกรัฐหนึ่งขึ้นอยู่กับสมมติฐานบางประการและกฎความน่าจะเป็นที่แน่นอน
ลองหาค่านี้ทางคณิตศาสตร์กัน:
ให้กระบวนการสุ่มเป็น {Xm, m=0,1,2,⋯}
กระบวนการนี้เป็นลูกโซ่มาร์คอฟก็ต่อเมื่อ
สำหรับ m, j, i, i0, i1, im−1 ทั้งหมด
สำหรับสถานะจำนวนจำกัด S={0, 1, 2, ⋯, r} เรียกว่าห่วงโซ่มาร์คอฟจำกัด
P(Xm+1 = j|Xm = i) ในที่นี้แสดงถึงความน่าจะเป็นในการเปลี่ยนผ่านจากสถานะหนึ่งไปอีกสถานะหนึ่ง ในกรณีนี้ เราสมมติว่าความน่าจะเป็นของการเปลี่ยนแปลงไม่ขึ้นอยู่กับเวลา
ซึ่งหมายความว่า P(Xm+1 = j|Xm = i) ไม่ได้ขึ้นอยู่กับค่าของ 'm' ดังนั้นเราสามารถสรุปได้ว่า
สมการนี้จึงแสดงถึงลูกโซ่มาร์คอฟ
ตอนนี้เรามาทำความเข้าใจว่าโซ่ Markov คืออะไรพร้อมตัวอย่าง
แบบจำลองสภาพอากาศอย่างง่าย:
ความน่าจะเป็นของสภาพอากาศ (จำลองเป็นฝนตกหรือแดดจัด) โดยพิจารณาจากสภาพอากาศในวันก่อนหน้า สามารถแสดงได้ด้วยเมทริกซ์การเปลี่ยนแปลง:
P=⬇️
เมทริกซ์ P แสดงถึงแบบจำลองสภาพอากาศ โดยวันที่มีแสงแดดสดใส 90% มีแนวโน้มที่จะตามมาด้วยวันที่มีแดดอีกวันหนึ่ง และวันที่ฝนตก 50% มีแนวโน้มที่จะตามมาด้วยวันฝนตกอีกวัน คอลัมน์สามารถกำหนดป้ายกำกับว่า "แดดจัด" และ "ฝนตก" และแถวต่างๆ สามารถกำหนดป้ายกำกับในลำดับเดียวกันได้ (P)i j คือความน่าจะเป็นที่หากวันที่กำหนดเป็นประเภท I ก็จะตามมาด้วยวันประเภท เจ.
พยากรณ์อากาศ
มาร์คอฟเชนใน Python
เพื่อดำเนินการนี้ ฉันจะใช้ Python
มาเริ่มเขียนโค้ดกันดีกว่า!
ตัวละคร-ตาม-ภาษา-โมเดล (ดูสมุดบันทึกนี้สำหรับสิ่งนี้ )
ทำการติดตั้ง "python" ขั้นพื้นฐานและดาวน์โหลดได้จาก "ที่นี่"
ฝึกฝนบน Jupyter Notebook โดยรัน pip install jupyter บน cmd ดูสิ่งนี้สำหรับ การติดตั้ง ขั้นพื้นฐาน
การมองการณ์ไกลเกี่ยวกับเครือ Markov
มาดูข้อความต่อไปนี้:
ข้อความ =” ศิลปะศิลปะ ศิลปะศิลปะ ศิลปะศิลปะ ศิลปะศิลปะ”
เราสามารถพูดได้ดังต่อไปนี้:
เมื่อคำปัจจุบันคือ “arty” คำถัดไปจะเป็น “ศิลปะ” 100%
เมื่อคำปัจจุบันคือ "ศิลปะ" คำถัดไปจะเป็น "ศิลปะ" 75% และจะขึ้นบรรทัดใหม่ส่วนที่เหลือ (25%)
แค่นั้นแหละ! ตอนนี้เราได้กำหนดห่วงโซ่มาร์คอฟแล้ว
จากคำจำกัดความของความน่าจะเป็นนี้ เราสามารถช่วยเหลือผู้ใช้ในการเขียนข้อความที่คล้ายกันได้ หรือเราสามารถสร้างข้อความใหม่ทั้งหมดได้โดยอัตโนมัติ
- มาเริ่มกันที่ "ศิลปะ" กันก่อน
- เครื่องกำเนิดไฟฟ้ารู้ความน่าจะเป็นของคำถัดไปที่เป็นไปได้หลังจาก "ศิลปะ": 75% "ศิลปะ", ขึ้นบรรทัดใหม่ 25%
- หากเรากำลังเขียนแป้นพิมพ์แนะนำอัตโนมัติ ตอนนี้เราสามารถวางคำว่า “arty” อย่างเด่นชัดและคำเช่น “enter” ให้เด่นชัดน้อยลง
- หากเรากำลังสร้างตัวสร้างข้อความ เราจะสุ่มเลือกคำถัดไป ไม่ว่าจะสุ่มโดยสมบูรณ์ (ปืนใหญ่ 50%, ขึ้นบรรทัดใหม่ 50%) หรือตามสัดส่วน (ปืนใหญ่มีโอกาสมากกว่าบรรทัดใหม่ 3 เท่า) เรากำลังใช้แนวทางที่สองที่นี่ เนื่องจากจะสร้างข้อความที่ใกล้เคียงกับต้นฉบับมากขึ้น
- สมมติว่าเราจบลงด้วย "ศิลปะ" สตริงที่สร้างขึ้นตอนนี้คือ "arty arty"
- ต่อไป เราใช้คำสุดท้าย (“arty”) และทำซ้ำคำนั้น
- ความน่าจะเป็นของ "ศิลปะ" นั้นง่าย (100% "ศิลปะ") หากเรากำลังเขียนแป้นพิมพ์แนะนำอัตโนมัติ เราสามารถแทรก "ศิลปะ" ได้โดยไม่ต้องถามผู้ใช้ (หากเป็นโดเมนประเภทที่เราอยู่)
- ตอนนี้เรามี "ศิลปะ ศิลปะ ศิลปะ"
- ซ้ำแล้วซ้ำอีก
“คุณสามารถอ่านเพิ่มเติมได้ที่นี้”
แอปพลิเคชันในโลกแห่งความเป็นจริงของ Markov Chain
⦿PageRank:อัลกอริทึมที่ใช้โดย Google Search เพื่อจัดอันดับหน้าเว็บในผลลัพธ์ของเครื่องมือค้นหา โดยที่ทุกหน้าเว็บสามารถเป็นสถานะได้ และลิงก์หรือการอ้างอิงระหว่างหน้าเหล่านี้ถือได้ว่าเป็นการเปลี่ยนผ่านที่มีความน่าจะเป็น ดังนั้นโดยไม่คำนึงถึงการค้นหาของคุณ โอกาสในการเข้าถึงหน้าเว็บบางหน้ามีความน่าจะเป็นคงที่
⦿การพิมพ์คำทำนายคำ: ใช้สำหรับทำนายคำที่กำลังจะตามมา เช่นเดียวกับ Gmail และ WhatsApp ที่ใช้ในการเติมข้อความอัตโนมัติและคำแนะนำ
⦿ตัวสร้างข้อความ:สร้างข้อความจำลองหรือสร้างเรียงความขนาดใหญ่และเรียบเรียงสุนทรพจน์ ใช้มากเกินไปในการสร้างชื่อที่คุณเห็นบนเว็บ
อื่น ๆ อีกมากมาย...
คุณสามารถอ่านเรื่องนี้ได้: http://ieee.msit.in/blogs/4/Character-based-Language-model