บทความ
ไม่ว่าจะ ข่าวสาร บทสัมภาษณ์ และ Digital Skill บนสื่อ
มีให้คุณได้อ่านบทความดี ๆ มากมายแล้วที่นี่
โดย: Laris
| IoT
รู้จัก Home Assistant ตอนที่ 1
สวัสดีท่านผู้อ่านทุกท่านค่ะ หลังจากบทความที่ผ่านมา เราคุยกันถึงเรื่อง คำจำกัดความของ “Internet of Things” โดยการพูดถึง “IoT Reference Model” เพื่อเป็นการจูน หรือทำความรู้จักโลกของ IoT กันไปแล้วทางผู้เขียนก็ตั้งใจกันไว้ว่าหลังจากนี้จะค่อยๆลงลึกทางด้านเทคนิคมากขึ้น ซึ่งในบทความนี้ผู้เขียนเลือกใช้วิธีการเรียนรู้ IoT จาก OpenSource Software กันไปก่อนค่อยๆปูทางลงไปก่อนจะไปถึงการเขียนโปรแกรมลงใน Embedded Device หรือพวก Hardware ต่างๆนั่นเองผู้เขียนได้เลือก “Home Assistant” มาให้ทำความรู้จักกันก่อนค่ะHome Assistant เป็น Open Source สำหรับทำ Home Automation เป็นหลัก และเขียนขึ้นด้วย Python และสามารถใช้ Track, Control, และใช้ Automate Device ได้ โดยที่ไม่จำเป็นต้อง Store ข้อมูลไว้บน Cloud ไม่ต้องห่วงว่าข้อมูลส่วนตัวเราจะถูกเปิดเผยค่ะ ตัว Home Assistant Architecture แบ่งได้ 3 layers โดยจะมีHome Control ทำหน้าที่ควบคุมและเก็บข้อมูลจาก devicesHome Automation รับข้อมูลมาจาก Home Control และส่ง Commands ไปยัง devices ผ่าน Home Controller ซึ่ง Commands เหล่านี้มาจาก Configuration ที่ User ได้ตั้งค่าไว้Smart Home ทำตาม Commands ที่เกิดจากการเรียนรู้ด้วยตัวเอง (Self — learning)Home Assistant ComponentHome Assistant สามารถขยายขีดความสามารถไปได้อีกด้วย ‘Componet’ ซึ่งในแต่ละ Component จะมีหน้าที่ของแต่ละตัวเฉพาะเจาะจง ตัว Component นั้นถูกเขียนด้วยภาษา Python นั่นหมายความว่า อะไรที่ Python ทำได้ เจ้า Component นี่ก็ทำได้เหมือนกัน นอกจากนี้ Home Assistant เองก็ได้ทำ Built-in Components เพื่อให้นำมาใช้ได้เลยอีกด้วย แต่ถ้าหากเราอยาก Custom ของเราเอง ก็ใช้ Component มาทำได้เลยค่ะตัว Home Assistant Frontend เองก็ได้ถูกออกแบบมาเพื่อสำหรับใช้ในรูปแบบ Mobile โดยเฉพาะ ซึ่งได้ Polymer Framework เข้ามาช่วยในส่วน Frontend จะเห็นว่าหน้าตาของ Home Assistant Frontend มีความคล้ายกับการใช้งาน Mobile Application จริงๆ ในส่วนของ Home Assistant Backend ก็จะใช้ Python 3 ซึ่งถูกสร้างมาเพื่อให้สามารถ Extend ได้ โดยใช้ Components ค่ะตัวอย่าง หน้าตาของ Home Assistant Frontendการติดตั้ง Home Assistantในส่วนของการติดตั้ง Home Assistant นั้นสามารถติดตั้งได้หลายวิธีนะคะ แต่วันนี้ทางผู้เขียนอยากจะขอแนะนำวิธีการติดตั้งด้วย 2 วิธีดังนี้ค่ะติดตั้งด้วย Python 3 + Virtual Environmentติดตั้งด้วย Docker1. วิธีการติดตั้งด้วย Python 3 + Virtual Environmentเริ่มจากการสร้าง Virtual Environment กันก่อนเลยค่ะ ในจุดที่ต้องการด้วยคำสั่ง (อย่าลืม ติดตั้ง Python3 ก่อนนะคะ)$ python3 -m venv homeassistantสร้างเสร็จแล้วก็เปิดใช้งาน Virtual Environment ค่ะ$ cd homeassistant$ source bin/activateจากนั้นก็ติดตั้ง wheel และ homeassistant ค่ะ$ python3 -m pip install wheel$ python3 -m pip install homeassistantเริ่มเปิดใช้งาน Home Assistant เลยค่ะ$ hass --open-ui2. วิธีการติดตั้งด้วย Dockerสามารถทำได้ในหลาย Platform เลยค่ะ ไม่ว่าจะเป็นLinuxRaspberry Pi (Raspbian)macOS 1. LINUX$ docker run -d — name="home-assistant" -v /PATH_TO_YOUR_CONFIG:/config -v /etc/localtime:/etc/localtime:ro — net=host homeassistant/home-assistant2. RASPBERRY PI 3 (RASPBIAN)$ docker run -d — name="home-assistant" -v /PATH_TO_YOUR_CONFIG:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/raspberrypi3-homeassistant3. macOS$ docker run -d — name="home-assistant" -v /PATH_TO_YOUR_CONFIG:/config -e "TZ=Asia/Bangkok" -p 8123:8123 homeassistant/home-assistantสำคัญว่าอย่าลืมแก้ไข /PATH_TO_YOUR_CONFIG ให้เป็นตำแหน่งที่เก็บ Configuration ค่ะตัวอย่าง ถ้าที่อยู่ไฟล์เป็น /home/pi/homeassistant คำสั่งที่ใช้ก็จะเป็น$ docker run -d — name="home-assistant" -v /home/pi/homeassistant:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/raspberrypi3-homeassistantบทความนี้เราได้ทำความรู้จักกับ Home Assistant พร้อมทั้งวิธีการติดตั้ง และการทดลองใช้งาน Home Assistant กันไปแล้ว ในรอบถัดไปเราจะมารู้จักกับ Component ยอดฮิต อย่าง MQTT Binary Sensor ว่าคืออะไร ใช้งานอย่างไร ส่งข้อมูลหากันได้ยังไง แล้วจะค่อยๆลงลึกไปถึงระดับ Protocol ยอดฮิตอย่าง MQTT กันต่อไปค่ะ
โดย: Kan Ouivirach
| Machine Learning
Machine เรียนรู้กันอย่างไร?
Machine เรียนรู้กันอย่างไร?การเรียนรู้ 3 รูปแบบหลัก- Supervised learning- Unsupervised learning- Reinforcement learningการนำเอาไปใช้แก้ปัญหาบทความที่ผ่านมา “เริ่มต้นเรียนรู้ Machine Learning อย่างไรให้สนุก?”[ใส่ link กลับไปยังบทความ] ได้พูดเกริ่นๆ ไว้หน่อยแล้วว่า Machine Learning เนี่ย หัวใจของมันคือส่วนของการ “Learning” ครับ บทความนี้ก็เลยอยากจะมาพูดถึงเรื่องนี้ไว้สักหน่อย ;)Machine เรียนรู้กันอย่างไร?การเรียนรู้ของ Machine เนี่ย จริงๆ แนวทางก็เหมือนกับของคนเรานั่นแหละ เนื่องจากแต่ไหนแต่ไรมาเราก็มีความพยายามจะทำให้ Machine นั้นเหมือนคนเราให้ได้มากที่สุดอยู่แล้วเนอะ ทีนี้เวลาคนเราเรียนรู้อะไรสักอย่างเรามักจะแอบส่องคนอื่นว่าเค้าทำอะไรในสถานการณ์นั้นๆ แล้วถ้าเกิดเราเจอสถานการณ์นั้นบ้าง เราก็ตัดสินใจทำตามเค้าเลยมองหาข้อมูลสนับสนุนต่างๆ ในสถานการณ์หนึ่งๆ แล้วพยายามที่จะหาสิ่งที่ดีที่สุดมาช่วยในการตัดสินใจลองผิดลองถูก ถ้าผิดก็เจ็บตัว ถ้าถูกก็ทำต่อไปทั้ง 3 พฤติกรรมการเรียนรู้ของคนเหล่านี้จะพาเราเข้าสู่เรื่องของการเรียนรู้ของ Machine ที่จะพูดถึงล่ะการเรียนรู้ 3 รูปแบบหลักรูปแบบที่ 1 Supervised Learning หรือ “แอบส่องคนอื่นว่าเค้าทำอะไรในสถานการณ์นั้นๆ แล้วถ้าเกิดเราเจอสถานการณ์นั้นบ้าง เราก็ตัดสินใจทำตามเค้าเลย”สมการ Supervised Learningการเรียนรู้แบบนี้คือการ Supervise ตัว Machine ให้เรียนรู้ตามที่เราบอก จากสมการในรูปด้านบน จะได้ว่าถ้าเรามีฟังก์ชั่นอยู่ฟังก์ชั่นหนึ่ง ตอนที่เราสอนเครื่อง เราจะให้คู่ข้อมูล x กับ y เข้าไปเป็นจำนวนหนึ่ง ถ้าข้อมูลนั้นมีจำนวนมากพอ ตอนที่เราโยน x ตัวใหม่เข้าไป ฟังก์ชั่นนี้ก็จะสามารถไปหา y ที่เหมาะสมให้เราได้ยกตัวอย่างเช่น ถ้าเราให้ข้อมูลว่าสิ่งๆ หนึ่งมีหน้าตาน่ารัก มีขน หน้ากลมๆ หูตั้ง (x) สิ่งๆ นั้นคือ แมว (y) นะ จากนั้น ตอนที่เครื่องที่เราสอนเห็นข้อมูล x ของแมวตัวใหม่เข้ามา เครื่องจะสามารถบอกได้ว่าสิ่งๆ นั้นคือแมวSupervised Learning นี้เป็นการเรียนรู้ที่เราใช้แก้ปัญหาเกือบทุกปัญหาในโลกนี้เลยทีเดียวนะ ไม่ว่าจะเป็นปัญหา Face Detection/Recognition หรือ Self-Driving Car พวกนี้ เราก็จำเป็นต้อง Supervise ให้เครื่องรู้จักคำตอบที่เราป้อนให้มันด้วยแต่ก็มีข้อจำกัดที่เราต้องระลึกไว้ก็คือ Machine นั้นจะรู้จักแค่คำตอบที่เราเคย Supervise มันไปเท่านั้น เช่น ถ้าเราสอนเครื่องด้วยข้อมูลหมากับแมวไปเท่านั้น พอเวลาที่มีข้อมูลของวัวเข้ามา เครื่องจะไม่สามารถบอกได้ว่าสิ่งๆ นั้นคือวัว เครื่องจะตอบได้แค่หมากับแมวรูปแบบที่ 2 Unsupervised Learning หรือ “มองหาข้อมูลสนับสนุนต่างๆ ในสถานการณ์หนึ่งๆ แล้วพยายามที่จะหาสิ่งที่ดีที่สุดมาช่วยในการตัดสินใจ”สมการ Unsupervised Learningดูจากสมการด้านบนจะเห็นว่า y ได้หายไปแล้ว หมายความว่าเราไม่ต้องบอกว่าข้อมูลนั้นๆ (x) มีคำตอบเป็นอะไร ในที่นี้เราจะโยนข้อมูลเข้าไปในฟังก์ชั่นและให้ Machine นั้นพยายามที่จะเอาข้อมูลไปประมวลผลหาความสัมพันธ์ต่างๆ และนำเสนอผลลัพธ์ที่ได้ออกมาให้เราเห็น ตรงจุดนี้จะไม่เหมือนกับแบบ Supervised นะ ที่ว่าแบบ Supervised จะมีการอนุมาน (inference) ออกมาเป็นคำตอบ แต่แบบ Unsupervised จะไม่มีการตัดสินใจใดๆ การตัดสินใจจะเป็นหน้าที่ของคนยกตัวอย่างเช่น ถ้าเราต้องการจะแบ่งกลุ่มของลูกค้าที่ชอบสินค้าเหมือนๆ กัน Machine ก็จะแค่นำเสนอข้อมูลที่แบ่งกลุ่มออกมาแค่นั้นเอง ส่วนเราจะเอาไปทำอะไรต่อก็เป็นหน้าที่ของเราเองรูปแบบที่ 3 Reinforcement Learning หรือ “ลองผิดลองถูก ถ้าผิดก็เจ็บตัว ถ้าถูกก็ทำต่อไป”สมการ Reinforcement Learningอ้างอิงจากสมการด้านบน ตัวแปร y ในที่นี้ไม่ใช่คำตอบแบบใน Supervised Learning แต่มันคือ action ส่วน x คือข้อมูลที่เข้ามา และ z คือ reward นึกภาพง่ายๆ เลยคือ เวลาที่เราฝึกสุนัข :D ถ้าเราอยากให้สุนัขสวัสดีแบบยกขาหน้าขึ้น ถ้ามันยกขาเราก็ให้ขนมมัน ช่วงแรกๆ มันก็จะทำผิดทำถูก แต่หลังๆ ไปสุนัขของเราก็จะทำได้เองเลย ในที่นี้ การยกขาหน้าขึ้นคือ y คำสั่งที่เราสั่งสุนัขคือ x ส่วนขนมก็คือ z นั่นเองการเรียนรู้แบบนี้ส่วนใหญ่เรานำไปใช้กับหุ่นยนต์หรือเกม ให้หุ่นยนต์หรือเกมค้นหาเส้นทางที่ดีที่สุดเองจากการลองผิดลองถูกการนำเอาไปใช้แก้ปัญหาก่อนที่เราจะนำเอา Learning แต่ละรูปแบบไปใช้ เราต้องเข้าใจปัญหาก่อนว่าปัญหาของเราคืออะไร เราถึงจะเลือกใช้รูปแบบการ Learning ได้ถูก และเหมาะสมครับ เช่น ถ้าเราต้องการที่จะจำแนกอีเมลว่าเป็นสแปมหรือไม่ใช่สแปม ปัญหานี้เราควรจะนำเอา Supervised Learning มาแก้ปัญหา ถ้าเราต้องการจะแบ่ง Segment ของลูกค้า หรือต้องการจะแนะนำสินค้าใหม่ๆ จาก User Preference เราก็ควรที่จะใช้ Unsupervised Learning เข้ามา ส่วน Reinforcement Learning ก็อาจจะเป็นปัญหาแนวที่เราต้องการที่จะ optimize อะไรสักอย่างเพื่อให้ได้ action และนำ action นั้นไปเรียนรู้ต่อแบบอัตโนมัติ ถ้าปัญหาของเรามีการรับ feedback เข้ามาเพื่อการเรียนรู้ เราก็สามารถเอา Reinforcement Learning ไปแก้ปัญหาได้Enjoy Learning ครับ :)
โดย: Kan Ouivirach
| Machine Learning
มาทำความรู้จัก Machine Learning Process กัน
ทำไม Process ถึงสำคัญ?หน้าตา Machine Learning Process (มี 5 ส่วนหลักๆ)เข้าใจปัญหาเตรียมข้อมูล และทำความคุ้นเคยกับข้อมูลนั้นสร้าง Machine Learning โมเดลปรับปรุงโมเดล และผลลัพธ์นำเสนอผลงาน และนำโมเดลไปใช้งานจริงสรุปทำไม Process ถึงสำคัญ?Process นั้นเป็นตัวที่จะช่วยทำให้เราสามารถปฏิบัติตาม ทำงานตามขั้นตอนต่างๆ อย่างเป็นระบบ สามารถจัดการสิ่งต่างๆ ได้อย่างมีระเบียบ รวมไปถึงการเรียนรู้งานนั้นๆ อีกด้วย ซึ่งแน่นอนว่าการทำงานด้าน Machine Learning ก็ต้องมี Process เหมือนกัน มาลองดูกันนะว่าหน้าตามันจะเป็นอย่างไรหน้าตา Machine Learning Processก็จะประมาณนี้Machine Learning Processเรามาทำความเข้าใจกันต่อดีกว่าว่าขั้นตอนแต่ละขั้นเราจะทำอะไรกันบ้าง ก่อนอื่นผมขอแบ่งรูปด้านบนออกมาเป็น 5 ส่วนหลักๆ ได้แก่ทำความเข้าใจปัญหาเตรียมข้อมูล และทำความคุ้นเคยกันข้อมูลนั้นสร้าง Machine Learning โมเดลปรับปรุงโมเดล และผลลัพธ์นำเสนอผลงาน และนำโมเดลไปใช้งานจริงส่วนที่ 1 ทำความเข้าใจปัญหาทำความเข้าใจปัญหาก่อนที่เราจะทำอะไรก็ตามเราต้องเข้าใจปัญหาก่อน ปัญหาคืออะไร? เราจะแก้มันอย่างไร? เราจะแก้มันด้วยวิธีไหน? (Understand)ส่วนที่ 2 เตรียมข้อมูล และทำความคุ้นเคยกับข้อมูลนั้นเตรียมข้อมูล และทำความคุ้นเคยกับข้อมูลนั้นเมื่อเราเข้าใจปัญหาแล้ว เรื่องที่ตามมาก็คือเราต้องมีข้อมูลครับ ถ้าไม่มีข้อมูล Process นี้จบครับ >_< ไม่ต้องทำอะไรต่อเลย LOL ดังนั้นเราต้องมีข้อมูลก่อน ถ้าเรามีข้อมูลอยู่แล้วก็เยี่ยมเลย แต่ถ้าไม่มีเราก็ต้องออกไปเก็บข้อมูลมาก่อนครับ หรือดึงข้อมูลจากระบบที่เรามี (Collect) จากนั้นเราก็ค่อยมาทำความรู้จักกับข้อมูลนั้นๆ (Explore Viz) ไม่ว่าจะเอามาพลอตกราฟ หรือเอามาดูการกระจายตัวของค่าบางค่าในข้อมูล รวมไปถึงอาจจะคำนวณหาค่าทางสถิติพื้นฐานต่างๆ เช่น ค่าเฉลี่ย พอเราเริ่มคุ้นแล้ว เราค่อยมาลองปัดฝุ่น ทำความสะอาดข้อมูลของเรา (Clean) เช่นถ้าข้อมูลช่องไหนมีไม่ครบ เราก็อาจจะหาค่าหนึ่งมาเติมเข้าไป หรือว่าข้อมูลไหนไม่จำเป็นในการวิเคราะห์ก็ตัดทิ้งไปเป็นต้น สุดท้ายเราจะมาปรับข้อมูลของเราให้เราสามารถนำเข้าไปสร้างโมเดลได้ (Transform) ทำไมต้องทำขั้นตอนนี้? เพราะว่า Machine Learning โมเดลนั้นจะรับ input ที่เป็นแบบ fix จำนวน column ครับ และส่วนใหญ่เราต้องแปลงข้อมูลจากข้อความให้กลายเป็นตัวเลขก่อนถึงจะเอาไปสอนโมเดลนั้นได้ส่วนที่ 3 สร้าง Machine Learning โมเดลสร้าง Machine Learning โมเดลในส่วนนี้เราจะเริ่มสร้างโมเดลกันครับ (Model) สำหรับผู้เริ่มต้นผมแนะนำให้เอาโมเดลที่มีอยู่มาทดลองใช้เลยครับ ไม่ว่าจะเป็น Naive Bayes หรือ Support Vector Machine หรือโมเดลอื่นๆ ก็ได้ครับ จังหวะนี้อย่ารีบร้อนไปลงในรายละเอียดหรือสมการของโมเดลนั้นๆ นะครับ อาจจะท้อได้ นอกจากที่เราจะสร้างโมเดลได้แล้ว เราจะต้องทดสอบโมเดลได้ด้วยนะ ว่าถูกจริงหรือเปล่า ดีจริงหรือเปล่า (Validate) ซึ่งตรงนี้จะขอไปกล่าวถึงในบทความต่อๆ ไปนะครับ :)ส่วนที่ 4 ปรับปรุงโมเดล และผลลัพธ์ปรับปรุงโมเดล และผลลัพธ์จากประสบการณ์ของตัวเอง และทุกคนที่ได้พูดคุยกันมา ส่วนนี้เป็นส่วนที่ใช้เวลาเยอะสุดครับ พูดได้ว่าประมาณ 90% เลยทีเดียว สังเกตจากรูปครับ ส่วนที่ 4 นี้จะรวมส่วนที่ 2 และส่วนที่ 3 เข้าไปด้วยกัน และเราจะวนลูปทำเรื่อยๆ ปรับปรุงไปเรื่อยๆ ลองโมเดลใหม่ไปเรื่อยๆ จนกว่าผลที่ได้จะพอใจ หรือจนกว่าจะได้โมเดลที่แม่นยำได้ตามเป้าหมายที่ตั้งไว้ครับ ข้อแนะนำของผมที่จะทำให้ทุกคนทำงานในส่วนนี้ได้อย่างมีความสุขคือ “จงหลงรักข้อมูลนั้นซะ” ครับ เพราะคุณจะใช้เวลากับส่วนนี้ :)ในส่วนนี้ถ้าเราคิดว่าเรามีข้อมูลไม่พอ เราก็ควรกลับไปที่ Collect ใหม่ครับ แล้วค่อยกลับเข้าลูปตามเดิมส่วนที่ 5 (ส่วนสุดท้าย) นำเสนอผลงาน และนำโมเดลไปใช้งานจริงนำเสนอผลงาน และนำโมเดลไปใช้งานจริงสุดท้ายแล้วเราต้องนำผลที่ได้ไปนำเสนอครับ (Communicate Viz) อาจจะไปนำเสนอกับหัวหน้า หรือ stakeholder ก็ได้ ส่วนนี้ไม่ได้ทำเพื่อจะอวดอะไรใครนะครับ แต่มันคือขั้นตอนที่สำคัญขั้นตอนหนึ่งคือ “การรับ Feedback” กลับมา เพื่อเอามาต่อยอดกับผลงานเรา รวมไปถึงการนำโมเดลไปใช้งานจริง (Deploy) แน่นอนครับ มันก็คือ “การรับ Feedback” อีกช่องทางหนึ่ง เมื่อเราลองใช้งานจริงแล้ว เราก็จะมีผลลัพธ์ที่สามารถนำกลับมาพัฒนาต่อยอดได้อีก ตามรูปเลยครับ ลูกศรเราย้อนกลับไปที่ Understand :)สรุปเราได้เรียนรู้หน้าตาของ Machine Learning Process ไปแล้ว ซึ่งการมี Process ที่ดี จะทำให้เราทำงานได้เป็นระบบ และต่อยอดจากองค์ความรู้เดิมได้ง่ายขึ้น จริงๆ แล้ว Process ของแต่ละคน แต่ละทีมก็อาจจะแตกต่างกันไปนะ เริ่มต้นลองยึดสักแบบหนึ่ง แล้วค่อยๆ ปรับเปลี่ยนไปตามความเหมาะสมก็ได้ครับ ;)
โดย: Kan Ouivirach
| Machine Learning
What is Machine Learning?
Machine Learning คืออะไร?ทำไมคนส่วนใหญ่ถึงมองว่าการเรียน Machine Learning ยาก?แนวทางเรียนแบบ Top-Down สนุกกว่า และมีประสิทธิภาพสรุปปิดท้ายMachine Learning คืออะไร?Tom Mitchell (ศาสตราจารย์ภาควิชา Machine Learning ที่ Carnegie Mellon University) กล่าวไว้ว่า Machine Learning คือA computer program is said to learn from experience ‘E’, with respect to some class of tasks ‘T’ and performance measure ‘P’ if its performance at tasks in ‘T’ as measured by ‘P’ improves with experience ‘E’.สรุปได้ประมาณว่า Machine Learning จริงๆ แล้วก็คือ computer program ที่ถูกพัฒนาขึ้นเพื่อเอาไปทำงานใดงานหนึ่งได้เมื่อมีข้อมูลป้อนให้ ถ้า program นั้นทำงานได้ดีขึ้น ก็หมายความว่ามันได้ “เรียนรู้” ที่จะทำงานนั้นๆ แล้วนั่นเองลองนึกถึงเวลาที่เราสอนเด็กก็ได้นะ ถ้าเราอยากสอนให้เด็กรู้จักหมากับแมว เราก็จะเอารูปหมากับแมวให้เด็กคนนั้นดูแล้วบอกไปว่านี่หมานะ นี่แมวนะ ไปเรื่อยๆ จนเด็กคนนั้นเวลาออกไปเจอกับหมาจริงๆ ที่ต่างจากในรูป แล้วสามารถบอกได้ว่านี่คือหมา นั่นก็แปลว่าเด็กคนนี้ได้ “เรียนรู้” แล้วนั่นแหละครับความหมายของ Machine Learning แล้วก็สังเกตว่าผมแอบเน้นคำว่า “เรียนรู้” หรือ “Learning” ไว้ ทำไมเหรอ? เพราะว่าคำๆ นี้เป็นหัวใจของเรื่องนี้เลยทีเดียวครับ ไว้จะพูดถึงในบทความถัดๆ ไปนะทำไมคนส่วนใหญ่ถึงมองว่าการเรียน Machine Learning ยาก?ตามที่ได้พูดคุยและสอบถามความเห็นบวกกับคิดเอาเอง LOL การเรียน Machine Learning ยากเพราะเราโดนสตั้นไปหลายวิเวลาที่เราเจอสมการ Math กับทฤษฎีต่างๆ ที่ถาโถมเข้ามาไม่ได้เป็นวิชาปกติในหลักสูตรการเรียนการสอนอาศัยความรู้หลายแขนงมากจนไม่รู้ว่าจะเริ่มตรงไหนดีไม่มีเวลาแค่ 4 ข้อสุดฮิตที่ว่ามาเราก็ไม่อยากจะเรียนแล้ว อ่านสมการไม่ออก ต้องไปหัดอ่านสมการใหม่ เราคงต้องกลับไปเรียนเลขใหม่ด้วย ต้องเรียนทฤษฎีเรื่องนู้นเรื่องนี้ก่อนถึงจะเข้าใจใช่ไหม คำถามพวกนี้น่าจะวนเวียนอยู่ในหัวของหลายๆ คน ซึ่งผมมองว่าไม่ผิดอะไรครับ มันเป็นเพราะว่าระบบการศึกษาฝึกให้เราเรียนจากพื้นฐานมาตลอดตั้งแต่เด็กจนโต ซึ่งการเรียนแบบนี้เรียกว่าแบบ Bottom-Up ครับการเรียนรู้แบบนี้มีข้อดีคือเรารู้พื้นฐานต่างๆ เราเรียน เลข ฟิสิกส์ เคมี ชีวะ วงจรดิจิตอล ฯลฯ เราจะมีพื้นฐานแน่น! แต่.. ข้อเสียคือเราไม่รู้ว่าเราเรียนไปทำไม เราจะเอาสิ่งที่เรียนไปปะติดปะต่อกับการเอาไปใช้ รวมไปถึงผลลัพธ์ที่เราได้จากการเรียนได้ยากมากถึงยากที่สุด“ไม่สนุกเลย” ใช่ครับ ไม่สนุกเลย คำๆ นี้เป็นกำแพงขนาดมหึมา ปิดกั้นเราจากทุกสิ่งในโลก สกัดกั้นเราไม่ให้ไปถึงจุดหมายที่ตั้งไว้ และไม่ว่าเราจะฝืนต่อไปท่าไหน กำแพงนั้นก็จะยิ่งแกร่งครับ เพียงแค่คำสั้นๆ คำนี้ “ไม่สนุก”แนวทางเรียนแบบ Top-Down สนุกกว่าและมีประสิทธิภาพแนวทางแบบ Top-Down นี้จะทำให้ เราสามารถปะติดปะต่อกับการนำไปใช้งานจริง และเห็นผลลัพธ์ได้แทบจะทันที ซึ่งจริงๆ แล้วในชีวิตประจำวันคนเราก็ใช้การเรียนรู้แบบนี้อยู่นะ ยกตัวอย่างเช่น การขับรถ เป็นต้น คือเวลาเราเริ่มเรียนขับรถ เราไม่ได้ไปเรียนว่าเครื่องยนต์ทำงานอย่างไรก่อนใช่เปล่า เราเรียนแค่ว่าถ้าเราเหยียบคันเร่ง รถมันก็เคลื่อนไปข้างหน้าแล้ว~ ลองย้อนกลับไปตอนที่เราหัดใหม่ๆ แน่นอนว่าเมื่อเราเหยียบคันเร่ง แล้วรถมันเคลื่อนไปข้างหน้า เรารู้สึกอย่างไร? “สนุก”ดังนั้นแทนที่เราจะเรียนรู้ Machine Learning ในแบบ Top-Down เราจะเรียนรู้ Applied Machine Learning แทน คือเอาไปใช้งานเลย ใช้กับปัญหาง่ายๆ ก่อน แล้วเราค่อยต่อยอดไปจากตรงนั้นแทน ขั้นตอนคร่าวๆ ที่อยากให้ไปลองดูกันก็ตามนี้เรียนรู้กระบวนการของ Applied Machine Learning และเอาไปลองใช้กับปัญหาง่ายๆฝึก ฝึก ฝึก และฝึก และฝึกกกกก กับปัญหาใหม่ๆ กับข้อมูลใหม่ๆลงรายละเอียดเพิ่ม เรียนรู้ทฤษฎีใหม่ๆ Algorithm ใหม่ๆสำหรับขั้นตอนที่ 1 เราสามารถหา tool มาลองเล่นเองได้ง่ายๆ เช่น Weka หรือ RapidMiner ถ้าเราไม่ถนัดเขียนโค้ด หรือถ้าอยากเขียนโค้ดเลยก็ลอง scikit-learn ครับ เหมาะสำหรับการเรียนรู้มาก ทั้งมือใหม่และทั้งคนที่มีประสบการณ์แล้วอ้อ.. อย่างหนึ่งที่ช่วยให้เราเรียนได้มีประสิทธิภาพมากขึ้นก็คือเขียนสิ่งที่เราได้เรียนไปออกมาครับ การเขียนเป็นการเรียบเรียงความคิดของเราได้ดีมากกกกกก แนะนำ!สรุปปิดท้ายสำหรับใครก็ตามที่อยากเรียนรู้เรื่อง Machine Learning อย่าเพิ่งไปเริ่มอ่านสมการหรือทฤษฎี อย่าเพิ่งไปเริ่มเขียนโค้ด Algorithm จากศูนย์ ขอให้ลองแบบ Top-Down ก่อน เป็นแนวทางที่ “สนุก” กว่า และผมมองว่าเป็นแนวทางที่เราใช้ในชีวิตประจำวันอยู่แล้ว เวลาทำแล้วเห็นผลลัพธ์ พอเห็นผลลัพธ์เราก็เห็นความคืบหน้า พอเห็นความคืบหน้าสุดท้ายเราก็จะสนุกไปกับมัน
โดย: สุวิชา บัวคอม
| Security
Introduction to cryptography
คุณรู้ตัวหรือเปล่าว่าในชีวิตประจำวันคุณได้ใช้การเข้ารหัสโดยที่คุณไม่รู้ตัว หรืออาจจะรู้ตัวในบางเรื่องที่เราเข้าใจการทำงานของสิ่งนั้นแล้ว สาเหตุหลักที่ทำให้คุณไม่รู้ตัวว่าคุณได้ใช้การเข้ารหัสก็เพราะว่า ปัจจุบันมีสิ่งอำนวยความสะดวกมากมายโดยส่วนมากจะมาในรูปแบบของโปรแกรมประยุกต์ (Application) เช่น ตอนที่สมัครใช้งานระบบต่างๆบน application หรือ เว็บไซต์ (website) จะมีช่องให้กรอกรหัสผ่าน (password) เราก็ใส่รหัสผ่านของเราลงไปโดยไม่รู้เลยว่าปลายทางที่รับรหัสผ่านของเราไปเก็บจะมีการเข้ารหัสหรือไม่ ตอนที่เราส่งข้อความหาเพื่อนจริงๆแล้วมีหลายขั้นตอนมาก เริ่มจากที่เราสั่งงาน application ของเราให้ส่งข้อความไปหาเพื่อน ข้อความจะถูกส่งผ่านระบบ Internet ที่เราเชื่อมต่ออยู่ และเพื่อนของเราก็รับข้อความที่เราส่งโดยไม่รู้เลยว่าระหว่างทางที่ส่งมามีคนสามารถแอบอ่านข้อมูลของเราหรือไม่และข้อความของถูกเข้ารหัสไว้อย่างปลอดภัยหรือเปล่า ในบางครั้งเราก็อยากเก็บข้อมูลที่เป็นความลับไว้ในคอมพิวเตอร์ของเราไม่ให้คนอื่นมาเข้าถึงข้อมูลของเราได้ ถึงแม้ว่าขโมยเครื่องของเราไปแล้วแกะเอาฮาร์ดดิส (harddisk) ไปเปิดดูก็ตามถ้าเรารู้และเข้าใจการเข้ารหัสอย่างถูกวิธี เราก็เก็บข้อมูลลับหรือภาพลับไว้ในเครื่องเราได้อย่างสบายใจ ไม่ต้องกังวลอะไรตัวอย่างที่ยกมาด้านบนนี้กล่าวถึงการนำศาสตร์การเข้ารหัสไปช่วยในการทำให้ข้อมูล เป็นความลับ (confidentiality) นอกจากจะนำศาสตร์นี้ไปใช้ทำให้ข้อมูลเป็นความลับแล้วยังสามารถนำไปใช้ในเรื่องของความครบถ้วนสมบูรณ์ (integrity) ของข้อมูลเพื่อให้แน่ใจว่าข้อมูลไม่ถูกแก้ไขระหว่างทางที่ส่งมาหาเรา และการรับรองความถูกต้อง (authenticity) เพื่อยืนยันว่าข้อมูลที่เราได้รับมาเป็นของจริงที่ถูกส่งมาจากต้นทางตัวจริง ขอเกริ่นคร่าวๆไว้เท่านี้ ต่อไปจะเริ่มลงเนื้อหาเชิงวิชาการ
โดย: Pii Khunanupabkhun
| Blockchain
20 โปรเจคบล็อคเชน ที่มีคนช่วยกันดันมากที่สุด
ปกติเวลาเราจะเช็คดูว่าโปรเจคไหนที่ดูน่าเชื่อถือมากที่สุดในปัจจุบันปี 2562 หนึ่งในวิธีที่ง่ายและมีประสิทธิภาพมากคือการไปดูประวัติการทำงานที่ใน github ของโปรเจคนั้นๆ โปรเจคไหนมีคนออกความเห็น มีประวัติการพัฒนาและแก้ไขโค้ดอยู่เนืองๆ ไม่นานจากปัจจุบัน โปรเจคพวกนั้นคือโปรเจคที่ยังมีชีวิตอยู่ มีคนใช้งานหรือมีคนฝากความหวังไว้กับมันอยู่ ถ้าโปรเจคไหนเหลือคนทำแค่ไม่กี่คน แปลว่าโปรเจคนั้นถูกพัฒนาจนถึงขีดสุดไปเรียบร้อยแล้ว หรือไม่ก็ไม่มีใครสนใจแล้วเว็บ state of the dapps ช่วยเรียงลำดับโปรเจคบล็อคเชนที่มีศักยภาพมากที่สุดไว้ โดยดูจากปัจจัยต่างๆ ทั้งจาก github จำนวนคนใช้ และมูลค่าของโปรเจคในปัจจุบัน โดยโปรเจคเหล่านี้ถูกพัฒนาอยู่บนเชนต่างๆเช่น Ethereum, EOS, Steem and xDai ซึ่งทำให้เราพอมองเห็นภาพรวมของโลกบล็อคเชนในขณะนี้ได้นั่นเองในบรรดา 20 โปรเจคต่อไปนี้ มีโปรเจคที่สร้างบน Ethereum อยู่ถึง 16 โปรเจค ตัวเลขนี้ถึงแม้ว่าจะเป็นเพียงส่วนหนึ่งของทั้งหมดในโลกบล็อคเชน แต่ก็ยากจะปฏิเสธได้ว่า Ethereum จะเป็นเชนที่มีบทบาทสำคัญต่อไปในอนาคตอย่างแน่นอน20 อันดับโปรเจคบล็อคเชน เรียงตามจำนวนประวัติการพัฒนาล่าสุด 30 วัน จากเว็บ state of the appStatus แพลตฟอร์มระบบให้คนมาพัฒนาต่อยอดเป็น แอพแชท บราวเซอร์ เว็บไซท์ ต่างๆ ทั้งในมือถือและในจอคอม มี Ethereum เป็นแกนCosmos ตั้งเป้าเป็นระบบแกนของเว็บไซท์ยุคใหม่ในอนาคตทั้งหมด โดยเป็นบล็อคเชนที่ใช้อัลกอริทึม Tendermint ที่ผ่านการต่อบล็อค(ขุดเหมือง)ด้วย Proove of Stake High Fidelity สังคมโลกเสมือน ที่ๆเราสามารถนัดเจอใครก็ได้ผ่านหน้าจอคอม โปรเจคเป็น Vertual Reality สร้างบน EOSARK เป็นบล็อคเชนที่มีเป้าหมายในการเป็นผู้นำในวงการ ตัวเชนเองใช้ DPos(Deligated Proove of Stake) เป็นระบบในการต่อบล็อคGnosis ถูกสร้างมาเพื่อให้ผู้ใช้ ใช้ทำนายพยากรณ์ข้อมูลต่างๆ ซึ่งมีมูลค่ามหาศาลสำหรับผู้ที่มีความเชี่ยวชาญในแต่ละสาขาชีพ โปรเจคนี้ถูกพัฒนาบน EthereumStorj ระบบเก็บข้อมูลคลาวด์ เปิดให้ผู้ที่สนใจสามารถสร้างรายได้โดยใช้พื้นที่ไม่ได้ใช้ในคอมพิวเตอร์ตัวเองเป็นที่เก็บข้อมูลให้คนอื่นOrigin Protocol ตลาด e-commerce ที่สร้างบน EthereumAragon แอพการจัดการและการบริหารสำหรับภาครัฐและเอกชน สร้างบน EthereumeSteem แพลตฟอร์มลงแสดงผลงานและสื่อต่างๆ เช่น รูปภาพ ความเห็นบทความ หรือคลิปวีดีโอ สามารถสร้างรายได้ให้กับผู้มีผลงานโดดเด่น Augur แพลตฟอร์มแห่งการทำนายอนาคตที่สามารถวางเงินเดิมพันในเรื่องที่ทายได้ สร้างบน EthereumSimple Token การจัดการมูลค่าของธุรกิจ หรือบริษัทในรูปแบบ digital token เน้นที่ความเสถียรในการใช้งานจริงผ่าน EthereumDecentraland โลกเสมือนสร้างบน Ethereum อสังหาริมทรัพย์ในโลกดิจิตอลSingularityNET ชุมชน AI โลก บันทึกและวิเคราะห์ข้อมูลผ่าน Ethereum เพื่อ AI ที่มีประสิทธิภาพมากที่สุดMetaMask กระเป๋าเงินดิจิตอลสำหรับเหรียญคริปโตที่สร้างบน Ethereum0x ตลาดซื้อขายเหรียญคริปโต สร้างบน Ethereum (ตลาดทั่วไปใช้ database ของตัวเอง)Aion Network ระบบแพลตฟอร์มให้คนมาพัฒนาแอพต่างๆ ลงบน EthereumOmiseGO ระบบการเงินแห่งโลกอนาคต ทำงานบน Ethereum วิจัยและพัฒนาเทคโนโลยี Ethereum เพื่อให้มีประสิทธิภาพเพียงพอต่อการใช้งานจริงในทุกอุตสาหกรรมRaiden Network ระบบการเงิน ที่ทำงานนอกเชน และค่อยนำมาสรุปใส่ Ethereum อีกที ทำให้การโอนเงินแต่ละครั้งรวดเร็วและลดค่าธรรมเนียมได้มหาศาลSelf key ระบบระบุตัวตนและจัดการข้อมูลส่วนตัวบน EthereumBasic Attention Token ระบบกระจายรายได้ค่าโฆษณาต่างๆคืนแก่ผู้บริโภคผู้รับเสพโฆษณานั้น สร้างบน Ethereum
โดย: Laris
| IoT
เรียนรู้โลกของ IoT และรู้จักกับ IoT Reference Model
สวัสดีผู้อ่านทุกท่านค่ะ วันนี้ผู้เขียนจะมาพูดถึงการพัฒนา หรือเขียนโปรแกรมในระบบ IoT กันนะคะ โดยเราจะเริ่มกันที่ทฤษฎี หรือ Reference กันสักนิดนึงก่อน แล้วจะค่อยๆลงไปทางการเขียนโปรแกรม ทั้งเรื่อง MQTT Protocol, Arduino Framework, HomeAssistant และอื่นๆ กันอีกต่อไปค่ะ สำหรับวันนี้เรามาเริ่มกันที่ IoT Reference Model กันก่อนนะคะในระบบ IoT หรือ Internet of Things นั้น โดยรวมแล้วเราจะต้องมีองค์ประกอบอย่างน้อย 3 ส่วนนี้เสมอThingsCommunication & DataApplicationแต่ว่าในปัจจุบัน เรายังไม่มี การกำหนด Standard Model ให้กับ IoT พูดง่ายๆก็คือ ยังไม่มีใครเข้ามากำหนดมาตรฐานต่างๆให้กับ IoT เหมือนเช่นใน Network Communications ที่มีทั้ง OSI Model หรือ TCP/IP Protocol Suite ใช้สำหรับอ้างอิง จึงทำให้ IoT มีคำนิยามต่างกันไปตามบริบทที่ต่างกัน ซึ่งในบทความนี้ผู้เขียนจะอ้างถึง Internet of Things ในฉบับของ Internet of Things World Forum​ (IoTWF) กันนะคะ และเราจะใช้เป็น Reference Model เพื่อให้มีความเข้าใจตรงกัน เวลาเราพูดถึง IoT และ IoT EcosystemIoT World Forum ได้แบ่ง IoT Ecosystem เป็น 7 เลเวล ซึ่งในแต่ละเลเวลจะมีคำนิยาม และ หน้าที่ของตัวเอง และ บทบาทที่เกี่ยวข้องกับเลเวลถัดไป ดังนี้1. Physical devices & controllersPhysical devices และ controllers ที่ใช้ควบคุม device เหล่านี้คือสิ่งที่ถูกเรียกว่า ‘Things’ ใน IoTเนื่องจากไม่มีกฎตายตัวว่า Devices พวกนี้จะต้องมีไซส์ใหญ่เล็กแค่ไหน หรือว่า ผลิตจากแหล่งไหน IoT References Model จึงได้กำหนดความสามารถเบื้องต้นของอุปกรณ์ที่จะสามารถเรียกว่าเป็น Device ใน IoT ว่า Device ต้องมีควมสามารถในการเปลี่ยนจาก analog เป็น digital ได้ สามารถผลิต data ได้ และ สามารถเรียกข้อมูล และ สามารถถูกควบคุมผ่าน Internet ได้2. Connectivityสิ่งสำคัญในเลเวลนี้ก็คือ การรับส่งข้อมูลได้ถูกต้องภายในระยะเวลาที่กำหนด การรับส่งข้อมูลนี้รวมไปถึง การรับส่งระหว่างอุปกรณ์ในเลเวล 1 และ Network หรือ ระหว่าง Network ด้วยกัน หรือ ระหว่าง Network ในเลเวลนี้ และ เลเวล 3 ที่อยู่ถัดไปนอกจากนั้น ในเลเวลนี้ยังมีการนำ Protocols หลายชนิดมาใช้ ซึ่งจำเป็นต้องมีการแปลความหมายของ Protocol แต่ละชนิด เพื่อให้สามารถทำงานร่วมกันได้ เพราะ Protocol ต่างชนิดกัน จะมีการสื่อสารและแปลความหมายแตกต่างกันไป รวมไปถึงเรื่อง Security ในระดับ Network อีกด้วย และในเลเวลนี้ Network เองก็จะเรียนรู้เกี่ยวกับ Network Anaylytics ด้วยตัวเอง (Self Learning)3. Edge (Fog) Computingในเลเวลนี้ข้อมูลจะถูกคัดกรอง รวบรวม และ ย่อยให้เป็นข้อมูลที่ถูกต้องและเหมาะสมกับการจัดเก็บ และ ถูกนำไปใช้ในเลเวลถัดไป (Data Accumulation)4. Data Accumulationในเลเวลนี้ข้อมูลจะถูกทำให้อยู่ในสภาวะที่เสถียรที่สุด ไม่มีการเปลี่ยนแปลง (at rest) และจะถูกจัดเก็บไว้ใน Memory หรือ Disk ซึ่งเป็นข้อมูลที่สามารถนำไปใช้กับ Application ที่ไม่ใช่แบบ Real Time (non-realtime basis) นั่นหมายความว่า Application สามารถเข้าถึงข้อมูลเหล่านี้ได้ตลอดเวลาที่ต้องการจะเห็นได้ว่าหน้าที่หลักของเลเวลนี้คือการเปลี่ยนข้อมูลให้อยู่ในรูปแบบที่สามารถเรียกดูได้ (Query-Based) ซึ่งมีความสำคัญต่อการเชื่อมต่อระหว่าง Real-Time Network และ Non-Real-Time Applications5. Data Abstractionเนื่องจากข้อมูลที่ได้มาจากอุปกรณ์หลากหลายชนิด หลากหลายที่ และ ด้วยความหลากหลายนี้ทำให้ข้อมูลเหล่านี้ไม่สามารถถูกจัดเก็บไว้ที่แหล่งจัดเก็บข้อมูลที่เดียวกัน ได้ทั้งหมด ซึ่งมีหลายสาเหตุที่เป็นไปได้ เช่น ข้อมูลที่เยอะเกินไปสำหรับจัดเก็บไว้ที่เดียว ดังนั้นหน้าที่หลักของเลเวลนี้คือการจัดการข้อมูลแล้วแหล่งจัดเก็บที่เหมาะสมกับข้อมูลเพื่อให้ง่ายสำหรับการพัฒนาและเพิ่มประสิทธิภาพให้กับ Application ที่ใช้งานข้อมูลเหล่านี้6. Applicationสำหรับ เลเวลนี้ IoT Reference Model ไม่ได้กำหนดตายตัว ซึ่ง Application เหล่านี้สามารถเป็นได้ตามแต่ลักษณะของข้อมูลจากอุปกรณ์นั้นๆ หรือ แล้วแต่ความต้องการทางธุรกิจ ตัวอย่างเช่น Applicaiton บางกลุ่มก็จะเน้นเฉพาะไปที่ข้อมูลที่ได้จากการ Monitoring หรือ Controlling บางกลุ่มมีการรวบรวมข้อมูลที่มาจากตัวอุปกรณ์เอง หรือจากอุปกรณ์อื่นก็ได้ทั้งสิ้น7. Collaboration & Processesในเลเวลนี้ หลักๆจะเป็นความเกี่ยวข้องของผู้ใช้และ IoT System ที่มีผลในเชิงธุรกิจ ให้มีประสิทธิภาพที่สุดจะเห็นได้ว่าแต่ละเลเวล ตั้งแต่เลเวลล่างสุด (เลเวล 1) จนถึงเลเวลสูงสุด(เลเวล 7 ) มีความสัมพันธ์ที่เห็นได้ชัดเจนเลยคือ อุปกรณ์ (Devices) เป็นตัวรับและส่งข้อมูล ซึ่งเชื่อมต่อกับ Network และ Network จะส่งต่อข้อมูล โดยผ่าน Edge Computing ก่อนที่จะจัดเก็บเข้าสู่ Databases เพื่อให้ Applications สามารถดึงข้อมูลมาประมวลผลก่อนที่จะนำเสนอสู่ ผู้ใช้ เพื่อนำไปใช้ประโยชน์ต่อไปหลังจากทำความเข้าใจกับ IoT Ecosystem กันพอคร่าวๆแล้ว ในบทความถัดไปเราจะมาเริ่มต้นความสนุกกับ IoT ในแบบฉบับโปรแกรมเมอร์กันแล้วนะคะ (ไวเนอะ) หลังจากนี้ก็เราจะค่อยๆเรียนรู้จาก Opensource Tools ในโลกของ IoT และการเขียนโปรแกรมไปพร้อมๆกับลงมือทำกันค่ะ

พบบทสัมภาษณ์ได้ที่นี่เร็ว ๆ นี้

พบDigital Skill บนสื่อ ได้ที่นี่เร็ว ๆ นี้

หมวดหมู่

พบหมวดหมู่ ได้ที่นี่เร็ว ๆ นี้

พบหมวดหมู่ ได้ที่นี่เร็ว ๆ นี้

Tags

พบคำสำคัญ ได้ที่นี่เร็ว ๆ นี้

พบคำสำคัญ ได้ที่นี่เร็ว ๆ นี้

พบคำสำคัญ ได้ที่นี่เร็ว ๆ นี้