HOPFIELD AĞI
Hopfield ağları birim gecikmeli ve nöron sayısı kadar bulunmakta olan geri besleme yolları üzerinden aktarılan bir ağ türüdür. Hebb öğrenme kuralına uygun olarak çalışmaktadır. Bu ağın temsili aşağıdaki şekilde gösterilebilmektedir.

Hopfield ağı temsili
Hopfield ağının yapısından ziyade kullanım alanları ile önümüze çıkmaktadır. Genellikle çağrışımlı bellek tasarımı ve optimizasyon uygulamalarında örnekleriyle karşılaşabiliyoruz. Bunun nedenlerini inceleyecek olursan öncelikle ağ üzerindeki değerlerin neler temsil ettiğini ve bunlar üzerinden ulaşmaya çalıştığımız değerlerin neler olduğunu anlamaya çalışalım.
Bunu açıklamaya çalışırken yapılacak uygulamanın da bir parçası olduğundan ötürü pattern recognition konusu ile alakalı örnekler daha fazlalıkla verilecektir. Öncelikle hopfield ağında depolanması istenen desenler kullanılarak yaratılan bellekte sistemin bulunabileceği lokal minimum değerler, eğer noktaları ve limit çevrimler bulunmaktadır.
Burada sistemimiz için oluşturulmakta olan desendeki veriler doğrudan arama uzayımızda temsil edilmektedir. Bunun için örnek olarak yapılacak uygulamada 5x5 boyutlarından desenler kullanılmaktadır. Bunların temsil edilmesi 25 boyutlu bir uzay üzerinden mümkün olmaktadır. Sistemin aldıkları değerler doğrultusunda bu sistemde ulaşabileceği noktalar yukarıda bahsettiğim limit çevrimler veya denge noktalarından birisi olabilmektedir. Lineer sistemlerde bu denge noktaları sayısı tek olduğundan eninde sonunda buraya ulaşılabilmektedir.
Ancak tek bir noktaya yakınsamak bizim sistemimiz için yeterli olmamaktadır. Burada hedeflenen birden çok denge noktasından birine ulaşılması ve bununda bizim başlangıç değerimize bağlı olarak varmak istediğimiz nokta olmasıdır.
Dinamik sistemlerde elde edilecek bu denge noktalarını belirlememiz mümkündür. Konuyu kontrol problemi olarak inceleyecek olursak sistemin eninde sonunda bir kararlılığa ulaşmasını istemekteyiz. Denge noktalarının sayısının arttırılmasında ise sistemin derecesini büyütmek bir yöntem olabilmektedir. Aslında bir bakıma sistemimizin kararlılığa ulaşabileceği ve bizim için amaç ölçütü olabilecek noktaların sayısı arttırmış olmaktayızdır.
Hopfield çevrimi içerisinde başlangıç değerlerinden itibaren adım adım bu denge noktalarına yaklaşılmaktadır ve sistem üzerinden belirlenen bir denge noktasında son bulunmaktadır. Bu noktalar eğer tanınmak istenen desenler olursa bunlara benzeyen desenler başarılı bir ağ üzerinde bu noktaların çekim alanlarına girmektedirler.
Hopfield modellerinin birde optimizasyon alanında nasıl kullanıldığını inceleyecek olursak amaçlarımız bir miktar değişmektedir. Burada bizim sistemimiz için birden fazla denge noktası bulunmaktadır ancak bunlardan en iyisini seçebilmek bizim hedefimiz olmaktadır. Kontrol sistemlerinden genellikle bir denge noktasına doğru yaklaşılır ve bunun hedef fonksiyonlarımıza uyup uymadığına bakılmaktadır. Eğer enerji fonksiyonlarımızdan elde edilen değerler optimizasyon şartlarımıza uygun değilse arama uzayından rastgele bir nokta seçilerek arama yeniden gerçekleştirilmektedir. Ancak bizim optimum çözümümüzün çekim alanı diğer denge noktalarınınki kadar geniş değilse optimizasyon kısıtları altından sıkışmaktayızdır. Bu nedenle rastgele değerler olmayan arama uzayını daha başarılı şekilde arayacak ve lokal minimumlara düşüldüğünde sistemi buradan kurtaracak çözümler aranması gerekmektedir.
Hopfield bunun için kuantum mekaniğindeki spin camları ve yapay sinir ağları arasında benzerlik kurmuştur. Kısaca Spin camlarındna bahsedecek olursak kuantum mekanik bir sistemde bulunulabilecek belli kuantum seviyeleri bulunmaktadır. Manyetik bir sistemdeki dipol momentlerinin yönelimi için bu yukarı ve aşağı olmak üzere 2 olmaktadır. Bizim desenimizde de binary olarak bakarsak 0 ve 1 ağ üzerindeki temsilleri için bakacak olursak -1 ve 1 olmaktadır. Manyetik sistem içerisinde her bir yönelim belirli bir enerji gerektirmektedir ve bu enerjiler pozitif olup JijSiSj şeklinde bulunmaktadır. Enerjinin her zaman için pozitif olduğunu söylemiştik o zaman momentlerin yönlerinin aynı veya ters olmasına göre J değerleri negatif veya pozitif olmaktadır. Bunların bizim sistemimizdeki karşılıklarının ağırlıklarımız olduğu düşünülmektedir. Bu sayede bir sistem için enerjini maksimumda tutacak denge noktaları elde edilebilmektedir.
Hopfield Ağı Kullanarak Çağrışımlı Bellek Tasarımı
Uygulamamızda çeşitli desenleri hatırlayacak ve bu desenler haricinde verilen değerler için sistemin denge noktalarına yakınsayacak bir sistem elde edilmek istenmektedir. Ağımızın alacağı parametreler sistem üzerinde tanıtılması istenen desen sayısına bağlı olarak seçilmektedir. Küçük networkler üzerinde fazla sayıda desen tanıtmak mümkün olmamaktadır bunun yanında büyük bir ağ üzerinde ise istenenden fazla denge noktası elde edileceğinden her zaman için bizim hedeflediğimiz denge noktasına gitmeyebilir farklı denge noktalarında sonlanması mümkün olur.
Bu nedenle örneğimizdeki pattern büyüklüğü ve buradan elde edilebilecek belleğin öğrenme kapasitesi arasındaki ilişkiyi incelemekte fayda olmaktadır.

