อัลกอริทึมการเรียนรู้ของเครื่อง: แผนที่ครอบคลุมของปัญญาประดิษฐ์สมัยใหม่

การเข้าสู่โลกแห่งการเรียนรู้ของเครื่อง

การเรียนรู้ของเครื่อง (Machine Learning) เปรียบเสมือนระบบประสาทเทียมที่ช่วยให้คอมพิวเตอร์สามารถเรียนรู้และตัดสินใจได้เองโดยไม่ต้องถูกโปรแกรมเฉพาะเจาะจงสำหรับทุกสถานการณ์ หากเปรียบเทียบกับการเรียนรู้ของมนุษย์ เราจะเห็นว่ามีหลายวิธีในการเรียนรู้ เช่น การเรียนจากตัวอย่าง การทดลองและผิดพลาด หรือการค้นหาแบบแผนที่ซ่อนอยู่ในข้อมูล

ภาพนี้แสดงให้เห็นถึงความหลากหลายของอัลกอริทึมการเรียนรู้ของเครื่อง ซึ่งสามารถแบ่งออกได้เป็นหมวดหมู่หลักตามลักษณะการเรียนรู้ที่แตกต่างกัน ทุกอัลกอริทึมเหล่านี้มีจุดแข็งและข้อจำกัดเฉพาะตัว และเหมาะสมกับปัญหาที่แตกต่างกันออกไป

การเรียนรู้แบบมีผู้สอน (Supervised Learning)

การเรียนรู้แบบมีผู้สอนเปรียบเสมือนการเรียนในห้องเรียนที่มีครูคอยสอนและให้คำตอบที่ถูกต้อง ระบบจะได้รับข้อมูลตัวอย่างที่มีทั้งคำถาม (input) และคำตอบ (output) แล้วเรียนรู้รูปแบบความสัมพันธ์ระหว่างทั้งสองเพื่อนำไปทำนายผลลัพธ์ของข้อมูลใหม่

การจำแนกประเภท (Classification)

การจำแนกประเภทใช้สำหรับปัญหาที่ต้องการทำนายหมวดหมู่หรือกลุ่ม เช่น การแยกอีเมลขยะ การวินิจฉัยโรค หรือการจดจำใบหน้า

อัลกอริทึมหลัก

- Decision Tree: ทำงานเหมือนการตัดสินใจแบบทีละขั้นตอน สร้างกฎเกณฑ์ในการแยกประเภทอย่างชัดเจน

- Support Vector Machine (SVM): หาเส้นแบ่งที่ดีที่สุดระหว่างกลุ่มข้อมูล ทำงานได้ดีกับข้อมูลที่มีมิติสูง

- k-Nearest Neighbors (kNN): ตัดสินใจจากเพื่อนบ้านที่ใกล้ที่สุด เรียบง่ายแต่มีประสิทธิภาพ

- Logistic Regression: คำนวณความน่าจะเป็นของการเป็นแต่ละหมวดหมู่

- Naive Bayes: อาศัยหลักการความน่าจะเป็นแบบเบส์ เหมาะกับการจำแนกข้อความ

การถดถอย (Regression)

การถดถอยใช้สำหรับการทำนายค่าที่เป็นตัวเลขต่อเนื่อง เช่น ราคาบ้าน อุณหภูมิ หรือยอดขาย

อัลกอริทึมหลัก

- Linear Regression: หาเส้นตรงที่พอดีกับข้อมูลมากที่สุด

- Polynomial Regression: ขยายไปสู่เส้นโค้งสำหรับความสัมพันธ์ที่ซับซ้อน

- Lasso และ Ridge Regression: ป้องกันการ overfitting ด้วยเทคนิค regularization

การเรียนรู้แบบไม่มีผู้สอน (Unsupervised Learning)

แนวคิดพื้นฐาน

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

การจัดกลุ่ม (Clustering)

อัลกอริทึมหลัก

- Fuzzy C-Means: ช่วยให้จุดข้อมูลสามารถเป็นสมาชิกของหลายกลุ่มได้ในระดับที่แตกต่างกัน

