มุมมองจากนักพัฒนา: High-Resolution Neural Cellular Automata
ศิลปะและคณิตศาสตร์มาบรรจบกันใน Machine Learning
Cellular Automata ใช้ตารางของเซลล์ โดยแต่ละเซลล์จะเปลี่ยนสถานะตามกฎที่กำหนดไว้ตายตัว ตัวอย่างที่โด่งดังคือ Conway's Game of Life ซึ่งคุณเพียงแค่ทำตามกฎง่ายๆ เพื่อสร้างรูปแบบที่ซับซ้อนขึ้นมา
Neural Cellular Automata (NCA) เปลี่ยนสิ่งนี้ แทนที่จะใช้กฎที่ตายตัว แต่จะใช้ Neural Network ในการเรียนรู้กฎจากข้อมูลแทน โดยเครือข่ายจะทำนายสถานะถัดไปของเซลล์จากการดูเซลล์ข้างเคียง ซึ่งทำให้เกิดภาพที่ซับซ้อนและเหนือจริง
การสร้างภาพที่มีความละเอียดสูงนั้นเป็นเรื่องยาก เพราะเมื่อขนาดของตารางใหญ่ขึ้น การคำนวณทางคณิตศาสตร์ก็จะซับซ้อนเกินกว่าที่เครือข่ายจะรับไหว
ผมใช้เทคนิคที่เรียกว่า pixel shuffle เพื่อแก้ไขปัญหานี้
- ผมทำการ downsample ตารางให้มีความละเอียดต่ำลง
- ผมฝึกฝน (train) เครือข่ายบนตารางขนาดเล็กนี้
- ผมทำการ upsample ผลลัพธ์เพื่อให้ได้ภาพที่มีความละเอียดสูง
คุณสามารถนำไปปรับใช้ได้โดยใช้ PyTorch นี่คือวิธีการวางโครงสร้างโมเดล NCA แบบง่ายๆ:
import torch import torch.nn as nn import torch.optim as optim
class NCA(nn.Module): def init(self): super(NCA, self).init() self.conv = nn.Conv2d(3, 64, kernel_size=3, padding=1)
def forward(self, x):
x = torch.relu(self.conv(x))
x = torch.max_pool2d(x, 2)
x = torch.relu(self.conv(x))
x = torch.max_pool2d(x, 2)
return x
NCA ช่วยให้คุณเชื่อมโยงช่องว่างระหว่างโค้ดและศิลปะดิจิทัลเข้าด้วยกัน มันเป็นสาขาที่กำลังมีการศึกษาวิจัยอย่างต่อเนื่องสำหรับการสร้างภาพจำลองทางวิทยาศาสตร์ (scientific visualization) และการออกแบบเชิงสร้างสรรค์
ชุมชนแห่งการเรียนรู้เพิ่มเติม: https://t.me/GyaanSetuAi