avatar_alisumer

Pic ile basit yapay sinir ağı çalışması

Başlatan alisumer, 02 Şubat 2026, 15:26:21

alisumer

Farkındayım biraz uçuk fikir gibi geliyor ama denemelerimde gayet başarılı olduğunu gördüm özeltle anlatmaya çalışacağım müsadenizle. Öncelikle klasik ANN yerine SNN+ANN hibrit bir model kurdum simulasyonda 3 analog giriş verileri giriş nöronlarında 0-255 arasına düşürülüyor giriş katı fazla birşey yapmıyor yani sonrasında herbir giriş  belli konuda eğitimde hassaslaştırılan 6 adet nöron bulunan gizli katmana verileri gönderiyor olanları tek gizli nöron üzerinden anlatayım. girişlere X,Y,Z diyeceğim ağırlıklarına XW,YW,ve ZW nöron biası=B ve sürekli birikim olmasın diye nöron sızıntısı belirleyip ona da L diyelim. Bu gizli katman nöronunun bir akümülatörü var ağırlıklı çarpımların , biasın toplandığı sızıntının çıkarıldığı ve bir önceki çevrimden kalan Akümülatör değerinin toplandığı yani A= ((At-1)+(x*XW)+(Y*YW)+(z*ZW)+B)-L şeklinde bir aktivasyon kodu var bu kod sonunda bu nörona verdiğimiz membran(yani toplamların bu değeri geçtiğinde çıkış vermesi için belirlediğimiz üst limit) değerini aştığında gizli katman nöronu çıkışa bir Spike atıyor nöron ateşliyor yani ilk kısım ANN gibi sayısal büyüklükle çalışıyor gizli katman çıkışa puls atıyor bundan sonrası ise SNN gibi zamana duyarlı çalışıyor yani ilk pulse atan nöron kazanıyor ve geriye dönük kazanan gizli katman nöronunun ve girişte en yüksek katkıyı veren girişin ağırlıkları ödüllendiriliyor yani bir miktar arttırılıyor Spike atımı sonrası ilgili nöron akümülatörü resetleniyor aynı bir kapasitör gibi veri ile doluyor eşik aşılınca yükünü boşaltıyor .bu davranış bu nöronun örneğin girişteki veriler bir ivme sensörüne bağlı ise  hangi eksenden ivme oluştuğuna dair bilgiyi tutuyor. Tek nöronla biraz muallak bir bilgi olduğu için diğer nöronları farklı alanlarda eğitmek gerekiyor örneğin darbenin büyüklüğüne bağlı bir bilgiyi tutmak için ödüllendirmeyi membran eşiğini küçülterek veya biası büyüterek de yababilir bu nöron davranışlarını değiştirecektir .şimdi diyeceksiniz hesaplama hassas olmaz diye çarpma işlemlerinde Q0.8 formatı ile sabit noktalı işlem yapılıyor bu format 8 bit için inanılmaz kolay bir format ile virgüllü sayı üretiyor tabi çözünürlük biraz düşük ama işe yarar derecede örneğin x ekseninden 200 verisi geldi bizim XW miz 0.5 değerinde olsun bu 128 anlamına gelir  1 değeri ise 255 anlamında  çarpma işlemi yapılınca 200*128=25600 değerini tekrar @0.8 sonuç yapmak için 8 sağa kaydırınca sonuç 100 çıkar yapıldığında bu format bize yaklaşık 0,0039 adım hassasiyeti verir ki bayağı bir yeterli. tek sensör verisi ile işlemde dikkat etmeniz gereken en önemli şey ise giriş verilerinin olabildiğince çok olması örneğin titreşim frekansı ivme sensörü için 4. bir veri olabilir yada örneğin bir motora bağlı ivme sensörü bu verilerle yapay sinir ağını besleyip çıkışta rulman salınımı mı var hangi devirde salınım başlıyor bu bir arızamı gibi kararları verebiliyor. en iyi tarafı da tek nöron ve 3 giriş kodunu şimdi bitirdim gerisi kopyala yapıştır biraz modifiye ve bu eğitimi isiste veya mplab dmci simulasyonunda  ivme sensörü yerine pot ile analog kanal kullanarak eğitilebiliyor ağırlıklarını kendi değiştiriyor
Hep meraktan