- k-Means: แบ่งข้อมูลออกเป็นกลุ่มโดยหาจุดศูนย์กลาง

- DBSCAN: สามารถหากลุ่มที่มีรูปร่างแปลกได้และตรวจจับข้อมูลผิดปกติ

- Mean-shift: ค้นหาจุดหนาแน่นของข้อมูล

การลดมิติข้อมูลและการแสดงผลเป็นภาพ

ช่วยให้เราสามารถเข้าใจข้อมูลที่มีมิติสูงได้ง่ายขึ้น

เทคนิคหลัก

- Principal Component Analysis (PCA): ลดมิติโดยรักษาข้อมูลที่สำคัญไว้มากที่สุด

- t-SNE, LLE, LSA: ช่วยสร้างภาพแสดงข้อมูลที่เข้าใจง่าย

- QDA, LDA, SVD: เทคนิคการแยกและลดมิติข้อมูลแบบต่างๆ

การค้นหาแบบแผน (Pattern Search)

ใช้อัลกอริทึมต่างๆ เช่น EUCLAT, Apriori และ FP-Growth ในการค้นหาความสัมพันธ์และแบบแผนที่น่าสนใจในข้อมูล เช่น การวิเคราะห์ตะกร้าสินค้า

การเรียนรู้เสริมแรง (Reinforcement Learning)

แนวคิดพื้นฐาน

การเรียนรู้เสริมแรงเปรียบเสมือนการเรียนรู้ผ่านการลองผิดลองถูก ระบบจะได้รับสัญญาณป้อนกลับในรูปแบบของรางวัลหรือการลงโทษจากการกระทำของตน จากนั้นจะปรับปรุงพฤติกรรมให้ดีขึ้นเพื่อให้ได้รับรางวัลสูงสุดในระยะยาว

อัลกอริทึมหลัก

- Q-Learning: สร้างตารางค่า Q เพื่อประเมินคุณค่าของการกระทำในแต่ละสถานการณ์

- Deep Q-Network (DQN): นำโครงข่ายประสาทเทียมลึกมาช่วยในการประเมินค่า Q

- Actor-Critic (A3C): ใช้สองเครือข่าย คือ Actor สำหรับการตัดสินใจและ Critic สำหรับการประเมินผล

- Genetic Algorithm: เลียนแบบวิวัฒนาการธรรมชาติ

- SARSA: เรียนรู้จากการกระทำที่เกิดขึ้นจริง

การเรียนรู้แบบรวม (Ensemble Learning)

แนวคิดพื้นฐาน

การเรียนรู้แบบรวมคล้ายกับการปรึกษาผู้เชี่ยวชาญหลายคนแล้วนำความเห็นมารวมกันเพื่อให้ได้คำตอบที่แม่นยำกว่า หลักการสำคัญคือ "สามคนเดินดีกว่าหนึ่งคนฉลาด"

เทคนิคหลัก

Stacking

รวมโมเดลหลายตัวโดยใช้โมเดลอีกตัวหนึ่งในการตัดสินใจขั้นสุดท้าย

Bagging (Bootstrap Aggregating)

สร้างโมเดลหลายตัวจากข้อมูลชุดย่อยที่แตกต่างกัน

- Random Forest: ตัวอย่างที่ดีของ Bagging ที่ใช้ Decision Tree หลายต้น

Boosting

สร้างโมเดลใหม่เพื่อแก้ไขข้อผิดพลาดของโมเดลเก่า

- AdaBoost: ปรับน้ำหนักข้อมูลที่ทำนายผิด

- XGBoost: ใช้ gradient ในการปรับปรุง

- GradientBoost: เพิ่มโมเดลใหม่ทีละตัว

- CatBoost: เหมาะกับข้อมูลแบบหมวดหมู่

- LightGBM: เน้นความเร็วและประสิทธิภาพ

โครงข่ายประสาทเทียม (Artificial Neural Networks)

แนวคิดพื้นฐาน

โครงข่ายประสาทเทียมเลียนแบบการทำงานของสมองมนุษย์ที่มีเซลล์ประสาทเชื่อมต่อกันเป็นเครือข่าย

