Recurrent Neural Network (part2 : LSTM)

Pisit Bee
Boobee
Published in
3 min readAug 16, 2019

สวัสดีครับ วันนี้ มานำเสนอ Model ที่พัฒนาต่อมาจาก RNN แบบดั้งเดิมกัน นั่นก็คือ LSTM ถูกนำเสนอโดย Hochreiter & Schmidhuber (1997) ทำงานเพื่อแก้ ปัญหา Vanishing Gradient ที่ถูกค้นพบโดย Bengio, et al. (1994), ของ RNN นั่นเอง Vanishing Gradient คืออะไร เอ่อ คือ กรณีที่ ค่า Gradient เพื่อที่จะคำนวนในการปรับค่า Parameter ของ Weight ต่างๆ มันค่อยๆ เลือนหายไป ทำไมมันหาย ขอยกตัวอย่างเช่น ถ้า เราจำเป็นต้องทอนค่า 0.01 * 0.01 * 0.01 มันคือ 0.000001 แต่ถ้า ชั้นของ Layer หรือ จำนวนของ Sequence หลายๆ ชั้นขึ้นมันจะวิ่งเข้าสู่ 0 นั่นเอง หายไปเลย ดังนั้น เจ้า LSTM และ GRU มาช่วยแก้ปัญหานี้ครับ โดยจะช่วยอย่างไร เดี๋ยวขอเอาไว้อธิบายคราวหน้านะครับ

มาเริ่มเดิมที่ จาก LSTM แล้วกัน LSTM หลักการจะมองเหมือน Gate จะเปิด หรือ ปิด information ไปให้ใน Time Step ถัดไปหรือไม่ ขึ้นอยู่กับ Parameter ของ Gate ครับ โดย LSTM นำเสนอ ออกมาเพิ่มคือ 3 Gate ด้วยกันนั่นคือ Input Gate , Forget Gate และ Output Gate รูป Graphic แสดง โครงสร้างของ LSTM ครับ

อะไรเนี่ยยยยยยยยย จากภาพ จะเห็นว่า มี ตัวควบคุม Gate อยู่ 2 ตัวคือ Input Vector (X_t)ปัจจุบัน , output vector จากชั้นก่อนหน้า (h_(t-1)) . LSTM จะมี 3 Gate ด้วยกัน นั่นคือ Input Gate, Forget Gate และ Output Gate. ทีนี้จะทำการควบคุมการเปิดปิดได้อย่างไร การเปิดและปิดถูกควบคุมโดย ค่า Vector ผ่าน Sigmoid Function ถ้า ค่าของ Sigmoid เข้าใกล้ 1 ก็ จะถูกนำไปคูณกับค่า C_t-1 เพื่อที่จะผ่านข้อมูลเข้าไปยัง Cell Memory แต่ถ้าไม่ก็ Sigmoid ให้ค่าเข้าใกล้ 0 ดังนั้นเมื่อถูกคูณ ก็จะมีค่าเข้าใกล้ 0 นั่นเอง

forget Gate (Source: http://colah.github.io/posts/2015-08-Understanding-LSTMs/)

จะเห็นว่ามี Vector ที่เกี่ยวข้อง 2 ตัว ที่จะปิดเปิด Gate ตัวนี้

input Gate and Cell Information (Source: http://colah.github.io/posts/2015-08-Understanding-LSTMs/)

รูปนี้แสดง 2 ส่วน ส่วนของ Input Gate และ Cell Information ซึ่ง ตัว Cell Information ถ้ามอง มันดีๆ จริงแล้วมันคือ RNN นั่นเอง ยังจำได้ไหมมม จำได้หรือปล่าววววว สมการดังรูปด้านล่างนะครับ

ทีนี้ ตัว Input Gate จะไปควบคุมอีกทีว่าจะให้ Cell information ผ่านไปรวมกับ ข้อมูลเดิมมากน้อยขนาดไหน ซึ่งแตกต่างจาก RNN ที่ RNN ผ่านข้อมูลไปให้กับ Time step ถัดไปแล้ว แต่ LSTM จะคุมข้อมูล Input และ ข้อมูล จาก Time Step ก่อนหน้า

Update Cell Information (Source: http://colah.github.io/posts/2015-08-Understanding-LSTMs/)

ยังเหลือ อีก 1 ตัว LSTM คิด Beyond กว่านั้นไม่ใช่ว่า Cell Memory จะสามารถนำไปใช้งาน เป็น output ได้เลย ok แหละ Cell memory ใช้เป็น ข้อมูลภายใน Cell ตัวเอง แต่การที่จะมี output ออก ไปก็ต้องถูกควบคุม ซึ่งควบคุมด้วย output Gate ดังในรูป

และท้ายสุดจะได้ output ของ LSTM ใน Time Step ปัจจุบัน ซึ่ง สามารถเขียนเป็นสมการได้ดังนี้

ที่กล่าวมา เป็นสมการทั่วไปของ LSTM นะครับ ซึ่งมีหลายๆ งานก็ปรับเปลี่ยนรูปแบบสมการเล็กๆ น้อยๆ ทั้ง major และ minor version แต่หนึ่งใน นั้นมีงานที่ นิยมมาก นั่นก็คือ งานของ Gers & Schmidhuber (2000) เค้าได้ทำการ Add “peephole connections.” ถ้ำมอง ซึ่งทำให้ Gate สามารถมอง ข้อมูลใน cell memory ได้ สมการทั้วไปของเค้าเป้นดังนี้

They add peephole connection from cell memory to every gate.

สรุป

  1. LSTM มาช่วยในการแก้ไขปัญหาการเกิด Vanishing Gradient ใน RNN ได้
  2. LSTM มี Gate สำหรับควบคุมการไหลของ Information ใน LSTM อยู่ 3 ตัว Input,output,forget gate
  3. พื้นฐาน LSTM นั้นมาจาก RNN และเพิ่มความสามารถ การไหลผ่าน Information เข้าไปเพิ่มเติม

Ref.

  1. http://www.bioinf.jku.at/publications/older/2604.pdf
  2. http://www-dsi.ing.unifi.it/~paolo/ps/tnn-94-gradient.pdf
  3. http://colah.github.io/posts/2015-08-Understanding-LSTMs/

--

--