alisumer

#1
aktivasyon kodunun işlemesi için birkaç basit kural var ilki Sızıntının Biastan kesinlikle büyük olması gerekiyor aksi halde akümülatör büyüklüğü belli bir doyuma ulaştıktan sonra girişler 0 verse bile şişmeye devam eder ve spike atar.Sızıntı oranı da öğrenme ile değişebilir tabi ama her halükarda Biastan anlamlı bir miktar büyük olmalı az büyüklük   hızlı ve yanlış spike çok büyüklük nöron hafızasını çabuk kaybetme oran genellikle ilk başlangıç için L=B*2 çalışan bir yöntem. birde akümülatör büyüklüğü çarpımların toplamını tutacaği için en az 16 bit olmalı tercihen 24 yada 32 bit.örneğin şöyle bir ağ yapısı için 3+6+3 toplam 32 ağırlık  yani 32 byte ram yeterli her bir nöronun akümülatör sızıntı biaslar dersek toplasan yaklaşık 130  bytelik bir ram kullanır biraz da sağa sola hunharca ram savursak bile basit bir Pic için bile çalışabilir bir yapı olur. bu sistemin hızına gelirsek öhenüz gizli katman N1 üzerinde simule ettim ve tek nöron ağırlıkları her bir giriş değeri için ayrı ayrı eğitilmesi gerektiğinden >1000 çevrim sonrası yerine oturması olası görünüyor not henüz o kadar çalıştırmadım ama gidişatından ağırlık değişimlerinin azaldığı anlaşılıyor bu da öğrendiği ve refleks oluşturduğu anlamına geliyor. giriş verilerinin çeşitlendirilmesi önemli demiştim örneğin bir motorun arızasını anlamasını istiyorsan 4 giriş olarak akım sensöründen veri okunabilir bu eğitim süresini oldukça iyileştirir çünkü çıkışın doğruluğu direkt akım üzerinden ölçeklenebilir rulman arızası bir eksene parazit bindirir ilgili nöron çıkışı geç verir ama akım sensörü artışı görür ve membranı deler sonrasında da parazit üreten eksen ağırlığına ve gizli katman çıkış ağırlığına ceza olarak artı puan verir ki bir dahaki döngüde daha erken spike oluştursun yani ceza ödül yönteminde eksiltme  yada artırma ikisi de ceza olarak kullanılabilir..
Hep meraktan

alisumer

#2

bu mplab simülasyonunda tek nöron testine ait ağırlık değişmlerini elle yaptığım yönlendirmeli eğitim nörondan beklenen davranışa en yakın ağırlıkları yaklaşık olarak el ile ayarladıktan sonra eğitimi kendi kendine yapması için salı vermek en kısa yol diğer yol ise başta rasgele ağırlıklar verip çıkışa göre kendiliğinden oturmasını beklemek ki çok uzun sürüyor koddaki ASM komutları sadece tek gizli katman nöronuna ait bütün işlemleri ve spike atma komutunu içeriyor yani tam çalışan gizli nöron oradaki kodda. 8x8=16 bit çarpma için sağa sola kaydırmaları ve toplamaları makrolarda yazdım okunması daha basit oluyor ama her bir makro işini Asm makro çalışmalarını anlatığım konudaki (https://etepic.com/index.php/topic,4971.0.html) gibi yapıyor. kullanılan değişkenler
H1V =AKÜMÜLATÖR
H1VT=MEMBRAN (taşma limiti 500 verilmiş)
XDAT=XDATS eksen datası y ve z için de aynışekilde
XW1 ,YW1,ZW1 = eksenlerin ağırlıkları
H1B = nöron1 in biasi (20 verilmiş)
H1L = nöron 1 in sızıntısı (100) verilmiş)
SHFTR16 XDATS,8,XDATS = 16 bitlik xdats yi sekiz sağa kaydırıp XDATS ye yazar
Hep meraktan

