คำถามที่พบบ่อยเกี่ย...
 
Notifications
Clear all

คำถามที่พบบ่อยเกี่ยวกับพื้นฐานของ AI, Deep Learning และ Keras (อัพเดต 2021)

15 ข้อความ
1 Users
0 Likes
6,704 Views
The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 6 years ago
ข้อความ: 400
Topic starter  
Keras คืออะไร และทำไมต้อง Keras?

ดั้งเดิมนั้น Keras คือ programming platform ที่ช่วยให้เราเรียนรู้วิธีการเขียน Deep Learning ได้อย่างง่ายดายและรวดเร็วที่สุดครับ จึงเป็นที่มาของชื่อเว็บของเรา ที่ต้องการให้เพื่อนๆ ชาวไทยสามารถเรียนรู้การเขียนโปรแกรม deep learning ได้โดยไม่เสียเวลา

ล่าสุดตั้งแต่ปี 2019 มานั้น ทาง Tensorflow ซึ่งเป็น platform มาตรฐานจาก google โดยตรง ได้ตัดสินใจผลักดัน Keras ให้เป็น API มาตรฐานของ Tensorflow (ตั้งแต่ version 2.0) โดยสมบูรณ์ ดังนั้นด้วยการสนับสนุนและพัฒนาจากทีม google โดยตรง เราจึงมั่นใจได้ว่าการฝึกเขียน Keras นั้นจะไม่ล้าสมัยแน่นอน

Tensorflow เกี่ยวข้องกับ Keras อย่างไร?

Tensorflow คือ Programming Platform ที่ทาง Google พัฒนาขึ้นด้วยตนเองจึงมีประสิทธิภาพสูง รวมทั้งคุณภาพของเอกสารการใช้งานต่างๆ นั้นก็เพียบพร้อม

อย่างไรก็ดี การใช้งาน Tensorflow นั้นค่อนข้างซับซ้อนและต้องอาศัยเวลาในการเรียนรู้พอสมควร ในเวลาต่อมา F. Chollet ซึ่งก็เป็นนักวิจัยที่ Google Lab จึงได้คิดพัฒนา platform ใหม่ที่เรียกว่า Keras ขึ้นมาเพื่อเอาไว้เรียกใช้งาน Tensorflow ในเบื้องหลังและให้พวกเราเขียนโปรแกรมผ่าน Keras ได้โดยแทบจะไม่ต้องยุ่งกับ Tensorflow อนึ่ง ปัจจุบัน Google ประกาศสนับสนุน Keras อย่างเป็นทางการ (ตั้งแต่ Tensorflow 2.0 เป็นต้นมา) ทำให้ Keras จะพัฒนาควบคู่ไปพร้อมกับ Tensorflow ทำให้ผู้ใช้ไม่ต้องกลัวว่าจะล้าสมัยครับ

ควรเขียนโปรแกรมด้วยภาษาอะไรดี??
ถึงแม้นจริงๆ แล้ว Deep Learning จะสามารถเขียนได้ด้วยหลากหลายภาษา แต่เราแนะนำ Python ครับเนื่องจากเป็นภาษาที่นักวิจัยทั่วโลกนิยมใช้มากที่สุด ทำให้ทั้ง open source software tools, documents และ community ก็ยิ่งใหญ่ตามไปด้วย Python มีทั้งโมดูลคณิตศาสตร์ (Numpy) วิทยาศาสตร์และสถิติ (SciPy) และการจัดการข้อมูลที่ครบเครื่อง (Pandas) นอกจากนี้ทั้ง Tensorflow และ Keras ก็ยังพัฒนาเพื่อใช้กับ Python เป็นหลักอีกด้วยครับ
 
ต้องมีความรู้ด้านโปรแกรมมิ่งมากแค่ไหนเพื่อที่จะ Implement ระบบ Deep Learning / AI
อย่างน้อยควรต้องมีพื้นฐานความชำนาญ Python และ Numpy ครับ ลองดูพื้นฐานที่จำเป็นใน Python & Numpy Workshop ของเราได้ที่นี่ครับ จากนั้นสามารถต่อยอดการเขียนโปรแกรม Deep Learning ด้วย Keras ในเว็บของเราได้เลยครับ
 
**เพิ่มเติม**  เริ่มต้น Python/Numpy/Pandas/Matplotlib ภาษาไทยจาก KongRukSiam Youtube Channel

มีเนื้อหาละเอียด และเยอะมากๆ ค่อยๆ ศึกษากันไปนะคร้าบ
 
