19 คะแนน โดย GN⁺ 2025-01-07 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เดิมทีไม่ได้ตั้งใจจะทำงานสาย AI/ML เลย
  • แค่ใช้เครื่องมือที่จำเป็นต่องานไปเรื่อย ๆ ก็เลยได้ใช้ AI และ ML อย่างเป็นธรรมชาติ และสุดท้ายก็เข้ามาอยู่ในวงการนี้ (รองศาสตราจารย์ที่ CMU)
  • ต้อนรับปีใหม่ด้วยการย้อนกลับไปดูโปรเจ็กต์ AI/ML สำคัญ ๆ ที่เคยมีส่วนร่วมตั้งแต่ปี 2000

if กับตัวเลขสุ่ม: ประสบการณ์เขียนโปรแกรมยุคแรก

  • เริ่มจากวิดีโอเกม:
    • ได้แรงบันดาลใจจากทามาก็อตจิ จึงลองพัฒนาเกมสัตว์เลี้ยงเสมือนด้วย VB6
    • ใช้ตัวจับเวลาและเงื่อนไขเพื่อสร้างตรรกะง่าย ๆ:
      • ค่าความหิวเพิ่มขึ้นทุก 10 วินาที
      • ถ้าความหิวเกินระดับที่กำหนด สุขภาพจะลดลงทุก 3 วินาที
      • ถ้าสุขภาพเหลือ 0 สัตว์เลี้ยงจะล้มลง
    • ผลลัพธ์: เกมน่าเบื่อและไม่สนุก
  • พัฒนาเกมช่วงมัธยมปลาย:
    • พัฒนาเกมยิงยานอวกาศ 2D:
      • ผู้เล่นต้องป้องกันคลื่นศัตรู (waves) และเก็บ power-up
    • รูปแบบการปรากฏของศัตรูถูกเขียนด้วยประโยค if ยาว ๆ โดยอาศัยตัวเลขสุ่มและสถิติการเล่นเกม (เวลาเล่น จำนวนครั้งที่ยิง HP เป็นต้น)
    • ผลลัพธ์:
      • เกมเริ่มให้ความรู้สึกมีพลวัตและคาดเดาได้ยากขึ้นเล็กน้อย
      • แต่ก็ยังไม่ดึงความสนใจได้นาน ผู้เล่นส่วนใหญ่เลิกเล่นอย่างรวดเร็ว
  • สำรวจแนวคิด AI:
    • ช่วงกลางทศวรรษ 2000 ซื้อหนังสือ Programming Game AI by Example เพื่อเรียนรู้วิธีนำ AI มาใช้ในเกม
    • ตอนแรกยังนำไปใช้ไม่ได้ แต่ภายหลังก็ช่วยโปรเจ็กต์ต่าง ๆ ได้มาก
  • ประสบการณ์ในช่วงนี้กลายเป็นพื้นฐานสำหรับการทดลองกลไกเกมที่ซับซ้อนและน่าสนใจยิ่งขึ้น

state machine และ higher-order function: การพัฒนาเกมช่วงมหาวิทยาลัย

  • วิวัฒนาการของเกม:
    • ตอนอยู่มหาวิทยาลัยได้ยกระดับการพัฒนาเกมขึ้นไปอีกขั้น และสร้างเกมที่มีคนเล่นหลายล้านคน
    • บางเกมทำรายได้ได้จริง
    • เมื่อทักษะการเขียนโปรแกรมเริ่มสุกงอม ก็สามารถนำสิ่งที่เรียนจากหนังสือมาใช้จริงได้
  • การประยุกต์ใช้เทคนิค:
    • Finite State Machine:
      • ใช้สร้างรูปแบบพฤติกรรมของศัตรู
    • Factory Pattern:
      • ใช้สร้างและจัดการอ็อบเจ็กต์
    • Higher-order Functions:
      • ออกแบบให้สามารถผสมพฤติกรรมของศัตรูและอาวุธเข้าด้วยกันได้
      • ตัวอย่าง:
        • อาวุธส่ายไปทางซ้ายขวาด้วยแอมพลิจูด 25 องศา และยิงกระสุนเป็นทรงกรวยแคบ
        • กระสุนจะเล็งนำเป้าหมายใกล้เคียงเล็กน้อย และมีโอกาส 1% ที่จะ ricochet (เด้งสะท้อน)
  • ความมีชีวิตชีวาของเกม:
    • ค่อย ๆ เติมองค์ประกอบแบบไดนามิกตามสถานะของเกมและอินพุตจากผู้เล่น
    • ใช้ความสุ่มและความสามารถในการประกอบรวมเพื่อเพิ่มความหลากหลาย
    • แนวทางนี้ไม่ได้ใช้แค่กับพฤติกรรมศัตรู แต่ถูกนำไปวางซ้อนเป็นเลเยอร์ทั่วทั้งเกม ไม่ว่าจะเป็นสไปรต์ particle effect เอฟเฟกต์เสียง กระสุน และแอนิเมชัน
  • ผลลัพธ์:
    • เกมมีชีวิตชีวาและสนุกขึ้นมาก
    • แต่ก็ได้ตระหนักว่านี่ไม่ใช่ AI เป็นเพียงการผสมกันอย่างดีของ if กับการเรียกฟังก์ชัน
  • แม้เกมจะให้ความรู้สึกเหมือน "มีชีวิต" ได้ แต่ในขั้นนี้ก็ยังเป็นเพียงตรรกะและฟังก์ชันที่ออกแบบด้วยมืออยู่ดี