ประเภทหลักของโครงข่าย

Multi Layer Perceptron (MLP)

รูปแบบพื้นฐานที่มีชั้นซ่อนระหว่างอินพุตและเอาต์พุต

Recurrent Neural Networks (RNN)

สำหรับข้อมูลที่มีลำดับเวลา

- Long Short-Term Memory (LSTM): แก้ไขปัญหาการลืมของ RNN ปกติ

- Gated Recurrent Unit (GRU): รูปแบบที่เรียบง่ายกว่า LSTM

Convolutional Neural Network (CNN)

เชี่ยวชาญด้านการประมวลผลภาพโดยใช้การ convolution เพื่อตรวจจับลักษณะเด่นในภาพ

- Deep Convolutional Neural Network (DCNN): สำหรับการประมวลผลที่ซับซ้อน

โครงข่ายเฉพาะทาง

- Autoencoders: ทำงานแบบ sequence to sequence (seq2seq) สำหรับการบีบอัดและสร้างข้อมูลใหม่

- Radial Basis Function Neural Network (RBFNN): ใช้ฟังก์ชันพื้นฐานแบบรัศมีในการประมวลผล

- Generative Adversarial Networks (GANs): มีสองโครงข่ายแข่งขันกันเพื่อสร้างข้อมูลใหม่ที่สมจริง

- Modular Neural Network: แบ่งงานออกเป็นโมดูลย่อยเพื่อประสิทธิภาพที่ดีขึ้น

การเรียนรู้แบบคลาสสิก (Classical Learning)

แนวคิดพื้นฐาน

การเรียนรู้แบบคลาสสิกเป็นรากฐานสำคัญที่นำไปสู่การพัฒนาเทคนิคที่ซับซ้อนมากขึ้นในปัจจุบัน กลุ่มนี้รวมถึงอัลกอริทึมพื้นฐานทั้งในแบบมีผู้สอนและไม่มีผู้สอน ที่ยังคงมีประโยชน์และถูกใช้งานอย่างแพร่หลายในหลายสถานการณ์

ความสำคัญของอัลกอริทึมคลาสสิก

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

การเลือกใช้อัลกอริทึมที่เหมาะสม

หลักการตัดสินใจ

การเลือกอัลกอริทึมที่เหมาะสมเป็นศิลปะที่ต้องอาศัยประสบการณ์และความเข้าใจในลักษณะของข้อมูลและปัญหา นักวิทยาศาสตร์ข้อมูลที่มีประสบการณ์มักจะพิจารณาปัจจัยหลายประการพร้อมกัน

ปัจจัยสำคัญในการตัดสินใจ

ลักษณะของข้อมูล

ขนาดของข้อมูลเป็นปัจจัยแรกที่ต้องพิจารณา ข้อมูลขนาดเล็กอาจใช้อัลกอริทึมเรียบง่ายได้ผลดี ในขณะที่ข้อมูลขนาดใหญ่อาจต้องใช้เทคนิคที่ซับซ้อนกว่า คุณภาพของข้อมูลก็มีความสำคัญเช่นกัน ข้อมูลที่มี noise มากอาจต้องใช้อัลกอริทึมที่ทนทานต่อความผิดพลาด

ประเภทของปัญหา

การจำแนกประเภทแบบง่ายอาจใช้ Decision Tree หรือ Logistic Regression ได้ผลดี แต่ปัญหาที่ซับซ้อนเช่นการจดจำภาพอาจต้องใช้ Convolutional Neural Network ปัญหาที่เกี่ยวกับลำดับเวลาเช่นการทำนายราคาหุ้นจะเหมาะกับ RNN หรือ LSTM

ข้อจำกัดทางทรัพยากร

เวลาในการฝึกฝนโมเดลและหน่วยความจำที่ใช้เป็นข้อพิจารณาสำคัญ อัลกอริทึมบางตัวเช่น Deep Learning ต้องใช้ทรัพยากรมาก ในขณะที่ k-Nearest Neighbors ใช้ทรัพยากรน้อยแต่อาจช้าในการทำนาย