เริ่มต้น Keras
บทความเริ่มต้น Keras ที่กระชับที่สุดเขียนโดย F.Chollet ผู้สร้าง ยังไม่ได้แปลไทย แต่ใครสงสัย ติดอะไรสอบถามแอดมินได้ตลอดครับผม
บางครั้งต้องใช้พื้นฐาน Numpy  เพราะจำเป็นต้องใช้คณิตศาสตร์ของเวกเตอร์และเมตริกซ์ สามารถดูได้ฟรีที่นี่ครับ https://lazyprogrammer.me/numpy/
This post was modified 3 years ago 2 times by The Neural Engineer

   
ตอบกลับอ้างอิง
The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 6 years ago
ข้อความ: 400
Topic starter  
จะเรียนรู้ Python, Numpy และโมดูลอื่นๆ ที่เกี่ยวข้องได้ที่ไหน
 
การแข่งขันบน Kaggle คืออะไร? Kaggle ช่วยให้เราเรียนรู้ AI ได้ง่ายขึ้นอย่างไร?
คำตอบอยู่ใน กระทู้นี้ ครับ
 
GPU คืออะไร จำเป็นไหม มีรุ่นอะไรที่พอใช้ได้บ้าง? TPU คืออะไร ?

สมัยก่อนเราคิดว่า CPU (จากค่ายดัง Intel / AMD) คือสมองของคอมพิวเตอร์ ในช่วงปี 2008 นักวิจัยได้ค้นพบว่า GPU ที่อยู่ใน Graphic Card (ปกติใช้ช่วยทำให้แสดงผลกราฟฟิกสวยงาม ใช้เล่นเกมส์) สามารถนำมาช่วยให้การเรียนรู้ของ Machine Learning ทำได้เร็วขึ้นมาก และประสบความสำเร็จในปี 2012 กับการประยุกต์ใช้ในโมเดล AlexNet (บทความนี้ครับ)

ปัจจุบัน (อัพเดตเมษายน 2020) GPU จากค่าย NVIDIA จึงกลายเป็นส่ิงที่ขาดไม่ได้ในการสร้างโมเดล Deep Learning โดย Cards ที่เราหาซื้อได้ทั่วไปคือ GTX 1080 , GTX 2070 และ GTX 2080 สามารถใช้งานได้ดี ได้ในปัญหาส่วนใหญ่ครับ รุ่นที่กำกับว่า ti เช่น 2080ti จะมีหน่วยความจำและประสิทธิภาพเพิ่มขึ้นและราคาก็จะเพิ่มขึ้นตามมา

ในกรณีที่เราเช่า Cloud บน GCP ของ Google หรือ AWS ของ Amazon รุ่น GPU จะมีให้เลือกไล่ตามประสิทธิภาพจากน้อยไปมากคือ K80, P100, T4, V100 เป็นต้น แนะนำให้ใช้ตั้งแต่รุ่น P100 ขึ้นมาครับ

ส่วน TPU คือ Hardware ที่ Google ออกแบบเองเพื่อมาใช้ทดแทน GPU โดย TPU รุ่น V3-8 ที่ให้ใช้ฟรีบน Kaggle มีความเร็วราวๆ V100 4-8 ตัวรวมกัน (ค่าเช่าเป็นแสนต่อเดือน) นับว่าเป็นโอกาสทองที่พวกเราจะได้ใช้ Hardware ระดับสูงฟรีๆ ครับ โดย TPU จะใช้งานง่ายที่สุดบน TF2.x และ Keras เนื่องจาก Google เป็นผู้ออกแบบเอง

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

ผู้สนใจสามารถเริ่มหัดใช้ TPU ฟรีๆ ได้ที่นี่ครับ https://www.kaggle.com/c/flower-classification-with-tpus/


   
ตอบกลับอ้างอิง
The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 6 years ago
ข้อความ: 400
Topic starter  
Keras+Tensorflow vs. Pytorch ?

ในปี 2020 นั้นเริ่มแน่ชัดแล้วว่ามีเพียง Keras+Tensorflow และ Pytorch เท่านั้นที่เป็นทางเลือกของ Machine Leraning Engineers มืออาชีพ โดย Keras นั้นใช้งานได้ง่ายที่สุด ในขณะที่ Pytorch จะอนุญาตให้เรา control training flow ได้ง่ายกว่าซึ่งเหมาะสำหรับนักวิจัย แต่ก็ไม่มี official API ที่ง่ายเหมือน Keras