Network büyüklüğü ile kapasitenin ilişkisi
Hopfield ağı ile saklama kapasitesi arasında lineer bir ilişki olduğu söylenmektedir. Ancak bunların içerisinden fazlalıklı bellek olmasızın ne kadar desen saklanabileceğine aşağıdaki ifade ile ulaşabilmekteyiz.
Bizim örneğimiz için inceleyecek olursak.
Mmax = 3.88 olmaktadır yani yaklaşık olarak 4 deseni hatasız olarak tanıtmamız mümkündür. Ancak bu ilişki için verilen diğer bir ifade göre ise p > 0.38*n koşuluna uyması gerekmektedir aksi takdirde bellek anlamsızlaşmaktadır. Burada n bizim bir deseni temsil ederken kullandığımız piksel sayısı, p ise mümkün olan maksimum desen sayısını vermektedir.
Örüntülerin Belirlenmesi
Örüntülerin seçilmesi esnasında belirlenen net bir strateji olmamakla beraber birbirlerine benzerlikleri en az olan patterlar seçilmeye özen gösterildi. Burada bir patternda kenarlar seçilmişse diğerlerinde orta bölgeden desenler alınmaya çalışıldı ve sonuç olarak aşağıdaki gibi 5 farklı desen oluşturuldu.

Ağın Tasarımı
Ağın tasarımı sırasında belirli kriterler etkili olmaktadır bunların arasında kullanılan hücre modeli ve belleğin oluşturulması sırasında kullanılan ağırlıkların hesaplanma yöntemidir.
Uygulamada kullanılan desenler için 5x5 boyutlarda görüntüleri işleyebilmek için 25 adet nöron kullanılmaktadır ve bu nöronların modeli McCulloch-Pitts modeline uygun olarak seçilmiştir.
Ağırlıkların Hesaplanması
Ağırlıkların hesaplanmasında öncelikli olarak performansı etkileyeceği düşünülerek ağırlık matrisinin simetrik olduğu bilgisini ve diyagonal hatta tüm değerlerin sıfır olduğu göz önüne alınarak katsayılar hesaplandı.
Uygulama içerisinde ağırlıklar her iki şekilde de hesaplandı ve önemli performans farkları gözlendi. Ağırlıkların iteratif olarak belirlendiği yöntem en iyi sonuçları vermektedir. Bunun nedenleri üzerine yorumlar yapılacaktır. Bu yöntemlerden daha az başarılı olan yöntem farklı örüntülerin iç çarpımlarının kullanıldığı yoldur. Bunun hesaplanmasında aşağıdaki ifade kullanılmaktadır.
Burada i ve j birbirine eşit olmamak üzere hesaplama yapılmaktadır. P değeri öğretilmek istenen desen sayısına xi değerleri ise kullanılan desendeki değerlere karşılık düşmektedir.
Bu yöntemde görülen problem oluşturulan ağırlık matrislerinin belleklilik işlevini çok iyi yerine getirmediğidir. Buradan elde edilen ağırlıklar daha sonra uygulamada kullanıldığında artık belleklere veya farklı girişler için aynı çıkışlar sonlanmaktadır.

