- ระบบ Autoresearch เป็นโครงสร้าง constraint optimization loop ที่ให้เอเจนต์ LLM ปรับแก้
train.py ซ้ำ ๆ เพื่อปรับปรุงประสิทธิภาพ โดยทำวงจรอัตโนมัติตั้งแต่การตั้งสมมติฐานไปจนถึงการประเมินผล
- การทดลองรันใน สภาพแวดล้อม sandbox แบบคอนเทนเนอร์ เพื่อปิดกั้นการเข้าถึงเครือข่ายและการรันโค้ดตามอำเภอใจ
- ใช้ ชุดข้อมูล Ukiyo-eVG สำหรับฝึกด้วยภาพพิมพ์แกะไม้ญี่ปุ่นประมาณ 11,000 ภาพและข้อมูล annotation โดยทำผลงานได้ Mean Rank 34.30, R@5 ราว 53% ด้วยโมเดลที่อิง CLIP
- การปรับปรุงหลักมาจาก การผ่อนข้อจำกัดของพารามิเตอร์ temperature (-113 Mean Rank) และ การจูนไฮเปอร์พารามิเตอร์ (-30 Mean Rank) โดยบันทึกการปรับปรุงประสิทธิภาพ 54% ผ่านการคอมมิต 13 ครั้งจากการทดลอง 42 ครั้งในหนึ่งวัน
- เอเจนต์ LLM มีประสิทธิภาพเมื่อพื้นที่ค้นหาถูกกำหนดไว้อย่างชัดเจน แต่หลังเข้าสู่ช่วงเปลี่ยนโครงสร้าง ความไม่เสถียรเพิ่มขึ้นจนเห็น ข้อจำกัดของการวิจัยอัตโนมัติเต็มรูปแบบ
แนวคิดหลัก
- Autoresearch คือโครงสร้าง constraint optimization loop ที่มีเอเจนต์ LLM เป็นศูนย์กลาง โดยเอเจนต์จะปรับแก้
train.py เพื่อปรับปรุงตัวชี้วัดการประเมินแบบวนซ้ำ
- เอเจนต์จะอ่านคำสั่งจาก
program.md และใช้ scratchpad.md เป็นบันทึกงานเพื่อจดกระบวนการทดลอง
- การสำรวจแบ่งเป็นหลาย เฟส (phase) โดยเริ่มจากการจูนไฮเปอร์พารามิเตอร์ ต่อด้วยการเปลี่ยนโครงสร้างขนาดเล็ก และขยายไปสู่การสำรวจแบบอิสระที่มีข้อจำกัดน้อยลง
- ลูปทั้งหมดถูกออกแบบเป็นวงจร ตั้งสมมติฐาน → แก้โค้ด → ฝึก → ประเมิน → คอมมิตหรือย้อนกลับ → ทำซ้ำ
- แต่ละการทดลองถูกจำกัดให้เสร็จภายในราว 5 นาที เพื่อเร่งการวนซ้ำและลดการ overfit
- เอเจนต์สามารถแก้
train.py ได้อย่างอิสระภายในเวลาที่กำหนด
-
การทำ Sandbox
- เพื่อป้องกันความเสี่ยงจากการรันโค้ดตามอำเภอใจ จึงรันลูปการฝึกใน สภาพแวดล้อมคอนเทนเนอร์ และปิดการเข้าถึงเครือข่าย
run.sh จัดการโฟลว์การทดลองทั้งหมด และ Claude Code สามารถแก้ได้เฉพาะ train.py กับ program.md
- การรัน Python โดยตรง, การติดตั้ง pip, การเข้าถึงเครือข่าย, git push ฯลฯ ถูกจำกัดทั้งหมด
- มีการเปิดเผย implementation ที่เกี่ยวข้องบน GitHub repository
ชุดข้อมูล
- เนื่องจากไม่สามารถเข้าถึงชุดข้อมูล X-ray ทางการแพทย์ที่ใช้ในงานวิจัยเดิมได้ จึงเปลี่ยนมาใช้ชุดข้อมูล Ukiyo-eVG
- มีภาพพิมพ์แกะไม้ญี่ปุ่นประมาณ 11,000 ภาพ พร้อม annotation แบบวลี-กล่องขอบเขต (bounding box)
- แปลง bounding box เป็น Gaussian heatmap แล้วเพิ่มเข้าไปในอินพุตของโมเดล โดยใช้แนวทางคล้ายกับกลไก expert attention ในงาน eCLIP ดั้งเดิม
- heatmap ช่วยชี้นำให้โมเดลโฟกัสกับบริเวณเฉพาะ
การตั้งค่าการทดลองกับ Claude Code
- Claude Code อัปเกรดโค้ดวิจัยเดิมให้ทำงานบนสภาพแวดล้อม Python รุ่นใหม่ พร้อมเขียน data loading สำหรับชุดข้อมูลใหม่และ scaffold ของลูปการทดลอง
- มีการตั้งค่า split สำหรับ cross-validation, logic การประเมิน และไอเดียตั้งต้นใน
program.md
- ใช้ Mean Rank เป็นตัวชี้วัดการประเมิน และรายงาน Recall@K ควบคู่ในผลลัพธ์สุดท้าย
- มีการระบุว่า Mean Rank ใช้เพื่อการตัดสินแบบตรงไปตรงมา แต่ Median Rank อาจเหมาะกว่าเพราะไวต่อ outlier น้อยกว่า
- องค์ประกอบของโมเดล: backbone แบบ CLIP คือ ViT-Small (22M) + DistilBERT (66M) + HeatmapProcessor รวมแล้วราว 90M พารามิเตอร์
- การฝึก: 800 สเต็ป (ประมาณ 3 นาทีต่อการทดลอง บน RTX 4090)
- การประเมิน: วัด Mean Rank และ Recall@K บนชุดทดสอบ 1,000 ภาพ
- ประสิทธิภาพตั้งต้น: Val Mean Rank 344.68, img→txt R@1 17.2%, txt→img R@1 16.5%
ผลการทดลอง
- ตลอดหนึ่งวันมีการทดลองทั้งหมด 42 ครั้ง ในจำนวนนี้คอมมิต 13 ครั้ง และย้อนกลับ 29 ครั้ง
- Mean Rank ลดจาก 344.68 เหลือ 157.43 ลดลง 54%
- เมื่อนำมาฝึกขั้นสุดท้ายบนชุดข้อมูลทั้งหมด คะแนนทดสอบกลับสูงกว่าคะแนน validation
- สิ่งนี้บ่งชี้ว่าการทดลองสั้น 800 สเต็ปอยู่ในภาวะ underfitting
- ประสิทธิภาพบนชุดทดสอบสุดท้าย: Mean Rank 34.30, img→txt R@5 53.0%, txt→img R@5 51.4%
จุดปรับปรุงสำคัญ
-
การแก้ temperature clamp (-113 Mean Rank)
- ในโค้ดมี พารามิเตอร์ temperature ที่เรียนรู้ได้ แต่ถูกตรึงไว้ที่ 2 เอเจนต์จึงผ่อนข้อจำกัดนี้และทำให้ประสิทธิภาพดีขึ้นมาก
- เป็นผลเดี่ยวที่มีอิทธิพลมากที่สุดต่อการปรับปรุงทั้งหมด
-
Optuna++ (-30 Mean Rank)
- การปรับปรุงถัดมาส่วนใหญ่เกิดจาก การจูนไฮเปอร์พารามิเตอร์
- การเพิ่ม projection dimension และปรับ learning rate ใหม่ ช่วยเพิ่มผลลัพธ์ได้อีกราว 30 จุด
- งานน่าเบื่อที่มนุษย์ต้องทำซ้ำ ๆ ถูกเอเจนต์ทำได้เร็วและเป็นระบบกว่า
-
ช่วงผลตอบแทนลดลง
- หลังเฟส 4 (การเปลี่ยนโครงสร้าง) อัตราความสำเร็จของสมมติฐานจาก LLM ลดลงอย่างมาก
- การเปลี่ยน กลไก attention หรือการลองไอเดียแบบ moonshot ส่วนใหญ่ล้มเหลว
- ช่วงท้ายของการสำรวจมีการลองแบบค่อนข้างสุ่มมากขึ้น
-
ความสำคัญของ Sandbox
- Claude Code บางครั้งลืมข้อจำกัดสิทธิ์และพยายามเรียก bash แบบผิด ๆ หรือหยุดลูประหว่างรอการฝึก แสดงพฤติกรรมที่ยังไม่เสถียร
- จึงยังมีข้อจำกัดต่อการทำงานแบบอัตโนมัติเต็มรูปแบบ
ข้อสังเกตส่งท้าย
- ตลอดกระบวนการ 90% แรกดำเนินไปอย่างราบรื่น แต่ 10% ท้ายต้องการการแทรกแซงจำนวนมาก
- เอเจนต์ LLM สามารถทำวิจัย ML ได้อย่างมีประสิทธิภาพเมื่ออยู่ใน พื้นที่ค้นหาที่กำหนดไว้อย่างชัดเจน
- ลูปคอมมิต-ย้อนกลับของ Autoresearch มีประโยชน์ในฐานะกลยุทธ์การสำรวจที่มีโครงสร้าง
- แต่เมื่อขยายไปสู่พื้นที่ที่ยังไม่รู้จัก ลูป optimization จะเริ่มไม่เสถียร
- ข้อจำกัดที่ให้เปลี่ยนได้เพียงหนึ่งอย่างต่อการทดลองอาจ เข้มงวดเกินไป สำหรับการสำรวจไอเดียขนาดใหญ่
- ในอนาคต มีการเสนอให้เพิ่ม ขั้นวางแผน หรือใช้ subagent เป็นทิศทางการปรับปรุง
- หลังจบการทดลอง การทำงานร่วมกับ Claude Code ก็จบลงพร้อมการกลับสู่กิจวัตรประจำวัน
คำขอบคุณ
- ชุดข้อมูล Ukiyo-eVG: มีภาพพิมพ์แกะไม้ญี่ปุ่นราว 11K ภาพพร้อม annotation แบบวลี-กล่องขอบเขต
- Autoresearch: อ้างอิงจากไอเดียดั้งเดิมของ Andrej Karpathy
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ถ้าลิงก์หลักช้า มีคนแนะนำให้ลองใช้ เวอร์ชัน archive.is
ฉันมักใช้ LLM เพื่อสำรวจงานวิจัยเดิมหรือใช้คิดปัญหาในมุมอื่น
90% ของผลลัพธ์ใช้กับโดเมนของฉันไม่ได้ แต่ที่เหลืออีก 10% ค่อนข้างมีประโยชน์
แต่การมี เอเจนต์ ที่ลองทุกอย่างที่ LLM แนะนำจริง ๆ มีต้นทุนสูงเกินไป ($$$)
ในรายการคำแนะนำมักมี ไลบรารีเฉพาะทาง ที่เลิกดูแลไปแล้วเยอะ
ในทางกลับกัน “ที่ปรึกษาผู้เชี่ยวชาญ” ของบริษัทก็มักเสนอไอเดียหลุดโลกแบบเดียวกัน เลยอยากให้เอเจนต์ไปจัดการพวกเขาแทนมากกว่า
แต่จะมีความหมายก็ต่อเมื่อการทดสอบแต่ละครั้งเร็วพอเท่านั้น ในงานของฉัน การทดสอบหนึ่งครั้งใช้เวลาครึ่งวัน เลยปล่อยรันข้ามคืนได้ยาก
เวลาเห็นคนตั้งค่าอะไรอย่าง MCP server หรือ AGENTS.md ก็เหมือนเป็นหลักฐานว่า LLM ไม่ได้ทำงานอย่างที่โฆษณาไว้
ถ้าปรับแต่งให้เข้ากับเวิร์กโฟลว์เฉพาะก็ดีมาก แต่ก็สงสัยว่าจะ สเกล ได้จริงไหม
ถ้าไม่มีเงินทุนมหาศาลมาค้ำการเทรนและโครงสร้างพื้นฐาน มันจะเป็น โมเดลธุรกิจ ที่ยั่งยืนได้หรือ?
ประโยคที่ว่า “เอเจนต์ทำตัวเหมือนอัลกอริทึมปรับแต่งไฮเปอร์พารามิเตอร์” น่าประทับใจมาก
แกนหลักคือไฟล์ system prompt ชื่อ
program.mdเพียงไฟล์เดียว โดยวนซ้ำ “ปรับปรุง train.py → รันการเทรน → ประเมินผล → บันทึกผลลัพธ์”ที่เหลือก็เป็นเพียงโมเดล ML แบบใดก็ได้
การเอาโค้ดที่ทำงานอยู่ให้ LLM แล้วให้มันวนซ้ำแก้บั๊ก วัดประสิทธิภาพ และประเมิน test coverage เป็นแนวทางมาตรฐานของทีมเรา
การใช้คนละโมเดลในแต่ละรอบให้ความรู้สึกว่าได้ มุมมองใหม่ ซึ่งดีมาก
ฉันสงสัยว่าเหตุใด “Autoresearch” ถึงกลายเป็นประเด็นร้อนขนาดนี้
ฉันคิดว่าคอขวดของ AI/ML มีแต่ คุณภาพข้อมูล หรือ ทรัพยากรคอมพิวต์ มาโดยตลอด และไม่แน่ใจว่านี่ช่วยเรื่องนั้นได้หรือเปล่า
เคยมีแนวทางอย่าง Bayesian optimization หรือ Gaussian Process เหมือนกัน แต่สุดท้าย random search กลับดีกว่า
สิ่งที่ต่างคือ LLM สามารถอ่านงานวิจัยแล้ว อนุมานเชิงสามัญสำนึก ได้
มันไม่สมบูรณ์แบบ แต่ก็อาจดีกว่าวิธีเดิม
ไม่ใช่แนวคิดใหม่ทั้งหมด แต่ดูเหมือนคาดหวังว่าจะพึ่งพา brute-force น้อยลง
กล่าวคือ LLM สามารถ นำไปใช้ประโยชน์ จากงานที่มีคนทำไว้แล้วได้
แก่นของ ML คือการหาว่า ฟังก์ชันแมปปิง แบบไหนดีกว่าสำหรับอินพุต X เดิม
แค่เพิ่มคอมพิวต์ไม่ได้แก้ปัญหาเสมอไป
โดยสรุป มันใช้ได้ผลจริง LLM ทั้ง หาบั๊ก และ ทำ optimization ได้
เรื่องพวกนี้ใช้ Claude Code ก็ทำได้เร็วมาก
คุณค่าที่แท้จริงของ Autoresearch น่าจะอยู่ที่ การสำรวจสถาปัตยกรรม
อยากรู้ว่ามีใครเคยลองใช้กับ exploratory modeling บ้างไหม
พอดู commit log (ลิงก์ GitHub) แล้วพบว่าส่วนใหญ่เป็น การจูนไฮเปอร์พารามิเตอร์
ถ้าแค่นั้นก็รู้สึกว่าไม่คุ้มค่าโทเคน ($$$)
อาจปรับปรุงได้ด้วยการให้ฟีดแบ็กเรื่องต้นทุนผ่าน LoRa adapter
ในงานต้นฉบับเขาใช้ข้อมูล X-ray ทางการแพทย์ แต่เพราะเข้าถึงไม่ได้จึงเปลี่ยนมาใช้ Ukiyo-eVG (ภาพพิมพ์แกะไม้ญี่ปุ่น 11K ภาพ) แทน
มันดูเป็นการเปลี่ยนแบบแปลก ๆ เพราะมีข้อมูลภาพการแพทย์ฟรีจำนวนมากอยู่ใน Cancer Imaging Archive ด้วย
ฉันหวังมาสักพักแล้วว่าจะมีใครทำการทดลองแบบนี้ และก็ดีใจที่มีคนทำจริง
ส่วนที่ว่า “รอจนการเทรนจบไม่ไหวเลยปิดบทสนทนาไป” นี่ตลกมาก
ขอบคุณที่แชร์ผลลัพธ์
นี่ดูใกล้เคียงกับ การลองผิดลองถูกแบบมีโครงสร้าง มากกว่าจะเป็นงานวิจัยอัตโนมัติ
สุดท้ายหัวใจสำคัญคือ คุณภาพของตัวชี้วัดการประเมิน ถ้ามันอ่อน ก็แค่ optimize ไปผิดทิศได้เร็วขึ้นเท่านั้น