ตรรกะอันดับหนึ่ง การแทนความรู้ Support Vector Machine และโครงข่ายประสาท: ประสบการณ์ช่วงต้นบัณฑิตศึกษา

  • เริ่มเรียนปริญญาโท:
    • หลังเรียนจบก็สมัครเข้าเรียนปริญญาโทแบบเฉียดเส้นตาย
    • วิชาที่เลือกได้มีจำกัด จึงลงเรียน AI และ neural network
    • รู้สึกผิดหวังกับวิชาที่เลือกแทนวิชาคอมไพเลอร์ที่อยากเรียนแต่แรก:
      • เน้นทฤษฎีเชิงนามธรรมมาก โดยแทบไม่มีภาคปฏิบัติหรือการลงมือสร้างจริง
      • ใช้เวลาถกเถียงกันมากกับเรื่องนิยามต่าง ๆ
  • วิชา AI:
    • ใช้ตำรา Artificial Intelligence: A Modern Approach (Third Edition)
    • เรียนแนวคิดอย่างการวางแผน เอเจนต์ ตรรกะอันดับหนึ่ง และการแทนความรู้
    • ได้คลังคำศัพท์ใหม่สำหรับการคิดปัญหา แต่ยังยากที่จะนำไปใช้จริง
  • วิชา neural network:
    • เรียนทฤษฎีอย่าง perceptron, Support Vector Machine (SVM), feedforward network, Hopfield model และ backpropagation
    • ขาดคำแนะนำที่ชัดเจนสำหรับการลงมือทำจริง:
      • คำตอบของอาจารย์ที่ว่า "ลองไปหาแพ็กเกจ MATLAB ดู" ทำให้รู้สึกท้อ
  • พัฒนาโปรแกรมวิดีโอแชตแบนด์วิดท์ต่ำ:
    • ใช้ OpenCV ตรวจจับใบหน้าและแยกบริเวณต่าง ๆ:
      • จำแนกสถานะของมุมปาก ตำแหน่งคิ้วซ้าย และการลืมตาของตาขวา เป็นต้น
      • รวบรวมภาพใบหน้าที่ติดป้ายกำกับแล้วหลายร้อยภาพจากฐานข้อมูล
      • ส่งสถานะไบนารีที่จำแนกได้ผ่าน socket แล้วเรนเดอร์อวตารด้วย OpenGL
    • ผลลัพธ์:
      • ระบบไวต่อการเปลี่ยนแปลงของแสง ปรับพารามิเตอร์ยาก และใช้เวลาฝึกนาน
      • OpenCV ใช้งานค่อนข้างยาก และการแก้โปรแกรมก็ยุ่งยาก
  • สิ่งที่ได้:
    • เรียนรู้อะไรมากมายจากการลองผิดลองถูกหลายครั้ง
    • เดือนมกราคม 2013 ได้อัปโหลดวิดีโอเดโมแรก ๆ และแชร์ออกไป:
      • วิดีโอเดโม แม้จะดูสมัครเล่น แต่ก็มียอดดูเกิน 1,000 ครั้ง
  • ช่วงเวลานี้เป็นกระบวนการเติบโตสำคัญในการเรียนรู้วิธีนำทฤษฎีมาสร้างของจริงและแก้ปัญหาในทางปฏิบัติ