ahmet_zxc

abi bu öğrenebilen asansörlerdeki öğrenme algoritması değil mi?

alisumer

piyasada satılan bi ürün varmı bilmiyorum açıkçası örneklerine bakmadımda .sadece bir firma için yaptığım ivme sensöründe usb çıkış istemişlerdi nerede kullanacaklarını sorduğumda robot koldaki salınımları öğrenmesi için bir sensör arayışları olduğunu söylediler amaç sensörden aldıkları verilerle bilgisayar ortamında yapay zekayı verilendirip kararı bilgisayarın verdiği bir makine öğrenmesi gibi birşey yapacaklarını söylediler ayrıntılarını işe yaradımı bilmiyorum sattım gitti ham veri gönderen bi sensör. bende bunu bilgisayar değil de sensör  kendi işlemcisi ile bu kararı verebilecek kadar sinir ağına sahip olup çalıştırabilirmiyim bir bakayım dedim hep meraktan yani. SNN modeli yeni çıktı karşıma bu model insan beynindeki nöronlara oldukça benzer çalışıyor sadece eşik aşıldığında spike atıyor tek bilmen gereken şey hangi nöronun ateşlediği klasik ANN gibi tüm katmanlarda sayısız çarpma toplama işlemi yapmak zorunda değil bu yüzden model minnak işlemciler için ideal gibi görünüyor ve biyolojik Nörona benzemesi ilginç geldi.Forumlarda da hiç raslamadım bu konuda bişeyler yapana vardır illaki örneği de muhtemel arduino esp falan kullanılıyordur
 
Hep meraktan

alisumer

