ความแตกต่างระหว่าง CNN และ RNN

ความแตกต่างระหว่าง CNN และ RNN
Photo by Google DeepMind

ใน Machine Learning (ML) / Deep Learning (DL) ที่เป็นสถาปัตยกรรมในรูปแบบ Artificial Neural Network (ANN) แต่ละประเภท ถูกออกแบบมาเพื่องานเฉพาะด้านที่ต่างกัน 

  • บทความนี้ จะพูดถึง ANN 2 ประเภท คือ 
      • CNN (Convolutional Neural Networks)
      • RNN (Recurrent Neural Networks)
  • จะอธิบายความแตกต่าง ระหว่าง CNN และ RNN ว่ามันถูกนำไปใช้ใน Computer Vision (CV) และ Natural Language Processing (NLP) อย่างไร?
  • ความแตกต่างหลัก ๆ คือ ความสามารถในการ Process ข้อมูลในเชิงเวลา (temporal) หรือ เชิงลำดับ (Sequential) เช่น ข้อความ ประโยค
Note - RNN จะสามารถ Process ข้อมูลในเชิงเวลา แต่ CNN จะไม่เหมาะ
  • นอกจากนั้น CNN และ RNN ถูกนำไปใช้วัตถุประสงค์ที่ต่างกัน และ มีโครงสร้างทางสถาปัตยกรรมของ NN ที่ต่างกัน 
    • CNN - ใช้ Filter ใน Convolution layer เพื่อ transform data
    • RNN - ใช้ Activation function ซ้ำ จากข้อมูลจุดอื่น ๆ ใน Sequence เพื่อทำนายผลลัพธ์ Output ถัดไป ใน Sequence (หรือ Series)

CNN คือ อะไร?

  • CNN คือ Neural Networks ประเภทหนึ่งที่นิยม ถูกนำไปใช้กับงานด้าน Computer Vision เพื่อที่จะจำแนก (Recognize) Objects หรือ Patterns ในรูปภาพ 
  • CNN มี Layer เฉพาะที่เรียกว่า Convolutional Layer ซึ่งทำให้ต่างจาก RNN หรือ NN ประเภทอื่น 
Convolutional layer จะ transform data ก่อนส่งไปให้ Layer ถัดไป … รูปภาพอ้างอิง https://lionbridge.ai/articles/difference-between-cnn-and-rnn/

Filter ที่ใช้ใน CNN คือ อะไร?

  • Filter ที่ง่ายที่สุด คือ การ Random Matrix ขึ้นมา 
  • ขนาดของ Filter (ด้านล่าง คือ 3 x 3 pixels) สามารถเปลี่ยนได้ ขึ้นกับงานที่นำไปใช้
  • ที่ Convolutional layer จะมีการ Filter ผ่านไปทั่วทั้งรูปภาพ
  • โดย Filter จะถูกใช้ในการ Convolve กับภาพ ดังนั้น ค่า Pixels จะเปลี่ยนก่อนส่งไป Layer ถัดไป
Filter ขนาด 3 x 3 pixels … รูปภาพอ้างอิง https://lionbridge.ai/articles/difference-between-cnn-and-rnn/

Filter ทำงานอย่างไร?

  • ตัวอย่าง การทำงานของ Filter กับข้อมูล  MNIST (ตัวเลข 0-9 ที่เขียนด้วยลายมือ)
  • ดูรายละเอียดเพิ่มเติมได้ที่ https://youtu.be/V2h3IOBDvrA
Filter ขนาด 3 x 3 ทำ Convolution กับทั้งภาพ … รูปภาพอ้างอิง https://lionbridge.ai/articles/difference-between-cnn-and-rnn/
  • Filter (3 x 3 Pixels) จะทำ Convolution ไล่ไปเรื่อย ๆ จนครอบคลุมทั้งภาพ เพื่อนำผลลัพธ์ ส่งไปใช้ใน Layer ถัดไป 
  • เริ่มต้นค่าใน Filter จะถูก Random ค่า Output ที่ส่งออกไปในช่วงเริ่มต้น (ของการ Train) จะไม่เป็นประโยชน์มาก หลังจากการทำวนซ้ำ (iteration) CNN จะปรับค่าเหล่านี้โดยอัตโนมัติ โดยพิจารณาจาก “Loss Function”
  • ในขณะที่ทำการ Training นั้น CNN จะปรับค่า Filter อย่างต่อเนื่อง ทำให้ Filter เหล่านี้ สามารถแยกความแตกต่างของ Edge, Curve, Texture และ Patterns / Features ต่าง ๆ ของภาพได้  
  • ในกระบวนการดังกล่าว CNN จำเป็นต้องใช้ “ข้อมูลในรูปแบบที่มี Label” (เป็น Supervised Learning)

CNN ใช้กับอะไรไม่ได้?

  • CNN ทำงานได้ดีกับข้อมูลภาพ และ ข้อมูลอื่น ๆ ที่ไม่เป็นลำดับ (Sequence)  แต่จะใช้ ไม่ได้ กับข้อมูลที่เป็นลำดับ หรือ ข้อมูลเชิงเวลา (Temporal) เช่น วีดีโอ ข้อความ
  • ข้อความ หรือ ข้อมูลที่เป็นลำดับ ในการทำ Entity Extraction บางครั้ง คำที่มาก่อนและหลัง Entity จะส่งผลกระทบกับการ Classify 
  • ในการจัดการกับข้อมูล Temporal (หรือ Sequential) เช่น ประโยค ต้องใช้ Algorithms ที่ออกแบบมาเพื่อเรียนรู้จากข้อมูล “ในอดีต” และ “ในอนาคต” ตามลำดับ เช่น RNN

RNN คืออะไร?

  • RNN คือ Neural Networks ที่ถูกออกแบบมาสำหรับ ข้อมูล Temporal (หรือ Sequential)
  • RNN จะพิจารณาข้อมูลจุดอื่น ๆ ใน Sequence ด้วย เพื่อให้การทำนายมีประสิทธิภาพดีขึ้น
โครงสร้างของ RNN … รูปภาพอ้างอิง http://colah.github.io

RNN สำหรับ Autocorrect

  • การทำ Autocorrect ระบบจะใช้ Input ที่เราพิมพ์ เทียบกับข้อมูลใน database และทำนายว่าสิ่งที่กำลังพิมพ์ถูกต้องหรือไม่? หากไม่ match กับคำใด ๆ ใน database จะทำนายคำที่ถูกต้องมาให้
  • การทำงานของ RNN จะรับ Input 2 แหล่ง อันหนึ่ง คือ ข้อมูลตัวอักษรที่เราพิมพ์ให้ อีกอันหนึ่ง คือ จะเป็น Activation function ที่สอดคล้องกับตัวอักษรที่เราพิมพ์ก่อนหน้า เช่น ต้องการพิมพ์ คำว่า “NETWORK” แต่พิมพ์ผิดเป็น “NETWORC” ระบบจะพิจารณา Activation functions ของตัวอักษรก่อนหน้า “ NETWOR” ร่วมกับ “C” ที่เราพิมพ์เข้าไป มันจะสามารถให้ผลลัพธ์ “K” ที่ถูกต้องได้ 
รูปภาพอ้างอิง https://lionbridge.ai/articles/difference-between-cnn-and-rnn/

******

ข้อมูลอ้างอิง - https://lionbridge.ai/articles/difference-between-cnn-and-rnn/