decision tree, clustering และอัลกอริทึมแนะนำ: ประสบการณ์ในระดับปริญญาเอก

  • เป้าหมายงานวิจัย:
    • พยายามวิเคราะห์ข้อมูลล็อกจากตัวแก้ไขโค้ดเพื่อแก้ปัญหาต่อไปนี้:
      • ระบุว่านักพัฒนาติดขัดหรือหลงทางอยู่ในโค้ดหรือไม่
      • ทำนายว่าไฟล์ถัดไปที่นักพัฒนาจะเปิดสำรวจคือไฟล์ใด
      • แนะนำโค้ดที่น่าจะเกี่ยวข้องได้อย่างแม่นยำ
  • วิธีการเชิงสถิติที่ใช้:
    • อัลกอริทึม C4.5: สร้าง decision tree
    • K-means และ DBSCAN: clustering เหตุการณ์
    • Apriori และ collaborative filtering: ค้นหาความสัมพันธ์ระหว่างเหตุการณ์
    • ผลลัพธ์:
      • แม้เป็นวิธีที่เรียบง่าย แต่ให้ประสิทธิภาพที่ทรงพลังอย่างน่าประหลาดใจ
      • ในหลายกรณี วิธีเหล่านี้เพียงพอและได้ผลดีกว่าโครงข่ายประสาทที่ซับซ้อน
  • ผลงาน:
    • ตีพิมพ์งานวิจัย ผ่านประสบการณ์ฝึกงานหลายครั้ง และสร้างเครื่องมือสำหรับนักพัฒนา
    • สำเร็จการศึกษาปริญญาเอก
  • แหล่งข้อมูลที่เกี่ยวข้อง:
    1. บทความวิจัย: การวิเคราะห์ข้อมูลเกี่ยวกับวิธีที่นักพัฒนาค้นหาข้อมูล
      Foraging and Navigations, Fundamentally: Developers Predictions of Value and Cost (PDF))
    2. รายงานฝึกงานที่ Microsoft: ประสบการณ์สร้างบอตรีวิวโค้ด
      When users never use the features they asked for
  • ในช่วงปริญญาเอก เขาใช้เทคนิคเชิงสถิติเพื่อแก้ปัญหาจริง และสร้างผลงานที่มีความหมายทั้งในแวดวงวิชาการและภาคปฏิบัติ

ส่วนติดต่อผู้ใช้อัจฉริยะ: จุดเริ่มต้นงานวิจัยในฐานะอาจารย์

  • กำหนดทิศทางงานวิจัยใหม่:
    • ในปี 2018 ในฐานะอาจารย์สาย tenure-track ได้เลือก เครื่องมือสำหรับนักพัฒนาอัจฉริยะ (Intelligent Developer Tools) เป็นหัวข้องานวิจัย
    • ตอนแรกแนวคิดยังคลุมเครือ แต่เริ่มจากโปรเจ็กต์ที่ใช้โมเดลทำนายเพื่อระบุและแก้ความเข้าใจผิดของโปรแกรมเมอร์ล่วงหน้า
  • ข้อเสนองานวิจัยฉบับแรก:
    • เป้าหมายของโครงการ:
      1. ใช้เทคนิควิเคราะห์โปรแกรมและโมเดลทำนายเพื่อระบุความเข้าใจผิดที่โปรแกรมเมอร์มือใหม่มีต่อการทำงานของโปรแกรม
      2. แก้ความเข้าใจผิดและอธิบายตรรกะโดยไม่รบกวนผู้ใช้
      3. สร้างโค้ดทดสอบเพื่อจับการเปลี่ยนแปลงพฤติกรรมของโปรแกรมที่ไม่ได้ตั้งใจ และป้องกันความเข้าใจผิดในอนาคต
    • สรุป:
  • โปรเจ็กต์ที่สอง:
    • วิจัยการทำนายความต้องการข้อมูลของโปรแกรมเมอร์ และสร้างส่วนติดต่อผู้ใช้แบบเรียลไทม์ตามนั้น
    • ตัวอย่าง:
      • สำหรับโปรแกรมเมอร์ที่กำลังสำรวจประวัติ Git ระบบจะแสดงชุด commit ที่แนะนำในรูปแบบภาพ
  • การรวมงานวิจัยเข้าด้วยกัน:
  • ผลลัพธ์และข้อจำกัด:
    • โครงการเริ่มต้นได้สำเร็จพร้อมได้รับทุนสนับสนุน แต่เขาลาออกจากตำแหน่งอาจารย์ก่อนที่งานวิจัยจะเดินหน้าอย่างเต็มตัว
  • ช่วงนี้ถือเป็นจุดเปลี่ยนสำคัญในการทำให้งานวิจัยด้านส่วนติดต่อผู้ใช้อัจฉริยะเป็นรูปธรรม และออกแบบวิสัยทัศน์ขนาดใหญ่ขึ้นมา

