มาลองใช้ RNN แต่งเป็นกลอน (ตอนที่ 1)

ppp mena
mena.ai
Published in
2 min readJul 13, 2018

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

บทความชุดนี้จะแบ่งออกเป็น 4 ตอน ได้แก่

  • ตอนที่ 1 Introduction
  • ตอนที่ 2 Language Model
  • ตอนที่ 3 RNN
  • ตอนที่ 4 Experiment

โดยในตอนที่ 1 จะพูดถึงงานของ Karpathy ซึ่งเป็นที่มาของบทความชุดนี้ครับ

Introduction

Andrej Karpathy [ภาพจาก Medium]

ผู้ที่อยู่ในแวดวง machine learning คงจะคุ้นเคยกับชื่อนี้กันเป็นอย่างดี เพราะเมื่อไม่กี่ปีก่อน Karpathy นับเป็นดาวรุ่งที่พุ่งแรงที่สุดคนนึง ซึ่งสรรค์สร้างผลงานต่างๆ ไว้มากมาย ไม่ว่าจะเป็นการสอนคอร์ส CS231n ที่เปรียบเสมือนการเปิดศักราชคอร์ส deep learning สมัยใหม่ รวมทั้งยังเขียนเปเปอร์ เขียนโปรแกรม และเขียนบทความหลายชิ้น อันล้วนแล้วแต่น่าตื่นตาตื่นใจและเป็นหมุดหมายสำคัญของวงการ ในที่นี้เราจะกล่าวถึงบทความนึงของ Karpathy ที่มีชื่อว่า “The Unreasonable Effectiveness of Recurrent Neural Networks” ซึ่งเป็นการตั้งชื่อล้อกับบทความอันโด่งดังของ Eugene Wigner นักฟิสิกส์รางวัลโนเบล ที่รู้สึกฉงนใจเป็นอย่างมากว่าทำไมคณิตศาสตร์ถึงสามารถนำมาใช้กับวิทยาศาสตร์ได้ดียิ่งนัก และในบทความของ Karpathy ก็มีความน่าพิศวงปรากฏอยู่เช่นเดียวกัน ว่าทำไมเมื่อใช้ RNN มาเรียนรู้แบบจำลองภาษาระดับอักขระ (character-level language model) แล้วจึงสามารถสร้างลำดับของตัวอักษรขึ้นมาจนคล้ายกับภาษาของจริงได้ถึงเพียงนี้

ในบทความนี้ Karpathy ได้ทดลองใช้ RNN แบบ LSTM มาเรียนรู้แบบจำลองภาษากับ 5 ชุดข้อมูล อันได้แก่

  • Paul Graham
  • Shakespeare
  • Wikipedia
  • Algebraic Geometry
  • Linux Source Code

ซึ่งหลังจากที่ได้เรียนรู้แล้ว แบบจำลองสามารถผลิตลำดับของตัวอักษรออกมาได้ละม้ายคล้ายจริงมาก ยกตัวอย่างเช่น Latex เกี่ยวกับ algebraic geometry ที่ RNN สร้างมาดังรูปด้านล่าง สำหรับผู้เขียนที่ไม่มีความรู้ทางด้านนี้ ดูเผินๆ แล้วนึกว่าเป็นของจริงเลยทีเดียว (คล้ายของจริงถึงขนาดมีคำว่า Proof. Omitted. อีกต่างหาก!)

ตัวอย่างข้อความเกี่ยวกับ algebraic geometry ที่แบบจำลองสร้างขึ้น [ภาพจาก Karpathy]

สำหรับชุดข้อมูล Wikipedia ชุดข้อมูล Algebraic Geometry และชุดข้อมูล Linux Source Code พบว่าข้อความที่แบบจำลองสร้างออกมามี syntax ที่เป๊ะมาก เช่นมีวงเล็บเปิดวงเล็บปิดและการเว้นวรรคเว้นบรรทัดที่ถูกต้อง มี tag ต่างๆ เหมือนจริง ส่วนชุดข้อมูล Paul Graham และ Shakespeare ถ้าดูเผินๆ ก็จะเหมือนกับผลงานที่สองท่านนี้ได้เขียนไว้เอง

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

visualization ของเซลล์ใน LSTM [ภาพจาก Karpathy]

จากผลลัพธ์ของการเรียนรู้แบบจำลองภาษาและผลการวิเคราะห์ข้างต้นนี้แสดงให้เห็นพลังความสามารถของ deep learning เป็นอย่างยิ่ง ซึ่ง Karpathy ได้บรรยายถึงสิ่งที่สวยงามเกี่ยวกับ LSTM ไว้ดังนี้ครับ

Again, what is beautiful about this is that we didn’t have to hardcode at any point that if you’re trying to predict the next character it might, for example, be useful to keep track of whether or not you are currently inside or outside of quote. We just trained the LSTM on raw data and it decided that this is a useful quantity to keep track of. In other words, one of its cells gradually tuned itself during training to become a quote detection cell, since this helps it better perform the final task. This is one of the cleanest and most compelling examples of where the power in Deep Learning models (and more generally end-to-end training) is coming from.

--

--