bayağı ilginç bir konu ve kullanışlı olabilecek sadece bir algılayıcı üzerinden en az 10 ayrı proje geliyor aklıma işin mekanizması şaşırtıcı derece basit .şimdi işin birazcık mantık kısmına girmek istiyorum ki çalışma mekaniği gözümüzde biraz canlansın. Örneğin kaldırımda koşuyoruz önümüzü gördüğümüz iki gözümüzden bize hızımız,yaklaşan uzaklaşan cisimler, yerdeki engebeler çukurlar ile ilgili 3 ayrı bilgi girişi oluyor diyelim bu bilgileri ilk katman girişe sadece veri olarak aktarır .kulağımızdan da titreşim,rüzgar sesi ve çevredeki diğer sesler gibi 3 değişik veri gene girişe girdi. bu girişlerden çeşitli büyüklükteki ve farklı formatta veriler ( örneğin biri görüntü diğeri titreşim)normalizasyonla aynı formatta farklı büyüklüklere dönüştürülüp ilk başta ikinci katman nöronlara hepsi eşit ağırlıklarla çarpılarak girdi ve rast gele çıkışlar sonraki katmanlarına iletildi diyelim. koşarken karşımıza bize doğru yaklaşan bir elektrik direği gördük henüz ne olduğunu bilmiyoruz ama sayılar ikinci katmana bir değerin zaman geçtikçe büyüdüğünü iletti halbüki koşma hız verimiz sabit titreşim stabil ve ritmik sadece nöronun görüntü olduğunu bile bilmediği bir veri artıyor bu durumda basite indirirsek iki davranışın iki sonucu oluyor . ilki birşeyler ters gidiyor diye nöronun bir atış yapmaya başlaması( bu atışlar veri büyüklüğü ile ilgili olduğu için her çevrim sonunda direğe daha yakın olacağımızdan atışın sıklığı yani nöron membranından geçiş hızı artacak) ve çıkış katına iletmesi ikincisi ise birşey yapmaması durumu .ilk durumda çıkışa spike atıldı ve çıkış da kendi değiştirebileceği kısıtlı değişkenlerden hızını azalttı diyelim bu durumda oluşan spike sayısı azalmaya başladı henüz verinin ne olduğunu bilmeden hızı değiştirdiğinde verinin küçüldüğünü  gördü bu veri hızımla ilgili bir veri demekki der ve o nörona hızıyla ilgili dışardan bir değişkene verdiği tepkiden dolayı ödül verir ve nörona giren o veriye ait ağırlığı bir miktar arttırır.
 .Evet hızı azalttık ama hala yaklaşıyoruz ve sonunda direğe çarptık. titreşim verisi tavan yaptı görsel veri Göz şiştiğinden karardı :) bu durumda çıkış nöronunun da bir kaç seçim yapması gerekiyor mesela derki nörondan gelen spike ben bir tepki verdim verdiğim tepki doğruydu çünkü atış miktarı azaldı ama yeterli değildi ben bu nörondan atış geldiğinde daha fazla yavaşlamalıyım diye ona bağlı ağırlığını günceller. bu böyle devam ederken en sonunda ne kadar yavaş olursa olsun çarpar  ve bunun sonucunda durur tüm veriler susar titreşim yoktur görsel veri değişmiyordur ama amaç koşmaktı hani. bu korkak oldu koşamıyor. baştan eğitim bunun için yapılıyor sahada eğitim için çok fazla sensörün fizyonu gerek kısıtlı veri kısıtlı davranış biz eğitirken koşmasını istediğimizden bakıyoruz duracak artık bu araç bu sinyal geldiğinde bir miktar yavaşla ama sağa sola dönme nöronlarını da test et bakalım onlar bu gelen veride değişime neden oluyormu nitekim değişim olduğunda da o çıkış katları da gelen veriye sırası ile tepki verecek kadar öğrenecekler ilk yavaşlamaya başlayacak bu arada aynı veri sola dönmeyi kontrol eden nörona da veribiri ktirmeye devam edecek  hız yavaşlatmadan 10 kat daha zayıf bir ağırlık bile olsa sonunda bu membran eşiği aşılacak ve bayağı bir yavaşlayınca sola dönecek aynı ödül mekanizması bu nöron için de işleyecek yavaş yavaş eşik daha hızlı aşılacağından zaman geçtikçe daha az yavaşlayıp dönmeye başlayacak.
     hikaye bu kadar kısa değil aslında ama özü bu baştan ne olduğunu bilmediğimiz verilerin davranışlarımızla değişimine bakarak doğru davranışımı yaptım çıkarımı yapmak. matematiği de çok zor sayılmaz sadece hikaye örgüsü uzun ve dolambaçlı olduğundan işlem sayısı fazla ama aynı işlem temelde tekrarlanıyor direğe çarp ağırlık değiş ve gelen veriyle çarp topla vs tek nöron için aktivasyon formülü yukardaıda yazdığım kadar basit en azından bu yapı için
Hep meraktan

ahmet_zxc

evet kullanılıyor.
açık konuşmak gerekirse sahada sadece asansörlerde gördüm. başka kim kullanır bilmiyorum.

yklaşık 10 sene önce, yapay zeka yapay zeka olmadan önce makine öğrenmesi iken... sıkça kullandığım bir binada vardı.

asansörler sabahları kendi kendilerine, hep giriş kata gelir orda beklerlerdi, öğlenleri yemekhane katına giderlerdi orda beklerlerdi..

bi ara arızalandı tamir ettiler, bir hafta bu asansörü idare edin 1 haftada öğrenir demişlerdi.. öyle oldu..

aRci

