Smashing Podcast ตอนที่ 33 กับ Charlie Gerard: Machine Learning คืออะไร?
เผยแพร่แล้ว: 2022-03-10ในตอนนี้ เรากำลังพูดถึงแมชชีนเลิร์นนิง งานประเภทใดที่เราสามารถนำไปใช้ในบริบทการพัฒนาเว็บได้ ฉันได้พูดคุยกับผู้เชี่ยวชาญ Charlie Gerard เพื่อหาคำตอบ
แสดงหมายเหตุ
- การเรียนรู้ของเครื่องในทางปฏิบัติใน JavaScript: TensorFlow.js สำหรับนักพัฒนาเว็บ
- ชาร์ลีบนทวิตเตอร์
- ไซต์ส่วนตัวของ Charlie
อัพเดทประจำสัปดาห์
- บทนำเชิงปฏิบัติเกี่ยวกับการฉีดพึ่งพา
เขียนโดย Jamie Corkhill - สู่เว็บที่ไม่มีโฆษณา: สร้างความหลากหลายให้กับเศรษฐกิจออนไลน์
เขียนโดย Frederick O'Brien - เว็บควรเปิดเผยความสามารถของฮาร์ดแวร์หรือไม่?
เขียนโดย นอม โรเซนธาล - วิธีสร้างรายได้จากการขายแอป Shopify ในปี 2021
เขียนโดย Suzanne Scacca - เริ่มต้นใช้งานแพ็คเกจ GetX ในแอพพลิเคชั่น Flutter
เขียนโดย เคลวิน โอเมเรโชน
การถอดเสียง
Drew McLellan: เธอเป็นนักพัฒนาส่วนหน้าอาวุโสที่ Netlify ผู้เชี่ยวชาญ Google Developer ในด้านเทคโนโลยีเว็บและวิทยากรเทคโนโลยี Mozilla ในเวลาว่าง เธอสำรวจด้านปฏิสัมพันธ์ทางคอมพิวเตอร์ของมนุษย์ และสร้างต้นแบบเชิงโต้ตอบโดยใช้ฮาร์ดแวร์ แมชชีนเลิร์นนิง และการเข้ารหัสเชิงสร้างสรรค์ เธอพูดในที่ประชุมเป็นประจำและเขียนบล็อกโพสต์เพื่อแบ่งปันสิ่งที่เรียนรู้ และล่าสุด เป็นผู้แต่งหนังสือ Practice Machine Learning in JavaScript for Apress
Drew: เรารู้ว่าเธอเป็นผู้เชี่ยวชาญด้าน front-end แต่เธอเคยหนีออกจากคุกโดยใช้แฟ้มโลหะที่เธอถักมาจากความฝันไหม เพื่อนที่ยอดเยี่ยมของฉัน ยินดีต้อนรับชาร์ลี เจอราร์ด สวัสดีชาร์ลี คุณเป็นอย่างไรบ้าง?
Charlie Gerard: ฉันยอดเยี่ยมมาก
Drew: วันนี้ฉันต้องการคุยกับคุณเกี่ยวกับแมชชีนเลิร์นนิง ซึ่งอาจดูเหมือนหัวข้อแปลก ๆ เล็กน้อยสำหรับพอดคาสต์ที่เน้นไปที่ส่วนท้ายของเบราว์เซอร์ในการพัฒนาเว็บ ฉันมักจะคิดว่าแมชชีนเลิร์นนิงเป็นสิ่งที่เกิดขึ้นในศูนย์ข้อมูลขนาดใหญ่หรือห้องปฏิบัติการที่มีผู้สวมเสื้อคลุมสีขาว วันนี้เป็นคำศัพท์ที่คุ้นเคย จริง ๆ แล้วเราหมายถึงอะไรเมื่อเราพูดว่าการเรียนรู้ของเครื่อง?
ชาร์ลี: โดยทั่วไปแล้ว คำจำกัดความมาตรฐานจะเป็นการให้คอมพิวเตอร์สร้างการคาดคะเนโดยไม่ได้รับคำสั่งว่าต้องทำอะไร หวังว่านี่จะสมเหตุสมผลเมื่อเราพูดถึงมันต่อไป แต่นั่นเป็นคำจำกัดความการสนทนาทั่วไป คุณไม่ได้บอกอัลกอริธึมหรือแบบจำลองให้ค้นหาบางสิ่ง พวกเขาเรียนรู้ผ่านข้อมูลที่คุณให้ และจากนั้นก็สามารถสร้างการคาดการณ์ได้
Drew: ดังนั้นแทนที่จะต้องเขียนโค้ดเฉพาะสำหรับบางสถานการณ์ คุณสร้างกรณีทั่วไปที่ซอฟต์แวร์สามารถเรียนรู้วิธีทำสิ่งนั้นได้เองหรือ
ชาร์ลี: ใช่เลย
Drew: ฟังดูน่าขนลุกนิดหน่อย เป็นชนิดของการหมกมุ่นอยู่กับสิ่งที่ด้านปัญญาประดิษฐ์นั้น คุณจำเป็นต้องเป็นนักคณิตศาสตร์ตัวยงหรือนักวิทยาศาสตร์ด้านข้อมูลเพื่อทำเช่นนี้หรือไม่? หรือมีสิ่งอื่นๆ เช่น อัลกอริธึมที่เป็นที่ยอมรับ และสิ่งต่างๆ ที่คุณสามารถเรียกใช้เพื่อเริ่มต้นได้
ชาร์ลี: ใช่. โชคดีที่คุณไม่จำเป็นต้องเป็นนักคณิตศาสตร์ตัวยงหรือนักวิทยาศาสตร์ด้านข้อมูล ไม่อย่างนั้นฉันจะไม่พูดเรื่องนี้เด็ดขาด แต่มีอัลกอริธึมที่คิดออกแล้วและมีเครื่องมืออยู่แล้วที่ช่วยให้คุณใช้อัลกอริธึมเหล่านี้ได้โดยไม่ต้องเขียนทุกอย่างเองตั้งแต่ต้น ดังนั้น หากเราใช้ระบบนิเวศส่วนหน้าเป็นการเปรียบเทียบ คุณสามารถใช้ API ของเว็บ เช่น ตัวนำทางเพื่อรับสื่อผู้ใช้เมื่อคุณต้องการเข้าถึงเว็บแคมหรือไมโครโฟน
ชาร์ลี: และคุณไม่จำเป็นต้องรู้ว่า API นั้นถูกนำไปใช้จริงอย่างไรภายใต้ประทุน สิ่งสำคัญคือคุณต้องรู้ว่า API นี้มีประโยชน์สำหรับอะไรและจะใช้งานอย่างไร หากคุณต้องการ หลังจากนั้น คุณสามารถดูซอร์สโค้ดของเบราว์เซอร์โปรดของคุณเพื่อดูว่ามันทำงานอย่างไร แต่ก็ไม่มีประโยชน์เลยตั้งแต่แรก และมีประโยชน์หากคุณต้องการเขียนอัลกอริทึมของคุณเองในภายหลัง แต่พูดตามตรง ไม่น่าเป็นไปได้สูงที่คุณจะต้องทำสิ่งนี้
ดริว : โอเค ดังนั้นจึงคล้ายกับวิธีเขียน CSS เพื่อวางตำแหน่งองค์ประกอบบนหน้า คุณไม่สนใจว่าเบราว์เซอร์จะทำอย่างนั้นจริง ๆ ได้อย่างไร คุณเพียงแค่เขียน CSS และเบราว์เซอร์จะดูแลมัน
ชาร์ลี: ใช่. เมื่อคุณเริ่มต้น ส่วนใหญ่จะเป็นแบบนั้น
ดริว : ก็ดี นั่นเป็นระดับวิทยาศาสตร์ข้อมูลของฉันมากกว่า
ชาร์ลี: ฉันด้วย
Drew: แล้วปัญหาประเภทใดที่คุณสามารถนำการเรียนรู้ของเครื่องมาใช้ได้? มันดีสำหรับเรื่องประเภทไหน?
ชาร์ลี: มันขึ้นอยู่กับว่าคุณต้องการทำอะไรตั้งแต่แรก เพราะเมื่อคุณต้องการสร้างบางสิ่ง เราขอแนะนำให้คุณนึกถึงประเภทของปัญหาที่คุณต้องการเรียนรู้ก่อน ซึ่งจะช่วยคุณเลือกอัลกอริทึมที่คุณ สามารถใช้เพื่อแก้ไขหรือค้นหาวิธีแก้ไขปัญหาของคุณได้ โดยทั่วไปแล้ว ฉันจะเริ่มต้นด้วยการคิดถึงประเภทของปัญหาที่ฉันพยายามจะแก้ไข และมีสามปัญหาหลัก ฉันคิดว่าน่าจะมีมากกว่านี้ แต่โดยทั่วไปแล้ว สำหรับสิ่งที่ฉันได้รับการฝึกฝนให้ทำและสิ่งที่ฉันได้อ่าน มีสามประเด็นหลักที่กล่าวถึง
ชาร์ลี: ถ้าคุณต้องการให้ฉันทำสิ่งนี้ มีการเรียนรู้แบบมีผู้ดูแล การเรียนรู้แบบไม่มีผู้ดูแล และการเรียนรู้แบบเสริมกำลัง คุณมีผู้ควบคุมดูแลมากมายเช่นกัน แต่พูดตามตรง ฉันไม่ค่อยรู้เรื่องนี้มากนักเพราะฉันสามารถสร้างโครงการของฉันด้วยสามโครงการแรกได้
ดรูว์: ถูกควบคุมดูแล ไม่ดูแล และเสริมกำลังใช่ไหม?
ชาร์ลี: ใช่ การเรียนรู้การเสริมกำลัง
ดริว : โอเค ดังนั้นการเรียนรู้ภายใต้การดูแลคืออะไร? คุณช่วยยกตัวอย่างให้เราฟังได้ไหมว่ามันหมายความว่าอะไร?
ชาร์ลี: การเรียนรู้ภายใต้การดูแล เป็นช่วงที่ชุดข้อมูลของคุณประกอบด้วยคุณลักษณะและป้ายกำกับ และคุณป้อนข้อมูลนั้นไปยังอัลกอริทึม ดังนั้นหากเรานำตัวอย่างที่หวังว่าคนส่วนใหญ่จะเข้าใจได้ก็คือ ถ้าคุณมีบ้านและต้องการขายมัน และคุณต้องการคิดออกว่าคุณจะขายบ้านหรือบ้านของคุณในราคาเท่าไร รถยนต์ จริงๆ แล้ว มันจะเป็นแบบเดียวกัน และคุณจะใช้ชุดข้อมูลของบ้านในสภาพแวดล้อมเดียวกันหรือบ้านประเภทเดียวกันและรู้ราคาในตลาด คุณจะสามารถใช้คุณสมบัติของบ้านของคุณเองได้ แล้วมีกี่ห้อง และมีสวน และอยู่ย่านไหน? และสิ่งต่างๆ เช่นนั้น
ชาร์ลี: นี่คือคุณสมบัติและฉลากจะเป็นราคา และการใช้ชุดข้อมูลทั้งหมดของบ้านที่มีอยู่แล้วรอบตัวคุณ คุณจะสามารถใช้อัลกอริธึมการเรียนรู้ของเครื่องที่จะเรียนรู้ความสัมพันธ์ระหว่างคุณสมบัติของบ้านคุณ และราคาในตลาด เพื่อให้ได้คุณลักษณะของบ้านของคุณและสามารถสร้างราคาได้ สิ่งที่สำคัญที่สุดคือการเรียนรู้ภายใต้การดูแล คุณมีคุณสมบัติมากมายและป้ายกำกับเช่นกัน ดังนั้นคุณจึงสามารถวาดความสัมพันธ์ระหว่างทั้งสองได้จริง
Drew: คุณจะป้อนโมเดลด้วยชุดข้อมูลมากมายเกี่ยวกับบ้านในตัวอย่างนี้ โดยที่คุณทราบราคาแล้วจึงรู้คุณลักษณะทั้งหมดเกี่ยวกับบ้านเหล่านี้ สมมติว่าห้องนอนและคุณมีอะไรบ้าง เช่น พื้นที่เป็นตารางฟุต และฉันเดาว่าสถานที่น่าจะเป็นอีกสิ่งหนึ่งที่อาจนำมารวมเข้าด้วยกัน
ชาร์ลี: ใช่. นั่นคือปัญหาอย่างหนึ่งของแมชชีนเลิร์นนิงคือคุณสามารถมีฟีเจอร์ได้มากมายและบางฟีเจอร์ก็ไม่ได้มีประสิทธิภาพเท่ากับฟีเจอร์อื่นๆ เช่นกัน ตัวอย่างเช่น คุณอาจมี สีของบ้าน ซึ่งจริงๆ แล้วอาจไม่สัมพันธ์กับราคา แต่คุณสามารถระบุคุณสมบัติได้หลายอย่าง และตัวแบบจะพบความสัมพันธ์ระหว่างสองสิ่งนี้เอง จากนั้น คุณสามารถปรับแต่งชุดข้อมูลของคุณ หากต้องการ และลบสีออก หรือคุณตระหนักว่าขนาดของสวนไม่สำคัญหรืออะไรทำนองนั้น
ชาร์ลี: โดยทั่วไปแล้ว แม้ว่าคุณจะป้อนชุดข้อมูลของคุณไปยังแบบจำลอง คุณจะไม่มีการทำนายที่สมบูรณ์แบบในครั้งแรก โดยปกติคุณปรับแต่งสิ่งต่าง ๆ เล็กน้อยและคุณจะเห็น คุณปรับแต่งมันจนกว่าจะได้รับการคาดคะเนที่คุณคิดว่าค่อนข้างแม่นยำ
Drew: แล้วพอโมเดลนั้นถูกสร้างขึ้น หรือบอกว่าคุณสร้างมันโดยใช้ข้อมูลจากเมืองหนึ่ง คุณจะเอามันไปป้อนให้ไหม… คุณจำเป็นต้องป้อนข้อมูลจากเมืองอื่นหรือไม่? คุณจะสามารถหยิบมันขึ้นมาใช้ที่อื่นได้หรือไม่เมื่อการฝึกอบรมเสร็จสิ้น หรือเฉพาะเจาะจงสำหรับชุดข้อมูลนั้นหรือจะทำงานอย่างไร
ชาร์ลี: ฉันคิดว่ามันจะเจาะจงกับชุดข้อมูล หมายความว่าคุณสามารถสร้างชุดข้อมูลอื่นที่มีรูปแบบเดียวกันได้ หากคุณมีสเปรดชีต Excel ที่มีคอลัมน์ต่างกัน คุณจะสามารถเก็บป้ายกำกับและฟีเจอร์เดิมไว้ได้ แต่คุณจะต้องแทนที่ด้วยค่าของเมืองนั้น แต่โดยทั่วไปหมายความว่าการรวบรวมชุดข้อมูลอาจใช้เวลานานเช่นกัน แต่ถ้าคุณรู้อยู่แล้วว่าคุณทำอะไรเพื่อเมืองปารีส เป็นต้น และโครงสร้างของชุดข้อมูลของคุณก็เหมือนกันแต่ คุณแทนที่ค่าต่างๆ มันเร็วขึ้นเล็กน้อย และคุณสามารถสร้างโมเดลใหม่ได้
ชาร์ลี: คุณไม่ควรใช้โมเดลเดียวกันซ้ำ ถ้าข้อมูลของคุณแตกต่างกันเพราะราคาบ้านในปารีสแตกต่างจากเมืองเล็กๆ ในออสเตรเลีย เป็นต้น ดังนั้นคุณจึงไม่ต้องการมีข้อมูลที่ไม่ถูกต้อง เนื่องจากแกนหลักของชุดข้อมูลของคุณในตอนแรกไม่เหมือนเดิมทุกประการ
Drew: เราพูดถึงโมเดลต่างๆ มากมายเกี่ยวกับแมชชีนเลิร์นนิง ดังนั้นตัวแบบจึงเหมือนกับผลลัพธ์สุดท้ายของการวิเคราะห์ชุดข้อมูลทั้งหมด และใช้ทำนายผลในภายหลัง นั่นคือสิ่งที่เป็นรุ่นใช่มั้ย?
ชาร์ลี: ใช่ มันเป็นอย่างนั้นจริงๆ มันคือโมเดล ดังนั้นมันจึงเหมือนกับฟังก์ชันที่คุณจะป้อนอินพุตใหม่ที่ไม่เคยเห็นมาก่อน แต่ขึ้นอยู่กับสิ่งที่เรียนรู้ในขั้นตอนการฝึก มันจะสามารถแสดงผลการทำนายได้
Drew: การเรียนรู้ภายใต้การดูแล จากนั้นจึงสร้างแบบจำลองการคาดการณ์นี้จากป้ายกำกับบนฟีเจอร์ การเรียนรู้แบบไม่มีผู้ดูแลคืออะไร?
ชาร์ลี: การไม่มีผู้ดูแลจึงเป็นแนวคิดเดียวกันเล็กน้อย แต่คุณลบป้ายกำกับออก ในกรณีนี้ คุณอาจคิดได้ว่าปัญหาการขายบ้านของเราไม่ใช่ปัญหาการเรียนรู้แบบไม่มีผู้ดูแล เพราะถ้าคุณรู้แต่คุณสมบัติเกี่ยวกับบ้านรอบๆ ตัวคุณ แต่คุณไม่มีราคาเป็นป้าย ไม่สามารถคาดเดาราคาได้จริงๆ มันจะไม่รู้ด้วยซ้ำว่าราคาเท่าไหร่
ชาร์ลี: ไม่มีผู้ดูแลจะยิ่งมากขึ้นเมื่อคุณมีชุดข้อมูลและคุณมีเพียงคุณลักษณะเกี่ยวกับข้อมูลนั้น คุณสามารถสร้างเทรนด์หรือคลัสเตอร์ของสิ่งต่างๆ ร่วมกันได้มากขึ้น คุณจะไม่ใช้การเรียนรู้แบบไม่มีผู้ดูแลหากคุณต้องการผลลัพธ์เฉพาะ หากคุณมีคำถามบางอย่าง เช่น "ราคาเท่าไหร่" นั่นไม่ใช่การใช้งานที่ดีจริงๆ ของ unsupervised แต่ที่มากกว่านั้น ถ้าคุณต้องการรวมกลุ่มเอนทิตีเข้าด้วยกัน อาจเป็นคนหรือสิ่งต่างๆ เช่นนั้น
ชาร์ลี: โดยทั่วไปแล้ว กรณีการใช้งานสำหรับสิ่งนั้นคือคำแนะนำ เช่น คำแนะนำของ Amazon หรือคำแนะนำของ Spotify เช่น "คนอย่างคุณก็ฟังสิ่งนี้ด้วย" และใกล้เคียงมากกว่าที่ฟีเจอร์ในกรณีนี้คือ... พวกเขามี ข้อมูลเกี่ยวกับคุณ เพื่อให้พวกเขารู้ว่าคุณฟังอะไร ปกติคุณอยู่ประเทศอะไร หรือคุณฟังบางสิ่งวันละกี่ครั้ง ดังนั้น การใช้คุณสมบัติเหล่านี้เกี่ยวกับผู้คน พวกเขาสามารถทำให้คุณอยู่ในคลัสเตอร์เดียวกัน หรือผู้ฟังประเภทเดียวกัน หรือคนประเภทเดียวกันที่ซื้อของบางอย่างใน Amazon และการใช้การเรียนรู้แบบไม่มีผู้ดูแลแบบนั้น พวกเขาสามารถรู้ว่าจะโฆษณาอะไรให้คุณหรือจะแนะนำอะไรให้คุณฟังโดยพิจารณาจากคนเช่นคุณ มันเลยเป็นปัญหาแบบนั้นมากกว่า
ดรูว์: เอาล่ะ ทั้งหมดนี้ทำให้ฉันรู้สึกดีขึ้นมากในตอนนี้ในฐานะนักพัฒนาเว็บ aa เพราะการใช้งานประเภทต่างๆ ที่เราได้พูดคุยกัน การกำหนดราคาบ้านและคำแนะนำ และการแสดงโฆษณาและสิ่งต่างๆ ในท้ายที่สุด สิ่งเหล่านี้ล้วนเป็นสิ่งที่เราต้องจัดการและคุณสมบัติที่เราอาจต้องการใส่ในไซต์หรือผลิตภัณฑ์ หรือสิ่งที่คุณมี ดังนั้นเราจึงมี การเรียนรู้ประเภทต่างๆ ตามหัวข้อที่เราต้องการทำนาย มีแอปพลิเคชันประเภทอื่นที่เราสามารถนำมาใช้ด้วยหรือไม่? มีตัวอย่างที่ดีที่ผู้คนสร้างขึ้นซึ่งอาจใช้สิ่งนี้หรือไม่?
ชาร์ลี: ใช่. มีตัวอย่างมากมาย นั่นเป็นเหตุผลที่ เมื่อฉันพูดถึงการทำนายราคาบ้าน บางทีอาจไม่ใช่สิ่งที่เกี่ยวข้องกับคุณ อาจจะไม่น่าตื่นเต้นเท่าไหร่ แต่จริงๆ แล้วยังมีอีกมากมายที่คุณสามารถทำได้ มีตัวอย่างที่ดีจริงๆ ฉันคิดว่าสิ่งแรกที่ฉันเห็นคือข้อความศิลปะที่สร้างขึ้นแบบไดนามิกสำหรับรูปภาพ แน่นอนว่าเป็นสิ่งที่คุณสามารถทำได้ด้วยตัวเองเมื่อคุณเพิ่มรูปภาพลงในไซต์
ชาร์ลี: แต่จะเป็นอย่างไรถ้าคุณมีไซต์ที่มีรูปภาพจำนวนมากจริงๆ และแทนที่จะทำด้วยตนเอง คุณสามารถป้อนรูปภาพแต่ละรูปไปยังอัลกอริธึมการเรียนรู้ของเครื่อง และจะสร้างข้อความศิลปะว่ารูปภาพนั้นเกี่ยวกับอะไร และ บางทีขั้นตอนเดียวของมนุษย์ก็คือการตรวจสอบว่าสิ่งนี้ถูกต้อง แต่จะช่วยให้คุณทุ่มเทเวลาไปกับการสร้างแอปพลิเคชันได้จริง
ชาร์ลี: และคุณยังทำให้เว็บไซต์ของคุณสามารถเข้าถึงได้โดยการใช้ข้อความศิลปะสำหรับรูปภาพ แต่เว็บไซต์ของคุณจะสร้างโดยเครื่อง นั่นเป็นหนึ่งในตัวอย่างที่ฉันเห็นเมื่อเริ่มทำสิ่งนี้ แต่คุณก็มีต้นแบบของการกรองที่ไม่ปลอดภัยสำหรับเนื้อหางานด้วย และฉันคิดว่ามันจะดีมากในส่วนขยายของ Chrome คุณสามารถมีส่วนขยายของ Chrome ที่ทุกครั้งที่คุณเปิดหน้าเว็บ คุณเพียงแค่ตรวจสอบว่าสิ่งที่อยู่บนหน้านั้นเป็นเนื้อหาที่ปลอดภัย
ชาร์ลี: ตัวอย่างเช่น หากคุณมีลูกๆ ที่ใช้แล็ปท็อปหรืออะไรทำนองนั้น คุณสามารถซ่อนรูปภาพหรือแทนที่รูปภาพเหล่านี้ด้วยแพนด้า ถ้าคุณต้องการหรืออย่างอื่น แต่เป็นแอปพลิเคชันประเภทนั้นที่คุณสามารถใช้การเรียนรู้ของเครื่องเพื่อทำสิ่งต่างๆ ให้กับคุณโดยอัตโนมัติ เพื่อให้คุณไม่ต้องกังวลกับงานบางอย่าง หรือคุณสามารถใช้พลังสมองทำอย่างอื่นได้
ชาร์ลี: แต่ยังมีขั้นสูงกว่านั้นอีกด้วยตัวอย่างการจดจำท่าทาง โดยใช้เว็บแคมที่สื่อสารกับ Amazon Alexa และการจดจำเสียงและสิ่งอื่น ๆ ทั้งหมดนั้น ดังนั้น คุณจึงสามารถรวมเทคโนโลยีต่างๆ มากมายเข้ากับเสียงและเว็บแคมและการเรียนรู้ของเครื่องได้อย่างแท้จริง เพื่อการจดจำเพียงอย่างเดียวและสามารถโต้ตอบกับเทคโนโลยีต่างๆ ได้ แต่ในรูปแบบใหม่ ดังนั้นมันจึงสามารถสนุกได้จริงๆ
ดรูว์: น่าสนใจทีเดียว เพราะเราได้ดูการวิเคราะห์ตัวแบบข้อมูลในลักษณะนี้ และตอนนี้เรากำลังคิดที่จะดูเนื้อหาภาพและวิเคราะห์เนื้อหาของภาพโดยใช้การเรียนรู้ของเครื่อง ซึ่งค่อนข้างน่าสนใจ ฉันเดาว่านั่นเป็นฟีเจอร์แบบเดียวกับที่ Facebook มี ถ้ามีคนโพสต์รูปภาพที่พวกเขาคิดว่าอาจมีเลือดนองหรือแสดงอาการบาดเจ็บหรืออะไรบางอย่าง แล้วภาพนั้นพร่ามัว และจากนั้นคุณต้องคลิกเพื่อเปิดเผย เห็นได้ชัดว่า Facebook ไม่สามารถให้ทีมโมเดอเรเตอร์ดูทุกภาพที่อัพโหลดได้
ชาร์ลี: ฉันหวังว่าพวกเขาจะไม่ทำ
Drew: นั่นจะเป็นงานที่ไม่มีที่สิ้นสุด
ชาร์ลี: นั่นไม่ใช่งานที่ดีเช่นกัน
Drew: ฉันเคยทำงานบนเว็บไซต์โฆษณาฟรีที่ผู้คนสามารถโพสต์โฆษณาได้ และมีการกลั่นกรองอย่างมากในเรื่องนั้น ซึ่งแม้แต่ฉัน ในฐานะนักพัฒนาเว็บ ก็ต้องเข้าไปมีส่วนร่วม เพียงแค่ดูภาพทั้งหมดเหล่านี้แล้วพูดว่า "ใช่ ไม่ ใช่ ไม่ใช่"
ชาร์ลี: ฉันทำอย่างนั้นเหมือนกัน ฉันหวังว่าในเวลานั้นจะมีแมชชีนเลิร์นนิง เป็นเพียงเครื่องมืออรรถประโยชน์เล็กๆ น้อยๆ ที่จะทำเพื่อฉัน และตอนนี้ก็อยู่ที่นั่นแล้ว มันเจ๋งมาก
Drew: ใช่ มันเยี่ยมมาก และมันก็ค่อนข้างน่าตื่นเต้นเมื่อคิดถึงการป้อนข้อมูลสดจากเว็บแคมและความสามารถในการวิเคราะห์แบบเรียลไทม์ เพื่อให้คุณสามารถโต้ตอบตามท่าทางได้ คือว่า…
ชาร์ลี: ใช่ จริงๆ แล้ว มันใช้การจัดหมวดหมู่รูปภาพมากกว่า เพราะเว็บแคมของคุณ รูปภาพคือชุดของพิกเซล แต่จากนั้น เมื่อคุณทำท่าทางสัมผัส คุณสามารถฝึกนางแบบให้รู้ว่ามือขวาของคุณยกขึ้น และบางทีคุณอาจ จะควบคุมเมาส์ในลักษณะนี้ หรือจะดูพิกัดของมือและหน้าจอ และคุณจะเดินตามเมาส์ คุณสามารถทำสิ่งที่คุณต้องการได้จริงๆ คุณอาจมีการรับรู้สี
ชาร์ลี: คุณสามารถทำสิ่งที่สนุกจริงๆ หนึ่งในต้นแบบที่ฉันสร้างขึ้นซึ่งฉันยอมแพ้ในบางจุด แต่ฉันสร้างเพียงเล็กน้อย… ฉันต้องการให้มันเป็นส่วนขยายของ Chrome แต่ก็ไม่ได้ผล ฉันสร้างแอปเดสก์ท็อปเล็กๆ ด้วยอิเล็กตรอน นอกจากนี้ใน JavaScript ที่ฉันสามารถเรียกดูหน้าเว็บได้เพียงแค่เอียงศีรษะ ดังนั้น มันจะรับรู้ว่าเมื่อฉันเอียงศีรษะลง แล้วก็เลื่อนลง และเมื่อฉันขึ้นไป มันก็จะขึ้น เป็นเพียงการทดลองเล็กๆ น้อยๆ ที่ฉันคิดว่า "ถ้าฉันสามารถเปลี่ยนให้เป็นส่วนขยายของ Chrome ได้ มันอาจจะมีประโยชน์สำหรับบางคน"
ชาร์ลี: แม้ว่าคุณจะกินข้าวหน้าคอมพิวเตอร์และอ่านข่าวและฉันไม่ต้องการให้แป้นพิมพ์สกปรก ฉันก็เอียงหัวได้ แต่หวังว่าสำหรับการเข้าถึง จริง ๆ แล้วช่วยให้ผู้คนนำทางไปยังหน้าเว็บบางหน้าหรืออะไรทำนองนั้น มีเครื่องมือมากมายและเกี่ยวกับแนวคิดที่ว่าคุณสามารถสังเกตสถานการณ์รอบตัวคุณได้ และคุณจะแก้ปัญหาเหล่านี้ด้วยการใช้แมชชีนเลิร์นนิงได้อย่างไร
Drew: สำหรับแมชชีนเลิร์นนิง เรามักนึกถึงภาษา Python ฉันคิดว่านั่นคือสิ่งที่การพัฒนาหลายอย่างดูเหมือนจะเกิดขึ้นก่อน แต่ในฐานะนักพัฒนาเว็บ เห็นได้ชัดว่าเราคุ้นเคยกับ JavaScript มากขึ้น แมชชีนเลิร์นนิงเป็นสิ่งที่เราสามารถคาดหวังได้อย่างแท้จริง ฉันหมายถึงตัวอย่างสนุกๆ เล็กๆ น้อยๆ เป็นสิ่งหนึ่ง แต่จริง ๆ แล้วมีประโยชน์จริงหรือไม่สำหรับงานจริงใน JavaScript?
ชาร์ลี: ฉันหมายความว่า ฉันคิดอย่างนั้น แต่แล้วฉันก็รู้ว่าสิ่งที่ฉันทำส่วนใหญ่เป็นแบบอย่าง แต่ฉันคิดว่ามันขึ้นอยู่กับสถานการณ์ที่คุณอยู่ในที่ทำงาน มีวิธีการนำการเรียนรู้ของเครื่องไปใช้ในฐานะนักพัฒนาในงานประจำวันของคุณ แต่สิ่งที่ฉันชอบเกี่ยวกับ JavaScript คือความจริงที่ว่า หากคุณเป็น front-end dev อยู่แล้ว คุณไม่จำเป็นต้องไปเรียนรู้ระบบนิเวศใหม่ หรือชุดเครื่องมือใหม่ หรือไวยากรณ์ใหม่ ภาษาใหม่ คุณอยู่ในสภาพแวดล้อมที่คุณทำงานทุกวันอยู่แล้ว
ชาร์ลี: โดยปกติเมื่อคุณเรียนรู้เรื่องแบบนั้น คุณต้องเริ่มที่เวลาของตัวเอง ถ้าไม่ใช่งานประจำวันของคุณ และเวลาของทุกคนมีค่า และคุณไม่ได้มีมากขนาดนั้น ดังนั้นหากคุณสามารถขจัดอุปสรรคและอยู่ในระบบนิเวศเดียวกันกับที่คุณรู้จัก ฉันคิดว่านั่นค่อนข้างดี แต่คุณสามารถเริ่มต้นได้… พลังของฉันของ JavaScript ก็คือคุณสามารถเริ่มต้นด้วยการสร้างต้นแบบขนาดเล็กเพื่อโน้มน้าวใจผู้คนว่า อาจมีแนวคิดที่ต้องตรวจสอบ และด้วยความสามารถในการสร้างบางสิ่งอย่างรวดเร็วใน JavaScript คุณสามารถตรวจสอบได้ว่าแนวคิดของคุณถูกต้อง
ชาร์ลี: ถ้าอย่างนั้นคุณสามารถรับซื้อจากผู้นำเพื่อใช้เวลามากขึ้นหรือเสียเงินมากขึ้น หรือคุณสามารถมอบให้กับนักพัฒนา Python ถ้าคุณต้องการสร้างมันใน Python แต่สำหรับฉัน ความสามารถในการตรวจสอบความคิดอย่างรวดเร็วนี้มีความสำคัญอย่างยิ่ง โดยเฉพาะอย่างยิ่ง หากคุณทำงานให้กับบริษัทสตาร์ทอัพและทุกอย่างดำเนินไปอย่างรวดเร็ว และคุณสามารถแสดงให้เห็นว่ามีบางสิ่งที่คุ้มค่าที่จะพิจารณา ฉันคิดว่านั่นค่อนข้างสำคัญ
ชาร์ลี: และความจริงที่ว่ามีระบบนิเวศของเครื่องมือขนาดใหญ่จริงๆ และมีเฟรมเวิร์กและแอปพลิเคชันของการเรียนรู้ของเครื่องมากขึ้นเรื่อยๆ ใน JavaScript ไม่ใช่แค่บนหน้าเว็บที่เราสามารถเพิ่มการเรียนรู้ของเครื่อง อย่างที่ฉันพูดไปก่อนหน้านี้ คุณสามารถสร้างส่วนขยาย Chrome และแอปเดสก์ท็อปด้วย Electron และแอปมือถือด้วย React Native และฮาร์ดแวร์และ IoT ด้วยเฟรมเวิร์กอย่าง Johnny-Five
ชาร์ลี: ด้วยภาษาที่คุณรู้จักอยู่แล้ว จริง ๆ แล้วคุณสามารถเข้าถึงระบบนิเวศขนาดใหญ่ของแพลตฟอร์มต่าง ๆ ที่คุณสามารถทำการทดลองแบบเดียวกันได้ และฉันคิดว่าสำหรับฉัน มันวิเศษมาก และนั่นคือจุดที่ฉันเห็นพลังที่แท้จริงของการทำแมชชีนเลิร์นนิงใน JavaScript และเมื่อมันดีขึ้น บางทีคุณสามารถรวมเข้ากับแอปพลิเคชันที่เราสร้างทุกวันได้
Drew: JavaScript มีอยู่ทุกที่ใช่ไหม
ชาร์ลี: ค่ะ
Drew: ไม่ว่าจะดีขึ้นหรือแย่ลง มีอยู่ทุกที่ ใครจะไปคิดได้ ฟังดูดี แต่ก็ฟังดูเหมือนเป็นงานมาก และฉันคิดว่าเกี่ยวกับชุดข้อมูลและสิ่งต่างๆ คุณจะเริ่มต้นทำงานเหล่านี้ได้อย่างไร
ชาร์ลี: อย่างน้อยก็มี TensorFlow.JS อยู่ในขณะนี้ มีสามสิ่งที่คุณทำได้กับเฟรมเวิร์ก และสมมุติว่าสิ่งที่ง่ายที่สุดคือการนำเข้าโมเดลที่ได้รับการฝึกอบรมล่วงหน้าที่มีอยู่ มีสองสามรุ่น มีโมเดลต่างๆ ที่ได้รับการฝึกด้วยชุดข้อมูลที่แตกต่างกัน และฉันขอแนะนำให้เริ่มด้วยสิ่งนี้ เพราะคุณสามารถเรียนรู้พื้นฐานจริงๆ ของวิธีใช้เฟรมเวิร์กเองได้จริง และสิ่งที่คุณทำได้ กับโมเดลเหล่านี้
ชาร์ลี: คุณมีโมเดลการจดจำรูปภาพบางรุ่นที่ได้รับการฝึกด้วยรูปภาพต่างๆ บางส่วนดีกว่าสำหรับการจดจำวัตถุ บางส่วนดีกว่าสำหรับการจดจำของผู้คน และด้วยการทำความเข้าใจว่าควรใช้โมเดลใด เราจึงสามารถสร้างอะไรก็ได้ที่คุณต้องการภายใต้ข้อจำกัดของโมเดลนั้น
ชาร์ลี: แต่ฉันคิดว่านั่นเป็นวิธีที่ดีในการเริ่มต้น ฉันยังคงใช้แบบจำลองที่ได้รับการฝึกมาล่วงหน้าสำหรับการทดลองหลายๆ อย่างของฉัน เพราะมันก็เช่นกัน ทำไมคุณถึงสร้างวงล้อขึ้นมาใหม่ถ้ามันมีอยู่แล้ว มาใช้เครื่องมือที่ได้รับกันเถอะ จากนั้นเมื่อคุณต้องการก้าวไปอีกขั้น คุณสามารถทำสิ่งที่เรียกว่าการเรียนรู้แบบโอนย้าย เมื่อคุณฝึกแบบจำลองที่สำคัญขึ้นใหม่ ดังนั้นคุณจึงยังคงใช้โมเดลที่ได้รับการฝึกมาล่วงหน้าตัวใดตัวหนึ่งอยู่ แต่หลังจากนั้น คุณจะได้รับโอกาสในการฝึกจำลองใหม่แบบสดๆ ด้วยตัวอย่างของคุณเอง
ชาร์ลี: ตัวอย่างเช่น ถ้าคุณต้องการใช้การจัดหมวดหมู่รูปภาพที่คุณมีผู้คนต่างกัน คุณอาจต้องการจัดหมวดหมู่ด้วยท่าทางสัมผัส ตัวอย่างเช่น ถ้าแบบจำลองของคุณได้รับการฝึกฝนกับผู้ที่มีอยู่เสมอ ฉันไม่รู้ มือขวาของพวกเขาหรืออะไร แต่สำหรับแอปพลิเคชันของคุณ คุณต้องการมือซ้าย คุณสามารถฝึกแบบจำลองนั้นใหม่ด้วยตัวอย่างด้านซ้ายของคุณ แล้วคุณจะได้โมเดลที่ได้รับการฝึกฝนมาอย่างดีแล้วให้รู้จักมือขวา แต่จากนั้นคุณจะต้องเพิ่มตัวอย่างของคุณเองและคุณสามารถฝึกใหม่ได้ค่อนข้างเร็วในเบราว์เซอร์ ขึ้นอยู่กับปริมาณข้อมูลอินพุตใหม่ที่คุณให้ อาจใช้เวลาสักครู่ แต่ในไม่กี่วินาที คุณจะได้โมเดลที่ได้รับการฝึกฝนซึ่งดีมากในการจดจำท่าทางสัมผัสทั้งสองนี้ที่คุณสามารถใช้ได้ในแอปของคุณ
ชาร์ลี: นั่นก็เหมือนกับขั้นตอนที่สองตามปกติ จากนั้น ขั้นตอนที่สามที่ซับซ้อนกว่าเล็กน้อยคือเมื่อคุณทำทุกอย่างในเบราว์เซอร์ ดังนั้นคุณจึงเขียนแบบจำลองของคุณเองตั้งแต่ต้น ฝึกฝนในเบราว์เซอร์ ฝึกฝน ใช้งานจริง และสร้างแบบจำลอง ทุกอย่างในเบราว์เซอร์ แต่โดยทั่วไป แอปพลิเคชันเดียวที่ฉันได้เห็นสำหรับสิ่งนี้คือการสร้างภาพข้อมูล เมื่อคุณต้องการเห็นภาพกระบวนการของแบบจำลองที่กำลังฝึกและจำนวนขั้นตอนที่ต้องใช้ ระยะเวลาที่ใช้ และคุณสามารถเห็นความแม่นยำขึ้นหรือลง ขึ้นอยู่กับคุณสมบัติที่คุณเลือกและพารามิเตอร์ที่คุณปรับแต่ง .
ชาร์ลี: ฉันไม่ได้เล่นกับอันนั้นจริงๆ เพราะฉันยังไม่พบแอปพลิเคชันที่ฉันต้องการจะสร้างด้วย แต่สองขั้นตอนแรกในการใช้เฉพาะโมเดลที่ฝึกไว้ล่วงหน้าหรือการฝึกซ้ำด้วยตัวอย่างของฉันเองคือ โดยส่วนตัวแล้วฉันเคยเห็น ฉันสนุกกับมัน
ดรูว์: โดยทั่วไปแล้วจะเป็นกรณีของการสร้างโมเดลล่วงหน้า ออฟไลน์เหมือนเดิม จากนั้นเบราว์เซอร์ก็ใช้โมเดลที่ผ่านการฝึกอบรมนั้น หรืออาจเพิ่มอีกเล็กน้อย การฝึกใหม่เล็กน้อย แต่ โดยทั่วไป โมเดลนั้นจะถูกสร้างขึ้นก่อนที่จะนำไปใช้ในเบราว์เซอร์ของผู้ใช้หรือไม่
ชาร์ลี: โดยทั่วไปใช่ จากนั้นคุณสามารถสร้างแบบจำลองของคุณเองได้อย่างแน่นอน หากคุณทำเช่นนั้น ฉันไม่แนะนำให้ฝึกในเบราว์เซอร์ แต่คุณสามารถทำได้ใน NodeJS เช่นกัน หากคุณรู้จัก NodeJS เล็กน้อย ฉันได้สร้างโมเดลของตัวเองแล้ว แต่โดยปกติฉันเรียกใช้ใน NodeJS เพราะมันมีประสิทธิภาพมากกว่าเล็กน้อย จากนั้นฉันก็ใช้โมเดลที่สร้างขึ้นซึ่งฉันสร้างขึ้นในเบราว์เซอร์
Drew: มีเครื่องมือใดบ้างที่สามารถทำได้กับ JavaScript คุณพูดถึง TensorFlow JS แล้ว นั่นอะไร นั่นมันที่ไหน นั่นมาจาก Google ใช่ไหม
ชาร์ลี: ค่ะ ตอนแรก Google มีเครื่องมือ TensorFlow ใน Python และสำหรับที่ผ่านมา อาจสองสามปี อาจจะมากกว่านั้นอีกหน่อยที่พวกเขาสร้างเวอร์ชัน JavaScript ดังนั้นจึงมีแนวโน้มที่จะไหลด้วย JS แต่ยังมี ML5 JS ที่เป็นนามธรรมอยู่ด้านบนเล็กน้อย ดังนั้น หากคุณสับสนเล็กน้อยหรือหาก TensorFlow JS ดูน่ากลัวเล็กน้อยกับคำศัพท์บางคำที่พวกเขาใช้ในเอกสารประกอบ คุณสามารถใช้ ML5 JS ที่มีคุณสมบัติส่วนใหญ่เหมือนกัน แต่สมมุติว่า API หรือไวยากรณ์คือ เป็นมิตรกับผู้เริ่มต้นอีกเล็กน้อย
ชาร์ลี: คุณสามารถเริ่มด้วย ML5 ดูว่าชอบแมชชีนเลิร์นนิงหรือคิดเกี่ยวกับแอปพลิเคชันเจ๋งๆ แล้วบางทีคุณอาจมีตัวบล็อกใน ML5 หรือเฟรมเวิร์กไม่มีสิ่งที่คุณอยากทำ จากนั้นสามารถย้ายไปที่ TensorFlow JS ได้หากต้องการ และถ้าคุณไม่สนใจที่จะเขียนโค้ดของคุณเองจริงๆ แต่คุณต้องการใช้เครื่องมือที่มีอยู่แล้ว มี API บางตัวจาก Amazon, Google และ Microsoft เพื่อทำการจดจำภาพหรือจดจำเสียงเช่นกัน ดังนั้น หากคุณสนใจที่จะเห็นสิ่งที่สามารถทำได้มากขึ้น แต่คุณไม่ต้องการใช้เวลามากเกินไปในการเขียนโค้ด คุณสามารถ ping API บางตัวและลองใช้เครื่องมือบางอย่างของพวกมันได้เช่นกัน
Drew: น่าสนใจทีเดียว ดังนั้นคุณอาจใช้เบราว์เซอร์เพื่อรับข้อมูลจากเว็บแคมหรือไมโครโฟนหรือสิ่งที่คุณมี จากนั้นส่งไปที่ Amazon, Microsoft หรือใครก็ตามแล้วปล่อยให้พวกเขาทำงานหนัก?
ชาร์ลี: ใช่.
Drew: แล้วคุณก็ได้รับประโยชน์จากผลลัพธ์
ชาร์ลี: แม่นแล้ว
Drew: นั่นฟังดูเป็นวิธีที่ดีและน่าดึงดูดใจในการเริ่มต้นไอเดีย ฟังดูดีมาก แต่เราจะนำไปใช้กับปัญหาอะไรในส่วนหน้าได้บ้าง เราได้พูดคุยเกี่ยวกับสิ่งเล็กน้อย แต่มีวิธีอื่นที่เราสามารถนำมาใช้ได้หรือไม่?
ชาร์ลี: มีหลายวิธี ถ้าฉันเริ่มด้วยการจัดหมวดหมู่รูปภาพ คุณก็ทำได้ คุณสามารถใช้รูปภาพจากเว็บหรือจากเว็บแคมบนโทรศัพท์ของคุณ หากคุณเพียงแค่ใช้เว็บไซต์ของคุณบนโทรศัพท์และคุณสามารถถ่ายภาพและจดจำวัตถุ และทำสิ่งใดสิ่งหนึ่ง... สิ่งเล็กๆ ที่ฉันสร้างขึ้นคือการรีไซเคิล ซึ่งหากฉันไม่รู้ว่าจะวางสิ่งของบางอย่างในถังขยะจริงๆ ไว้ที่ไหน มีถังสีเหลือง สีเขียว ขึ้นอยู่กับแต่ละประเทศ พวกมันมีสีต่างกัน แต่บางครั้งฉันก็ไม่รู้ว่าจะโยนของตรงไหนดี ดังนั้นคุณสามารถสร้างเครื่องมือเล็กๆ แบบนี้ได้ ไลฟ์สามารถจดจำวัตถุสองชิ้นที่อยู่ข้างหน้าคุณ แล้วจัดประเภทพวกมัน และคุณสามารถสร้างบางสิ่งเช่น นี้.
ชาร์ลี: ไม่อย่างนั้น คุณมีการจัดประเภทข้อความที่เมื่อต้นปีนี้ ฉันใช้โมเดล TensorFlow GS ตัวใดตัวหนึ่งเพื่อดูความคิดเห็นที่เขียน ประเด็น GitHub และ GitHub PRs เพื่อจัดประเภทและพูดว่า “นี่ ถ้ามันเป็นความคิดเห็นที่เป็นพิษ คุณมีบอทตัวเล็ก ๆ ที่พูดว่า "เฮ้ บางทีคุณไม่ควรเขียนสิ่งนี้" หรือ "ระวัง มันเป็นพิษเล็กน้อย เราต้องการให้พื้นที่นี้เป็นพื้นที่ปลอดภัย”” ดังนั้นคุณสามารถใช้การจัดประเภทข้อความแบบนั้นได้
ชาร์ลี: มีการแบ่งประเภทเสียงนะ ถ้าอยากได้ ตอนที่ Apple เปิดตัวนาฬิกา OS ใหม่ พวกเขามีบางอย่างที่ต้องจำเสียงน้ำไหล บอกคนให้ล้างมือ 20 วินาทีกับการระบาดของโควิด-19 แต่คุณก็ทำได้ นั้นในจาวาสคริปต์เช่นกัน และสิ่งที่น่าสนใจจริงๆ ฉันกำลังดูวิดีโอบางเรื่อง และฉันก็แบบ "โอ้ ฉันรู้วิธีทำใน JavaScript"
ชาร์ลี: และฉันก็สร้างต้นแบบขึ้นมาเล็กน้อย ฉันไม่รู้ว่ามันทำงานบน Apple Watch หรือไม่ อาจจะ. ฉันไม่มี แต่ฉันรู้ว่ามันทำงานบนโทรศัพท์และแล็ปท็อปของฉัน และนั่นก็สามารถเริ่มต้นความคิดบางอย่างให้กับคนอื่นๆ ได้เช่นกัน โดยที่ Ramon Huidobro เพื่อนของฉัน @hola_soy_milk บน Twitter เขาเข้าร่วมการประชุมออนไลน์หลายครั้งในปีนี้ และปัญหาอย่างหนึ่งของเขาก็คือเมื่อเขาปรบมือเพื่อปรบมือให้ใครสักคน เขาก็ไม่มีเวลาเพิ่มอิโมจิปรบมือลงในแชทด้วย และสิ่งที่เขาต้องการจะทำคือฟังเสียงปรบมือของเขาและนั่นจะส่งอีโมจิปรบมือโดยอัตโนมัติในแชท
ชาร์ลี: และสิ่งเล็กๆ น้อยๆ เช่นนี้ ถ้าคุณต้องการให้แอปพลิเคชันมีประโยชน์มากขึ้นในงานประจำวันของคุณ ก็คือการดึงข้อมูลล่วงหน้าแบบคาดการณ์ล่วงหน้า นั่นยังใช้การเรียนรู้ของเครื่องในส่วนหน้าซึ่งดูการวิเคราะห์เว็บไซต์ของคุณ ว่าหน้าไหนมักจะถูกดูหลังจากนั้นและอะไรเช่นนี้ คุณสามารถดึงทรัพยากรล่วงหน้าได้ล่วงหน้าโดยอิงจากหน้าที่มีแนวโน้มที่จะเข้าชมหลังจากนั้น นั่นคือสิ่งที่ฉันต้องการตรวจสอบมาตลอดทั้งปีนี้ แต่ฉันไม่มีเวลา แต่นั่นทำให้คุณสามารถปรับปรุงประสิทธิภาพและ UX ของเพจของคุณได้จริงๆ และคุณไม่ได้ร้องขอทรัพยากรที่คุณไม่ต้องการ เพื่อให้สามารถปรับปรุงได้อย่างแท้จริง และนั่นคือแอปพลิเคชันของการเรียนรู้ของเครื่องด้วยเช่นกัน
ชาร์ลี: คุณสามารถทำอะไรสนุกๆ ได้ หรือทำสิ่งที่มีประโยชน์มากกว่าก็ได้ แต่ไม่มีแอปพลิเคชันที่ผิด อาจมีแอปพลิเคชันที่ไม่ถูกต้อง ฉันเอามันกลับมา แต่ฉันแค่บอกว่าถ้าคุณเริ่มต้นมันจริงๆ ไม่มีอะไรผิดปกติกับการเริ่มต้นด้วยบางสิ่งที่สนุก จากนั้นฉันก็สามารถระดมความคิดบางอย่างเกี่ยวกับสิ่งที่คุณสามารถทำในงานได้เช่น ดี.
Drew: ฉันเดาว่าสิ่งที่มีประโยชน์จริงๆ ก็คือการรู้ว่าสิ่งเหล่านี้เป็นไปได้ และแท้จริงแล้วเป็นเพียงวิธีที่สร้างสรรค์ในการแก้ปัญหาที่เราสามารถทำได้ด้วยตัวเอง ตามเนื้อผ้า เราสร้างสิ่งต่าง ๆ โดยกลั่นกรองเนื้อหาที่ผู้ใช้ส่งมา และมันก็ค่อนข้างดั้งเดิม และโดยพื้นฐานแล้วเราต้องให้มนุษย์ดูสิ่งต่าง ๆ และตัดสินใจเกี่ยวกับเรื่องนี้ แต่ด้วยการเข้าถึงแมชชีนเลิร์นนิง ในตัวอย่างนี้ เราสามารถมอบสิ่งนั้นให้มากกว่านั้น แล้วให้มนุษย์ดูที่เคสที่ล้ำสมัย เช่น สิ่งต่าง ๆ ที่ไม่มีความสอดคล้องที่น่าเชื่อถือ
ดรูว์: แน่นอนว่าจะต้องเป็นอย่างนั้น ต้องใช้เวลาสักหน่อยในการพัฒนาสิ่งนั้นและทำให้มันเข้าที่ แต่แล้วคุณก็คิดถึงการประหยัดโดยไม่ต้องให้มนุษย์ตรวจสอบสิ่งของด้วยตนเอง สิ่งใดที่คุณเห็นว่าสิ่งนี้ถูกนำไปใช้ในอนาคตในขณะที่เทคโนโลยีดีขึ้น?
ชาร์ลี: สำหรับฉัน บางทีในอนาคต ฉันคิดว่าเมื่อโมเดลมีขนาดเล็กลงเพื่อโหลดและมีประสิทธิภาพมากขึ้น และเราอาจปรับปรุงชุดข้อมูลที่พวกเขาฝึกด้วย ฉันหวังว่าจะได้เห็นเครื่องมือที่มีประโยชน์มากกว่านี้ ฉันหมายถึงโดยส่วนตัวแล้ว ฉันสนใจโมเดลแมชชีนเลิร์นนิงขนาดเล็กที่สามารถทำงานบนไมโครคอนโทรลเลอร์เพื่อสร้างสิ่งต่างๆ แต่ถ้าเราอยู่ใน front-end world มากกว่านี้ ผมหวังว่าจะรู้จำเสียงได้ดีขึ้น เพราะผมรู้สึกว่าเราเคยชินกับการท่องเว็บด้วย track pad หรือ keyboard แต่ปัจจุบันยังมี การจดจำเสียง แต่ก็ไม่ได้แม่นยำมากเสมอไป หรือการเน้นเสียงที่ไม่ถูกต้อง เป็นต้น และฉันหวังว่าในขณะที่เราพัฒนาโมเดลที่ดีขึ้น โดยที่คนตัวเล็กจะไม่กลัวที่จะเพิ่มลงในเว็บไซต์ของตนเพราะจะไม่ส่งผลต่อประสิทธิภาพการทำงานที่แย่
ชาร์ลี: ฉันสนใจที่จะใช้แมชชีนเลิร์นนิงในสิ่งต่าง ๆ เช่นการดึงข้อมูลล่วงหน้าล่วงหน้า เพื่อให้เราสามารถสร้างเว็บไซต์ที่ชาญฉลาดขึ้นซึ่งปรับปรุงประสบการณ์บนสเปกตรัม เพราะสำหรับผู้ใช้ มันจะดีกว่าเพราะหน้าจะโหลดเร็วขึ้น ดังนั้นประสิทธิภาพโดยทั่วไป ของเว็บไซต์ของคุณจะดีกว่า สมมติว่าเราคิดถึงความยั่งยืน การไม่ร้องขอทรัพยากรที่ไร้ประโยชน์ก็ช่วยได้เช่นกัน รอยเท้าคาร์บอนของเว็บไซต์ของคุณ แต่ก็มีคาร์บอนฟุตพริ้นท์ของโมเดลแมชชีนเลิร์นนิงด้วย ที่ไม่ค่อยดี ดังนั้นเราอาจจะไม่พูดถึงเรื่องนี้ ฉันคิดว่าสำหรับอนาคตฉันแค่หวังว่าจะมีรุ่นที่อาจจะมีประสิทธิภาพมากกว่าหรือเล็กกว่าเพื่อให้ผู้คนมีโอกาสทดลองใช้มากขึ้นเพราะสมมติว่ามีคนบล็อกน้อยกว่านี้ แต่มาดูกัน
Drew: มีข้อ จำกัด และข้อ จำกัด ที่เราควรรู้ก่อนเริ่มโครงการการเรียนรู้ของเครื่องหรือไม่?
ชาร์ลี: ใช่. มี. ฉันคิดว่าไม่ว่าคุณจะทำใน JavaScript หรือ Python ก็ตาม ก็มีข้อจำกัด ฉันคิดว่าถ้าคุณต้องการสร้างบางสิ่ง เป็นแบบเฉพาะตัวมาก ที่ไม่มีโมเดลการฝึกอบรมล่วงหน้า หนึ่งในข้อจำกัดคือคุณอาจต้องการข้อมูลค่อนข้างมาก และไม่ใช่ทุกคนที่มี So if you're doing something on your own as a side project, and you can't find the data set, it would actually take you quite a long time to get one that would allow you to generate good predictions. You can build a small data set, but you will not be able to push it to production or something if you don't actually have a data set that's consistent enough. So I think the amount of data that you need, training the models can take a lot of time.
Charlie: That depends on the amount of data that you feed it, but depending on the application that you want to will build it with, you have to be aware that it can take a lot of time. I remember when I got started and I was doing it in Python and I wanted to… I forgot what I wanted to do, but my model was running for, it was training for eight hours. And at the end it told me that it failed because of something. And I was like, “You're telling me that at the end, after eight hours,” so it can be a bit frustrating and it can still be experimental and you have to be comfortable with it not being a pure science, not everything is always accurate.
Charlie: At the moment, as some of the models are still, they can be a few megabytes, if you are building something that you know, is most likely going to be seen on a mobile screen, you might want to take into consideration that, well, you don't want to load all that data over 4G network. You might want to warn people that they should be on Wi-Fi or the battery use, or the type of phones can't really handle all of this as well. And then more seriously in terms of liability, you do have to understand why your model predicted certain things. And that can be difficult because the model is a black box. It's a function that you don't really know what's inside. You know what it predicted and based on what you're building, if it makes certain decisions about, I don't know, who gets a loan or who goes to prison, based on whatever, you want to be able to explain how you got to that decision.
Charlie: If you decided to use machine learning to kind of abstract some of the work, so it wouldn't be done by people. That can be quite dangerous, so you have to know what you're doing, and in the end, just remember that it's not perfect. I think people sometimes assume that because we talk about artificial intelligence is just as smart as people, but no, it's still computers. It's still data that is given to them and they make up some predictions and somehow we just trust it, which is scary. But yeah, that's some of the limitations.
ดริว : ครับ I guess it may seem like it's intelligent, but it is still artificial. There've been some quite high profile cases in recent times particularly around some of the machine learning stuff with image recognition that have raised issues of bias in machine learning, for example, a model only detecting humans if they have light skin. Are there ethical considerations that we should be making here?
Charlie: To me, that sounds like a really interesting side of machine learning. And that's also why, before I was saying that, remember that it's not perfect. Sometimes I feel like people think that the machine just happens to be right and know all the things by itself, but it's still something that we program. And when an algorithm products or generates a biased result, the algorithm just generated things based on the data that it was given before. So an algorithm itself or a model is not going to know the difference in society between light-skinned people or dark-skinned people. It doesn't know and it doesn't care. The only thing that it knows is that I got given pictures of certain people and I'm just going to generate based on what I know.
Charlie: And the data set that is given to the algorithm is in general generated by us, by people. Maybe it's not the developer using the model, but at some point somebody put together a data set. And I think it's important to remember that we are responsible for making sure that the predictions generated are as fair as possible and as unbiased as possible. And that creates interesting questions then, because then you can go into, “Well, what is fair for people?” or if we think about my example of the GitHub action that I created to look at toxic comments, well, maybe what I think is toxic is not the same thing as what other people think is toxic.
Charlie: It's interesting. There's a really interesting collection of videos by MIT media lab around the ethics and governance of artificial intelligence, and I find that fascinating because it's not about telling people, “Oh, you're a bad person because you used in algorithm that's biased,” or, “You're a bad person because you produced a model that's biased.” Its more about raising certain questions and helping you realize, “Well, actually, maybe I could be better,” because that surface that, “Yes, I forgot to add diverse people to my data set. Let me fix that.” It's not really about say, “Let's not use that model ever again.” Just retrain it. Realize that, “Oh, I forgot this. I can retrain it and we can make it better.” And that's something that I definitely think is interesting.
Charlie: And you have companies really trying to improve on that. When the issue of Google who was translating certain neutral languages into gendered languages, and all of a sudden engineer was male and cook was female. Now they know they've really reworked on that and it's a lot more unbiased and they use the 'they' pronoun as well. They also really try to make it better, but then you have also weird stuff where I think IBM had created a data set called Diversity in Faces, that was supposed to be one of the very few that I said that actually had a diverse spectrum of people. But when I tried to find it to use it, it's not available anymore. So I'm like, “Oh, you had this good initiative. You try to do better than a lot of other people, and now people are going to actually use it.” I don't know, but I think the question is really fascinating because he can really help us improve. And then we improve the tool as well that we're using.
Drew: I guess it pays just to be really careful to be balanced and be diverse when selecting data for training models. I guess that's what it comes down to, isn't it?
Charlie: Yeah. Well, I mean, you're building a tool for the public, in general, right? If it's a tool that everybody can use, so it should reflect everybody really, or you should be really clear and say, “This tool can only be used by these people because the model was trained that way, but it's not really what we should do.” I understand that sometimes it if you've never thought about it, it can be I don't know, you can see it as a burden. I hate that people would think of it that way, but it's also, if you spent all this time, maybe writing your own algorithm or generating your own model and doing all of this work, you can't tell me that finding a diverse data set is the hardest part. I don't think it would be. So I'm hopeful, and I think as more people raise concerns about this, and I think people are watching this space, which is really good because if companies don't do it, they'll do it if we tell them that it's not right. And if you want the adoption of machine learning models, you have to make sure that everybody can use them.
Drew: Of the various tools that are available for doing machine learning in JavaScript, you've worked a lot with TensorFlow JS and you've written a book about it. Tell us about your book.
Charlie: Yes, I did. I did write a book this year about TensorFlow JS. So to help JavaScript developers learn more about machine learning and understand it better. And I think the main goal of this book was to help people dive into machine learning, but making it less scary, because I know that at first I thought about machine learning as this big thing, completely different from the web development that I would never understand anything about. I didn't think that I would have to write my own algorithms and really understand math. And as I've dived into this over the past two and a half years, I realized that it's not really like that. And I was hoping that writing this book could help people realize as well that they can do it and what can be done.
Charlie: And there's also a few projects that you can really put in practice what you're learning, but it was really aimed at people who haven't really looked into ML yet, or who just are curious to learn more. I'm not really diving into the algorithms like the source code of the algorithms, but it's really more telling people, trying to understand what an algorithm does and which one to use and for what. A bit of what we just talked about, but it's explaining contents in a clear way, so hopefully it's less scary and people want to hopefully dive a bit more into it.
Drew: So it's called Practical Machine Learning In JavaScript and is available from Apress, and we'll link it up in the show notes. So I've been learning all about machine learning today. What have you been learning about lately, Charlie?
Charlie: Let's say a thing that I'm diving into that is related to machine learning or I will use machine learning with it, but it's digital signal processing that I want to use with machine learning. As we've talked about the fact that machine learning needs a lot of data, if you want to build your own models, sometimes you have to filter your data to actually get the right prediction. And if we think about it, let's think about noise canceling headphones. In your day-to-day life, you have a lot of noise around you. Let's say you're trying to watch a video on the train and there's people talking around you, and there's a sound of the train. And what you want to focus on is the sound of the video.
Charlie: With digital signal processing, that would be a little bit like your noise canceling headphones, where there's some noise around that you don't care about. So there's some data that you don't want to listen to, and the noise canceling headphones allow you to focus on the sound coming from the video on your phone, so that you can really truly listen and focus on that. What I'm doing with digital signal processing is that I have a bunch of data from a piece of hardware, like an Arduino, but I know that there's a lot of it that I might not care about. I want to filter out the things that I don't care about, so that then I can feed that to a model and get better predictions about gestures or things like that. So you have your data signal that you can either transform or filter.
Charlie: It's like when you use the web API to get sound from your microphone, you can either see the arrays of numbers on your dev tools, or you can transform it into a spectrogram to see the picture of the sound. And that's a little bit of that. To have a better prediction for gestures based on hardware data, I can transform that signal. I've been wanting to do this for a couple of years, but it's something that I know nothing about. It takes time to learn, but now that I know a bit more about the machine learning side, I can learn the digital processing side and I'm getting there. I like this moment where I'm like, “Oh, I start to get it because I spent all this time on it.” And yeah, that's, that's really interesting. I'm going to have you going a bit.
Drew: Charlie you're such a nerd. If you dear listener would like to hear more from Charlie, you can find her on Twitter, where she's @devdevcharlie and her personal website includes links to lots of our experiments and projects, and it's really worth checking out at charliegerard.dev. Her book Practical Machine Learning In JavaScript is available now, and we'll link to that in the show notes. Thanks for joining us today. Charlie, did you have any parting words?
ชาร์ลี: อย่าลืมสนุกนะ วันนี้เราได้พูดคุยกันมากมายเกี่ยวกับเรื่องสนุก ๆ และจากนั้นก็เรื่องที่เป็นประโยชน์ แต่ถ้าคุณยินดีที่จะพิจารณาเรื่องนี้ อย่าลืมสนุกด้วย ไม่ว่าคุณจะตัดสินใจสร้างอะไร