Hopfield Networks
Hopfield ağları, gürültülü ipuçlarından depolanmış örüntüleri geri çağıran, enerji tabanlı geri çağırmayı modern dikkat mekanizmalarına bağlayan yinelemeli ilişkisel belleklerdir.
Hopfield ağları, örüntüleri depolayan ve bunları eksik ya da bozulmuş girdilerden geri çağıran yinelemeli sinir ağlarıdır. İlişkisel bellek işlevi görürler: Bir örüntünün bir bölümü, örüntünün tamamını geri çağırmaya yarayan ipucudur. Depolanmış bir bellek, enerji manzarasındaki bir vadi gibi davranır ve ağın değişen durumu yakındaki bir vadiye doğru yerleşir.
John J. Hopfield modeli 1982'de sinir ağlarında kolektif hesaplama üzerine çalışmalarıyla tanıttı. "Hopfield ağı", "Hopfield neti" ve "Hopfield modeli" yaygın eş anlamlı adlardır. Geri besleme bağlantıları iç durumu tekrar tekrar güncellediği için bu mimari, yinelemeli sinir ağı ailesine aittir.
Hopfield Ağları Örüntüleri Nasıl Depolar ve Geri Çağırır?#
Klasik bir Hopfield ağı, durumları genellikle −1 veya +1 olarak gösterilen, birbirine bağlı nöronlardan oluşur. Model ağırlıkları simetriktir: A nöronundan B nöronuna bağlantının ağırlığı, B nöronundan A nöronuna bağlantının ağırlığına eşittir. Standart yapılandırmalarda öz bağlantılar sıfıra ayarlanır. Hebb öğrenmesi, depolanmış örneklerde durumları aynı olan nöronlar arasındaki bağlantıları güçlendirerek örüntüleri depolar. Hesaplama açısından bu işlem, her örüntünün dış çarpımını (ikili çarpımlardan oluşan bir matrisi) ağırlık matrisine ekler.
Geri çağırma sırasında her nöron, ağırlıklı girdilerini toplar ve bir eşik aktivasyon fonksiyonu uygular. Asenkron güncelleme, her seferinde tek bir nöronun durumunu değiştirir. Simetrik ağırlıklar, sıfır öz bağlantılar ve eşik değerinin tam ortasında kalındığında durumun değişmemesi koşulları altında, her durum değişikliği ağ kararlı bir yapılandırmaya ulaşana kadar enerji fonksiyonunu düşürür. Bu yapılandırma bir çekicidir; bu yapılandırmaya yakınsayan başlangıç durumları ise çekicinin çekim havzasını oluşturur. Tüm nöronların eş zamanlı güncellenmesi, yapılandırmalar arasında salınımlara yol açabilir.
Depolama ve geri çağırma ayrı işlemlerdir. Depolama bağlantıları değiştirirken geri çağırma, bağlantıları sabit tutup nöron durumlarını değiştirir. Bu nedenle geri çağırma, yeni bir geri yayılım turundan ziyade durum optimizasyonu biçimidir.
Python'da Örüntü Geri Kazanımı#
Aşağıdaki PyTorch örneği, Hebb kuralını kullanarak ikili bir örüntüyü depolar, iki girdinin değerini tersine çevirir ve asenkron güncellemelerle belleği geri çağırır.
import torch
memory = torch.tensor([1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0])
weights = torch.outer(memory, memory) / memory.numel()
weights.fill_diagonal_(0)
state = memory.clone()
state[[1, 6]] *= -1
initial_errors = int((state != memory).sum())
while True:
previous = state.clone()
for i in range(state.numel()):
field = weights[i] @ state
# Preserve the current state when the weighted input is zero.
if field != 0:
state[i] = field.sign()
if torch.equal(state, previous):
break
print(f"Bit errors: {initial_errors} -> {int((state != memory).sum())}")Çıktı Bit errors: 2 -> 0 olur: yinelemeli güncellemeler, standart ilişkisel bellek dinamiklerini kullanarak bozulmuş ipucundan depolanmış örüntüyü yeniden oluşturur.
Sürekli Ağlar, Dikkat ve Uygulamalar#
Sürekli Hopfield ağları, sigmoid gibi dereceli nöron çıktıları kullanır ve denge durumuna doğru ilerler. Hopfield bu formülasyonu 1984'te ortaya koydu. Modern Hopfield ağları, farklı enerji fonksiyonları ve daha yüksek depolama kapasiteleriyle ilişkisel belleği genişletir; sürekli durumlu çeşitleri gerçek değerli vektörler üzerinde çalışır.
Hubert Ramsauer ve çalışma arkadaşları, 2020'de modern Hopfield geri çağırmasını dikkat mekanizmalarıyla ilişkilendirdi. Bir sorgu depolanmış vektörlerle karşılaştırılır, benzerlik puanlarını ağırlıklara dönüştürmek için softmax kullanılır ve ağırlıklı birleşim, ilişkili bilgiyi geri çağırır. Bu yaklaşım, bir transformer içindeki dikkat işlemine ilişkisel bellek açısından bir yorum kazandırır.
Görüntü temsilleri için Ultralytics YOLO26, model.embed() aracılığıyla özellik çıkarımı sunar ve görüntü gömme vektörlerini döndürür. Bu vektörler, modern ilişkisel bellek katmanlarının kullandığı gerçek değerli temsili sağlar.
Yerleşik uygulamalar arasında depolanmış görsel örüntülerin geri kazanılması, büyük özellik koleksiyonlarının havuzlanması ve kısıtlı optimizasyon yer alır. Hopfield ve David Tank, 1985'te rota kalitesini ve kısıtları enerji manzarasına kodlayarak gezgin satıcı problemine analog bir ağ uyguladı. Modern Hopfield havuzlama da çoklu örnek öğrenimi aracılığıyla yüz binlerce biyolojik dizideki bilgileri bir araya getirerek bağışıklık repertuvarı sınıflandırmasını destekler.
İlgili Kavramlar ve Depolama Sınırları#
Bir otomatik kodlayıcı, girdileri yeniden oluşturan bir kodlayıcı–kod çözücü eşlemesi öğrenir; klasik Hopfield ağı ise çekicilere yerleşerek örüntüleri yeniden oluşturur. Bir bellek bankası, temsilleri daha sonra erişmek üzere depolarken Hopfield dinamikleri, bir ipucunun ilişkili durumu nasıl geri çağırdığını tanımlar.
Klasik ağlarda bellekler birbiriyle etkileşime girdiğinde geri çağırma hataları ortaya çıkar. Birbiriyle ilişkili örüntüler çapraz konuşmaya yol açar ve sahte çekiciler, depolanmış belleklerin karışımlarını döndürebilir. Rastgele ve yaklaşık olarak ilişkisiz ikili örüntüleri depolayan büyük klasik Hebb ağları için bilinen kapasite tahmini, geri çağırma hatalarının küçük bir oranına izin verildiğinde nöron sayısının yaklaşık 0,14 katıdır; 1.000 nöron için bu, kabaca 140 örüntü demektir.