ความต้องการในการอธิบายผลลัพธ์

ในบางสถานการณ์เช่นการแพทย์หรือการเงิน ความสามารถในการอธิบายว่าทำไมโมเดลถึงให้ผลลัพธ์นั้นมีความสำคัญมาก Decision Tree และ Linear Regression อธิบายได้ง่าย ในขณะที่ Neural Network เป็น "กล่องดำ" ที่อธิบายได้ยาก

-กลยุทธ์การนำไปใช้ในทางปฏิบัติ

การเริ่มต้นอย่างเรียบง่าย

หลักการสำคัญในการเริ่มต้นโปรเจกต์ Machine Learning คือการเริ่มจากอัลกอริทึมที่เรียบง่ายก่อน เช่น Linear Regression สำหรับปัญหา regression หรือ Logistic Regression สำหรับปัญหา classification การทำเช่นนี้ช่วยให้เราเข้าใจข้อมูลและสร้าง baseline ที่ดีก่อนจะไปสู่เทคนิคที่ซับซ้อนกว่า

การทดลองและเปรียบเทียบ

ในทางปฏิบัติ การลองใช้หลายอัลกอริทึมและเปรียบเทียบผลลัพธ์เป็นวิธีที่ดีที่สุด การใช้เทคนิค cross-validation ช่วยให้เราได้ประเมินความสามารถของแต่ละอัลกอริทึมอย่างเป็นธรรม

การผลิตโมเดลแบบรวม

การนำหลายอัลกอริทึมมารวมกันมักให้ผลลัพธ์ที่ดีกว่าการใช้อัลกอริทึมเดียว วิธีการง่ายๆ คือการใช้ voting หรือ averaging จากโมเดลหลายตัว วิธีการที่ซับซ้อนกว่าคือการใช้ stacking ที่ฝึกโมเดลใหม่เพื่อรวมผลลัพธ์จากโมเดลอื่นๆ

แนวโน้มและการพัฒนาในอนาคต

การเติบโตของ Deep Learning

โครงข่ายประสาทเทียมลึกกำลังเป็นเทคนิคหลักในหลายสาขา ตั้งแต่การประมวลผลภาพ การประมวลผลภาษาธรรมชาติ ไปจนถึงการเล่นเกม การพัฒนาฮาร์ดแวร์เฉพาะทางเช่น GPU และ TPU ช่วยให้การฝึกฝนโครงข่ายขนาดใหญ่ทำได้เร็วขึ้น

การเรียนรู้แบบไม่ต้องมีข้อมูลป้ายกำกับมาก

เทคนิคใหม่ๆ เช่น Transfer Learning, Few-shot Learning และ Self-supervised Learning กำลังช่วยให้เราสามารถสร้างโมเดลที่มีประสิทธิภาพโดยใช้ข้อมูลที่มีป้ายกำกับน้อยลง

การเรียนรู้แบบอัตโนมัติ (AutoML)

ระบบที่ช่วยเลือกอัลกอริทึม ปรับพารามิเตอร์ และสร้างโมเดลโดยอัตโนมัติกำลังพัฒนาขึ้น ทำให้การใช้ Machine Learning เข้าถึงได้ง่ายขึ้นสำหรับคนที่ไม่ใช่ผู้เชี่ยวชาญ

สรุปและข้อคิดสำคัญ

ความหลากหลายเป็นจุดแข็ง

แผนที่อัลกอริทึมการเรียนรู้ของเครื่องนี้แสดงให้เห็นถึงความหลากหลายและความซับซ้อนของปัญญาประดิษฐ์สมัยใหม่ ความหลากหลายนี้ไม่ใช่ความสับสน แต่เป็นจุดแข็งที่ช่วยให้เราสามารถเลือกเครื่องมือที่เหมาะสมกับแต่ละปัญหา

การเข้าใจพื้นฐานเป็นสิ่งสำคัญ

แม้ว่าเทคนิคใหม่ๆ จะออกมาอย่างต่อเนื่อง แต่การเข้าใจหลักการพื้นฐานของแต่ละประเภทการเรียนรู้จะช่วยให้เราสามารถปรับตัวและเรียนรู้เทคนิคใหม่ได้เร็วขึ้น

