คุณเคยสงสัยหรือไม่ว่าการตอบกลับอัตโนมัติของ 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