merhaba konu hakkında az çok fikir edindim buradan bilmediğim terimler ve yorumlamalarla karşılaştım. kendim sürekli öngördüğüm yada talep le gelen işe odaklı bir algoritma kurarak her adımı tektek deneyerek kontrol algoritması kuruyorum. kimse kusursuz değil ve sonuç olarak hatalar ve öngörülemeyen kısımlar orta ya çıkıyor.
Alıntı yapılan: ahmet_zxc - 05 Şubat 2026, 13:40:24bir hafta bu asansörü idare edin 1 haftada öğrenir demişlerdi.. öyle oldu..

yapay zeka üzerinde çalışma yapabileceğim bir şey olarak hiç görmedim. Genede merak duyduğum bir konu idi. sen bir birine bağlı bir yapı ile girişe göre çıkış üreten ama çıkışı önceden deneyimlenen şeylere göre otomatik çözümleyen bir devrenin tasarımı yapmak bir hayal miş gibi geliyor.

buradaki asansör konusunu ben sabah 6 da giriş katta bekle öğlen yemekhane katında bekle komutlarını yazarak çözerdim. fakat bu işi asansörün kendi kendine yapması harika birşey.

Buna yakın olarak düşüne bildiğim şey ise PID. Yakın zamanda otomatik arpa yem çuvallayan bir sistem yaptık amatörce. olay yemin boşaltma kapağı ve ağırlık sensörü le hedef ağırlığa göre boşaltımı kontrol etmek bu işte akış hızını değişebileceğini düşünerek PID kontrolü yapmaya çalıştım. SOnuç olarak 5-6 keseleme ile çuval kilosunu küçük hatalar kalacak şekilde kontrol etmeye başladık. PID burada yem akış hızına bağlı olarak hedef ağırlığa gelmeden kapağı kapatarak hedefi tutturmaya çalışıyor.
Burada PID onceki dolumdaki hataların birikmesi sonucu kapağı hedef değere göre bazen 4kg önce den kapağı kapatıyor. sonuç olarak hatalar +-300gr seviyesinde kısıtlamaya çalışıyoruz.

Sonuç olarak yapının değişkenliği beni duruma göre çıkışı değişiklik yapan PID kullanmama sebep oldu. asansör örneğinde bunu sistem saate kullanım yoğunluğu vb girdilerle nasıl kendini otomatik ayarlayabiliyor anlayamadım. Daha sı bunu kendi kendine öğrenebilmesi için nasıl bir takip ekleyebilirim.

Burada analog yada dijital bir sensör den alınan sayısal bir değer yok onları alıp topla yada bölerek nasıl bir değer alıyor ki sonuç olarak kendi bir saat aralığında hangi kata beklemesi gerektiğini karar versin.


alisumer

Bu verileri yapay sinir ağına sokmanın bir çok yolu vardır illaki en basiti zaman pencereleri oluşturmak sabah 8 mesai başlangıcından mesai bitimine kadar her saat aralığı için ayrı giriş nöronu ve ağırlıkları belirlenir. örneğin zamanı tutan 16 bit için saat 07:00 başlangıç değerini alır ve yavaşça artar .her aralık için bir eşik belirlenir o eşik arasında ise o nöron ateşlenir gizli katmanın tüm nöronlarına farklı ağırlıklarla girer, her kattaki butonlar için de birer giriş nöronu vardır.onlara basıldığında da nöron ateşleyip gizli katmanlara girer bu iki veri gizli katman nöronunda toplanıp nöron eşiği dolana kadar birikir ve dolduğunda çıkışa ateşlenir.çıkış ilk bir hafta sadece izlenir ve .çağrıldığı o katta binen sayısı kadar ödüllendirilir yani çıkışa katkı sağlayan nöronlara sondan başa doğru ağırlık artıran geri yayılım yapılır binen sayısını ölçen sensörün nörona bağlanmasına gerek yok bu varyasonda o veri sadece o katın o saatte ne kadar puan aldığıyla ilgili veridir ve sadece ağırlık eğitiminde kullanılır.Böylelikle zamanla kimi ağırlıklar düşerken ödüllüler artar herbir nöron kendi zamanı ve katı için hassaslaşır  daha çabuk eşik aşmaya başlar  buda 1  hafta sonra kontrolü ele alması için yazılan bir kodun çalışması ile artık öğrenme modundan çıkıp çıkışları kendi kontrol eder hale gelebilir.
Hep meraktan

