Algoritmanın Ardındaki İnsan...
23:13:29
Algoritmanın Sınırlarını Kim Çizer?
Günümüzde “Algoritma” kelimesi teknoloji dünyasının en sık kullanılan kavramlarından biri. Sosyal medya platformlarının hangi gönderileri karşımıza çıkaracağını, navigasyon uygulamalarının hangi yolu önereceğini, bankaların kredi başvurularını nasıl değerlendireceğini, arama motorlarının sonuçları hangi sıraya koyacağını veya yapay zekâ sistemlerinin nasıl tahminlerde bulunacağını anlatırken sürekli algoritmalardan söz ediyoruz…
Fakat günlük kullanımda kavramın anlamı giderek daraldı. Algoritma denildiğinde çoğu insanın zihninde bilgisayarların, sunucuların veya karmaşık yazılımların kendi başlarına gerçekleştirdiği gizemli bir işlem canlanıyor. Sanki algoritma, bilgisayarın içinde yaşayan ve ne yapacağına kendisi karar veren görünmez bir mekanizma.
Oysa algoritmanın kendisi bilgisayar değildir. Hatta algoritmanın var olması için bilgisayara bile ihtiyaç yoktur.
En basit tanımıyla algoritma, belirli bir problemi çözmek veya belirli bir sonuca ulaşmak için izlenen, tanımlanmış ve uygulanabilir adımlar dizisidir. Bir başka ifadeyle algoritma, “ne yapılacağını ve hangi sırayla yapılacağını” tarif eden yöntemdir. Bilgisayar bilimi açısından bu adımların hesaplanabilir olması ve belirli girdilerden belirli çıktılara ulaşması beklenir. ABD Ulusal Standartlar ve Teknoloji Enstitüsü (NIST) de algoritmayı, istenen bir sonuca ulaşmak için uygulanabilir adımlar kümesi olarak tanımlar.
Bu nedenle algoritma kavramı bilgisayarlardan çok daha eskidir.
Algoritma bilgisayardan önce vardı
Bir yemek tarifi düşünelim.
Önce malzemeleri hazırlayın. Ardından yağı ısıtın. Soğanı ekleyip belirli bir süre kavurun. Sonra diğer malzemeleri sırayla ilave edin. Karışımı belirli bir sıcaklıkta belirli bir süre pişirin ve sonunda servis edin.
Bu tarif, bilgisayar programı değildir. Fakat bir algoritmanın temel mantığını taşır. Çünkü belirli bir amaca ulaşmak için izlenmesi gereken adımları tanımlar.
Aynı şey iki sayıyı çarpmak, bir haritada en kısa yolu bulmak, bir telefon rehberinde belirli bir ismi aramak veya yüzlerce kitabı alfabetik sıraya koymak için kullanılan yöntemler açısından da geçerlidir. Bilgisayar bilimi literatüründe algoritmanın temel niteliği tam olarak budur: Bir problemi çözmek için tanımlanmış yöntem.
“Algoritma” kelimesinin kendisinin kökeni de bilgisayarlarla değil, matematik tarihiyle bağlantılıdır. Terim, 9. yüzyılda yaşamış İranlı matematikçi Muhammed bin Musa el-Hârizmî‘nin adının Latinceleştirilmiş biçiminden türemiştir. Hârizmî‘nin aritmetik ve cebir alanındaki sistematik yöntemleri, daha sonra Avrupa’da hesaplama yöntemleriyle ilişkilendirilen “algoritma” sözcüğünün ortaya çıkmasına katkıda bulunmuştur.
Dolayısıyla algoritmayı bilgisayarla özdeşleştirmek, kavramın tarihini tersinden okumak anlamına gelir. Bilgisayarlar algoritmaları uygulayabilen makinelerden biridir; algoritmanın kendisi bilgisayar değildir.
Bilgisayar algoritmayı nasıl kullanır?
Burada önemli bir ayrım ortaya çıkar.
Bir algoritma, bir problemi çözmek için kullanılacak yöntemi tarif eder. Program ise bu yöntemin bilgisayar tarafından uygulanabilecek biçimde ifade edilmiş halidir.
Örneğin “bir listedeki en küçük sayıyı bul” bir problemdir. Bu problemi çözmek için çeşitli algoritmalar tasarlanabilir. Listedeki ilk sayıyı geçici olarak en küçük kabul edip diğer sayılarla tek tek karşılaştırmak bunlardan biridir.
Bu yöntemi Python, C++, Java veya başka bir programlama diliyle bilgisayarın anlayabileceği biçimde yazdığınızda ortaya program çıkar.
Dolayısıyla kabaca şöyle bir zincir kurulabilir:
Problem → yöntem → algoritma → program → bilgisayarın çalıştırması → sonuç.
Bu zincirin her aşaması aynı şey değildir.
Bilgisayar algoritmayı “icat etmiyor”; ona verilmiş veya sistem tarafından öğrenilmiş bir yöntemi hesaplama işlemleri üzerinden uyguluyor. Bilgisayarın işlem yapabilmesi, algoritmanın ne olduğunu değiştirmiyor.
Bu ayrım özellikle yapay zekâ çağında daha önemli hale geliyor. Çünkü günümüzde “algoritma”, “yazılım”, “yapay zekâ modeli” ve “sistem” kelimeleri çoğu zaman birbirinin yerine kullanılıyor.
Oysa bunlar farklı kavramlar.
Algoritma ile yapay zekâ modeli aynı şey değil
Makine öğrenmesinde algoritma ile model arasındaki fark daha da belirginleşiyor.
Bir makine öğrenmesi algoritması, verilerden bir model oluşturmak veya modelin parametrelerini belirli bir hedef doğrultusunda güncellemek için kullanılan yöntemdir. Eğitimin sonunda ortaya çıkan model ise yeni girdiler karşısında tahmin veya sınıflandırma yapabilen matematiksel yapıdır. IBM de algoritma ile modelin ilişkili ancak farklı kavramlar olduğunu özellikle vurguluyor.
Bunu bir öğretmen ve öğrenci ilişkisine benzetebiliriz.
Öğretmenin öğrencinin belirli bir konuyu öğrenmesi için kullandığı yöntem algoritmaya benzetilebilir. Öğrencinin eğitim sonunda edindiği bilgi ve beceri ise modele benzer. Yöntem ile ortaya çıkan sonuç aynı şey değildir.
Makine öğrenmesinde iş daha da ilginçtir. Geleneksel yazılımda programcı, sistemin hangi koşulda ne yapacağını büyük ölçüde açık kurallarla belirler. “Eğer sıcaklık şu değerin altındaysa ısıtıcıyı çalıştır” gibi kurallar bunun basit örnekleridir.
Makine öğrenmesinde ise insan her kuralı tek tek yazmak yerine, sisteme büyük miktarda veri sunar ve belirli bir hedef tanımlar. Öğrenme algoritması, bu verilerdeki örüntüleri kullanarak modelin parametrelerini ayarlar.
Bu durum bazen “artık algoritmayı insan yazmıyor” şeklinde yorumlanıyor.
Bu da tam olarak doğru değil.
İnsan hâlâ sistemin hangi problemi çözeceğine, hangi verilerin kullanılacağına, hangi hedefin optimize edileceğine, hangi performans ölçütünün önemli olduğuna ve modelin hangi koşullarda kullanılacağına ilişkin temel kararları veriyor. Makine, bu çerçeve içerisinde bazı kuralları veya parametreleri doğrudan insan tarafından yazılmış biçimde almak yerine verilerden öğrenebiliyor.
Yani insanın rolü ortadan kalkmıyor; daha üst seviyeye taşınıyor.
Algoritmanın başında insan vardır
Bir algoritmanın teknik olarak çalışması için her seferinde bir insanın başında oturması gerekmez. Bir algoritma bir sunucuda yıllarca insan müdahalesi olmadan çalışabilir.
Fakat bu, insanın algoritmadan tamamen çıktığı anlamına gelmez.
Bir algoritmanın ortaya çıkması için önce bir problem tanımlanması gerekir.
Neyi çözmeye çalışıyoruz?
Neyi başarı olarak kabul ediyoruz?
Hangi sonucu istiyoruz?
Hangi sonuçları istemiyoruz?
Hangi verileri kullanacağız?
Hangi kısıtlamalara uyacağız?
Bu soruların tamamı teknik sorular değildir. Büyük ölçüde insan tercihleri içerir.
Örneğin bir alışveriş sitesinin “en iyi ürünü” kullanıcıya göstermesini istediğinizi düşünelim. Burada “en iyi” ne demektir?
En ucuz ürün mü?
En yüksek puanı alan ürün mü?
En çok satan ürün mü?
Kâr marjı en yüksek ürün mü?
Kullanıcının geçmiş davranışlarına en çok benzeyen ürün mü?
Kullanıcının daha önce satın aldığı ürünlerle ilişkili ürün mü?
Bunların hepsi matematiksel olarak hesaplanabilir. Fakat hangisinin tercih edileceğine matematik tek başına karar vermez.
Bir insan veya insanlardan oluşan bir kuruluş hedefi belirler. Algoritma ise bu hedefi uygulanabilir bir hesaplama sürecine dönüştürür.
Bu nedenle algoritmalar yalnızca matematiksel yapılar değil, aynı zamanda insan tercihlerini teknik sistemlere aktaran araçlardır.
“Algoritma böyle karar verdi” ne demek?
Günlük hayatta “algoritma bunu seçti”, “algoritma bu kişiyi ön plana çıkardı” veya “algoritma başvuruyu reddetti” gibi ifadeler kullanıyoruz.
Bu ifadeler pratik açıdan anlaşılır olsa da gerçekte önemli bir şeyi gizleyebilir: Algoritmanın hangi kararı vereceğini belirleyen çerçeve önceden oluşturulmuştur.
Bir sosyal medya platformu belirli bir içeriği diğerinin üzerinde gösteriyorsa, bunun arkasında birden fazla hedef ve ölçüt bulunabilir. Kullanıcının platformda geçirdiği süre, daha önce etkileşimde bulunduğu içerikler, içeriklerin güncelliği, kullanıcıyla konu arasındaki ilişki veya platformun belirlediği başka ölçütler hesaba katılabilir.
Algoritma bütün bunları bir hesaplama sürecine dönüştürür.
Ancak “daha fazla etkileşim” hedefinin seçilmesi bile teknik bir zorunluluk değildir. Bu, platformun tasarım tercihidir.
Aynı verilerle çalışan iki farklı algoritma, farklı hedefler nedeniyle farklı sonuçlar üretebilir.
Biri kullanıcıya en fazla zaman geçireceği içeriği göstermeye çalışırken diğeri en güvenilir içeriği göstermeye çalışabilir. Bir başka sistem çeşitliliği artırmaya, başka bir sistem ise satışları yükseltmeye odaklanabilir.
Dolayısıyla algoritma yalnızca “hesaplayan şey” değildir. Hesaplamanın hangi amaca hizmet edeceği de sistemin tasarımının bir parçasıdır.
Algoritmalar tarafsız olmak zorunda değil
Burada algoritmalarla ilgili en önemli yanlış anlamalardan biri ortaya çıkar: “Bilgisayar hesapladığına göre sonuç objektif olmalıdır.”
Hayır.
Bir bilgisayar işlemi matematiksel olarak kusursuz biçimde gerçekleştirebilir ve yine de ortaya çıkan sonuç adaletsiz, hatalı veya yanıltıcı olabilir.
Çünkü matematiksel doğruluk ile toplumsal doğruluk aynı şey değildir.
Bir kredi değerlendirme sistemi belirli değişkenlere bakarak insanları yüksek veya düşük riskli olarak sınıflandırabilir. Eğer kullanılan veriler geçmişteki eşitsizlikleri içeriyorsa, algoritma bunları çok büyük ölçekte yeniden üretebilir.
NIST‘in yapay zekâdaki önyargılar üzerine çalışmaları da sorunun yalnızca algoritmanın teknik yapısından veya eğitim verisinden kaynaklanmadığını; insan ve kurumsal önyargıların teknoloji geliştirme sürecine kadar uzanabildiğini ortaya koyuyor.
Bu nedenle “algoritma tarafsızdır” demek yerine, “algoritmanın hangi verilerle, hangi amaçla ve hangi ölçütlerle tasarlandığına bakmak gerekir” demek daha doğrudur.
Algoritmanın verdiği sonuç matematiksel olabilir. Fakat matematiksel bir sistemin hedefini insanlar belirler.
Yapay zekâ algoritmayı daha görünmez hale getiriyor
Yapay zekânın yükselişi bu meseleyi daha da karmaşıklaştırdı.
Eskiden bir yazılımın nasıl çalıştığını anlamak için koduna bakmak çoğu zaman yeterli olabiliyordu. Kod açıkça “şu koşul gerçekleşirse bunu yap” diyordu.
Modern makine öğrenmesi sistemlerinde ise davranışın önemli bir bölümü eğitim sürecinde ortaya çıkıyor. İnsanlar modelin her karar kuralını tek tek yazmıyor. Model, büyük veri kümelerindeki örüntülerden yararlanarak çok sayıda parametre öğreniyor.
Bu nedenle “algoritmayı insan yazdı” cümlesi de artık tek başına yeterli değil.
İnsanlar algoritmanın yanı sıra eğitim sürecini, hedef fonksiyonlarını, veri seçimini, model mimarisini, değerlendirme yöntemlerini ve kullanım sınırlarını tasarlıyor. Sistem ise bu çerçeve içinde insanların tek tek öngöremeyeceği ilişkileri öğrenebiliyor.
Sonuç olarak insan tarafından yazılmamış görünen bir karar mekanizması ortaya çıkıyor.
Fakat bu mekanizma boşluktan doğmuyor.
Veri insan dünyasından geliyor. Hedef insan tarafından belirleniyor. Başarı ölçütünü insanlar seçiyor. Kullanılacak sistem insanlar tarafından devreye alınıyor. Sonucun hangi durumda kabul edilebilir olduğu yine insanlar tarafından değerlendiriliyor.
Bu yüzden yapay zekânın kararlarını anlamaya çalışırken yalnızca modelin içine bakmak yeterli değil. Modelin çevresindeki insan sistemine de bakmak gerekiyor.
Algoritma kendi kendine oluşabilir mi?
Burada daha ileri bir soru sorulabilir: Eğer bir algoritma başka bir algoritma tarafından üretilebiliyorsa, insanın rolü tamamen ortadan kalkmış olmaz mı?
Teorik olarak bir sistem başka bir sistemin tasarımını optimize edebilir. Makine öğrenmesi, otomatik model seçimi ve benzeri yöntemler bunun farklı biçimlerini zaten kullanıyor.
Ancak bu durum insanı denklemin dışına çıkarmaz.
Çünkü otomatik sistemin neyi optimize edeceği, hangi sınırlar içinde çalışacağı, hangi performans ölçütünün kullanılacağı ve ortaya çıkan çözümün ne için kullanılacağı yine bir üst düzey tasarım problemidir.
Başka bir ifadeyle, algoritmalar başka algoritmalar üretebilir; ancak bu süreci mümkün kılan çerçevenin de bir tasarımı vardır.
Burada insanın rolü tek tek talimat yazmaktan, sistemin hedeflerini ve sınırlarını belirlemeye doğru kayar.
Asıl mesele algoritmanın kendisi değil
Bu nedenle “algoritma ne yaptı?” sorusu çoğu zaman eksik bir sorudur.
Daha doğru sorular şunlardır:
Algoritma neyi yapması için tasarlandı?
Hangi hedefi en üst düzeye çıkarmaya çalışıyor?
Hangi verilerle çalışıyor?
Hangi veriler dışarıda bırakılıyor?
Hangi seçenekleri mümkün, hangilerini imkânsız kabul ediyor?
Sonuçları kim değerlendiriyor?
Hata yaptığında kim sorumlu?
Bu sorular sorulduğunda algoritmanın arkasındaki insan tercihleri görünür hale gelir.
Çünkü algoritmalar dünyayı kendiliklerinden anlamlandırmaz. Onlara verilen girdileri, tanımlanan kuralları, öğrenme hedeflerini ve matematiksel ilişkileri kullanarak sonuç üretirler.
Bir navigasyon algoritması “en iyi yol”u keşfetmez; önceden tanımlanmış ölçütlere göre en uygun yolu hesaplar. Bir öneri algoritması “en ilginç içeriği” bilmez; ilginçliği temsil ettiği varsayılan ölçütleri kullanarak tahminde bulunur. Bir kredi algoritması bir insanın finansal karakterini doğrudan göremez; kendisine verilen değişkenler üzerinden belirli bir risk olasılığını hesaplar.
Dolayısıyla algoritmanın çıktısı ile gerçekliğin kendisini birbirine karıştırmamak gerekir.
Algoritmalar hayatımızın her yerinde
Bugün algoritmalar yalnızca bilgisayar ekranlarında çalışan teknik araçlar değildir. Trafik ışıklarının çalışma düzeninden uçakların rotalarına, üretim tesislerindeki otomasyondan bankacılık sistemlerine, arama motorlarından sosyal medya platformlarına kadar çok geniş bir alanda kullanılıyorlar.
Fakat bütün bu sistemlerin ortak noktası bilgisayar olmaları değil.
Ortak noktaları, belirli girdileri belirli bir yöntem üzerinden işleyerek bir sonuca ulaşmaları.
Bu nedenle algoritmayı anlamanın en kolay yolu onu “bilgisayarın yaptığı şey” olarak düşünmekten vazgeçmektir.
Algoritma, bir işi nasıl yapacağımızı tarif eden yöntemdir.
Bilgisayar ise bu yöntemi çok hızlı, çok büyük ölçekte ve çoğu zaman insan müdahalesi olmadan uygulayabilen bir araçtır.
Aradaki fark küçük gibi görünse de aslında son derece önemlidir. Çünkü bilgisayarın yaptığı hesaplamayı anlayabilmek ile o hesaplamanın neden yapıldığını anlamak aynı şey değildir.
Neden o hedef seçildi?
Neden o veri kullanıldı?
Neden o ölçüt diğerinden daha önemli kabul edildi?
Neden belirli bir sonuç “başarı” olarak tanımlandı?
Bu soruların cevapları çoğu zaman kodun içinde değil, kodu yazan veya sistemi tasarlayan insanların kararlarında bulunur.
Sonunda yine insan vardır
Algoritmalar çağımızın en güçlü araçlarından biri haline geldi. Büyük miktarda veriyi insanın hesaplayamayacağı hızlarda işleyebiliyor, milyonlarca seçeneği karşılaştırabiliyor ve bazı durumlarda insanların fark edemeyeceği örüntüleri ortaya çıkarabiliyorlar.
Ancak bütün bu yetenekler algoritmayı insan iradesinden bağımsız, gizemli bir karar vericiye dönüştürmüyor.
Bir algoritmanın başlangıcında çoğu zaman bir insanın tanımladığı problem vardır. Ardından bir insanın veya insanlardan oluşan bir ekibin belirlediği amaç, veri, yöntem ve kısıtlamalar gelir. Algoritma bu çerçeveyi hesaplanabilir hale getirir. Bilgisayar veya yapay zekâ sistemi ise ortaya çıkan yöntemi uygular ve sonuç üretir.
Makine öğrenmesi söz konusu olduğunda sistem, süreç içinde insanların tek tek yazmadığı örüntüleri de öğrenebilir. Bu, insanın rolünü ortadan kaldırmaz; yalnızca insan ile makine arasındaki iş bölümünü değiştirir.
En sonunda ise başka bir insan sorusu ortaya çıkar: Üretilen sonuçla ne yapacağız?
Bir algoritmanın milyonlarca kişiyi etkileyen bir karar üretmesi, o kararın sorumluluğunu otomatik olarak makineye devretmez. “Algoritma böyle karar verdi” cümlesi teknik olarak bir süreci açıklayabilir; fakat tek başına sorumluluğu açıklamaz.
Çünkü algoritmalar amaç belirlemez. Amaçları insanlar belirler.
Algoritmalar değer yargılarını kendiliğinden oluşturmaz. Hangi değerin optimize edileceğine insanlar karar verir.
Algoritmalar hangi problemin önemli olduğunu kendiliğinden seçmez. Problemi insanlar tanımlar.
Ve algoritmalar bir sonuç ürettiğinde, o sonucun toplum açısından iyi, kötü, adil, adaletsiz, yararlı veya zararlı olup olmadığına ilişkin tartışma da yine insanların sorumluluğundadır.
Bu yüzden algoritmayı anlamanın en doğru yolu onu bilgisayarın içindeki gizemli bir “zeka” olarak görmek değil, insan tarafından tanımlanmış bir amaca ulaşmak için kullanılan sistematik bir yöntem olarak görmektir.
Bilgisayar algoritmayı çalıştırabilir. Yapay zekâ algoritmadan öğrenebilir. Bir algoritma başka bir algoritmayı optimize edebilir.
Ama algoritmanın neyi çözmeye çalıştığını sormaya başladığımız anda, karşımıza yeniden insan çıkar.
