{"id":38966,"date":"2026-02-11T17:00:46","date_gmt":"2026-02-11T14:00:46","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/"},"modified":"2026-02-11T17:00:46","modified_gmt":"2026-02-11T14:00:46","slug":"kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/","title":{"rendered":"K\u0131s\u0131tl\u0131 Boltzmann Makinelerine Pratik Bir Giri\u015f: Minimal NumPy Uygulamas\u0131yla"},"content":{"rendered":"<h2>K\u0131s\u0131tl\u0131 Boltzmann Makinelerine Pratik Bir Giri\u015f: Minimal NumPy Uygulamas\u0131yla<\/h2>\n<p>K\u0131s\u0131tl\u0131 Boltzmann Makineleri (RBM&#8217;ler), makine \u00f6\u011frenimi ve derin \u00f6\u011frenme alan\u0131nda \u00f6nemli bir yere sahip, olas\u0131l\u0131ksal, \u00fcretken yapay sinir a\u011flar\u0131d\u0131r. \u00d6zellikle veri da\u011f\u0131l\u0131mlar\u0131n\u0131 \u00f6\u011frenme ve karma\u015f\u0131k \u00f6r\u00fcnt\u00fcleri ke\u015ffetme yetenekleriyle \u00f6ne \u00e7\u0131karlar. Bu makalede, RBM&#8217;lerin temel prensiplerini, mimarisini, \u00e7al\u0131\u015fma mekanizmas\u0131n\u0131 ve e\u011fitim algoritmas\u0131n\u0131 derinlemesine inceleyecek, ard\u0131ndan bu g\u00fc\u00e7l\u00fc modelin minimal bir NumPy uygulamas\u0131yla nas\u0131l hayata ge\u00e7irilebilece\u011fini ad\u0131m ad\u0131m g\u00f6sterece\u011fiz. Amac\u0131m\u0131z, hem teorik temeli sa\u011flamak hem de pratik bir bak\u0131\u015f a\u00e7\u0131s\u0131 sunarak konuyu anla\u015f\u0131l\u0131r k\u0131lmakt\u0131r.<\/p>\n<h3>RBM Nedir ve Neden \u00d6nemlidir?<\/h3>\n<p>K\u0131s\u0131tl\u0131 Boltzmann Makineleri (RBM), Geoffrey Hinton taraf\u0131ndan geli\u015ftirilen, iki katmanl\u0131, stokastik bir yapay sinir a\u011f\u0131d\u0131r. \u00dcretken bir model olarak, e\u011fitim verilerinin olas\u0131l\u0131k da\u011f\u0131l\u0131m\u0131n\u0131 \u00f6\u011frenmeyi ama\u00e7lar. Bu yetene\u011fi sayesinde, eksik verileri tamamlayabilir, yeni veriler \u00fcretebilir ve veri setindeki gizli \u00f6zellikleri ke\u015ffedebilir.<\/p>\n<h4>\u00dcretken Modellerin Yeri<\/h4>\n<p>Makine \u00f6\u011freniminde iki ana model t\u00fcr\u00fc bulunur: ay\u0131rt edici (discriminative) ve \u00fcretken (generative). Ay\u0131rt edici modeller, belirli bir girdinin hangi s\u0131n\u0131fa ait oldu\u011funu tahmin etmeye odaklan\u0131rken (\u00f6rne\u011fin, bir resimde kedi mi k\u00f6pek mi var), \u00fcretken modeller verinin kendisinin nas\u0131l olu\u015ftu\u011funu \u00f6\u011frenir. RBM&#8217;ler, verinin alt\u0131nda yatan karma\u015f\u0131k olas\u0131l\u0131k da\u011f\u0131l\u0131m\u0131n\u0131 modelleyerek, ger\u00e7ek\u00e7i yeni \u00f6rnekler olu\u015fturma veya eksik verileri tahmin etme gibi g\u00f6revlerde kullan\u0131labilir. Bu, onlar\u0131 veri sentezi, \u00f6zellik \u00f6\u011frenimi ve anomali tespiti gibi alanlarda de\u011ferli k\u0131lar.<\/p>\n<h4>Derin \u00d6\u011frenmedeki Rol\u00fc<\/h4>\n<p>RBM&#8217;ler, derin \u00f6\u011frenmenin ilk d\u00f6nemlerinde b\u00fcy\u00fck bir at\u0131l\u0131m sa\u011flam\u0131\u015ft\u0131r. \u00d6zellikle &#8220;Derin \u0130nan\u00e7 A\u011flar\u0131&#8221; (Deep Belief Networks &#8211; DBN) ve &#8220;Derin Boltzmann Makineleri&#8221; (Deep Boltzmann Machines &#8211; DBM) gibi daha karma\u015f\u0131k derin \u00f6\u011frenme mimarilerinin temel yap\u0131 ta\u015f\u0131 olarak kullan\u0131lm\u0131\u015flard\u0131r. Bir DBN, birden fazla RBM katman\u0131n\u0131n \u00fcst \u00fcste istiflenmesiyle olu\u015fturulur ve her RBM katman\u0131, bir \u00f6nceki katmandan gelen girdinin daha soyut bir temsilini \u00f6\u011frenir. Bu katmanl\u0131 \u00f6\u011frenme yakla\u015f\u0131m\u0131, o d\u00f6nemde derin a\u011flar\u0131n e\u011fitimindeki zorluklar\u0131n a\u015f\u0131lmas\u0131na yard\u0131mc\u0131 olmu\u015ftur.<\/p>\n<h4>Temel \u00d6zellikler<\/h4>\n<p>RBM&#8217;lerin &#8220;k\u0131s\u0131tl\u0131&#8221; olmas\u0131n\u0131n nedeni, ayn\u0131 katman i\u00e7indeki birimler aras\u0131nda hi\u00e7bir ba\u011flant\u0131n\u0131n bulunmamas\u0131d\u0131r. Yani, g\u00f6r\u00fcn\u00fcr birimler kendi aralar\u0131nda veya gizli birimler kendi aralar\u0131nda do\u011frudan ba\u011flant\u0131ya sahip de\u011fildir. Sadece g\u00f6r\u00fcn\u00fcr katman ile gizli katman aras\u0131nda iki y\u00f6nl\u00fc ba\u011flant\u0131lar mevcuttur. Bu k\u0131s\u0131tlama, modelin matematiksel olarak daha y\u00f6netilebilir olmas\u0131n\u0131 sa\u011flar ve e\u011fitim s\u00fcre\u00e7lerini basitle\u015ftirir. Her birim, di\u011fer birimlerin durumuna ba\u011fl\u0131 olarak ikili (binary) bir durum al\u0131r, ancak Gaussian RBM&#8217;ler gibi s\u00fcrekli de\u011ferleri i\u015fleyebilen varyantlar\u0131 da mevcuttur.<\/p>\n<h3>RBM&#8217;in Temel Mimarisi<\/h3>\n<p>Bir K\u0131s\u0131tl\u0131 Boltzmann Makinesi, ad\u0131ndan da anla\u015f\u0131laca\u011f\u0131 gibi, belirli k\u0131s\u0131tlamalara sahip basit ama g\u00fc\u00e7l\u00fc bir a\u011f yap\u0131s\u0131na sahiptir. Bu yap\u0131, iki ana katmandan olu\u015fur ve bu katmanlar aras\u0131ndaki etkile\u015fimler modelin \u00f6\u011frenme yetene\u011finin temelini olu\u015fturur.<\/p>\n<h4>G\u00f6r\u00fcn\u00fcr Katman (Visible Layer)<\/h4>\n<p>G\u00f6r\u00fcn\u00fcr katman, RBM&#8217;in d\u0131\u015f d\u00fcnya ile etkile\u015fim kurdu\u011fu katmand\u0131r. Bu katmandaki birimler (n\u00f6ronlar), do\u011frudan giri\u015f verilerini temsil eder. \u00d6rne\u011fin, bir g\u00f6r\u00fcnt\u00fcdeki pikseller, bir tavsiye sistemindeki kullan\u0131c\u0131 derecelendirmeleri veya bir metindeki kelime varl\u0131\u011f\u0131 gibi \u00f6zellikler g\u00f6r\u00fcn\u00fcr birimler taraf\u0131ndan temsil edilebilir. G\u00f6r\u00fcn\u00fcr birimler genellikle ikili (0 veya 1) de\u011ferler al\u0131r, ancak s\u00fcrekli de\u011ferler i\u00e7in Gaussian RBM&#8217;ler gibi farkl\u0131 varyantlar da mevcuttur. G\u00f6r\u00fcn\u00fcr katmandaki birim say\u0131s\u0131, giri\u015f verisinin boyutuna e\u015fittir.<\/p>\n<h4>Gizli Katman (Hidden Layer)<\/h4>\n<p>Gizli katman, RBM&#8217;in verideki soyut, daha y\u00fcksek seviyeli \u00f6zellikleri veya desenleri \u00f6\u011frendi\u011fi yerdir. Bu katmandaki birimler, do\u011frudan d\u0131\u015f d\u00fcnyadan girdi almaz; bunun yerine, g\u00f6r\u00fcn\u00fcr katmandaki birimlerin kombinasyonlar\u0131ndan \u00e7\u0131kar\u0131lan \u00f6zellikleri temsil eder. Gizli birimler de genellikle ikili de\u011ferler al\u0131r ve bu birimlerin say\u0131s\u0131, \u00f6\u011frenilmek istenen \u00f6zelliklerin karma\u015f\u0131kl\u0131\u011f\u0131na ve veri setinin yap\u0131s\u0131na g\u00f6re belirlenir. Gizli katman, verinin daha kompakt ve anlaml\u0131 bir temsilini olu\u015fturarak boyut indirgeme veya \u00f6zellik \u00e7\u0131kar\u0131m\u0131 gibi g\u00f6revlerde kullan\u0131labilir.<\/p>\n<h4>Ba\u011flant\u0131lar ve A\u011f\u0131rl\u0131klar (W)<\/h4>\n<p>RBM&#8217;deki t\u00fcm ba\u011flant\u0131lar, g\u00f6r\u00fcn\u00fcr katmandaki bir birim ile gizli katmandaki bir birim aras\u0131ndad\u0131r. Ayn\u0131 katman i\u00e7indeki birimler aras\u0131nda hi\u00e7bir ba\u011flant\u0131 yoktur. Her bir g\u00f6r\u00fcn\u00fcr-gizli ba\u011flant\u0131s\u0131n\u0131n bir a\u011f\u0131rl\u0131\u011f\u0131 (weight) vard\u0131r. Bu a\u011f\u0131rl\u0131klar, g\u00f6r\u00fcn\u00fcr ve gizli birimler aras\u0131ndaki ili\u015fkinin g\u00fcc\u00fcn\u00fc ve y\u00f6n\u00fcn\u00fc belirler. E\u011fitim s\u00fcreci boyunca, bu a\u011f\u0131rl\u0131klar, RBM&#8217;in veri da\u011f\u0131l\u0131m\u0131n\u0131 en iyi \u015fekilde temsil etmesini sa\u011flayacak \u015fekilde ayarlan\u0131r. A\u011f\u0131rl\u0131k matrisi <code>W<\/code>, g\u00f6r\u00fcn\u00fcr katmandaki <code>m<\/code> birim ile gizli katmandaki <code>n<\/code> birim aras\u0131ndaki <code>m x n<\/code> boyutlu ba\u011flant\u0131lar\u0131 i\u00e7erir.<\/p>\n<h4>Bias Terimleri (a, b)<\/h4>\n<p>Her bir g\u00f6r\u00fcn\u00fcr ve gizli birimin kendine ait bir bias terimi vard\u0131r.<br \/>\n*   <strong>G\u00f6r\u00fcn\u00fcr Bias&#8217;lar (a):<\/strong> G\u00f6r\u00fcn\u00fcr katmandaki her bir birimin kendi ba\u015f\u0131na aktif olma e\u011filimini belirler.<br \/>\n*   <strong>Gizli Bias&#8217;lar (b):<\/strong> Gizli katmandaki her bir birimin kendi ba\u015f\u0131na aktif olma e\u011filimini belirler.<br \/>\nBu bias terimleri, a\u011f\u0131n belirli bir birimi, di\u011fer birimlerden ba\u011f\u0131ms\u0131z olarak ne kadar kolay aktive edebilece\u011fini kontrol eder. A\u011f\u0131rl\u0131klar gibi, bias terimleri de e\u011fitim s\u0131ras\u0131nda optimize edilir.<\/p>\n<h3>RBM Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h3>\n<p>RBM&#8217;ler, enerji tabanl\u0131 modellerdir. Sistemin bir &#8220;enerji&#8221; fonksiyonu vard\u0131r ve modelin amac\u0131, d\u00fc\u015f\u00fck enerjiye sahip konfig\u00fcrasyonlara daha y\u00fcksek olas\u0131l\u0131k atamakt\u0131r. Bu enerji fonksiyonu \u00fczerinden olas\u0131l\u0131k da\u011f\u0131l\u0131m\u0131n\u0131 modellemek i\u00e7in Gibbs \u00f6rneklemesi ve ileri\/geri besleme mekanizmalar\u0131 kullan\u0131l\u0131r.<\/p>\n<h4>Enerji Fonksiyonu<\/h4>\n<p>Bir RBM&#8217;in belirli bir g\u00f6r\u00fcn\u00fcr katman durumu <code>v<\/code> ve gizli katman durumu <code>h<\/code> i\u00e7in enerji <code>E(v, h)<\/code> a\u015fa\u011f\u0131daki gibi tan\u0131mlan\u0131r:<\/p>\n<p><code>E(v, h) = - \u03a3\u1d62 b\u1d62v\u1d62 - \u03a3\u2c7c c\u2c7ch\u2c7c - \u03a3\u1d62\u03a3\u2c7c v\u1d62W\u1d62\u2c7ch\u2c7c<\/code><\/p>\n<p>Burada:<br \/>\n*   <code>v\u1d62<\/code> ve <code>h\u2c7c<\/code>, s\u0131ras\u0131yla i-inci g\u00f6r\u00fcn\u00fcr ve j-inci gizli birimin durumlar\u0131d\u0131r (genellikle 0 veya 1).<br \/>\n*   <code>b\u1d62<\/code> ve <code>c\u2c7c<\/code>, s\u0131ras\u0131yla i-inci g\u00f6r\u00fcn\u00fcr ve j-inci gizli birimin bias terimleridir.<br \/>\n*   <code>W\u1d62\u2c7c<\/code>, i-inci g\u00f6r\u00fcn\u00fcr birim ile j-inci gizli birim aras\u0131ndaki a\u011f\u0131rl\u0131kt\u0131r.<\/p>\n<p>Bu enerji fonksiyonu, sistemin belirli bir konfig\u00fcrasyonunun ne kadar &#8220;olas\u0131&#8221; oldu\u011funu g\u00f6sterir. Daha d\u00fc\u015f\u00fck enerji, daha y\u00fcksek olas\u0131l\u0131k anlam\u0131na gelir.<\/p>\n<h4>\u0130leri Besleme (Visible to Hidden)<\/h4>\n<p>G\u00f6r\u00fcn\u00fcr katmandan gizli katmana bilgi ak\u0131\u015f\u0131, ileri besleme olarak adland\u0131r\u0131l\u0131r. Bir g\u00f6r\u00fcn\u00fcr vekt\u00f6r <code>v<\/code> verildi\u011finde, her bir gizli birimin <code>h\u2c7c<\/code> aktivasyon olas\u0131l\u0131\u011f\u0131 a\u015fa\u011f\u0131daki form\u00fclle hesaplan\u0131r:<\/p>\n<p><code>P(h\u2c7c=1 | v) = sigmoid(c\u2c7c + \u03a3\u1d62 W\u1d62\u2c7cv\u1d62)<\/code><\/p>\n<p>Burada <code>sigmoid(x) = 1 \/ (1 + e\u207b\u02e3)<\/code> aktivasyon fonksiyonudur. Her bir gizli birim, bu olas\u0131l\u0131\u011fa g\u00f6re ikili bir de\u011fer (0 veya 1) alacak \u015fekilde \u00f6rneklenir. Bu s\u00fcre\u00e7, giri\u015f verisinden \u00f6zelliklerin \u00e7\u0131kar\u0131lmas\u0131n\u0131 temsil eder.<\/p>\n<h4>Geri Besleme (Hidden to Visible)<\/h4>\n<p>Gizli katmandan g\u00f6r\u00fcn\u00fcr katmana bilgi ak\u0131\u015f\u0131, geri besleme veya rekonstr\u00fcksiyon olarak adland\u0131r\u0131l\u0131r. Gizli bir vekt\u00f6r <code>h<\/code> verildi\u011finde, her bir g\u00f6r\u00fcn\u00fcr birimin <code>v\u1d62<\/code> aktivasyon olas\u0131l\u0131\u011f\u0131 a\u015fa\u011f\u0131daki form\u00fclle hesaplan\u0131r:<\/p>\n<p><code>P(v\u1d62=1 | h) = sigmoid(b\u1d62 + \u03a3\u2c7c W\u1d62\u2c7ch\u2c7c)<\/code><\/p>\n<p>Yine, her bir g\u00f6r\u00fcn\u00fcr birim bu olas\u0131l\u0131\u011fa g\u00f6re ikili bir de\u011fer (0 veya 1) alacak \u015fekilde \u00f6rneklenir. Bu s\u00fcre\u00e7, \u00f6\u011frenilen \u00f6zelliklerden orijinal giri\u015f verisinin yeniden olu\u015fturulmas\u0131n\u0131 temsil eder.<\/p>\n<h4>Gibbs \u00d6rneklemesi<\/h4>\n<p>RBM&#8217;ler, enerji fonksiyonu \u00fczerinden olas\u0131l\u0131k da\u011f\u0131l\u0131m\u0131n\u0131 modellemek i\u00e7in Gibbs \u00f6rneklemesi ad\u0131 verilen bir Markov Zinciri Monte Carlo (MCMC) tekni\u011fi kullan\u0131r. Gibbs \u00f6rneklemesi, g\u00f6r\u00fcn\u00fcr ve gizli katmanlar aras\u0131nda alternatif olarak \u00f6rnekleme yaparak \u00e7al\u0131\u015f\u0131r:<br \/>\n1.  G\u00f6r\u00fcn\u00fcr katman <code>v<\/code> verildi\u011finde, gizli katman <code>h<\/code>&#8216;yi <code>P(h|v)<\/code> olas\u0131l\u0131\u011f\u0131na g\u00f6re \u00f6rnekle.<br \/>\n2.  \u00d6rneklenen <code>h<\/code> verildi\u011finde, g\u00f6r\u00fcn\u00fcr katman <code>v<\/code>&#8216;yi <code>P(v|h)<\/code> olas\u0131l\u0131\u011f\u0131na g\u00f6re \u00f6rnekle.<br \/>\nBu ad\u0131mlar art arda tekrarlan\u0131r. Yeterince ad\u0131m sonra, sistem denge durumuna ula\u015f\u0131r ve \u00f6rneklenen <code>(v, h)<\/code> \u00e7iftleri RBM&#8217;in \u00f6\u011frendi\u011fi da\u011f\u0131l\u0131mdan geliyormu\u015f gibi kabul edilebilir. Bu \u00f6rnekleme s\u00fcreci, \u00f6zellikle e\u011fitim algoritmas\u0131 olan Z\u0131tl\u0131k Diverjans\u0131&#8217;nda (Contrastive Divergence) kritik bir rol oynar.<\/p>\n<h3>E\u011fitim Algoritmas\u0131: Z\u0131tl\u0131k Diverjans\u0131 (CD)<\/h3>\n<p>RBM&#8217;leri e\u011fitmek, modelin enerji fonksiyonunu optimize ederek veri da\u011f\u0131l\u0131m\u0131n\u0131 en iyi \u015fekilde temsil eden a\u011f\u0131rl\u0131k ve bias de\u011ferlerini bulmak anlam\u0131na gelir. Bu genellikle maksimum olabilirlik (maximum likelihood) ilkesiyle yap\u0131l\u0131r. Ancak, RBM&#8217;lerin olas\u0131l\u0131k fonksiyonunun do\u011frudan gradyan\u0131n\u0131 hesaplamak, t\u00fcm olas\u0131 g\u00f6r\u00fcn\u00fcr ve gizli durumlar\u0131n toplam\u0131n\u0131 gerektirdi\u011finden hesaplama a\u00e7\u0131s\u0131ndan \u00e7ok maliyetlidir. Bu sorunu a\u015fmak i\u00e7in Geoffrey Hinton, Z\u0131tl\u0131k Diverjans\u0131 (Contrastive Divergence &#8211; CD) algoritmas\u0131n\u0131 geli\u015ftirmi\u015ftir.<\/p>\n<h4>Ama\u00e7<\/h4>\n<p>CD algoritmas\u0131n\u0131n temel amac\u0131, modelin \u00f6\u011frendi\u011fi da\u011f\u0131l\u0131m <code>P_model(v)<\/code> ile ger\u00e7ek veri da\u011f\u0131l\u0131m\u0131 <code>P_data(v)<\/code> aras\u0131ndaki fark\u0131 (Kullback-Leibler Diverjans\u0131) minimize etmektir. Bu, modelin e\u011fitim verilerini daha iyi temsil etmesini sa\u011flar. Algoritma, gradyan ini\u015fi prensibine dayan\u0131r ve a\u011f\u0131rl\u0131klar\u0131 ve bias&#8217;lar\u0131 bu fark\u0131 azaltacak y\u00f6nde g\u00fcnceller.<\/p>\n<h4>CD-k Algoritmas\u0131<\/h4>\n<p>CD algoritmas\u0131, Gibbs \u00f6rneklemesinin k\u0131salt\u0131lm\u0131\u015f bir versiyonunu kullan\u0131r. <code>k<\/code> terimi, Gibbs \u00f6rneklemesinin ka\u00e7 ad\u0131m at\u0131laca\u011f\u0131n\u0131 ifade eder. Genellikle <code>k=1<\/code> (CD-1) kullan\u0131l\u0131r \u00e7\u00fcnk\u00fc pratik uygulamalarda \u015fa\u015f\u0131rt\u0131c\u0131 derecede iyi sonu\u00e7lar verir ve hesaplama a\u00e7\u0131s\u0131ndan \u00e7ok daha verimlidir.<\/p>\n<p>CD-1 algoritmas\u0131 \u015fu ad\u0131mlar\u0131 izler:<br \/>\n1.  <strong>Pozitif Faz (Veri Faz\u0131):<\/strong><br \/>\n    *   E\u011fitim veri setinden bir giri\u015f vekt\u00f6r\u00fc <code>v\u2070<\/code> al\u0131n\u0131r.<br \/>\n    *   <code>v\u2070<\/code>&#8216;dan gizli birimlerin aktivasyon olas\u0131l\u0131klar\u0131 <code>P(h|v\u2070)<\/code> hesaplan\u0131r ve bu olas\u0131l\u0131klara g\u00f6re gizli birimler <code>h\u2070<\/code> \u00f6rneklenir.<br \/>\n    *   Bu faz, veri da\u011f\u0131l\u0131m\u0131ndan gelen \u00f6rnekleri temsil eder.<br \/>\n2.  <strong>Negatif Faz (Model Faz\u0131):<\/strong><br \/>\n    *   \u00d6rneklenen <code>h\u2070<\/code>&#8216;dan g\u00f6r\u00fcn\u00fcr birimlerin aktivasyon olas\u0131l\u0131klar\u0131 <code>P(v|h\u2070)<\/code> hesaplan\u0131r ve bu olas\u0131l\u0131klara g\u00f6re g\u00f6r\u00fcn\u00fcr birimler <code>v\u00b9<\/code> \u00f6rneklenir (rekonstr\u00fcksiyon).<br \/>\n    *   <code>v\u00b9<\/code>&#8216;den gizli birimlerin aktivasyon olas\u0131l\u0131klar\u0131 <code>P(h|v\u00b9)<\/code> hesaplan\u0131r ve bu olas\u0131l\u0131klara g\u00f6re gizli birimler <code>h\u00b9<\/code> \u00f6rneklenir.<br \/>\n    *   Bu faz, modelin mevcut durumundan \u00fcretilen \u00f6rnekleri temsil eder.<\/p>\n<h4>Gradyan \u0130ni\u015fi<\/h4>\n<p>A\u011f\u0131rl\u0131klar ve bias&#8217;lar, pozitif ve negatif fazlardaki korelasyon farklar\u0131na g\u00f6re g\u00fcncellenir. A\u011f\u0131rl\u0131k <code>W\u1d62\u2c7c<\/code> i\u00e7in g\u00fcncelleme kural\u0131 genellikle \u015fu \u015fekildedir:<\/p>\n<p><code>\u0394W\u1d62\u2c7c = \u03b7 * ( <v\u1d62h\u2c7c>_data - <v\u1d62h\u2c7c>_model )<\/code><\/p>\n<p>Burada:<br \/>\n*   <code>\u03b7<\/code> (eta), \u00f6\u011frenme oran\u0131d\u0131r.<br \/>\n*   <code><v\u1d62h\u2c7c>_data<\/code>, pozitif fazdaki <code>v\u1d62h\u2c7c<\/code> \u00fcr\u00fcn\u00fcn\u00fcn beklenen de\u011feridir (yani <code>v\u2070<\/code> ve <code>h\u2070<\/code> aras\u0131ndaki korelasyon).<br \/>\n*   <code><v\u1d62h\u2c7c>_model<\/code>, negatif fazdaki <code>v\u1d62h\u2c7c<\/code> \u00fcr\u00fcn\u00fcn\u00fcn beklenen de\u011feridir (yani <code>v\u00b9<\/code> ve <code>h\u00b9<\/code> aras\u0131ndaki korelasyon).<\/p>\n<p>Benzer \u015fekilde, bias&#8217;lar i\u00e7in g\u00fcncellemeler:<br \/>\n<code>\u0394b\u1d62 = \u03b7 * ( <v\u1d62>_data - <v\u1d62>_model )<\/code><br \/>\n<code>\u0394c\u2c7c = \u03b7 * ( <h\u2c7c>_data - <h\u2c7c>_model )<\/code><\/p>\n<p>Bu g\u00fcncellemeler, modelin veri da\u011f\u0131l\u0131m\u0131na daha yak\u0131n hale gelmesini sa\u011flar. Pozitif faz, modelin veri \u00f6rneklerine benzer konfig\u00fcrasyonlar\u0131 tercih etmesini te\u015fvik ederken, negatif faz, modelin kendi &#8220;hayal etti\u011fi&#8221; konfig\u00fcrasyonlar\u0131 ger\u00e7ek veriden uzakla\u015ft\u0131rmamas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Minimal NumPy Uygulamas\u0131<\/h3>\n<p>\u015eimdiye kadar \u00f6\u011frendi\u011fimiz teorik bilgileri, Python&#8217;da NumPy k\u00fct\u00fcphanesi kullanarak basit bir RBM uygulamas\u0131nda bir araya getirelim. Bu uygulama, ikili giri\u015f verileriyle \u00e7al\u0131\u015facak minimal bir RBM s\u0131n\u0131f\u0131 i\u00e7erecektir.<\/p>\n<h4>Gerekli K\u00fct\u00fcphaneler ve Veri Haz\u0131rl\u0131\u011f\u0131<\/h4>\n<p>\u00d6ncelikle, <code>numpy<\/code> k\u00fct\u00fcphanesini import etmemiz gerekiyor. Veri seti olarak, basit bir ikili veri seti olu\u015fturaca\u011f\u0131z. Ger\u00e7ek d\u00fcnya uygulamalar\u0131nda MNIST gibi veri setlerinin ikili versiyonlar\u0131 kullan\u0131labilir.<\/p>\n<pre><code class=\"language-python\">import numpy as np\n\n# Basit bir ikili veri seti olu\u015ftural\u0131m (\u00f6rne\u011fin, 4x5 boyutunda)\n# Her sat\u0131r bir veri \u00f6rne\u011fini, her s\u00fctun bir \u00f6zelli\u011fi temsil eder.\n# Bu veriler genellikle 0 veya 1 olmal\u0131d\u0131r.\ndata = np.array([\n    [1, 0, 1, 0, 1],\n    [1, 1, 0, 0, 1],\n    [0, 1, 0, 1, 0],\n    [0, 0, 1, 1, 0],\n    [1, 0, 1, 0, 1],\n    [0, 1, 0, 1, 0]\n], dtype=float)<\/pre>\n<p><\/code><\/p>\n<h4>RBM S\u0131n\u0131f\u0131n\u0131n Olu\u015fturulmas\u0131<\/h4>\n<p>RBM'in temel bile\u015fenlerini (a\u011f\u0131rl\u0131klar, bias'lar) ve fonksiyonlar\u0131n\u0131 (ileri\/geri besleme, e\u011fitim) i\u00e7eren bir s\u0131n\u0131f tan\u0131mlayaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-python\">class RBM:\n    def __init__(self, num_visible, num_hidden):\n        self.num_visible = num_visible\n        self.num_hidden = num_hidden\n\n        # A\u011f\u0131rl\u0131klar\u0131 k\u00fc\u00e7\u00fck rastgele de\u011ferlerle ba\u015flat\n        self.weights = np.random.randn(self.num_visible, self.num_hidden) * 0.1\n        # G\u00f6r\u00fcn\u00fcr ve gizli bias'lar\u0131 s\u0131f\u0131rla ba\u015flat\n        self.visible_bias = np.zeros(self.num_visible)\n        self.hidden_bias = np.zeros(self.num_hidden)\n\n    def _sigmoid(self, x):\n        return 1 \/ (1 + np.exp(-x))\n\n    # G\u00f6r\u00fcn\u00fcr katmandan gizli katmana aktivasyon olas\u0131l\u0131klar\u0131n\u0131 hesapla\n    def _propagate_hidden(self, visible_units):\n        # v * W + c (gizli bias)\n        h_activations = np.dot(visible_units, self.weights) + self.hidden_bias\n        h_probs = self._sigmoid(h_activations)\n        return h_probs\n\n    # Gizli katmandan g\u00f6r\u00fcn\u00fcr katmana aktivasyon olas\u0131l\u0131klar\u0131n\u0131 hesapla\n    def _propagate_visible(self, hidden_units):\n        # h * W^T + b (g\u00f6r\u00fcn\u00fcr bias)\n        v_activations = np.dot(hidden_units, self.weights.T) + self.visible_bias\n        v_probs = self._sigmoid(v_activations)\n        return v_probs\n\n    # Gizli birimleri olas\u0131l\u0131klara g\u00f6re \u00f6rnekle (0 veya 1)\n    def _sample_hidden(self, h_probs):\n        return (h_probs >= np.random.rand(*h_probs.shape)).astype(float)\n\n    # G\u00f6r\u00fcn\u00fcr birimleri olas\u0131l\u0131klara g\u00f6re \u00f6rnekle (0 veya 1)\n    def _sample_visible(self, v_probs):\n        return (v_probs >= np.random.rand(*v_probs.shape)).astype(float)<\/pre>\n<p><\/code><\/p>\n<h4>E\u011fitim Fonksiyonu<\/h4>\n<p>Z\u0131tl\u0131k Diverjans\u0131 (CD-1) algoritmas\u0131n\u0131 kullanarak RBM'i e\u011fitecek <code>train<\/code> metodunu ekleyelim.<\/p>\n<pre><code class=\"language-python\">def train(self, data, epochs, learning_rate, batch_size=1):\n        num_samples = data.shape[0]\n\n        for epoch in range(epochs):\n            # Veri setini kar\u0131\u015ft\u0131r\n            np.random.shuffle(data)\n            \n            for i in range(0, num_samples, batch_size):\n                batch = data[i:i + batch_size]\n\n                # Pozitif faz (Veri Faz\u0131)\n                # v0 -> h0\n                h0_probs = self._propagate_hidden(batch)\n                h0_states = self._sample_hidden(h0_probs) # h0_states yerine h0_probs da kullan\u0131labilir\n                                                          # ancak \u00f6rnekleme daha stokastik yapar.\n                \n                # Negatif faz (Model Faz\u0131 - CD-1)\n                # h0 -> v1 -> h1\n                v1_probs = self._propagate_visible(h0_states)\n                v1_states = self._sample_visible(v1_probs)\n                h1_probs = self._propagate_hidden(v1_states)\n                # h1_states = self._sample_hidden(h1_probs) # Genellikle h1_probs kullan\u0131l\u0131r\n\n                # Gradyan hesaplamalar\u0131 ve a\u011f\u0131rl\u0131k\/bias g\u00fcncellemeleri\n                # A\u011f\u0131rl\u0131k g\u00fcncellemesi\n                positive_gradient_W = np.dot(batch.T, h0_probs) # veya h0_states\n                negative_gradient_W = np.dot(v1_states.T, h1_probs) # veya h1_states\n                self.weights += learning_rate * (positive_gradient_W - negative_gradient_W) \/ batch_size\n\n                # G\u00f6r\u00fcn\u00fcr bias g\u00fcncellemesi\n                positive_gradient_vb = np.sum(batch - v1_states, axis=0)\n                self.visible_bias += learning_rate * positive_gradient_vb \/ batch_size\n\n                # Gizli bias g\u00fcncellemesi\n                positive_gradient_hb = np.sum(h0_probs - h1_probs, axis=0) # veya h0_states - h1_states\n                self.hidden_bias += learning_rate * positive_gradient_hb \/ batch_size\n            \n            # Rekonstr\u00fcksiyon hatas\u0131n\u0131 hesapla (iste\u011fe ba\u011fl\u0131)\n            # Bu, modelin ne kadar iyi \u00f6\u011frendi\u011fini g\u00f6steren bir metrik olabilir.\n            reconstruction_error = np.mean(np.sum((data - self._propagate_visible(self._propagate_hidden(data)))**2, axis=1))\n            print(f\"Epoch {epoch+1}\/{epochs}, Reconstruction error: {reconstruction_error:.4f}\")<\/pre>\n<p><\/code><\/p>\n<h4>\u00d6rnekleme ve Rekonstr\u00fcksiyon<\/h4>\n<p>E\u011fitilmi\u015f RBM'i kullanarak yeni veriler \u00f6rnekleyebilir veya mevcut verileri yeniden olu\u015fturabiliriz.<\/p>\n<pre><code class=\"language-python\"># Bir giri\u015f verisini yeniden olu\u015ftur\n    def reconstruct(self, visible_data):\n        h_probs = self._propagate_hidden(visible_data)\n        h_states = self._sample_hidden(h_probs)\n        v_probs = self._propagate_visible(h_states)\n        return v_probs # Olas\u0131l\u0131klar\u0131 veya \u00f6rneklenmi\u015f durumlar\u0131 d\u00f6nd\u00fcrebiliriz\n\n    # RBM'den yeni bir veri \u00f6rne\u011fi \u00fcret\n    def generate(self, num_samples=1):\n        # Rastgele bir gizli durumla ba\u015fla\n        h_states = (np.random.rand(num_samples, self.num_hidden) >= 0.5).astype(float)\n        \n        # Gibbs \u00f6rneklemesi ile birka\u00e7 ad\u0131m ilerle\n        for _ in range(100): # Yeterince ad\u0131m dengeye ula\u015fmak i\u00e7in\n            v_probs = self._propagate_visible(h_states)\n            v_states = self._sample_visible(v_probs)\n            h_probs = self._propagate_hidden(v_states)\n            h_states = self._sample_hidden(h_probs)\n        \n        return v_states # \u00dcretilen g\u00f6r\u00fcn\u00fcr durumlar\u0131 d\u00f6nd\u00fcr<\/pre>\n<p><\/code><\/p>\n<h4>Uygulama ve Test<\/h4>\n<p>\u015eimdi RBM s\u0131n\u0131f\u0131m\u0131z\u0131 kullanarak e\u011fitim ve test yapal\u0131m:<\/p>\n<pre><code class=\"language-python\"># RBM modelini ba\u015flat\nnum_visible_units = data.shape[1]\nnum_hidden_units = 3 # Gizli birim say\u0131s\u0131n\u0131 deneyerek ayarlayabilirsiniz\nrbm = RBM(num_visible_units, num_hidden_units)\n\n# Modeli e\u011fit\nprint(\"RBM E\u011fitimi Ba\u015fl\u0131yor...\")\nrbm.train(data, epochs=500, learning_rate=0.1, batch_size=len(data)) # Tam batch e\u011fitimi\nprint(\"RBM E\u011fitimi Tamamland\u0131.\")\n\n# Bir \u00f6rnek veriyi yeniden olu\u015fturma\nsample_to_reconstruct = data[0]\nreconstructed_sample_probs = rbm.reconstruct(sample_to_reconstruct)\nreconstructed_sample = (reconstructed_sample_probs >= 0.5).astype(int) # Olas\u0131l\u0131klar\u0131 ikiliye \u00e7evir\n\nprint(\"\\nOrijinal \u00f6rnek:\", sample_to_reconstruct)\nprint(\"Yeniden olu\u015fturulan (olas\u0131l\u0131k):\", np.round(reconstructed_sample_probs, 2))\nprint(\"Yeniden olu\u015fturulan (ikili):\", reconstructed_sample)\n\n# Yeni bir veri \u00f6rne\u011fi \u00fcretme\ngenerated_sample = rbm.generate(num_samples=1)\nprint(\"\\n\u00dcretilen yeni \u00f6rnek:\", generated_sample[0])<\/pre>\n<p><\/code><\/p>\n<p>Bu minimal NumPy uygulamas\u0131, RBM'in temel \u00e7al\u0131\u015fma prensiplerini ve CD-1 e\u011fitimini net bir \u015fekilde g\u00f6stermektedir. Ger\u00e7ek d\u00fcnya uygulamalar\u0131 i\u00e7in daha geli\u015fmi\u015f optimizasyon teknikleri, farkl\u0131 aktivasyon fonksiyonlar\u0131 ve daha b\u00fcy\u00fck veri setleri gerekebilir.<\/p>\n<h3>RBM'in Uygulama Alanlar\u0131<\/h3>\n<p>K\u0131s\u0131tl\u0131 Boltzmann Makineleri, basit mimarilerine ra\u011fmen \u00e7e\u015fitli makine \u00f6\u011frenimi g\u00f6revlerinde etkili bir \u015fekilde kullan\u0131lm\u0131\u015ft\u0131r. \u00dcretken do\u011falar\u0131 ve \u00f6zellik \u00f6\u011frenme yetenekleri, onlar\u0131 farkl\u0131 alanlarda de\u011ferli k\u0131lar.<\/p>\n<h4>Boyut \u0130ndirgeme ve \u00d6zellik \u00c7\u0131kar\u0131m\u0131<\/h4>\n<p>RBM'ler, y\u00fcksek boyutlu verileri daha d\u00fc\u015f\u00fck boyutlu, ancak anlaml\u0131 bir temsiline d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in kullan\u0131labilir. Gizli katman, giri\u015f verisinin en \u00f6nemli \u00f6zelliklerini yakalayan bir \"kodlama\" g\u00f6revi g\u00f6r\u00fcr. Bu, veri s\u0131k\u0131\u015ft\u0131rma, g\u00fcr\u00fclt\u00fc giderme ve di\u011fer algoritmalar i\u00e7in daha iyi \u00f6zellik setleri olu\u015fturma gibi g\u00f6revlerde faydal\u0131d\u0131r. \u00d6rne\u011fin, bir g\u00f6r\u00fcnt\u00fcdeki temel desenleri veya bir metindeki anahtar kavramlar\u0131 \u00f6\u011frenerek verinin daha kompakt bir temsilini sa\u011flayabilir.<\/p>\n<h4>Tavsiye Sistemleri<\/h4>\n<p>Netflix Prize yar\u0131\u015fmas\u0131 gibi b\u00fcy\u00fck veri problemlerinde RBM'ler, tavsiye sistemlerinin geli\u015ftirilmesinde \u00f6nemli bir rol oynam\u0131\u015ft\u0131r. Kullan\u0131c\u0131lar\u0131n filmlere verdi\u011fi derecelendirmeler g\u00f6r\u00fcn\u00fcr katman olarak temsil edilebilir. RBM, kullan\u0131c\u0131lar\u0131n izleme al\u0131\u015fkanl\u0131klar\u0131ndaki gizli desenleri (\u00f6rne\u011fin, belirli t\u00fcrleri veya y\u00f6netmenleri seven kullan\u0131c\u0131 gruplar\u0131) \u00f6\u011frenir. Bu \u00f6\u011frenilen desenler sayesinde, eksik derecelendirmeler tahmin edilebilir ve kullan\u0131c\u0131lara hen\u00fcz izlemedikleri filmler i\u00e7in ki\u015fiselle\u015ftirilmi\u015f tavsiyelerde bulunulabilir.<\/p>\n<h4>G\u00f6r\u00fcnt\u00fc ve Ses \u0130\u015fleme<\/h4>\n<p>G\u00f6r\u00fcnt\u00fc i\u015fleme alan\u0131nda RBM'ler, g\u00f6r\u00fcnt\u00fc yamalar\u0131ndan \u00f6zellik \u00f6\u011frenmek i\u00e7in kullan\u0131lm\u0131\u015ft\u0131r. \u00d6rne\u011fin, bir g\u00f6r\u00fcnt\u00fcn\u00fcn k\u00fc\u00e7\u00fck b\u00f6l\u00fcmlerini (patch) RBM'in g\u00f6r\u00fcn\u00fcr katman\u0131na besleyerek, gizli katman kenarlar, k\u00f6\u015feler veya belirli dokular gibi temel g\u00f6rsel \u00f6zellikleri \u00f6\u011frenebilir. Benzer \u015fekilde, ses i\u015fleme uygulamalar\u0131nda konu\u015f<\/p>\n","protected":false},"excerpt":{"rendered":"K\u0131s\u0131tl\u0131 Boltzmann Makinelerine Pratik Bir Giri\u015f: Minimal NumPy Uygulamas\u0131yla\nK\u0131s\u0131tl\u0131 Boltzmann Makineleri (RBM&#8217;ler), makine \u00f6\u011frenimi ve derin \u00f6\u011f&#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-38966","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>K\u0131s\u0131tl\u0131 Boltzmann Makinelerine Pratik Bir Giri\u015f: Minimal NumPy Uygulamas\u0131yla - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"K\u0131s\u0131tl\u0131 Boltzmann Makinelerine Pratik Bir Giri\u015f: Minimal NumPy Uygulamas\u0131yla\" \/>\n<meta property=\"og:description\" content=\"K\u0131s\u0131tl\u0131 Boltzmann Makinelerine Pratik Bir Giri\u015f: Minimal NumPy Uygulamas\u0131yla K\u0131s\u0131tl\u0131 Boltzmann Makineleri (RBM&#039;ler), makine \u00f6\u011frenimi ve derin \u00f6\u011f...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-11T14:00:46+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"K\u0131s\u0131tl\u0131 Boltzmann Makinelerine Pratik Bir Giri\u015f: Minimal NumPy Uygulamas\u0131yla\",\"datePublished\":\"2026-02-11T14:00:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/\"},\"wordCount\":2395,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/\",\"name\":\"K\u0131s\u0131tl\u0131 Boltzmann Makinelerine Pratik Bir Giri\u015f: Minimal NumPy Uygulamas\u0131yla - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-11T14:00:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"K\u0131s\u0131tl\u0131 Boltzmann Makinelerine Pratik Bir Giri\u015f: Minimal NumPy Uygulamas\u0131yla\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"K\u0131s\u0131tl\u0131 Boltzmann Makinelerine Pratik Bir Giri\u015f: Minimal NumPy Uygulamas\u0131yla - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/","og_locale":"tr_TR","og_type":"article","og_title":"K\u0131s\u0131tl\u0131 Boltzmann Makinelerine Pratik Bir Giri\u015f: Minimal NumPy Uygulamas\u0131yla","og_description":"K\u0131s\u0131tl\u0131 Boltzmann Makinelerine Pratik Bir Giri\u015f: Minimal NumPy Uygulamas\u0131yla K\u0131s\u0131tl\u0131 Boltzmann Makineleri (RBM'ler), makine \u00f6\u011frenimi ve derin \u00f6\u011f...","og_url":"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-11T14:00:46+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"K\u0131s\u0131tl\u0131 Boltzmann Makinelerine Pratik Bir Giri\u015f: Minimal NumPy Uygulamas\u0131yla","datePublished":"2026-02-11T14:00:46+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/"},"wordCount":2395,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/","url":"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/","name":"K\u0131s\u0131tl\u0131 Boltzmann Makinelerine Pratik Bir Giri\u015f: Minimal NumPy Uygulamas\u0131yla - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-11T14:00:46+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/kisitli-boltzmann-makinelerine-pratik-bir-giris-minimal-numpy-uygulamasiyla\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"K\u0131s\u0131tl\u0131 Boltzmann Makinelerine Pratik Bir Giri\u015f: Minimal NumPy Uygulamas\u0131yla"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38966","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=38966"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38966\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38966"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38966"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38966"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}