kudretuzuner

Merhaba, çok enteresan bir konu. Sizin çalışmanız hakkında matematiksel bir bilgim yok ama ben de bir süreden beri 256 olasılığı(00-FF) diğer bir 256 (00-FF) olasılıkla PIC'te karşılaştırıp her bir eşitlik için anlamlı datalar oluşturup PC' den izlenebilir duruma getirdim. Bu bir sinir ağı çalışması niteliği taşır mı? Daha doğrusu sinir ağı mantığını anlamak için sormaktayım. Teşekkür eder sağlıklı günler dilerm.

alisumer

Kudret hocam inanın işin çok hakimi değilim !Çok derin alanı var ama pek katı bir kuralı olduğunu sanmıyorum sinir ağlarının her geçen gün biri yeni bir yapı kuruyor snn,ann,cnn gibi belki 100 lerce farklı versiyonu şimdiden yapılmış kimi görüntü işlemede yada dil işlemede iyi kimi sanayide   başka bir alanda de sonuçta sinir ağı  bir giriş verisinin farklı ağırlıklarla çarpılarak farklı adreslerde tutulup bu adreslerdeki verilerin de seçilen bir değer üstünde ise çıkış vermesine çıkışımız beklenen çıkış ise ödüllendirme veya ceza olarak ağırlık ,bias veya sızıntılara müdahale olduğunu biliyorum bir öğrenme varmı emin olamasamda bir refleks yada kas hafızası gibi davrandığı kesin yapının. senin örneğinde aynı veriyi birden fazla yerde farklı işlemlerle işleyip bir sonuca varman sinir ağı olabilir tabi
Hep meraktan

gogoce

Alıntı yapılan: ahmet_zxc - 05 Şubat 2026, 13:40:24evet kullanılıyor.
açık konuşmak gerekirse sahada sadece asansörlerde gördüm. başka kim kullanır bilmiyorum.

yklaşık 10 sene önce, yapay zeka yapay zeka olmadan önce makine öğrenmesi iken... sıkça kullandığım bir binada vardı.

asansörler sabahları kendi kendilerine, hep giriş kata gelir orda beklerlerdi, öğlenleri yemekhane katına giderlerdi orda beklerlerdi..

bi ara arızalandı tamir ettiler, bir hafta bu asansörü idare edin 1 haftada öğrenir demişlerdi.. öyle oldu..

Merhaba, bu konuda detaylı bilgi verebilir misiniz? Asansör kumanda panosu üreticisiyim. Normalde gelişmiş sistemlerde x saatinde y katında, z saatinde m katında bekle (park et) gibi seçenekler mevcut. Ayrıca haftanın x gününde veya günün x saatinde c katına uğrama gibi seçenekler mevcut. Bir dönem bluetooth ile rssi kullanılarak tanımcı kullanıcının hangi kattan asansörü çağırdığı istatislikleri ile belirlenip daha sonra o kullanıcı ya direkt asansörü çağırmak gibi sistemleri gördüm. Dediğiniz sistemi açıkçası merak ettim. Detay verebilir misiniz?
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

kudretuzuner

Merhaba, akıllı asansörü hep düşünürdüm,çok enteresan bir konu bu işi ancak PC + MCU ile başarmak mümkün. Burada önemli olan binanın kat sayısı ve senaryoyu tam olarak hazırlayabilmektir. Bu da deneme yanılma veya birikmiş tecrübe ve data ile mümkün olabilir. Akış diyagramını PC koşturur MCU kartı da mekaniği kontrol eder diye düşünmekteyim.

gogoce

Merhaba,
Yardımcı olabileceğim bir şey varsa seve seve yardımcı olabilirim.
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

Powered by EzPortal
▲