วิศวกร ML หรือที่เรียกกันว่า Machine Learning Engineer ก็คือผู้ทำหน้าที่พัฒนา Machine Learning ด้วยการเขียนโค้ด เขียนโปรแกรม อาจเรียกได้ว่าเป็นสายงานที่ต่อยอดมาจากโปรแกรมเมอร์หรือ App Developer ก็ว่าได้
Machine Learning แปลเป็นไทยอย่างง่ายว่าการเรียนรู้ของเครื่องจักร คือการสร้างเทคโนโลยีที่ให้ระบบ AI (ปัญญาประดิษฐ์ : Artificial Intelligence ) ทำงานได้โดยอัตโนมัติตามที่วางโปรแกรมไว้ แทนที่จะใช้แรงงานมนุษย์ในการลงมือทำ ข้อดีของระบบนี้คือช่วยย่นระยะเวลาที่ใช้ในการทำงานอย่างมาก ไม่เปลืองแรงในการลงมือทำเอง และมีโอกาสจะเกิดข้อบกพร่องได้น้อยกว่ามือมนุษย์ โดยคอมพิวเตอร์จะนำข้อมูลที่ได้ไปวิเคราะห์ ประมวลผลหาคำตอบออกมาให้เรา
งานที่นำ Machine Learning เข้ามาเกี่ยวข้องด้วยนั้นก็มีหลายสาย เรียกได้ว่าสามารถนำไปปรับใช้ได้แทบทุกอย่าง เช่น เว็บไซต์ขายของที่มักจะแนะนำสินค้าที่เราน่าจะชอบมาให้ ,การแนะนำคำศัพท์ที่ถูกต้องเวลาค้นหาในเว็บ Google ,การจัดกลุ่มสินค้าแนะนำหรือบทความแนะนำบนเว็บไซต์ต่าง ๆ หรือระบบแท็กชื่อบุคคลในภาพของ Facebook ก็ใช้ Machine Learning มาช่วยคำนวณในจุดนี้เช่นกัน นอกจากนี้ยังมีการนำไปใช้กับศาสตร์ทุกแขนง อย่างใช้วิเคราะห์ผลเนื้องอก วิเคราะห์อารมณ์ วิเคราะห์ผลกีฬา แม้กระทั่งการสร้างรถยนต์ไร้คนขับของ Tesla
ลักษณะการทำงาน
สร้างระบบ AI ตามคำสั่งที่ได้รับมา เพื่อเอาไว้ใช้กับงานต่าง ๆ ภายในบริษัท และทำการวิเคราะห์และรวบรวมข้อมูลต่าง ๆ ของบริษัท เพื่อนำข้อมูลมาค้นหาคำตอบด้านอื่น อย่างการแบ่งประเภทลูกค้าจากพฤติกรรมการใช้งาน หรือ การหาส่วนที่ยังสามารถปรับปรุงเพิ่มได้ โดยมักจะนำไปใช้กับข้อมูลที่มีปริมาณมากซึ่งต้องพึ่งพาคอมพิวเตอร์ในการช่วยประมวลผล
ขั้นตอนการทำงาน
- ประชุมเพื่อมอบหมายงานและฟังความต้องการจากหัวหน้า ,Product Owner หรือผู้บริหาร
- ทำการยืนยันภายในทีมว่า Solution (แผนงาน) ที่คิดไว้ในหัวทำได้จริงไหม ส่วนประกอบอื่น ๆ ที่ต้องการมีครบหรือยัง อันไหนยังไม่มีก็อาจต้องรอทีมอื่นทำเพิ่ม มาสรุปคร่าว ๆ เป็นแผนงานและตารางเวลา เพื่อให้คำตอบกลับไปยังผู้บริหารว่า “ใช้เวลาพัฒนานานเท่าไร” และต้องไม่ลืมที่จะเผื่อเวลาไว้สำหรับปัญหาในอนาคตที่อาจต้องพบเจอด้วย
- พัฒนางานตามขั้นตอนระบบของการทำงานสากลในสายงาน Software (Agile, Scrum)
- ประชุมย่อยสรุปขั้นตอนการทำงานงานเป็นระยะ เพื่อหาว่ายังทำงานได้ต่อไหม เจอปัญหาอะไรบ้าง กำหนดการยังเหมือนเดิมไหม
- เมื่องานใกล้เสร็จ ก็เตรียมทำแผน Deployment คือนำงานขึ้น Server เพื่อจะได้สามารถทดสอบภายในได้ ประสานงานกับ Tester เพื่อทดสอบระบบ จากนั้นส่วนนี้จะวนซ้ำ จาก Integration -> Staging -> Production ซึ่งเป็นระดับชั้นของ Server เพื่อทดสอบในแต่ล่ะขั้นและหาบั๊กก่อนที่จะออกสู่ท้องตลาด
สถานที่ทำงาน
ทำงานภายในออฟฟิศหรือสำนักงานเป็นส่วนใหญ่ เพราะเวลาทำงาน จำเป็นต้องมี Server ภายในที่สเปคเครื่องค่อนข้างแรง ไว้ Train model หรือไม่ก็ต้องการอินเตอร์เน็ตที่เสถียรเพื่อ Remote สั่ง Train model แทน ที่เหลือขึ้นอยู่กับแต่ล่ะบริษัทว่างานเป็นรูปแบบไหน ถ้าเป็น Software house ที่รับงานบริษัทอื่นมาทำก็อาจออกไปประชุมงานข้างนอกบ่อย แต่ถ้าเป็นบริษัทที่มีผลิตภัณฑ์เป็นของตัวเอง ก็จะทำงานแต่ในบริษัทเสียมากกว่า ส่วนการประชุม สมัยนี้การประชุมผ่านอินเตอร์เน็ตมันเป็นเรื่องที่ทำได้ง่ายและสะดวกสบาย
ผู้ที่ต้องทำงานด้วย
- Director / CTO ผู้บริหารที่ให้โจทย์และแนวทางการทำงาน
- Product Owner / Product Manager หากเป็น software house จะมีลูกค้าที่จะให้โจทย์งาน
- Software Engineer
- Tester / QA
- System หรือ Infrastructure Team
ตำแหน่งและเส้นทางการเติบโตในสายอาชีพ
- แบบตรงสาย
แบ่งตามประสบการณ์และความสามารถของแต่ละบุคคล ส่วนมากจะเริ่มจากระดับ Junior ไปเป็น Senior และ Team Lead ตามลำดับ โดยระดับเงินเดือน จะขึ้นอยู่กับความสามารถและประสบการณ์ในการทำงาน
- แบบไม่ตรงสาย
สายการบริหาร เช่น Project Manager ฯลฯ
สายการตลาดและการวิเคราะห์ Marketing / Business Analyst ฯลฯ
เงินเดือน
ส่วนมากจะอยู่ที่ประมาณ 30,000-70,000 บาท ตามความสามารถ และบริษัทอาจสูงถึง 100,000 บาท ซึ่งเป็นส่วนน้อย ขึ้นอยู่กับรูปแบบธุรกิจ ความต้องการพนักงาน และสกิลที่คาดหวัง หลายบริษัทพร้อมที่จะจ่ายแพง หากความสามารถที่ได้รับนั้นคุ้มค่ากับที่คาดหวัง
การแข่งขันและความต้องการของตลาด
อาชีพนี้ตำแหน่งในไทยยังไม่เยอะมากเท่า Software Engineer เพราะเทรนความต้องการยังมีไม่มาก แต่ในอนาคตจะมีความต้องการมากขึ้นอย่างแน่นอน ตัวอย่างประเทศที่มีความต้องการสูงในปัจจุบันคือ สิงค์โปร์ จีนและอินเดีย
- หากชอบเรื่องอัลกอริทึ่ม หรือข้อมูล จะสนุกและมีความสุขกับงานมาก
- ได้รับความภาคภูมิใจในการที่ได้สร้างสิ่งที่สามารถเติบโตตามการออกแบบและข้อมูลที่ป้อนลงไปผลตอบแทนสูงมากกว่า Software Engineer ในบางบริษัท
- กำลังเป็นที่ต้องการในตลาดแรงงาน และไม่ต้องกลัวว่าจะโดน AI แย่งงานอย่างแน่นอน
- หากเป็นคนไม่ชอบการเปลี่ยนแปลง อาชีพนี้จะไม่ตอบโจทย์ เพราะเทคนิคการทำ AI นั้นเปลี่ยนไปเรื่อย ๆ ถ้าไม่ตามโลกให้ทันอยู่เสมอสกิลที่มีก็จะล้าหลังและตกยุคได้ง่าย
- อาชีพนี้จะผลาญทรัพยากรบริษัทพอสมควร เพราะข้อมูลปริมาณมหาศาลและ Server ที่ต้องใช้งาน จึงต้องคอยสังเกตหรือตรวจเช็คกับบริษัทให้ดี ก่อนที่จะมีปัญหาเกิดขึ้น
- ชื่นชอบลักษณะงานที่ต้องวิเคราะห์ รวบรวมข้อมูล ชอบการแก้โจทย์ปัญหาใหม่ ๆ ที่ได้รับ
- เป็นคนละเอียด รอบคอบ มีความอดทน และใส่ใจรายละเอียดเล็ก ๆ น้อย
- ชอบค้นหาและเรียนรู้สิ่งใหม่ พัฒนาตนเองอยู่เสมอไม่หยุดนิ่งกับที่
- เป็นคนที่เปิดกว้างและรับฟังผู้อื่น เพื่อนำความเห็นที่ได้รับมาพัฒนางานต่อไป
- สามารถทำงานภายใต้ความกดดันจากความคาดหวังได้
- มีปฏิสัมพันธ์ที่ดีกับผู้อื่น
- ทักษะด้านการเขียนโปรแกรม ภาษาที่แนะนำคือ Python เพราะเป็นภาษาที่ใช้ทำ AI ที่นิยมเยอะมาก แต่ภาษาอื่นก็ใช้เขียนได้เช่นกัน เช่น C# หรือ Java
- ความรู้ด้านอัลกอริทึ่มที่เกี่ยวกับการทำ AI ซึ่งมีหลายประเภทมาก ทั้ง Classification, Cross Validation, Regression, Neural Network และอื่นๆ ซึ่งยิ่งรู้เยอะยิ่งดี เพราะอาชีพนี้คือการเลือกอัลกอริทึ่มที่เหมาะสมมาตอบโจทย์ของงาน
- ทักษะด้านคณิตศาสตร์แบบทั่วไปและความรู้เกี่ยวกับสถิติและความน่าจะเป็น
- ทักษะการจัดการ Big Data ซึ่งถือเป็นพื้นฐานสำคัญของอาชีะ
- การจัดการเวลา เวลาเป็นสิ่งสำคัญที่ต้องจัดการให้ได้ โดยเฉพาะเมื่อเรามีขั้นตอนการทำงานที่ซับซ้อนด้วย
- การสื่อสาร ถือเป็นสิ่งสำคัญที่ต้องใช้ โดยเฉพาะการอธิบายถึงรูปแบบงานของเราให้ผู้อื่นที่ไม่มีพื้นฐานความรู้ด้าน Machine Learning ให้เข้าใจได้ง่ายดาย ไม่สับสน
- ทักษะภาษาอังกฤษ จำเป็นในการศึกษาหาความรู้เพิ่มเติมจากบทความต่าง ๆ ที่ส่วนมากมักเป็นภาษาอังกฤษ
การศึกษา
สามารถเลือกสายการเรียนเหมือน App Developer ได้เลย คือ เลือกเรียนสายการเรียนวิทย์-คณิตในระดับมัธยมปลาย สำหรับคณะและสาขานั้นจะมีชื่อเรียกต่างกันไปในแต่ละมหาวิทยาลัย เช่น
- สาขาวิทยาการคอมพิวเตอร์
- สาขาวิศวกรรมคอมพิวเตอร์
- สาขาวิศวกรรมซอฟต์แวร์
- สาขาเทคโนโลยีสารสนเทศ
ทั้งนี้ ผู้ที่เรียนสายอื่นมาก็มีโอกาสที่จะศึกษาค้นคว้าหาความรู้ด้วยตนเอง หรือเข้าคอร์สต่าง ๆ และฝึกฝนจนสามารถประกอบอาชีพนี้ได้เช่นกัน
Hard Skills
- หมั่นหาเวลาว่างมาศึกษาการเขียน AI ซึ่งในยุคสมัยนี้มันง่ายขึ้นมาก โดยทางลัดคือการค้น Google หาโปรเจคใน Github ที่อยู่ในรูปแบบ Real world ตัวอย่างคีย์เวิร์ด เช่น “image recognition real world github” หลายโปรเจ็คที่มีคำว่า Real world ส่วนมากจะโดยสร้างขึ้นเพื่อสรุปความรู้หรือใช้ประกอบการพรีเซนต์ความสามารถในการเขียน Ai ซึ่งมักจะมีความซับซ้อนกว่าโปรเจ็คกลุ่ม Tutorial แต่ข้อดีคือเราจะศึกษาจากมันได้เยอะมาก
- นำโปรเจคพวกนี้มาแกะแล้วทำความเข้าใจ ลองสร้างเป็นของใหม่ของเราดู จะพัฒนาสกิลตรงนี้ได้เยอะ
Soft Skills
- ฝึกทักษะการสื่อสาร การพรีเซนต์เนื้อหาและขั้นตอนให้ผู้อื่นทำความเข้าใจได้ ทักษะการสื่อสารเป็นสิ่งที่สำคัญมากเพราะเราต้องทำงานกับผู้คนหลายฝ่าย
- พยายามศึกษาหาความรู้ใหม่ ๆ และอัพเดทตัวเอง ตามข่าวสารให้ทันกระแสโลก ทันเหตุการณ์อยู่เสมอ อย่าหยุดนิ่งอยู่กับที่หรือยึดติดไม่ยอมรับความเปลี่ยนแปลง
กิจกรรมต่าง ๆ
- หากต้องการศึกษาด้วยตนเอง สามารถดูวิดีโอใน Youtube หรือคอร์สสอนใน Udemy จากนั้นก็ลองทำตามกับค้น Google ซึ่งจะมี Tutorial เยอะตามใน Medium.com ด้วย
- ใครไม่ค่อยเก่งเรื่องคณิตศาสตร์ก็ไม่ต้องกังวล เน้นลองสร้างตามให้ได้ก่อน แล้วค่อยนำโปรแกรมมาแก้ไขเองเพื่อเสริมความเข้าใจก็ได้
- ตามเพจ Facebook ก็แนะนำ Data Rockie เพื่อดูข่าวสารด้านสายงาน Data หรือ คอมพิวเตอร์โปรแกรมเมอร์
- ศึกษาจากหลักสูตรออนไลน์ของมหาวิทยาลัย Stanford https://www.coursera.org/learn/machine-learning
วิชาที่เรียน
หลัก ๆ ควรเน้นวิชาเกี่ยวกับพีชคณิต สถิติความน่าจะเป็น และแคลคูลัส
- พีชคณิต (Linear Algebra) ในการทำ ML จะมีการใช้ Vector และ Matrix ตลอด จึงจำเป็นต้องมีความรู้เรื่องพีชคณิต
- แคลคูลัส คืออัลกอริทึ่มที่ใช้ใน ML ยกตัวอย่างว่าหากต้องการทำ ML หาแนวโน้มราคาขายบ้าน สิ่งที่มีต้องทำคือใช้ Linear regression เป็นอัลกอริทึ่มตัวหนึ่งที่เกี่ยวกับสมการการถดถอย ซึ่งมันก็เป็นสมการเชิงเส้นตัวหนึ่งนี้แหละ
- สถิติความน่าจะเป็น ใช้ตอนทำ Prediction พวกการเช็คว่าผลลัพธ์จาก ML ทำงานเป็นอย่างไร ยกตัวอย่างการใช้ Bayes theorem มาตรวจสอบ หรือแม้กระทั่งค่าเฉลี่ย Median ก็ยังใช้ได้ เช่น ทำ ML วิเคราะห์ความเหมาะสมของราคาบ้าน แล้วเอาค่าเฉลี่ยมาเป็นตัววัดว่าดูใกล้เคียงหรือเปล่า
- วิชาอื่น ๆ จะเหมือนกับโปรแกรมเมอร์ปกติ และจะมีเรื่องพิเศษอย่าง micro-service big data
เคล็ดลับการเรียน
เน้นการอ่าน ศึกษา ดูตัวอย่าง และฝึกฝนให้มากจนกว่าจะทำได้คล่องหรือเชี่ยวชาญ และที่สำคัญคือเราต้องมีความกระตือรือร้น มีใจที่อยากจะพัฒนาตัวเอง เรียนรู้สิ่งใหม่ ๆ อยู่เสมอ เป็นแรงกระตุ้นที่จะขับเคลื่อนตัวเองให้ไปข้างหน้าไม่หยุดนิ่ง
Copyright © 2019 TruePlookpanya. All rights reserved.
สงวนลิขสิทธิ์ตามพระราชบัญญัติลิขสิทธิ์ พ.ศ. 2537 ห้ามมิให้ผู้ใดคัดลอก ทำซ้ำ ดัดแปลง แก้ไข หรือเผยแพร่ส่วนหนึ่งส่วนใดของบทความนี้ก่อนได้รับอนุญาตเป็นลายลักษณ์อักษร