แม้นจะมีนักวิจัยพยายามออกแบบ API สำหรับ Pytorch เช่น Catalyst, Lightning เป็นต้น แต่ API เหล่านี้ยังไม่ได้รวมกับ Pytorch อย่างเป็นทางการเหมือน Keras+Tensorflow ดังนั้น ซึ่งอาจเกิดประเด็นที่นักวิจัยอาจเลิกพัฒนา API เหล่านี้ในอนาคต

สำหรับประสิทธิภาพในแง่ของความเร็วนั้นบน GPU, ส่วนใหญ่Tensorflow มักสูสีกับ Pytorch ในขณะที่ Keras จะช้ากว่าเล็กน้อย อย่างไรก็ดีปัจจุบัน Google / Kaggle มี Hardware TPU ที่เร็วกว่า GPU ในท้องตลาดนับสิบเท่า และสามารถใช้งานได้ง่ายดายด้วย Keras เนื่องจากออกแบบมาพร้อมๆ กัน

ในแง่ของคุณภาพความแม่นยำของโมเดล Keras, Pytorch มักให้ผลใกล้เคียงกัน ดังจะเห็นได้จากผู้ชนะบน Kaggle มักมีทั้งผู้ใช้ Keras / Pytorch สลับกันไป

 


   
ตอบกลับอ้างอิง
The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 6 years ago
ข้อความ: 400
Topic starter  
อยากเริ่มฝึก Deep Learning และ Keras เร็วที่สุดแบบ "งบน้อย"

อย่างที่เกริ่นในบทความนี้ เราต้องมี GPU, Libraries และ Data ถึงจะเริ่มต้นฝึกได้ และโชคดีมากๆ ที่ในปัจจุบันเรามี ทางเลือกฟรีๆ 2 ทางใช้ร่วมกันได้ และมีทางเลือกประหยัดมากๆ อีก 1 ทาง

  • เริ่มต้นบน Kaggle ซึ่งมี GPU และ Libraries ครบกดปุ่มเดียว เริ่มเขียนได้เลย ส่วน Dataset ก็มีให้โหลดเข้าง่ายๆ กดคลิ้กๆ เลือกเอาจากหลายหมื่น Datasets นอกจากนี้ยังมีเพื่อนๆ จากทั่วโลกคอยพูดคุยช่วยเหลือตลอด เรียกได้ว่าแค่ที่นี่ที่เดียวก็เรียนรู้ได้ตลอดชีวิต โดย GPU ใช้ได้ 30 ชม.ต่อสัปดาห์
  • Colab ซึ่งมี Libraries และ GPU ให้ใช้ฟรีเช่นกัน โดยใช้งานได้ต่อเนื่อง 12 ชั่วโมงและไม่มี limit เหมือน Kaggle แต่ก็จะหลุดบ่อยหน่อย และไม่มี Datasets ให้โหลดเข้าง่ายๆ เหมือน Kaggle (แต่ก็ใช้เทคนิกพิสดารโหลดมาจาก Kaggle ได้นะครับ)
  • Colab Pro จ่ายเพียง 300 บาทต่อเดือน ได้อัพเกรด spec ของ Colab และลดปัญหาใช้งานแล้วหลุดบ่อยลงไปได้

 

เมื่อได้เครื่องที่ถูกใจแล้ว ก็สามารถเริ่มต้นจาก Keras Workshops ต่างๆ ของ ThaiKeras เราได้ครับ ซึ่งมีทั้ง Workshops บน images, texts, NLP และ signal งานด้านการแพทย์ งานศิลปะ หรือพื้นฐาน numpy ให้ได้ฝึกกันตามถนัด

https://thaikeras.com/category/workshop/

อย่างไรก็ดีเพื่อนๆ ควรจะมีพื้นฐาน Machine Learning ก่อนเล็กน้อยนั่นคือรู้จักโมเดลต่างๆ เพื่อจะได้เข้าใจโค้ดใน workshops ได้อย่างกระจ่างครับ โดยลองเรียนในคอร์สที่เราแนะนำครับ