program synthesis และโมเดลภาษาขนาดใหญ่ (LLMs): ประสบการณ์ที่ Microsoft

  • เข้าร่วม Microsoft:
    • เดือนมกราคม 2022 เข้าร่วมทีม program synthesis ของ Microsoft
    • ในปีเดียวกัน ChatGPT เปิดตัว ทำให้ AI เริ่มถูกนำไปใช้ในทุกวงการ และกลายเป็นช่วงเวลาที่เหมาะอย่างยิ่งในการทุ่มเทกับงานด้าน AI
  • แนวทางที่ระมัดระวังต่อการใช้ AI:
    • แม้อยู่ในทีม AI แต่ก็มีจุดยืนคัดค้านการใช้ AI หากไม่มีเหตุผลที่หนักแน่นพอ:
      • ตั้งคำถามว่ามีเป้าหมายชัดเจนในการแก้ปัญหาของผู้ใช้หรือไม่
      • ตรวจสอบว่าสามารถแทนที่ด้วยประโยค if ง่าย ๆ ได้หรือเปล่า
      • พิจารณาว่าส่วนติดต่อแบบภาษาธรรมชาติเป็นตัวเลือกที่เหมาะสมจริงหรือไม่
    • ความเห็นที่เกี่ยวข้อง:
  • โปรเจ็กต์สำคัญ
  • งานปัจจุบันและอนาคต
    • พัฒนาเครื่องมือ AI แบบอิสระ:
      • หลังออกจาก Microsoft ก็ทุ่มเทให้กับโปรเจ็กต์ AI ส่วนตัว
      • เครื่องมือสำคัญ:
        • Mirror: เครื่องมือที่ขับเคลื่อนด้วย AI
        • Promptclipper: เครื่องมือจัดการพรอมป์ต์
  • เขาพัฒนาโซลูชันนวัตกรรมผ่านโปรเจ็กต์ที่หลากหลายซึ่งอิงกับ AI และ LLM และยังคงทำวิจัยและพัฒนาเครื่องมือ AI อย่างต่อเนื่องในปัจจุบัน

ปิดท้าย

  • เป็น 25 ปีที่สนุกมาก
  • แล้วจากนี้จะทำอะไรต่อ? ก็จะสอน เรียนรู้ และสร้างสิ่งใหม่ต่อไป

1 ความคิดเห็น

 
GN⁺ 2025-01-07
ความคิดเห็นบน Hacker News
  • เคยอยู่ในทีม AI แต่พยายามหลีกเลี่ยงการนำ AI มาใช้หากไม่มีเหตุผลที่น่าเชื่อถือจริง ๆ คิดเสมอว่ากำลังแก้ปัญหาของผู้ใช้หรือไม่ จำเป็นต้องใช้ LLM หรือเปล่า หรือแค่มี if ไม่กี่บรรทัดก็พอแล้ว ต้องมั่นใจด้วยว่าภาษาธรรมชาติเป็นอินเทอร์เฟซที่เหมาะสมจริง ๆ
    • แนวทางที่เน้นการใช้งานจริงในสาย AI ให้ความรู้สึกสดใหม่ เคยมีประสบการณ์สร้างเครื่องมือที่โมเดลรีเกรสชันแบบง่ายทำผลงานได้ดีกว่าโครงข่ายประสาทเทียม และยากที่จะหลีกเลี่ยงแรงต้านจากทีมเมื่อไม่ทุ่มสุดตัวให้กับ AI
  • ผ่านเส้นทางคล้ายกันมา 14 ปี และมักสงสัยเสมอว่าถ้าเป็นทุกวันนี้จะต่างไปอย่างไร
    • เราเติบโตไปพร้อมกับอุตสาหกรรมและค่อย ๆ เรียนรู้สิ่งที่ซับซ้อนขึ้นได้ ทุกวันนี้นักศึกษาที่เพิ่งจบต้องเผชิญกับความซับซ้อนที่สั่งสมมาหลายทศวรรษตั้งแต่งานแรก
  • เพิ่งเห็นคนหนึ่งที่ออกจาก UTK ไป และบล็อกโพสต์ที่เขาเขียนทำให้นึกทบทวนอีกครั้งเรื่องการไปสายวิชาการหลังเรียนจบปริญญาโท
  • หน้าเว็บที่ไม่รกไปด้วยโฆษณาและป๊อปอัปให้ความรู้สึกสดชื่น เป็นข้อความที่สะอาด เป็นระเบียบ และมีโครงสร้างเรียบง่าย
  • สำหรับหลายคน AI คือการเดินทางที่สนุกในการสร้างสิ่งน่าทึ่ง เห็นด้วยว่าผลลัพธ์นั้นน่าทึ่ง แต่ก็น่าเศร้าที่นักวิทยาศาสตร์ไม่คิดถึงผลกระทบในวงกว้างที่งานของพวกเขามีต่อสังคม เมื่อสถานะทางสังคมของพวกเขาสูงขึ้น สิ่งที่พวกเขาสร้างก็เปลี่ยนโครงสร้างสังคมอย่างถึงราก AI เป็นหนึ่งในองค์ประกอบที่อันตราย และการที่บริษัทยักษ์ใหญ่เชิดชูปัญญาเพื่อดึงดูดผู้คนคือสัญญาณของหายนะ