คลังเก็บป้ายกำกับ: hidden markov model

Hidden Quantum Markov Model

ตอนนี้งานวิจัยมันก้าวหน้าไปไกลมาก นอกจากจะต้องสนใจเรียนรู้ของเดิมแล้ว เรายังต้องสนใจเรียนรู้ดักทางของใหม่ ๆ อีก

เริ่มแรก Markov Model ซึ่งมีการอนุมานว่าความน่าจะเป็นของ State ปัจจุบัน เกิดจากความน่าจะเป็นของ State ก่อนหน้า ดังนั้น ทุก ๆ State จึงมีการยึดโยงกับ State ก่อนหน้า เหมือนกับการทำนายดินฟ้าอากาศ เพื่อหาความน่าจะเป็นในการเกิดปรากฎการณ์ ฟ้าโปร่ง, ฝนตก หรือ มีเมฆ โดยการหาความน่าจะเป็นในการเกิดปรากฎการณ์นั้น ๆ

แต่เนื่องจาก Markov Model มีข้อจำกัด จึงมีคนคิดค้น Hidden Markov Model ขึ้นมา โดยให้การอนุมานว่า ความน่าจะเป็นของ State ปัจจุบัน เกิดจากความน่าจะเป็นของ State ก่อนหน้าก็จริง แต่เราไม่สามารถรู้สิ่งที่เกิดขึ้นจาก State เหล่านั้นได้ เพราะ State เหล่านั้นถูกซ่อนอยู่ ทำให้เราต้องหาความน่าจะเป็นจาก State ที่ไม่ถูกซ่อนไว้ เหมือนกับการที่เราเป็นนักโทษ เราไม่เห็นเดือนเห็นตะวัน เราไม่รู้หรอกว่าตอนนี้ข้างนอก ฟ้าโปร่ง, ฝนตก หรือ มีเมฆ เราเพียงหาความน่าจะเป็นได้จากผู้คุมนักโทษที่เอาอาหารมาส่งเรา ว่าเขาถือร่มหรือไม่ถือร่มมา จากนั้นเราก็อนุมานต่าง ๆ นา ๆ ว่าอากาศข้างนอกน่าจะ ฟ้าโปร่ง หรือ ฝนตก หรือ มีเมฆ เป็นต้น

มาตอนนี้ไฮเทคกันไปใหญ่ คือ มีการคิดค้น Hidden Quantum Markov Model โดยการกำหนดว่า State ที่ถูกซ่อนไว้ หรือ State ที่ถูกตรวจจับได้ ไม่ได้มีเพียง 1 ค่าในช่วง 1 State หากแต่ในแต่ล่ะ State นั้นมีค่าที่เป็นไปได้มากกว่า 1 ค่า

งานนี้คงได้ Optimization กันแหลก เพราะแค่ของเดิมกว่าจะแก้ปัญหา Non Deterministic Polynomial ได้ก็แทบอ้วกแล้ว นี่เล่น 1 State มีได้มากกว่า 1 ค่า ยิ่งต้องแก้ปัญหา Non Deterministic Polynomial เข้าไปใหญ่

ไม่แน่ใจว่า Hidden Quantum Markov Model นี่ตีพิมพ์หรือยัง ถ้าตีพิมพ์แล้วก็น่าเสียดาย เพราะว่าผมคิดได้แล้วเหมือนกัน เพียงแต่หาสมการคณิตศาสตร์มารองรับไม่ได้เท่านั้นเอง (ก็คือคิดไม่ทันเขานั่นแหล่ะ)

ประเด็นความเข้าใจใน Hidden Markov Models

Hidden Markov Models หรือ HMMs เป็นส่วนขยายของ Markov Models ดังนั้น เราจึงต้องศึกษา Markov Models ก่อน ทีนี้พอเราศึกษาเสร็จแล้ว เราก็จะต้องเตรียมพื้นฐานอย่างหนึ่งก่อนศึกษา Hidden Markov Models นั่นก็คือ เราต้องไปศึกษา การอนุมานแบบเบย์ หรือ Bayesian inference ซะก่อน เพราะสมการหลาย ๆ อย่างที่ใช้ใน Hidden Markov Models มันประยุกต์มาจาก Bayesian inference