ไม่มีอัลกอริทึมที่ดีที่สุดสำหรับทุกปัญหา

หลักการ "No Free Lunch" ในวิทยาศาสตร์ข้อมูลบอกเราว่าไม่มีอัลกอริทึมใดที่จะทำงานได้ดีที่สุดในทุกสถานการณ์ การเป็นนักวิทยาศาสตร์ข้อมูลที่ดีต้องรู้จักเลือกใช้เครื่องมือที่เหมาะสม

การปฏิบัติเป็นสิ่งสำคัญ

ความรู้ทางทฤษฎีเป็นรากฐานที่สำคัญ แต่การนำไปใช้จริงจะช่วยให้เราเข้าใจจุดแข็งและข้อจำกัดของแต่ละเทคนิคได้ดีขึ้น การทดลองกับข้อมูลจริงและการแก้ปัญหาจริงจะเป็นการเรียนรู้ที่มีคุณค่าที่สุด

อนาคตของการเรียนรู้ของเครื่อง

โลกของการเรียนรู้ของเครื่องยังคงพัฒนาอย่างรวดเร็ว เทคนิคใหม่ๆ จะออกมาอย่างต่อเนื่อง แต่หลักการพื้นฐานที่เราได้เรียนรู้จากแผนที่นี้จะยังคงเป็นรากฐานที่สำคัญ การเข้าใจความแตกต่างระหว่างการเรียนรู้แบบมีผู้สอน ไม่มีผู้สอน และเสริมแรง รวมทั้งการรู้จักจุดแข็งของแต่ละเทคนิค จะช่วยให้เราสามารถปรับตัวและเรียนรู้สิ่งใหม่ๆ ได้อย่างมีประสิทธิภาพ

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

2025/8/31 แก้ไขเป็น

