Sıfırıncı Durum: Donanım ve Yazılımın Derinliklerinde

Rastgelelik Bir Sonuç Değil, Sürecin Kendisidir

Mikroişlemcilerin soğuk mantığına aşık olan biri olarak, "rastlantı" kelimesi benim için her zaman bir tür kavramsal bir zarafet veya tam tersi, çözülmemiş bir kaostan ibaretti. Bu serideki önceki yazılarımda, rastgele girdiyi bir amaç uğruna biçimlendirme süreçlerini incelemiştim; yani, bir girdiyi alıp onu anlamlı bir çıktıya dönüştürme mühendisliğini konuşuyorduk. Ancak bu yazı, biraz farklı bir açıyı ele alıyor: Rastgelelik neden sonuca ulaşmak zorunda değil?

Sistemlerimizi tasarlarken her şeyin deterministik olması gerektiğini düşünürüz. Giriş $I$, varsa benim algoritmam $A$ ve beklediğim çıktım $O$'dur. Basit bir denklem gibi görünüyor: $I \rightarrow O$. Bu, kontrol edebileceğimiz, modelleyebileceğimiz ve öngörebileceğimiz bir dünyadır. Ama doğa, bu basitleştirmeyi sürekli baltalıyor.

Bir gömülü sistemin beklenmedik bir gürültüye maruz kaldığını düşünün. Sensörden gelen veri akışı, termal değişimlerle veya radyasyonla hafifçe sapıyor olabilir. Bu sapma başlangıçta sadece bir "gürültü"dür, bir hata payıdır. Eğer bu gürültüyü tamamen filtrelemeye çalışırsanız, sisteminiz gerçek dünyanın sunduğu karmaşıklığına yabancılaşır; steril bir simülasyon ortamında mükemmel çalışır ama gerçeğe adapte olamaz.

İşte benim savunacağım nokta bu: Gerçek dünya, saf deterministik bir bilgisayar modeli değildir; o, sürekli olarak kontrol edilemeyen rastgelelik enjeksiyonlarıyla dolu bir fiziksel sistemdir.

Örneğin, Raspberry Pi üzerinde çalışan küçük bir veri toplama ünitesini düşünün. Eğer amacımız mükemmel bir ölçümse, gürültüyü bastırırız. Ama bazen amacımız, bu cihazın o anki tüm çevresel etkileşimlerini bir kayda geçirmekse—örneğin, beklenmedik bir manyetik alan değişiminin yazılıma olan etkisini araştırmaksa—o zaman o "gürültü" benim için en değerli veri paketidir. O anda, rastgelelik artık bir hata değil, sistemin canlılığını kanıtlayan bir girdi haline gelir.

Bu beni saf matematiksel rastgele sayı üretimine (PRNG) sürüklüyor ancak farklı bir seviyede. Bir PRNG, başlangıç tohumunuza bağlıdır ve bu tamamen öngörülebilirdir. Oysa fiziksel bir sistemdeki rastgelelik, eğer entropi kaynağından yeterince uzaksa (örneğin termal gürültü), bizim için gerçekten öngörülemez bir girdi sağlayabilir.

Her şeyi mükemmeliyetçi gözle incelemeye kalkışınca, bazen o "bozulmayı" ya da beklenmedik davranışı sırf düzeltmeye çalışırız. Bu, sanki bir müzisyene gidip sadece kusursuz notaları çalmasını istemek gibidir; oysa müziğin ruhu, nefes alma aralıklarında ve beklenmedik vibrasyonlarda gizlidir.

Bir mühendis olarak görevimiz, bu iki uç arasında bir denge kurmaktır: Sistemin bilinmeyen parametrelerini kabul etmek ve onların sunduğu rastgele girdiyi, bir sonraki tasarım döngüsü için yeni hipotezler üretme malzemesi olarak kullanmaktır. Rastgelelik, sadece "anlık başarısızlık" değildir; o, sistemin sınırlarını zorlayan ve onu bir sonraki seviyeye taşıyan en ucuz değişkendir. Eğer bu değişkeni görmezden geliyorsak, o zaman onu bilinmeyen bir düşman olarak görüyoruz. Oysa o, maceranın ta kendisidir.