https://thaikeras.com/2019/onlinecourses/


   
ตอบกลับอ้างอิง
The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 6 years ago
ข้อความ: 400
Topic starter  
มีเว็บภาษาไทยอื่นๆ แนะนำไหม?
ตอนนี้มีเพื่อนๆ คนไทยเก่งๆ ช่วยกันเผยแพร่ความรู้หลายแห่งเลยครับ ส่วนใหญ่ที่เห็นจะอยู่ในรูปแบบ Facebook pages หรือ Group ในที่นี่ขอรวบรวมไว้สำหรับกลุ่มที่เน้นไปทาง Deep Learning หรือ application เฉพาะทางมากหน่อยครับ

  • Facebook สอนหน่อย เป็นเพจที่น้องแอดมินน่ารัก มีความตั้งใจที่จะถ่ายทอดความรู้ Deep Learning ตั้งแต่พื้นฐานให้อยู่ในภาษาไทยง่ายๆ ที่นักเรียนม.ปลาย (วัดตามพื้นคณิตศาสตร์) อ่านเข้าใจ
  • Facebook เนิร์ด ML เป็นเพจที่เจาะเปเปอร์บทความวิจัยที่สำคัญหรือที่น่าสนใจในวงการเป็นเรื่องๆ ไปในแต่ละโพสต์
  • Facebook Group Colab Thailand เป็นกลุ่มที่แชร์ความรู้เกี่ยวกับการใช้งาน Colab ซึ่งมี GPU VM ชั้นเยี่ยมให้เราใช้ฟรีๆ (หรือประหยัดถ้าใช้ Pro) แอดมินกลุ่มแชร์ความรู้ตลอดเวลา ยอดเยี่ยมครับ
  • Facebook Group Data Science Bangkok เป็นกลุ่มที่ Data Scientists คนไทยเก่งๆทั้งหลายมาแชร์ความรู้กันครับ
  • Facebook Group Thai NLP สำหรบคนรัก NLP ภาษาไทยโดยเฉพาะครับ 😀

   
ตอบกลับอ้างอิง
The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 6 years ago
ข้อความ: 400
Topic starter  
การเขียนโปรแกรมบน Cloud เป็นอย่างไร, Virtual Machine คืออะไร ?

ในสมัยใหม่นี้ การเขียนโปรแกรมแตกต่างไปจากสมัยไม่กี่ปีก่อน ที่เราจำเป็นต้องซื้อเครื่องคอมพิวเตอร์ ลงโปรแกรมเพื่อเขียนโปรแกรม และ setup tools/libraries ต่างๆ ที่เกี่ยวข้องกับการเขียนโปรแกรมในเครื่องของเรา เพราะเราไม่ต้องทำอะไรพวกนั้นแล้ว เริ่มเขียนได้ทันทีขอแค่มีอินเตอร์เน็ต!!

เริ่มได้ยังไง ในเมื่อเราไม่มีเครื่อง ?

การเขียนโปรแกรมสมัยใหม่ เรียกว่าเขียนบน Cloud นั่นคือ ผู้ให้บริการ Cloud เช่น Google, Amazon หรือ Kaggle นั้นได้ setup เครื่องและสิ่งจำเป็นทั้งหมดให้เราแล้ว สิ่งที่เราทำเพียงแค่เข้า web แล้วเราก็สามารถเริ่มเขียนผ่านเว็บได้ทันที “เสมือน” เรามีเครื่องที่ setup เสร็จแล้ว (คำว่า “เสมือน“ นี้ จึงเป็นที่มาของคำว่า “Virtual Machine”) โดย web browser จะส่งข้อมูลที่เราเขียนไปยัง cloud และส่ง output จาก cloud มาให้เราที่ browser นั่นเอง

บน Kaggle นั้นนอกจากให้เราใช้ VM ฟรีๆ แล้ว ยังเป็น VM คุณภาพสูงที่มี GPU/TPU ในตัว (ปี 2020) ซึ่งจริงๆ แล้วค่าเช่าแพงมากๆ นอกจากนี้เรายังสามารถก้อปปี้โปรแกรมของคนอื่นที่เขียนเสร็จแล้ว มาเขียนต่อบน VM ของเราเอง ซึ่งทำให้การเขียนโปรแกรมนั้นง่ายขึ้นกว่าสมัยก่อนนับสิบเท่า ดังนั้น ยุคนี้นับเป็นยุคทองของการเขียนโปรแกรมอย่างแท้จริงครับ


   
ตอบกลับอ้างอิง
The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 6 years ago
ข้อความ: 400
Topic starter  

อยากได้บทความเริ่มต้น สำหรับมือใหม่จริงๆ ในการเริ่มเขียนโปรแกรม

เราจะรวมบทความภาษาไทยสำหรับมือใหม่ไว้ที่นี่ และจะทยอยอัพเดตครับผม

https://medium.com/@NakarinSTK/%E0%B9%80%E0%B8%A3%E0%B8%B4%E0%B9%88%E0%B8%A1%E0%B8%95%E0%B9%89%E0%B8%99-deep-learning-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-keras-b13edc47b1b3


   
ตอบกลับอ้างอิง
Page 2 / 3
Share: