Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

เหตุใดนักพัฒนาเว็บทุกคนจึงควรสำรวจการเรียนรู้ของเครื่อง

ฉันยังไม่มีลูก แต่เมื่อฉันมี ฉันต้องการให้พวกเขาเรียนรู้สองสิ่ง:

  • การเงินส่วนบุคคล
  • การเรียนรู้ของเครื่อง

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

นี่เป็นบทความแรกในซีรีส์ที่จะพยายามทำให้การเรียนรู้ของเครื่อง (ML) สามารถเข้าถึงได้โดยนักพัฒนา Ruby แบบฟูลสแตก ด้วยการทำความเข้าใจเครื่องมือ ML ที่มีอยู่ คุณจะสามารถช่วยให้ผู้มีส่วนได้ส่วนเสียของคุณตัดสินใจได้ดีขึ้น บทความในอนาคตจะเน้นที่เทคนิคแต่ละอย่างและตัวอย่างเชิงปฏิบัติ แต่ในบทความนี้ เรากำลังเตรียมพื้นที่ โดยแสดงแผนที่และปักหมุดที่ระบุว่า "คุณอยู่ที่นี่"

จุดเริ่มต้นที่ต่ำต้อย

เหตุใดนักพัฒนาเว็บทุกคนจึงควรสำรวจการเรียนรู้ของเครื่อง

ปัญญาประดิษฐ์ (AI) และการเรียนรู้ของเครื่องไม่ใช่เรื่องใหม่ ย้อนกลับไปในปี 1950 อาร์เธอร์ ซามูเอลได้สร้างโปรแกรมคอมพิวเตอร์ที่สามารถเล่นหมากฮอสได้ เขาใช้ "การตัดแต่งกิ่งอัลฟ่าเบต้า" ซึ่งเป็นอัลกอริธึมการค้นหาทั่วไป

ทศวรรษที่ 1960 ได้เห็นการกำเนิดของโครงข่ายประสาทหลายชั้นและอัลกอริธึมเพื่อนบ้านที่ใกล้ที่สุด ซึ่งใช้เพื่อค้นหาเส้นทางที่เหมาะสมที่สุดในคลังสินค้า

แล้วถ้า AI เก่ามาก ทำไม AI สตาร์ทอัพถึงมาแรง? ในความคิดของฉัน มีเหตุผลสองประการสำหรับสิ่งนี้:

  • พลังคอมพิวเตอร์ (ดูกฎของมัวร์)
  • ปริมาณข้อมูลที่ถูกเพิ่มลงในอินเทอร์เน็ตทุกวัน

มีสถิติสองอย่างที่เกี่ยวข้องกับปริมาณข้อมูลที่สร้างขึ้นในแต่ละวัน ซึ่งทำให้ฉันต้องทึ่งทุกครั้งที่นึกถึง:

  • ในปี 2018 เรากำลังสร้างข้อมูล 2.5 quintillion ไบต์ทุกวัน ไม่ต้องสงสัยเลยว่าตัวเลขนี้เพิ่มขึ้นตั้งแต่บทความของ Forbes นี้เผยแพร่เท่านั้น
  • ในช่วงสองปีที่ผ่านมา 90% ของข้อมูลในโลกถูกสร้างขึ้น

เมื่อรวมกันแล้ว สิ่งนี้หมายความว่า (1) ฮาร์ดแวร์ที่จำเป็นในการจัดเก็บข้อมูลและรันอัลกอริธึมยังคงมีราคาจับต้องได้ และ (2) ปริมาณข้อมูลที่มีในการฝึกโมเดล ML เพิ่มขึ้นอย่างรวดเร็ว

ทุก ๆ วันเรากำลังโต้ตอบ ได้รับอิทธิพล และมีส่วนร่วมในโลกแห่งปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง ตัวอย่างเช่น คุณสามารถขอบคุณ (หรือตำหนิ) อัลกอริทึมสำหรับสิ่งต่อไปนี้:

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

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

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

การเรียนรู้ภายใต้การดูแล

เหตุใดนักพัฒนาเว็บทุกคนจึงควรสำรวจการเรียนรู้ของเครื่อง

การเรียนรู้ภายใต้การดูแลคือ... ก็ถูกควบคุมโดยมนุษย์ :) ลองนึกภาพว่าเรากำลังสร้างระบบการเรียนรู้ภายใต้การดูแลเพื่อตัดสินว่าใครได้รับการอนุมัติให้จำนอง วิธีนี้อาจใช้ได้ผล:

  1. ธนาคารรวบรวมชุดข้อมูลที่จับคู่แอตทริบิวต์ของลูกค้า (อายุ เงินเดือน ฯลฯ) กับผลลัพธ์ (การชำระคืน ค่าเริ่มต้น ฯลฯ)
  2. เราฝึกระบบของเราโดยใช้ข้อมูล
  3. ระบบใช้สิ่งที่เรียนรู้เพื่อคาดเดาผลลัพธ์ในอนาคตตามคุณลักษณะของผู้สมัคร
  4. ถ้าอัลกอริทึมเดาถูก เราจะบอกมันว่า "เยี่ยมมาก! คุณพูดถูก" แต่ถ้ามันผิด เราบอกมันว่า "ไม่ คุณไม่ถูกต้อง โปรดปรับปรุงและลองอีกครั้ง"

