Diffusion Policies
Difüzyon politikaları, gözlemlere göre koşullandırılmış rastgele gürültüyü gidererek robot eylemleri üretir ve regresyonun ortalamasını aldığı çok modlu davranışları korur.
Difüzyon politikası, bir difüzyon modelinin görüntü üretmesine benzer biçimde eylemler üreten bir robot kontrol politikasıdır: rastgele gürültüyle başlar ve robotun o anda gözlemlediklerini koşul olarak kullanarak gürültüyü adım adım giderir; geriye motor komutlarından oluşan bir dizi kalır. İnsan gösterimleriyle eğitilen bu davranışsal klonlama biçimi, görevi yapmanın birbirinden farklı birkaç yolunu tek bir ortalamada birleştirmek yerine temsil edebilir. Columbia Üniversitesi, Toyota Araştırma Enstitüsü ve MIT'den Cheng Chi, Shuran Song ve çalışma arkadaşları, yöntemi 2023 RSS konferansında Diffusion Policy: Visuomotor Policy Learning via Action Diffusion başlıklı çalışmayla tanıttı; 4 robotik manipülasyon kıyaslamasındaki 12 görevde önceki taklit öğrenme yöntemlerini ortalama %46,9 oranında geride bıraktı.
Çok Modlu Gösterimlerde Regresyon Neden Başarısız Olur#
İnsan gösterimleri, aynı gözlem için çoğu zaman birden fazla geçerli eylem içerir. Bir kişi bir bloğu iterken bir gösterimde soldan, sonrakinde sağdan yaklaşabilir; bir engelle karşılaşan sürücü de engelin her iki yanından geçebilir. Ortalama kare hata kullanan kayıp işlevi ile regresyon üzerinden eğitilen politika bu seçeneklerin ortalamasını tahmin eder; ortaya, göstericilerin hiçbirinin yapmadığı, örneğin doğrudan engele doğru sürmek gibi bir eylem çıkabilir. Önceki çözümler eylemleri bölmelere ayırdı, Gauss karışımlarına uydurdu veya eğitim sırasında negatif örnek gerektiren ve çoğu zaman kararsız olan Örtük Davranışsal Klonlama gibi enerji tabanlı modeller kullandı. Bir difüzyon modeli, eylemlerin herhangi bir dağılımını temsil edebilir ve gürültü tahmin kaybı sıradan regresyon kadar kararlı biçimde eğitilir.
Bu PyTorch örneği, bir engelin çevresinde eşit sayıda sola ve sağa yönelen gösterimlerle küçük bir difüzyon politikası eğitir:
import torch
from torch import nn
torch.manual_seed(0)
# Demonstrations at one observation: facing an obstacle, experts steer left (-1) or right (+1) equally often
actions = torch.cat([torch.randn(500, 1) * 0.05 - 1, torch.randn(500, 1) * 0.05 + 1])
print(f"Regression policy (mean squared error) outputs: {actions.mean():.2f}")
# Diffusion policy: train a network to predict the noise mixed into an action at denoising step k
K, betas = 50, torch.linspace(1e-4, 0.2, 50)
alpha_bar = torch.cumprod(1 - betas, 0)
net = nn.Sequential(nn.Linear(2, 64), nn.SiLU(), nn.Linear(64, 64), nn.SiLU(), nn.Linear(64, 1))
optimizer = torch.optim.Adam(net.parameters(), lr=1e-3)
for _ in range(3000):
k, noise = torch.randint(0, K, (1000, 1)), torch.randn(1000, 1)
noisy = alpha_bar[k].sqrt() * actions + (1 - alpha_bar[k]).sqrt() * noise
loss = (net(torch.cat([noisy, k / K], 1)) - noise).pow(2).mean()
optimizer.zero_grad()
loss.backward()
optimizer.step()
# Sampling: start from pure noise and remove the predicted noise one step at a time
a = torch.randn(1000, 1)
with torch.no_grad():
for k in reversed(range(K)):
eps = net(torch.cat([a, torch.full_like(a, k / K)], 1))
a = (a - betas[k] / (1 - alpha_bar[k]).sqrt() * eps) / (1 - betas[k]).sqrt()
a += betas[k].sqrt() * torch.randn_like(a) if k > 0 else 0
print(
f"Diffusion policy samples: {(a < -0.5).float().mean():.0%} steer left, {(a > 0.5).float().mean():.0%} steer right"
)Regresyon politikası, doğrudan engele yönelen 0.00 çıktısını verir. Difüzyon politikasının örneklerinin %44'ü sola, %55'i sağa yönelir; iki mod arasındaki pay yalnızca yaklaşık %1'dir. Böylece her örnek geçerli bir manevrayı seçer.
Difüzyon Politikaları Nasıl Çalışır#
Eğitimde, bir gösterimden alınan eylem dizisine 100 adımdan rastgele seçilen bir adımda Gauss gürültüsü eklenir ve bir sinir ağı, gürültülü eylemlerden ve gözlemden bu gürültüyü tahmin edecek şekilde eğitilir. Çalışma sırasında robot, saf gürültüden oluşan bir dizi örnekler ve en güncel gözlemini koşul olarak kullanarak dizideki gürültüyü giderir. Özgün makale, gerçek robotlarında 10 DDIM gürültü giderme adımı kullandı; NVIDIA RTX 3080 GPU'da çıkarım gecikmesi 0,1 saniyeydi.
Politika eylemleri öbekler hâlinde planlar ve kayan ufuklu bir döngüyle yeniden planlama yapar. Makaledeki görevlerin çoğunda son 2 zaman adımını gözlemler, sonraki 16 eylemi tahmin eder, ilk 8'ini uygular ve ardından yeni gözlemlerden hareketle yeni bir dizideki gürültüyü giderir; bu sayede değişikliklere tepki verirken hareket akıcı kalır:
Yazarlar gürültü tahmini için iki ağ oluşturdu: başlangıç noktası olarak önerdikleri ve gözlem özelliklerini FiLM koşullandırmasıyla ekleyen 1 boyutlu zamansal bir evrişimli sinir ağı ve eylemlerin hızla değiştiği görevler için bir Transformer. Kamera görüntüleri, genel ortalama havuzlama yerine uzamsal softmax havuzlama ve yığın normalleştirmesi yerine grup normalleştirmesi kullanılan, sıfırdan eğitilmiş bir ResNet-18 ağından geçirilir. Hız yerine hedef konumlarını tahmin etmek tutarlı biçimde daha iyi sonuç verdi ve politikayı gecikmeye karşı daha dayanıklı kıldı.
Politikalar pikseller yerine düşük boyutlu bir durumu da gözlemleyebilir. Bir robotun T biçimli bir bloğu hedefe ittiği Push-T kıyaslamasında, duruma dayalı varyant bloğun 9 adet 2B anahtar noktasını ve uç efektörün konumunu gözlemler. Özel anahtar noktası düzeniyle eğitilmiş bir Ultralytics YOLO26 poz tahmini modeli, veri kümesi YAML dosyasında kpt_shape ile belirlenen bu tür anahtar noktalarını kamera karelerinden result.keypoints.xy üzerinden döndürür.
Daha Hızlı ve Daha Büyük Ardıl Modeller#
Gürültü giderme, her eylem öbeği için ağın birkaç kez çalıştırılmasını gerektirir; bu nedenle sonraki çalışmaların çoğu gerçek zamanlı çıkarımı hedefler. Aaditya Prasad ve çalışma arkadaşlarının 2024'te geliştirdiği Consistency Policy, difüzyon politikasını tek veya birkaç adım gerektiren bir tutarlılık modeline damıtarak çıkarımı on kat hızlandırır. Yanjie Ze ve çalışma arkadaşlarının 2024'te geliştirdiği 3D Diffusion Policy (DP3), görüntüler yerine kompakt nokta bulutlarını koşul olarak kullanır; benzetimli 72 görevin çoğunu yalnızca 10 gösterimle ele alır ve her biri 40 gösterimle eğitilen 4 gerçek robot görevinde %85 başarıya ulaşır.
Aynı yaklaşım artık robot temel modellerini de çalıştırıyor. Physical Intelligence'ın π0 modeli (2024), akış eşleme ile eğitilmiş bir eylem uzmanını 3 milyar parametreli bir görsel-dil modeline ekler ve robotları saniyede 50 kareye kadar hızlarda kontrol etmek için 50 eylemlik öbekler üretir. Hugging Face'in açık kaynaklı LeRobot kütüphanesi, bedenlenmiş yapay zekâ araştırmaları için Difüzyon Politikası'nı diğer taklit öğrenme politikalarıyla birlikte uygular.
Difüzyon Politikaları ve İlgili Terimler#
- Eylem öbekleme: Tek bir eylem yerine gelecekteki eylemlerden oluşan bir diziyi tahmin etme. Difüzyon politikaları öbeklerini gürültü gidererek üretir; Action Chunking with Transformers (ACT) politikası ise koşullu bir varyasyonel otomatik kodlayıcı kullanır.
- Difüzyonla zorlama: Her dizi belirtecine kendi gürültü düzeyini verir; böylece tek bir nedensel model adım adım ilerleyip hedeflere yönelik plan yapabilir. Bellek gerektiren bir robot görevinde, belleksiz Difüzyon Politikası başarısız olurken bu yöntem %80 başarı gösterdi.
- Difüzyon modelleri: Görüntü, video ve ses üretiminde kullanılan, kademeli bir gürültü ekleme sürecini tersine çevirmeyi öğrenen genel üretici model ailesi. Difüzyon politikası, gözlemlerle koşullandırılan eylemler üzerinde çalışan bir difüzyon modelidir.