สิ่งที่เป็นประเด็นอย่างหนึ่งในการทำความเข้าใจกับ Hidden Markov Models ก็คือ จริตของผู้เผยแพร่ความรู้ ผู้เผยแพร่ความรู้บางคนใช้สมการทางคณิตศาสตร์เพื่ออธิบายความเข้าใจ บางคนใช้รูปภาพเพื่ออธิบายความเข้าใจ และบางคนใช้เมตริกซ์เพื่ออธิบายความเข้าใจ

สำหรับผู้เผยแพร่ที่ใช้รูปภาพเพื่ออธิบายความเข้าใจใน Hidden Markov Models ก็มีหลายสำนัก บางสำนักก็ใช้รูปภาพเต็มรูปแบบพร้อมพารามิเตอร์ประกอบ บางสำนักก็ใช้รูปภาพแบบง่ายสุดเพื่ออธิบาย

อีกประเด็นหนึ่งก็คือ การอธิบาย Hidden Markov Models จำเป็นจะต้องอธิบายในทุก ๆ ขั้นตอนอย่างละเอียด แต่ผู้เผยแพร่มักละเลยข้ามจุดเล็ก ๆ น้อย ๆ ซึ่งสำคัญ โดยคิดว่าผู้ศึกษาคงเข้าใจเองได้ว่าจุดเล็ก ๆ ที่ขาดหายไปนั้น ควรจะเอาอะไรมาเติมเต็มให้สมบูรณ์ ยกตัวอย่างเช่น มีการอธิบายว่า Hidden Markov Models ก็คล้าย ๆ กับ Dynamic Bayesian inference และได้ข้ามการพิสูจน์สูตร โดยไม่ได้บอกว่าต้องใช้สูตรของ Bayesian inference เข้ามาช่วยคำนวณด้วย เป็นต้น

นอกจากนี้ ยังมีประเด็นเรื่องของทฤษฎีความน่าจะเป็น ซึ่งเป็นแกนหลักของ Hidden Markov Models ซึ่งอย่างที่เรารู้ ๆ กันว่า ทฤษฎีความน่าจะเป็น คือทฤษฎีที่เราจะคำนวณเพื่อให้ได้ผลลัพท์จากอัตราส่วนของ จำนวนเหตุการณ์ที่เป็นไปได้ หารด้วย จำนวนเหตุการณ์ทั้งหมด โดยบางสำนักที่เผยแพร่ Hidden Markov Models ก็จะเน้นอธิบายถึงแต่วิธีการหา จำนวนเหตุการณ์ที่เป็นไปได้ ในขณะที่บางสำนักก็จะอธิบายถึงแต่ จำนวนเหตุการณ์ทั้งหมด เป็นต้น

สำหรับประเด็นถัดไปก็เป็นเรื่องของการทำให้สมบูรณ์ โดยตัวของ Hidden Markov Models เองนั้น ไม่สามารถนำไปใช้อะไรเป็นเรื่องเป็นราวได้ จำเป็นที่จะต้องถูกนำไปใส่รายละเอียด โดยการคัดเลือกโมเดลและพารามิเตอร์ รวมทั้งใช้อัลกอริทึมต่าง ๆ เพื่อเข้ามาช่วย ดังนั้น เราจึงจำเป็นต้องศึกษาเพิ่มเติมในอัลกอริทึมต่าง ๆ ที่มีคนคิดขึ้นมาแล้ว ไม่ว่าจะเป็น Baum–Welch algorithm, Viterbi algorithm และ Forward–backward algorithm

ถ้าเราเปรียบเทียบว่า Hidden Markov Models เป็นระบบปฏิบัติการ บรรดาอัลกอริทึมต่าง ๆ อย่าง Baum–Welch algorithm, Viterbi algorithm และ Forward–backward algorithm ก็เปรียบได้กับ Device Driver ที่สร้างมาเพื่อใช้กับระบบปฏิบัติการ

ซึ่งถ้าบอกแบบนี้ก็หมายความว่า ยังมีโอกาสอีกมากมายในอนาคต ที่จะมีผู้คิดค้นวิจัยพบอัลกอริทึมใหม่ ๆ เพื่อมาใช้กับ Hidden Markov Models เหมือนกับที่มีการสร้าง Device Driver ใหม่ ๆ เพื่อมาใช้กับระบบปฏิบัติการยังไงอย่างงั้น

ส่วนประเด็นสุดท้ายเป็นเรื่องของการประยุกต์ใช้งาน Hidden Markov Models ไปยังสาขาต่าง ๆ ซึ่งปัจจุบันผู้เผยแพร่ที่ถนัดเฉพาะด้านก็จะเน้นแต่งตำราเพื่อใช้ Hidden Markov Models กับสาขาของตัวเอง โดยหนังสือที่ผมเห็นส่วนใหญ่จะเป็นการประยุกต์ทางด้าน Speech Recognition, การเงิน และ Bioinformatics