ตัวอย่างนี้ถือเป็นปัญหา "การจัดประเภท" เนื่องจากผลลัพธ์ของอัลกอริทึมเป็นหมวดหมู่ ในกรณีนี้ อนุมัติหรือไม่อนุมัติ ตัวอย่างอื่นๆ ของปัญหาการจำแนกประเภทรวมถึงการตัดสินใจว่า:

  • คนเป็นโรค
  • เอ็กซเรย์กระดูกหัก
  • อีเมลเป็นสแปม

หากคุณอยากทราบข้อมูลเพิ่มเติมเกี่ยวกับคณิตศาสตร์เบื้องหลังอัลกอริธึมการจัดหมวดหมู่ ML ให้ใช้ Google สิ่งเหล่านี้:ตัวแยกประเภท Bayes ไร้เดียงสา เครื่องเวกเตอร์สนับสนุน การถดถอยโลจิสติก โครงข่ายประสาท การสุ่มฟอเรสต์

นอกจากปัญหาการจำแนกประเภทที่ให้ผลลัพธ์ "ใช่/ไม่ใช่" แล้ว การเรียนรู้ภายใต้การดูแลยังสามารถใช้เพื่อแก้ปัญหาการถดถอยได้อีกด้วย ที่นี่ เราคาดการณ์ในระดับต่อเนื่อง เช่น

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

ตัวอย่างของอัลกอริทึมที่ใช้สำหรับปัญหาการถดถอยภายใต้การดูแล ได้แก่ การถดถอยเชิงเส้น การถดถอยแบบไม่เชิงเส้น และการถดถอยเชิงเส้นแบบเบย์

การเรียนรู้ที่ไม่ได้รับการดูแล

เหตุใดนักพัฒนาเว็บทุกคนจึงควรสำรวจการเรียนรู้ของเครื่อง

ด้วยตัวอย่างการเรียนรู้ภายใต้การดูแลของเรา เราได้กำหนดหมวดหมู่การจำแนกไว้ล่วงหน้า ผู้สมัครจำนองได้รับการอนุมัติหรือถูกปฏิเสธอย่างใดอย่างหนึ่ง

ด้วยการเรียนรู้แบบไม่มีผู้ดูแล เราไม่ได้จัดหมวดหมู่ พวกเขาไม่สามารถใช้ได้ อัลกอริทึมต้องมีข้อสรุปของตัวเอง

เหตุใดเราจึงต้องการใช้แนวทางที่ไม่ได้รับการดูแล

1) บางครั้งเราไม่รู้หมวดหมู่มาก่อน ข้อมูลส่วนใหญ่ที่ลอยอยู่บนอินเทอร์เน็ตนั้นไม่มีโครงสร้าง กล่าวคือ ไม่มีป้ายกำกับ

2) ในบางครั้ง เราไม่รู้ว่าเรากำลังมองหาอะไร เราจึงสามารถขอให้อัลกอริทึมค้นหารูปแบบ/คุณลักษณะที่เป็นประโยชน์สำหรับการจัดหมวดหมู่ได้

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

แนวทางการเรียนรู้แบบไม่มีผู้ดูแล

เทคนิคสองอย่างที่มักใช้ในการเรียนรู้แบบไม่มีผู้ดูแลคือ การเชื่อมโยงและการจัดกลุ่ม .

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

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

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับเทคนิคการเรียนรู้แบบไม่มีผู้ดูแล การค้นหาโดย Google การจัดกลุ่ม k-mean ความคล้ายคลึงของโคไซน์ การจัดกลุ่มตามลำดับชั้น และการจัดกลุ่ม k-ใกล้เคียงที่สุด

การเรียนรู้การเสริมกำลัง

เหตุใดนักพัฒนาเว็บทุกคนจึงควรสำรวจการเรียนรู้ของเครื่อง

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

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

แอปพลิเคชันที่ชัดเจนสำหรับอัลกอริธึมการเรียนรู้แบบเสริมกำลัง ได้แก่ :

  • เกมอย่างหมากรุกและ Go (ฉันขอแนะนำสารคดี AlphaGo ใน Netflix หากคุณยังไม่เคยดู)
  • หุ่นยนต์ (สอนบอทให้ทำงานตามต้องการ)
  • ยานยนต์ไร้คนขับ
  • ที่ปรึกษาหุ่นยนต์ที่ผ่านการฝึกอบรมเพื่อเอาชนะตลาดหุ้น

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับอัลกอริทึมที่อยู่เบื้องหลังการเรียนรู้แบบเสริมกำลัง Google ค้นหา Q-learning, state-action-reward-state-action (SARSA), DQN และนักวิจารณ์ผู้ได้เปรียบแบบอะซิงโครนัส

บทสรุป

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