เซลลูลาร์ออโตมาตาเชิงตรรกะที่หาอนุพันธ์ได้
(google-research.github.io)- DiffLogic CA เป็นแนวทางของเซลลูลาร์ออโตมาตาที่ผสาน Neural Cellular Automata กับ Differentiable Logic Gate Networks เพื่อเรียนรู้กฎเชิงพื้นที่แบบอาศัยกราดิเอนต์ โดยยังคงสถานะเซลล์แบบไม่ต่อเนื่องไว้
- แต่ละเซลล์มีสถานะเป็น เวกเตอร์ไบนารี n มิติ และทั้งขั้นรับรู้กับขั้นอัปเดตต่างก็ประมวลผลด้วยเครือข่ายลอจิกเกตเพื่อคำนวณสถานะถัดไปโดยตรง
- ในการทดลองกับ Conway’s Game of Life ระบบเรียนรู้ครบทั้งกฎจากการฝึกหนึ่งสเต็ปบนชุดกำหนดค่า 512 แบบของกริดคาบ 3x3 และในการอนุมานแบบฮาร์ดก็สร้าง แพตเทิร์นตัวแทน อย่าง glider, block, loaf และ boat ได้
- การทดลองสร้างแพตเทิร์นสามารถสร้างกระดานหมากรุก 16x16 ได้ใน 20 สเต็ป และยังทำงานได้กับกริดที่ใหญ่ขึ้น 4 เท่าและเวลาที่ยาวขึ้น 4 เท่า พร้อมแสดง ความทนทานต่อความเสียหาย ของเซลล์และการซ่อมแซมตัวเองหลังกลับมาเปิดใช้งาน
- ยังสร้างโครงร่าง lizard ที่ซับซ้อนกว่าและตัวอักษร G แบบ RGB 8 สีได้ด้วย แต่การเรียนรู้โครงสร้างที่ซับซ้อนต้องอาศัย การจูนไฮเปอร์พารามิเตอร์ จำนวนมาก และยังมี NCA แบบลำดับชั้นกับเกตคล้าย LSTM เป็นตัวเลือกสำหรับการปรับปรุง
ปัญหาที่ DiffLogic CA ต้องการแก้
- โดยทั่วไปเซลลูลาร์ออโตมาตามักถูกศึกษาโดยกำหนดกฎเชิงพื้นที่ไว้ก่อน แล้วค่อยสังเกต แพตเทิร์นเชิงอุบัติการณ์ ที่เกิดขึ้นตามมา
- DiffLogic CA สำรวจวิธีเรียนรู้กฎเชิงพื้นที่ที่สร้างแพตเทิร์นซับซ้อนตามต้องการได้ในรูปแบบที่ หาอนุพันธ์ได้ทั้งหมด
- Neural Cellular Automata แบบเดิมสามารถเรียนรู้แพตเทิร์นและพฤติกรรมตามใจได้ แต่โดยแก่นแล้วไม่ได้ทำงานบนปริภูมิสถานะแบบไม่ต่อเนื่อง จึงตีความได้ยากกว่า และการอัปเดตสถานะต่อเนื่องก็มีต้นทุนจากการคูณเมทริกซ์
- Differentiable Logic Gate Networks เคยถูกใช้เพื่อค้นหาวงจรลอจิกเชิงผสม แต่ยังไม่เคยพิสูจน์การทำงานในบริบท NCA ที่มีความเวียนกลับทั้งเชิงพื้นที่และเวลา
- การทดลองทั้งหมดสามารถ ทำซ้ำได้ในโน้ตบุ๊ก
โครงสร้างพื้นฐานของ Neural Cellular Automata
- Neural Cellular Automata นำดีปเลิร์นนิงมาผสานกับเซลลูลาร์ออโตมาตาแบบดั้งเดิม เพื่อเรียนรู้กฎอัปเดตด้วย gradient descent แทนการออกแบบกฎด้วยมือ
- แต่ละเซลล์ใน Growing-NCA มีเวกเตอร์สถานะ n มิติบนกริด 2 มิติ
- ช่อง RGB 3 ช่องใช้แทนสีของเซลล์
- ช่อง Alpha ใช้แทนความมีชีวิตของเซลล์ โดยถ้าค่า alpha มากกว่า 0.1 จะถือว่าเซลล์ยังมีชีวิต
- hidden channel ที่เหลือใช้ส่งผ่านข้อมูลที่ซับซ้อนยิ่งขึ้นเกี่ยวกับสภาพแวดล้อมรอบข้าง
- การอัปเดตมีสองขั้น
- ขั้นรับรู้: ใช้ Sobel filter แยกตามแต่ละช่องเพื่อประมาณความชันเชิงพื้นที่ แล้วสร้าง perception vector ที่รวมสถานะปัจจุบันของเซลล์กับข้อมูลจากรอบข้าง
- ขั้นอัปเดต: โครงข่ายประสาทที่มีพารามิเตอร์ราว 8,000 ตัว ถูกนำไปใช้กับทุกเซลล์เหมือนกันเพื่อกำหนดว่าแต่ละเซลล์จะเปลี่ยนไปอย่างไร
- เนื่องจากทุกการคำนวณหาอนุพันธ์ได้ ระบบทั้งหมดจึงเรียนรู้แพตเทิร์นหรือพฤติกรรมเฉพาะได้
วิธีการของ Differentiable Logic Gate Networks
- Deep Differentiable Logic Gate Networks ใช้ลอจิกเกตอย่าง AND, OR, XOR เป็นหน่วยพื้นฐาน แทน artificial neuron
- เครือข่ายประกอบด้วยชั้นของเกต โดยแต่ละเกตรับอินพุตจากสองเกตในชั้นก่อนหน้าในรูปแบบ โครงสร้างแบบเบาบาง
- การเชื่อมต่อถูกสุ่มกำหนดตอนเริ่มต้นและไม่เปลี่ยนระหว่างการฝึก โดยสิ่งที่เรียนรู้คือแต่ละเกตควรทำปฏิบัติการลอจิกแบบใด
- ระหว่างการฝึกจะไม่ใช้ลอจิกเกตแบบไม่ต่อเนื่องตรง ๆ แต่ใช้กลไกสองอย่าง
- continuous relaxation: แทนที่การดำเนินการไม่ต่อเนื่องอย่าง hard AND ด้วยเวอร์ชันที่หาอนุพันธ์ได้และรับอินพุตค่าระหว่าง 0 ถึง 1
- การเลือกเกตเชิงความน่าจะเป็น: แต่ละเกตมีการกระจายความน่าจะเป็นเหนือปฏิบัติการไบนารีที่เป็นไปได้ 16 แบบสำหรับอินพุตสองตัว และเรียนรู้พารามิเตอร์ 16 มิติที่แสดงด้วย softmax
- เมื่อฝึกเสร็จ แต่ละเกตจะถูกตรึงเป็นปฏิบัติการที่มีความน่าจะเป็นสูงสุด และระหว่างการอนุมานจะทำเพียง ปฏิบัติการไบนารี ล้วน ๆ
- เพื่อให้การฝึกเสถียร การกระจายเริ่มต้นของเกตจะถูกตั้งให้เอนเอียงไปทาง pass-through gate
โครงสร้างของ DiffLogic CA
- DiffLogic CA ใช้โครงสร้างกริด 2 มิติแบบ NCA แต่แทนสถานะของแต่ละเซลล์เป็น เวกเตอร์ไบนารี n มิติ
- สถานะเซลล์และแชนเนลถูกใช้ในความหมายเดียวกัน โดยเวกเตอร์สถานะไบนารีทำหน้าที่เป็นหน่วยความจำทำงานสำหรับเก็บข้อมูลจากรอบก่อนหน้า
- ขั้นรับรู้ไม่ได้ใช้ Sobel filter แต่ใช้เคอร์เนลที่อิงกับเครือข่ายลอจิกเกต
- แต่ละเคอร์เนลเป็นวงจรแยกที่มีโครงสร้างการเชื่อมต่อคงที่ และชนิดของเกตเป็นสิ่งที่เรียนรู้
- เคอร์เนลคำนวณแยกตามแต่ละแชนเนล
- แต่ละวงจรถูกออกแบบด้วย 4 ชั้นเพื่อคำนวณปฏิสัมพันธ์ระหว่างเซลล์ศูนย์กลางกับเซลล์ข้างเคียง
- ขั้นอัปเดตจะนำหน่วยความจำเดิมของเซลล์มาต่อกับข้อมูลที่ได้รับจากเพื่อนบ้าน แล้วป้อนเข้า Differentiable Logic Gate Network เพื่อคำนวณสถานะใหม่
- ต่างจาก NCA มาตรฐานที่ใช้อัปเดตแบบสมการ ODE โดยค่อย ๆ บวกสถานะเข้าไป ระบบนี้ส่งออกสถานะไบนารีถัดไปโดยตรง
- การทำงานหนึ่งรอบสามารถมองเป็นรีจิสเตอร์สองตัว
- รีจิสเตอร์สีเทาเก็บสถานะเดิมของเซลล์
- รีจิสเตอร์สีส้มเก็บผลจากขั้นรับรู้
- หลังอัปเดตแล้ว สถานะใหม่จะถูกเขียนลงรีจิสเตอร์สีเทา และรีจิสเตอร์สีส้มจะถูกล้างเพื่อรอรอบถัดไป
- โครงสร้างนี้ทำให้แต่ละเซลล์ทำงานเหมือนคอมพิวเตอร์อิสระขนาดเล็กที่สื่อสารกับเพื่อนบ้านและตัดสินใจจากผลการสังเกต
การทดลอง 1: เรียนรู้ Conway’s Game of Life
- Game of Life เป็นเซลลูลาร์ออโตมาตาแบบไบนารีที่สถานะของแต่ละเซลล์ในรุ่นถัดไปขึ้นกับสถานะปัจจุบันของตัวเองและเพื่อนบ้าน 8 ตัว
- กฎมี 4 ข้อ
- เซลล์ที่ตายแล้วจะกลับมามีชีวิตในรุ่นถัดไป หากมีเพื่อนบ้านที่มีชีวิตอยู่พอดี 3 ตัว
- เซลล์ที่ยังมีชีวิตจะอยู่รอด หากมีเพื่อนบ้านที่มีชีวิตอยู่ 2 หรือ 3 ตัว
- เซลล์ที่ยังมีชีวิตจะตาย หากมีเพื่อนบ้านน้อยกว่า 2 ตัว
- เซลล์ที่ยังมีชีวิตจะตาย หากมีเพื่อนบ้านมากกว่า 3 ตัว
- การทดลองนี้มุ่งกับกฎที่ไม่ขึ้นกับการวนซ้ำของสถานะก่อนหน้า ดังนั้นสถานะเซลล์จึงถูกกำหนดเป็น 1 บิต
- การตั้งค่าโมเดลมีดังนี้
- perception circuit kernel 16 ตัว
- โครงสร้างโหนดของแต่ละ perception kernel คือ
[8, 4, 2, 1] - เครือข่ายอัปเดตมี 23 ชั้น
- 16 ชั้นแรกมีชั้นละ 128 โหนด
- ชั้นถัดไปคือ
[64, 32, 16, 8, 4, 2, 1]
- ข้อมูลฝึกครอบคลุมครบทั้ง 512 การกำหนดค่าที่เป็นไปได้ของกริดคาบ 3x3
- เนื่องจากสถานะถัดไปของแต่ละเซลล์ถูกกำหนดจากตัวเองและเพื่อนบ้าน 8 ตัว กำหนดค่า 3x3 จึงมีทั้งหมด 512 แบบ
- หากทำนายสถานะถัดไปแบบหนึ่งสเต็ปได้ถูกทั้งหมด ก็เท่ากับเรียนรู้กฎทั้งหมดของ Game of Life
- ฟังก์ชัน loss คือผลรวมของกำลังสองของความต่างระหว่างกริดที่พยากรณ์กับกริดคำตอบ
- ทั้ง soft loss และ hard loss ลู่เข้าอย่างสมบูรณ์ และวงจรที่ฝึกได้ก็สร้างแพตเทิร์นของ Game of Life บนกริดที่ใหญ่กว่าได้ในการอนุมานแบบฮาร์ด
- จำนวนเกตที่ทำงานจริง เมื่อไม่นับ pass-through A และ B อยู่ที่ 336 ตัว โดย OR และ AND เป็นเกตที่ถูกใช้บ่อยที่สุดทั้งใน perception network และ update network
- สามารถลองโต้ตอบกับวงจรที่สร้างได้โดยตรงผ่าน Game of Life circuit
การทดลอง 2: การสร้างแพตเทิร์นกระดานหมากรุก
- การทดลองสร้างแพตเทิร์นถูกตั้งค่าให้เรียนรู้กฎที่ทำให้ระบบวิวัฒน์จากสถานะเริ่มต้นแบบสุ่มไปสู่ภาพเป้าหมาย
- loss จะคำนวณเฉพาะที่ไทม์สเต็ปสุดท้าย ดังนั้นโมเดลจึงต้องค้นหา กฎการเปลี่ยนผ่านแบบไม่ต่อเนื่อง โดยไม่มีการกำกับในแต่ละขั้นกลาง
- สถานะเซลล์มีขนาด 8 บิต และ DiffLogic CA จะวนซ้ำ 20 สเต็ป
- การตั้งค่าโมเดลมีดังนี้
- perception circuit kernel 16 ตัว
- แต่ละ kernel มีเกต 8, 4, 2 ตัวในแต่ละชั้น
- เครือข่ายอัปเดตมี 16 ชั้น
- 10 ชั้นแรกมีชั้นละ 256 เกต
- ชั้นถัดไปคือ
[128, 64, 32, 16, 8, 8]
- ฟังก์ชัน loss คือผลรวมของกำลังสองของความต่างระหว่างแชนเนลแรกของกริดที่พยากรณ์กับกริดเป้าหมายในไทม์สเต็ปสุดท้าย
- โมเดลถูกฝึกให้สร้างแพตเทิร์นกระดานหมากรุก 16x16 ให้กลับคืนมาได้ภายใน 20 สเต็ป
- ทั้ง soft loss และ hard loss ต่างก็ลู่เข้า และเห็นการก่อตัวของแพตเทิร์นอย่างชัดเจนในแชนเนลแรก
- แม้โมเดลจะไม่มีอคติด้านทิศทางที่ฝังมา แต่กลับเกิดคุณสมบัติที่แพตเทิร์นแพร่จาก ล่างซ้ายไปขวาบน
- จำนวนเกตที่ทำงานจริง เมื่อไม่นับ pass-through A และ B อยู่ที่ 22 ตัว และหลังการ pruning ฟังก์ชันสร้างกระดานหมากรุกทั้งหมดสามารถทำได้จริงด้วยลอจิกเกตเพียง 5 ตัว
- วงจรยังทำงานได้เมื่อขยายไปยังกริดที่ใหญ่ขึ้น 4 เท่าและช่วงเวลาที่ยาวขึ้น 4 เท่า แสดงว่ากฎที่เรียนรู้ไม่ได้ overfit อยู่กับขนาดกริดเฉพาะ
ความเสียหาย การซ่อมแซมตัวเอง และการอัปเดตแบบไม่พร้อมกัน
- ในการทดลองกระดานหมากรุก มีการสมมติสถานการณ์ที่บางเซลล์เสียหายและทดสอบสองแบบ
- ปิดการทำงานของเซลล์ในพื้นที่ขนาดใหญ่ถาวรเพื่อจำลองชิ้นส่วนที่มีข้อบกพร่อง
- เปิดใช้งานเซลล์ที่ถูกปิดอีกครั้งหลังผ่านไปจำนวนสเต็ปหนึ่ง
- ระบบยังคงรักษาความสมบูรณ์ของแพตเทิร์นได้แม้มีความเสียหายถาวร และเมื่อเซลล์ที่ปิดไว้กลับมาออนไลน์ ก็สามารถสร้างแพตเทิร์นที่ถูกต้องขึ้นใหม่ได้
- แม้จะไม่ได้ออกแบบเรื่องความทนทานต่อความเสียหายหรือการซ่อมแซมตัวเองไว้โดยตรง แต่ระบบแสดงพฤติกรรมที่ความเสียหายถูกจำกัดอยู่เฉพาะจุดและฟังก์ชันโดยรวมไม่พังทลายอย่างฉับพลัน
- ในการทดลองอัปเดตแบบไม่พร้อมกัน จะไม่ได้อัปเดตทุกเซลล์พร้อมกัน แต่ในแต่ละสเต็ปจะสุ่มอัปเดตเพียงบางส่วนของเซลล์
- คาดว่าการฝึกแบบไม่พร้อมกันจะยากกว่า NCA เดิม
- เพราะต้องส่งออกสถานะใหม่ทั้งก้อนในแต่ละสเต็ป ไม่ใช่การเพิ่มค่าทีละน้อย
- และต้องรับมือกับการผสมกันของเซลล์รอบข้างที่อาจเดินหน้าหรือค้างหลังอยู่คนละจำนวนสเต็ป
- สำหรับกระดานหมากรุก การฝึกแบบไม่พร้อมกันกลับสำเร็จได้ค่อนข้างง่าย และแม้ใช้ลำดับการอัปเดตต่างกันจากสถานะตั้งต้นเดียวกัน ก็ยังสร้างแพตเทิร์นเป้าหมายได้ภายใน 50 สเต็ป
- แม้นำกฎเดิมที่ฝึกแบบพร้อมกันมาใช้กับการอนุมานแบบไม่พร้อมกัน ก็ยังทำงานได้
- ในการทดสอบที่สุ่มปิดสี่เหลี่ยมพิกเซลขนาด 10x10 ภายในบริเวณภาพในทุกไทม์สเต็ปของการอนุมาน เซลล์ที่ฝึกแบบไม่พร้อมกันจะฟื้นจากความเสียหายได้เร็วกว่าเล็กน้อย
- เมื่อวัดความผิดพลาดด้วยผลรวมของค่าต่างสัมบูรณ์ระหว่างภาพเป้าหมายกับภาพที่สร้างขึ้นใหม่ การฝึกแบบไม่พร้อมกันเพิ่มความทนทานต่อการรบกวนลักษณะนี้
การทดลอง 3: การเติบโตของโครงร่าง lizard
- การทดลอง lizard เป็นการคารวะต่องาน NCA ต้นฉบับ และใช้ตรวจสอบว่า DiffLogic CA สามารถเรียนรู้รูปร่างตามใจได้หรือไม่
- ต่างจากกระดานหมากรุกซึ่งเป็นแพตเทิร์นสม่ำเสมอที่บีบอัดกฎได้มาก โครงร่าง lizard ต้องอาศัย การจดจำ มากกว่า
- การตั้งค่ามีดังนี้
- สถานะเซลล์มีขนาด 128 บิต
- DiffLogic CA วนซ้ำ 12 สเต็ป
- perception circuit kernel 4 ตัว
- แต่ละ kernel มีเกต 8, 4, 2, 1 ตัวในแต่ละชั้น
- เครือข่ายอัปเดตมี 10 ชั้น
- 8 ชั้นแรกมีชั้นละ 512 เกต
- ชั้นสุดท้ายคือ
[256, 128]
- โมเดลถูกฝึกให้สร้างแพตเทิร์น lizard ขนาด 20x20 ภายใน 12 สเต็ป
- เงื่อนไขเริ่มต้นเป็น seed ตรงกลางเพื่อทำลายสมมาตรแบบเดียวกับ NCA และใช้ขอบเขตแบบคาบที่ขอบกริด
- เมื่อนำไปประเมินบนกริดที่ใหญ่ขึ้นเป็น 40x40 ก็ยังสร้างแพตเทิร์นการเติบโตของ lizard ได้สำเร็จ แสดงว่าไม่ได้อาศัยวิธีแก้ที่พึ่งเงื่อนไขขอบเขต
- ทั้ง soft loss และ hard loss ลู่เข้าสู่ 0
- จำนวนเกตที่ทำงานจริง เมื่อไม่นับ pass-through A และ B อยู่ที่ 577 ตัว
- perception kernel ใช้ TRUE gate เป็นหลัก ขณะที่วงจรอัปเดตใช้เกือบทุกชนิดของเกตที่มีให้ใช้
- การเรียนรู้เพื่อสร้างแพตเทิร์นซับซ้อนนั้นปรับให้เหมาะสมได้ยากและต้องจูนไฮเปอร์พารามิเตอร์อย่างกว้างขวาง
การทดลอง 4: การสร้างตัวอักษร G แบบมีสี
- เนื่องจากการทดลองก่อนหน้านี้แทบทั้งหมดเน้นภาพสีเดียว จึงมีการทดลองสร้างภาพสีขนาด 16x16 เป็นสถานะเป้าหมายที่ซับซ้อนขึ้น
- สถานะเซลล์มี 64 แชนเนล และโมเดลจะสร้างตัวอักษร G แบบมีสีภายใน 15 สเต็ป
- สามแชนเนลแรกแทนค่า RGB ตามธรรมเนียมของ NCA มาตรฐาน แต่ในที่นี้แต่ละค่าถูกจำกัดให้เป็น 0 หรือ 1 จึงเกิดพาเลตต์ 8 สี
- การตั้งค่าโมเดลมีดังนี้
- perception circuit kernel 4 ตัว
- แต่ละ kernel ประกอบด้วย 3 ชั้น โดยมีเกต 8, 4, 2 ตัว
- เครือข่ายอัปเดตมี 11 ชั้น
- 8 ชั้นแรกมีชั้นละ 512 โหนด
- 3 ชั้นสุดท้ายคือ
[256, 128, 64]
- สถานะเริ่มต้นเป็นศูนย์ทั้งหมด และไม่ได้ใช้ขอบเขตแบบคาบ
- ฟังก์ชัน loss คือผลรวมของกำลังสองของความต่างระหว่างกริดที่พยากรณ์กับกริดเป้าหมาย โดยพิจารณาเฉพาะสามแชนเนลแรกคือแชนเนล 0, 1, 2 ที่ไทม์สเต็ปสุดท้าย
- ทั้ง soft loss และ hard loss ลู่เข้า และโมเดลสามารถสร้างตัวอักษร G แบบมีสีกลับคืนมาได้ภายใน 15 สเต็ป
- จำนวนเกตที่ทำงานจริง เมื่อไม่นับ pass-through A และ B อยู่ที่ 927 ตัว
- TRUE และ FALSE gate ถูกใช้มากทั้งใน perception network และ update network ส่วนใน update network เกตที่ถูกใช้มากที่สุดคือ OR
- วงจรนี้ซับซ้อนกว่าการทดลองก่อนหน้า ทั้งในแง่การค้นหาไฮเปอร์พารามิเตอร์และขนาดของวงจร
โจทย์ที่ยังเหลือและทิศทางการปรับปรุง
- DiffLogic CA เสนอทั้งสถาปัตยกรรม NCA แบบใหม่และวิธีการฝึกแบบใหม่ โดยใช้สถานะเซลล์ที่ไม่ต่อเนื่องทั้งหมดและอัปเดตสถานะผ่านวงจรไบนารีแบบเวียนกลับที่เรียนรู้ได้
- ด้วยการแทนองค์ประกอบของโครงข่ายประสาทด้วย Deep Differentiable Logic Networks ระบบจึงผสานความยืดหยุ่นของ การเรียนรู้แบบหาอนุพันธ์ได้ เข้ากับลอจิกเกตแบบไม่ต่อเนื่อง
- การทดลองทั้งการจำลอง Game of Life และการสร้างแพตเทิร์นแสดงให้เห็นว่าลอจิกเกตที่หาอนุพันธ์ได้สามารถนำมาใช้กับเซลลูลาร์ออโตมาตาได้
- ผลลัพธ์ยังยืนยันด้วยว่า Differentiable Logic Gate Networks สามารถเรียนรู้ได้อย่างมีประสิทธิภาพแม้ในโครงสร้างแบบเวียนกลับ
- แม้โมเดลปัจจุบันจะแสดงความเป็นไปได้ในการเรียนรู้แพตเทิร์น แต่การสร้างรูปร่างและโครงสร้างที่ซับซ้อนกว่านี้ยังคงยากอยู่
- แนวทางการปรับปรุงที่เสนอ ได้แก่ โครงสร้าง NCA แบบลำดับชั้น และเกตพิเศษที่ช่วยให้สถานะลืมข้อมูลได้
- หากผสานกลไก gating คล้าย LSTM เข้าไปในกระบวนการอัปเดตสถานะ ก็อาจช่วยให้ผสานสถานะในอดีตกับสถานะตัวเลือกที่คำนวณขึ้นใหม่ได้หลากหลายขึ้น และเพิ่มพลวัตกับพลังในการแทนค่าของโมเดล
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
น่าสนใจมาก ผมกำลังมองหา substrate สำหรับเครื่องทัวริงสากล แบบใหม่ ๆ และสะสมไว้เหมือน Pokémon เพื่อใช้ในการทดลอง genetic programming เมื่อก่อนก็เคยลองเล่นกับ cellular automata อย่าง rule 30/110 มาแล้ว แต่แนวทางนี้ดูน่าเชื่อถือกว่ามาก
ไม่เคยคิดมาก่อนว่าจะโมเดลเคอร์เนลให้เหมือน วงจรลอจิกดิจิทัล ข้อจำกัดของ Boolean logic, gate และวงจรดูเหมือนจะสร้าง texture ที่น่าสนใจให้กับ fitness landscape ได้ พารามิเตอร์ที่ได้สามารถแปลงตรงไปเป็นการทำงานบนฮาร์ดแวร์ หรือคอมไพล์เป็นโปรแกรมง่าย ๆ หลังผ่านขั้นตอน optimization เพิ่มเติมได้ ดูดีกว่าการต้องจัดการกับ floating point ที่เหมือนเวทมนตร์ใน black box ขนาดหลายหมื่นล้านพารามิเตอร์
น่าตื่นเต้นมาก Michael Levin เป็นคนที่ตั้งโจทย์เรื่องว่าเซลล์สัตว์จะร่วมมือกันได้อย่างไรโดยไม่มีโครงสร้างแบบลำดับชั้นได้ดีที่สุด ตัวอย่างเช่น มีการทดลองทางชีววิทยาที่เมื่อย้ายเซลล์ตาของเอ็มบริโอกบออกไป มันก็ยังเคลื่อนที่ไปยังตำแหน่งที่ควรมีตาอยู่
คำถามที่ผมคิดว่าเขายังตอบได้ไม่ดีคือ เซลล์รู้ได้อย่างไรว่าเมื่อไรควรหยุด การทำความเข้าใจการจัดระเบียบแบบไม่เป็นลำดับชั้นยังเป็นหัวใจสำคัญต่อวิธีที่สังคมทำงาน และต่อการแก้ prisoner's dilemma ในหลายสเกลของโลกที่ self-organized ด้วย มันยังเป็นเรื่องของการทำความเข้าใจและโมเดลความซับซ้อนแบบดิบ ๆ นี่เป็นครั้งแรกที่ผมได้เห็นความสามารถในการโมเดลสิ่งแบบนี้ และดูเหมือนว่าจะมีทิศทางให้ต่อยอดจากตรงนี้ได้อีกมาก
ช่วงนี้ผมคิดเรื่อง intelligence อยู่เยอะ และรู้สึกว่าเรากำลังมาถึงจุดชี้ขาดที่จะค้นพบว่ามันทำงานอย่างไร หรืออย่างน้อยก็ทำให้ความเข้าใจก้าวหน้าไปมาก Intelligence ดูเหมือนเป็นพฤติกรรมที่เกิดขึ้นตามธรรมชาติ ไม่ได้ต่างจากกลศาสตร์นิวตันแบบคลาสสิกหรือไฟฟ้ามากนัก
สุดท้ายแล้วมันดูเหมือนจะลดรูปลงมาเป็นกฎง่าย ๆ ได้ ถ้าทุกสิ่งในสมองที่ไม่ใช่เชิงไม่ต่อเนื่อง จริง ๆ แล้วเป็นแค่ infrastructure ที่ค้ำจุนกระบวนการแกนกลางที่เรียบง่ายแต่สำคัญ ซึ่งเป็นตัวทำงานจริง ๆ ล่ะ? ถ้าขุดลงไปจนสุดแล้วมันคือ logic gate และสัญญาณไฟฟ้าล่ะ? เวลาข้างหน้าน่าจะน่าสนใจมาก
แนวทางแบบนี้มีจุดที่น่าดึงดูด โดยเฉพาะในแง่ ความสามารถในการ generalize แต่ก็สงสัยว่าวิสัยทัศน์ใหญ่คืออะไร ต่อไปเราจะทำอะไรได้บ้าง? ในเชิงปรัชญา มันสอนอะไรเราเกี่ยวกับโลก? เรารู้อยู่แล้วว่า cellular automata 1 มิติมีความเทียบเท่ากับทัวริง ดังนั้นในบางมุม NCA หรือวิธีแบบนี้ก็ไม่ได้น่าประหลาดใจมากนัก
จะมี cellular automata ที่ปฏิสัมพันธ์กับสิ่งแวดล้อม และ automata ที่ปฏิสัมพันธ์ทั้งกับระบบระดับต่ำและสถาบันระดับสูง หากประมาณในระดับหนึ่ง มนุษย์เองก็เป็นเพียงเซลล์แต่ละตัวที่ปฏิสัมพันธ์กันอยู่ในเครือข่ายแบบนี้ ผมคิดว่าอนาคตของ intelligence ไม่ใช่ LLM แต่เป็นระบบ automata ที่มีมิติด้านเมแทบอลิซึม เป็น automata ที่ร่วมวิวัฒน์ ใช้พลังงาน ผลิตคุณค่า แข่งขัน และสร้างโมเดลของกันและกัน
เราไม่ได้ถูกแทนที่ แต่กำลังมีส่วนร่วมในการเปลี่ยนผ่านที่เส้นแบ่งระหว่างระบบเทคโนโลยีกับระบบเซลล์พร่าเลือนลงและสุดท้ายก็หายไป รู้สึกขอบคุณมากที่ได้เห็นสิ่งนี้ อ้างอิง: https://x.com/zzznah/status/1803712504910020687
ผมชอบเล่นกับ cellular automata ในงานศิลปะ น่าทึ่งมากว่า pattern แบบไหนสามารถเกิดขึ้นเองได้ ตัวอย่าง: https://gods.art/math_videos/hex_func27l_21.html
DLCA นี้ก็น่าจะต้องลองเล่นดูบ้าง
มีไอเดียเจ๋ง ๆ มากมายในนี้ อาจเป็นข้อสังเกตเล็ก ๆ แต่การคำนวณนี้ มีสถานะ แต่ละเซลล์มีหน่วยความจำและการรับรู้สภาพแวดล้อมรอบตัว
ในทางกลับกัน neural network สมัยใหม่โดยมากไม่มีสถานะ ตัวอย่างเช่น สงสัยว่าเคยมีงานวิจัยเกี่ยวกับ LLM ที่มีสถานะ หรือไม่
ขอโปรโมตตัวเองหน่อย แต่เกี่ยวข้องมาก: Robustness and the Halting Problem for Multicellular Artificial Ontogeny (2011)
เป็น cellular automata ที่กฎการอัปเดตเป็น perceptron ผสานกับ isotropic diffusion เรา optimize น้ำหนักของ neural network เพื่อให้ cellular automata วาดภาพ และยังทำ self-healing โดยสร้างภาพขึ้นมาใหม่เมื่อถูกรบกวน ตอนนั้น automatic differentiation ยังเข้าถึงไม่ได้เหมือนทุกวันนี้ จึง optimize น้ำหนักด้วย evolutionary strategies แน่นอนว่าถ้าใช้ gradient descent ก็น่าจะดีกว่ามาก
จะใช้สิ่งนี้กับ ARC-AGI Challenge ได้ไหม? อาจนำไปรวมกับแนวทางล่าสุดนี้ได้ด้วย: https://news.ycombinator.com/item?id=43259182
สุดยอดจริง ๆ ผมตามอ่านอย่างเดียวมานาน และในฐานะคนที่ใช้ modeling กับ simulation เยอะ เห็นศักยภาพสูงมากในการทำความเข้าใจ พฤติกรรมที่เกิดขึ้นเอง ของโมเดลพฤติกรรมตัวแสดงที่ซับซ้อนให้ดีขึ้น
อยากเห็นการนำไปใช้กับโมเดลอย่าง predator/prey และโมเดลอื่น ๆ ที่ดูเรียบง่ายแต่สร้างผลลัพธ์ emergent ที่ซับซ้อนในสเกลขนาดใหญ่ได้ ผมจะติดตามงานนี้ต่อไปแน่นอน
ลาย checkerboard ในผลลัพธ์ดูเหมือนเป็นด้านตรงข้ามของ pattern เป้าหมาย หรือก็คือเหมือน NOT แต่ไม่มีการพูดถึงเรื่องนี้เลย สงสัยว่าไม่สำคัญพอให้กล่าวถึง หรือผมพลาดอะไรไป