โดยสรุปแล้ว การจะทำความเข้าใจกับ Hidden Markov Models ได้ มันจึงเป็นเรื่องลำบากนิดนึง เพราะเราต้องทำความเข้าใจ 4 ลำดับอันได้แก่

  1. ทำความเข้าใจกับทฤษฎีพื้นฐานก่อนจะมาเป็น Hidden Markov Models และทฤษฎีที่เกี่ยวข้องกับมัน
  2. ทำความเข้าใจกับทฤษฎีของตัว Hidden Markov Models เอง
  3. ทำความเข้าใจกับอัลกอริทึมต่าง ๆ ที่สร้างขึ้นมาเพื่อ Hidden Markov Models ซึ่งเปรียบได้กับการทำความเข้าใจ Device Drivers ที่สร้างขึ้นมาเพื่อระบบปฏิบัติการ
  4. ทำความเข้าใจกับวิธีการในการประยุกต์ Hidden Markov Models เพื่อใช้แก้ปัญหาในเรื่องที่เราสนใจ

มันก็เลยเป็นเรื่องที่ไม่ง่าย และจึงเป็นสาเหตุว่าทำไมจึงมีงานวิจัยและวิทยานิพนธ์ในไทย ที่เกี่ยวกับ Hidden Markov Models ตีพิมพ์อยู่ไม่ถึง 50 เรื่องเท่านั้น

การเลือกวิธีการสำหรับแก้ปัญหาทางปัญญาประดิษฐ์

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

แต่ผมก็เหมือนกับคนทั่วไป คือมีเวลาเท่ากับคนทั่วไป ดังนั้น ผมเลยต้องกำหนดปัญหาทางปัญญาประดิษฐ์ขึ้นมาก่อน แล้วค่อยคิดว่าจะเอาวิธีการไหนที่เหมาะสมมาแก้ปัญหา!!!

จากการศึกษาโดยส่วนตัวพบว่า วิธีการแก้ปัญหาทางปัญญาประดิษฐ์ที่นิยมใช้กันอย่างกว้างขวางในปัจจุบันนั้น มีอยู่ไม่กี่วิธีไม่ว่าจะเป็น Hidden Markov Model, Artificial Neural Network, Genetic Algorithm เป็นต้น และแต่ล่ะวิธีก็มี Algorithm ที่ถูกคิดค้นออกมาอีกเยอะแยะ ซึ่งบางอย่างก็แก้ปัญหาแบบเฉพาะเจาะจง แต่บางอย่างก็แก้ปัญหาได้กว้าง ๆ และรอให้มีผู้ค้นพบว่ามันควรจะใช้แบบเฉพาะเจาะจงในเรื่องใด ๆ

เดิมการแก้ปัญหาทางปัญญาประดิษฐ์ต่าง ๆ มักจะใช้วิธีการที่แยกจากกัน ไม่มีความเกี่ยวข้องกัน เช่น ถ้าจะรู้จำเสียงพูด ก็จะใช้วิธีการ Hidden Markov Model หรือ Artificial Neural Network อย่างใดอย่างหนึ่งไปเลย เป็นต้น แต่ภายหลังก็ค้นพบกันว่า การผสมผสานวิธีการแก้ปัญหาโดยการนำหนึ่งปัญหามาแบ่งออกเป็นส่วน ๆ แล้วเอาวิธีการแก้ปัญหาที่ดีที่สุดมาใช้เพื่อแก้ปัญหาแต่ล่ะส่วนจะดีกว่า เช่น การรู้จำเสียงพูด แทนที่จะใช้วิธี Hidden Markov Model เพียงอย่างเดียว ก็อาจจะใช้วิธีการ Artificial Neural Network เพื่อแยกแยะอัตลักษณ์ของเสียงพูดก่อน แล้วจึงใช้ Hidden Markov Model เพื่อหาความน่าจะเป็นของเสียงพูด เป็นต้น

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

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

สรุปก็คือต้องเรียนมาก ๆ รู้เยอะ ๆ นั่นแหล่ะ แล้วมันจะเข้าเส้นเอง ซึ่งผมเองก็ยังคงตั้งหน้าตั้งตาเรียนต่อไปเหมือนกัน