... อ่านเพิ่มเติมถ้าพูดคำว่า “อัลกอริทึม” หลายคนจะนึกถึงอะไรยากๆ แต่จริงๆ แล้วตัวอย่างอัลกอริทึมในชีวิตประจำวันมีอยู่เต็มไปหมด โดยเฉพาะพอโยงเข้ากับแผนภาพอัลกอริทึมการเรียนรู้ของเครื่อง (Machine Learning) ที่แบ่งเป็นหมวดหลักๆ เช่น การเรียนรู้แบบมีผู้สอน/ไม่มีผู้สอน/เสริมแรง/โครงข่ายประสาทเทียม/การเรียนรู้แบบรวม จะยิ่งเห็นภาพชัดว่าเราเจอมันทุกวันแบบไม่รู้ตัว 1) การเรียนรู้แบบมีผู้สอน (Supervised Learning) — “มีคำตอบให้ฝึก” - สแปมเมล / แยกกล่องจดหมาย: อันนี้เป็นตัวอย่างคลาสสิกของ Classification เช่น Naive Bayes หรือ Logistic Regression ระบบดูอีเมลเก่าๆ ที่ถูกติดป้ายว่า “สแปม/ไม่สแปม” แล้วทายอีเมลใหม่ - ปลดล็อกด้วยใบหน้าในมือถือ: มักเกี่ยวข้องกับโมเดลแนวจำแนกประเภท/ตรวจจับใบหน้า และในเชิงโครงข่ายประสาทก็จะเป็น CNN - ทำนายราคา/ยอดขาย: เป็น Regression เช่น Linear Regression หรือ Ridge/Lasso เอาไว้ทำนายตัวเลขต่อเนื่อง เช่น “เดือนหน้าจะขายได้กี่ชิ้น” หรือ “ราคาบ้านน่าจะประมาณเท่าไร” 2) การเรียนรู้แบบไม่มีผู้สอน (Unsupervised Learning) — “ไม่มีคำตอบ ต้องหากลุ่มเอง” - จัดกลุ่มลูกค้าในแอปช้อปปิ้ง: Clustering อย่าง k-Means ใช้แบ่งกลุ่มพฤติกรรม เช่น กลุ่มชอบลดราคา/กลุ่มซื้อซ้ำ/กลุ่มซื้อเฉพาะเทศกาล แล้วค่อยทำโปรโมชันให้ตรงใจ - ตรวจจับความผิดปกติของการใช้บัตร/บัญชี: บางระบบใช้แนวคิดใกล้เคียง DBSCAN หรือการดูความหนาแน่นของข้อมูล เพื่อจับธุรกรรมที่ “แปลกไปจากคนส่วนใหญ่” - สรุปข้อมูลให้ดูง่าย: การลดมิติอย่าง PCA หรือ t-SNE ช่วยย่อข้อมูลมิติสูงให้เหลือมิติน้อยลง เพื่อดูภาพรวม/การกระจุกตัวของข้อมูลได้ 3) การเรียนรู้เสริมแรง (Reinforcement Learning) — “ลองทำแล้วได้รางวัล/โดนลงโทษ” - การแนะนำเส้นทาง/การจัดสรรงานแบบปรับตามสถานการณ์: แม้ของจริงในอุตสาหกรรมจะซับซ้อน แต่แนวคิดคล้าย RL คือระบบลองตัดสินใจ (เช่น เลือกเส้นทาง/เลือกคิวงาน) แล้ววัดผลลัพธ์ (ถึงไวขึ้นไหม/ต้นทุนลดไหม) เพื่อปรับให้ดีขึ้นเรื่อยๆ - เกม/บอทที่เล่นเก่งขึ้น: ตัวอย่างที่เข้าใจง่ายคือแนว Q-Learning หรือ DQN ที่ “ลองผิดลองถูก” แล้วจำว่าทำแบบไหนได้คะแนนดี 4) โครงข่ายประสาทเทียม (Neural Networks) — “เก่งงานภาพ/เสียง/ภาษา” - กล้องมือถือปรับภาพอัตโนมัติ: CNN ช่วยแยกฉาก/แยกวัตถุ เช่น อาหาร ท้องฟ้า คน แล้วปรับสี/ความคม - พิมพ์แล้วเดาคำถัดไป / แปลภาษา: โมเดลลำดับอย่าง RNN/LSTM/GRU (หรือรุ่นใหม่ๆ) ถูกใช้กับข้อความที่มีลำดับ 5) การเรียนรู้แบบรวม (Ensemble Learning) — “หลายโมเดลดีกว่าโมเดลเดียว” - คะแนนความเสี่ยงเครดิต/การอนุมัติสินเชื่อ: ในงานจริงมักชอบใช้ XGBoost/LightGBM เพราะแม่นและจัดการฟีเจอร์ได้ดี เหมาะกับตารางข้อมูล (tabular) - การทำนายที่ต้องการความเสถียร: Random Forest เป็นตัวอย่าง Bagging ที่ช่วยลดความผันผวนของผลลัพธ์ ทริคเล็กๆ เวลาเราจะเดาว่า “ปัญหานี้ควรใช้อะไร” - ถ้ามีป้ายกำกับชัด (มีคำตอบ): เริ่มจาก Supervised (เช่น Logistic/Linear/Tree) - ถ้าอยาก “หากลุ่ม/หาความแปลก”: ไปทาง Unsupervised (k-Means/DBSCAN/PCA) - ถ้าเป็นภาพ/เสียง/ข้อความ: มองหา Neural Networks (CNN/RNN) - ถ้าอยากได้ความแม่นขึ้นแบบใช้งานจริงเร็ว: ลอง Ensemble (Random Forest, XGBoost, LightGBM) ทั้งหมดนี้คือ “ตัวอย่างอัลกอริทึมในชีวิตประจำวัน” ที่พอจับคู่กับแผนภาพหมวดหมู่ Machine Learning แล้วจะไม่หลงทาง เวลาเริ่มเรียนหรือเริ่มทำโปรเจกต์ แนะนำเริ่มจากโมเดลง่ายๆ ทำเป็น baseline ก่อน แล้วค่อยขยับไปตัวที่ซับซ้อนขึ้นตามเป้าหมายและทรัพยากรที่มี