ความแตกต่างระหว่าง CNN และ RNN
![ความแตกต่างระหว่าง CNN และ RNN](/content/images/size/w1200/2023/12/pexels-google-deepmind-17483868.jpg)
ใน 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 ประเภทอื่น
![](https://www.nerd-data.com/content/images/2023/12/image.png)
Filter ที่ใช้ใน CNN คือ อะไร?
- Filter ที่ง่ายที่สุด คือ การ Random Matrix ขึ้นมา
- ขนาดของ Filter (ด้านล่าง คือ 3 x 3 pixels) สามารถเปลี่ยนได้ ขึ้นกับงานที่นำไปใช้
- ที่ Convolutional layer จะมีการ Filter ผ่านไปทั่วทั้งรูปภาพ
- โดย Filter จะถูกใช้ในการ Convolve กับภาพ ดังนั้น ค่า Pixels จะเปลี่ยนก่อนส่งไป Layer ถัดไป
![](https://www.nerd-data.com/content/images/2023/12/IMG_0427.jpeg)
Filter ทำงานอย่างไร?
- ตัวอย่าง การทำงานของ Filter กับข้อมูล MNIST (ตัวเลข 0-9 ที่เขียนด้วยลายมือ)
- ดูรายละเอียดเพิ่มเติมได้ที่ https://youtu.be/V2h3IOBDvrA
![](https://www.nerd-data.com/content/images/2023/12/image-2.png)
- 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 ด้วย เพื่อให้การทำนายมีประสิทธิภาพดีขึ้น
![](https://www.nerd-data.com/content/images/2023/12/image-3.png)
RNN สำหรับ Autocorrect
- การทำ Autocorrect ระบบจะใช้ Input ที่เราพิมพ์ เทียบกับข้อมูลใน database และทำนายว่าสิ่งที่กำลังพิมพ์ถูกต้องหรือไม่? หากไม่ match กับคำใด ๆ ใน database จะทำนายคำที่ถูกต้องมาให้
- การทำงานของ RNN จะรับ Input 2 แหล่ง อันหนึ่ง คือ ข้อมูลตัวอักษรที่เราพิมพ์ให้ อีกอันหนึ่ง คือ จะเป็น Activation function ที่สอดคล้องกับตัวอักษรที่เราพิมพ์ก่อนหน้า เช่น ต้องการพิมพ์ คำว่า “NETWORK” แต่พิมพ์ผิดเป็น “NETWORC” ระบบจะพิจารณา Activation functions ของตัวอักษรก่อนหน้า “ NETWOR” ร่วมกับ “C” ที่เราพิมพ์เข้าไป มันจะสามารถให้ผลลัพธ์ “K” ที่ถูกต้องได้
![](https://www.nerd-data.com/content/images/2023/12/image-4.png)
******
ข้อมูลอ้างอิง - https://lionbridge.ai/articles/difference-between-cnn-and-rnn/