Ağırlıkların iç çarpımlar yoluyla hesaplandığında elde edilen sonuç
Yukarıda görüldüğü üzere sisteme verilen patternlar için başarılı sonuçlar alınamamıştır. Bunların nedenleri arasında bu şekilde elde edilen ağırlık matrisinde her deseni tanıtmanın mümkün olmaması olabilir. Belirli desen takımları için başarılı olabilmektedir. Bu da iç çarpımların toplamları sonucu elde edilen w değerlerinde desenler arasındaki korelasyonun sonuçlarındandır.

Ağırlık matrisi
Bu yöntem sonucu hesaplanan ağırlık matrisini görselleştirecek olursak aşağıdaki gibi bir sonuç elde edilmektedir. Burada matrisin simetrik yapısını görmek mümkündür.
Sisteme hatırlatılmaya çalışılan desenlerin haricinde bir desen verildiğinde ise bunu benzer şekilde verilen desenlerden birine benzetmektedir. Burada yatay çizgilerden oluşan desenin çekim alanının büyük olması sonucu verilen desenlerin buna benzetildiğini düşünmekteyim.

Diğer bir yöntem ise sonuçların oldukça başarılı olarak gözlenmiş olduğu iteratif bir denklem ile yakınsayarak bulunduğu yöntemdir. Ağırlıkların aşağıdaki denkleme uygun olarak hesaplanması saplanmaktadır.
Yukarıdaki ifade de α değeri 0< α<1 arasında seçilmekte olan bir değer olmaktadır. Bu sistemin yakınsama hızını etkileyen bir kriter olmaktadır.
Bu ifade sonucu belirlenen ağırlıkların görsel hali aşağıdaki şekildedir.

Denklem ile hesaplanmış ağırlıklar
Burada öğretilmek istenen desenler için w değerleri bulunmaktadır. Bu ifadede w değerleri başlangıçta [-1, 1] aralığından seçilmektedir. Daha sonra yakınsama sonucu kullanılacak değerler elde edilmektedir. Bu yöntemle verilen sistemlere ilişkin çıkışlar başarılı şekilde hatırlanmıştır.

Ayrıca bozularak verilen desenler için de sonuçlar aynı başarıda olmaktadır. Burada 1. Desenin bozulması sonucu elde edilen aşağıdaki görüntü ve karşılığında elde edilen sonuç aşağıda yer almaktadır.

Aynı zamanda farklı değerler için test edildiğinde farklı durumlarda oluştuğu gözlenmiştir. Burada görülen ilk desen için sistemin limit çevrime girmiş olduğudur. Aşağıdaki şekilde görüldüğü üzere sistemin 2 farklı denge noktası etrafında değişmektedir.

Limit Çevrim
Ayrıca verilmiş olan her desen bizin bellekte anımsamamızı istediğimiz desenlerden olmayabilmektedir. Bunlara artık bellek denmektedir. Tasarladığımız sistemde öğretmekte olduğumuz desen sayısı haricinde hala bellek bulunmaktadır. Bu belleklerde belirli desenler için oluşmuştur. Aşağıda bunlardan birinin örneğini görmek mümkünüdür.

Artık bellek
Ayrıca oluşabilecek bir diğer durum ise öğretilen desenlerin simetriklerinin de denge noktası oluşturmuş olmasıdır. Bununda bir örneği aşağıda yer almaktadır. Burada elde edilen kareli desenin tersi bizim anımsatmak istediğimiz desenlerden birisidir.