Bu başlık tek bir işlemi değil, farklı zorluk düzeylerini kapsar. Basit bir yapay zekâ için önce problemi ve veriyi tanımlayıp bir model seçer, modeli örneklerle eğitir, yeni girdilerle test eder ve hatasına göre iyileştirirsin. Aşağıdaki Python örneği, iki sayısal özelliğe bakarak bir girdiyi iki sınıftan birine ayıran en küçük çalışır makine öğrenmesi modelini gösterir.
Yapay zekâ, bilgisayarın yalnızca önceden yazılmış koşulları uygulaması yerine verilerden örüntü öğrenmesini veya belirli kararları otomatik vermesini sağlayan yazılım yaklaşımıdır. Bu nedenle “yapay zekâ kodlamak” bazen kurallara dayalı bir sistem yazmak, bazen makine öğrenmesi modeli eğitmek, bazen de hazır bir yapay zekâ hizmetini uygulamaya bağlamak anlamına gelir.
Örneğin e-postaları “istenmeyen” ve “normal” diye ayırmak istiyorsan girdiler e-posta metni veya metinden çıkarılan özellikler, çıktı ise sınıf etiketi olur. Model, etiketleri bilinen örneklerden ilişki öğrenir; daha sonra daha önce görmediği bir e-postayı sınıflandırır. Modelin eğitim verisi kötü veya yetersizse kod doğru çalışsa bile sonuçlar güvenilir olmayabilir.
İhtiyacın, veri miktarın ve beklediğin sonuca göre yaklaşım değişir:
Kodlamaya yeni başlıyorsan önce küçük ve ölçülebilir bir problem seç. “Akıllı bir uygulama yapacağım” belirsizdir; “iki sayısal özelliğe göre iki sınıftan birini tahmin edeceğim” ise test edilebilir bir hedeftir.
Aşağıdaki örnek, harici kütüphane kullanmadan basit bir algılayıcı modeli kurar. Varsayımsal olarak iki sayısal özelliği olan verileri iki sınıfa ayırır. Model her örnekte tahminini kontrol eder, yanlışsa ağırlıklarını değiştirir.
Ön koşul olarak Python 3 kurulu olmalı ve kodu
Bu kodu terminalde çalıştırdığında
Kod örneğinde
İlk olarak çıktıyı kesinleştir: sınıflandırma mı, sayı tahmini mi, metin üretimi mi, görüntü tanıma mı? Ardından veriyi topla, hatalı veya hassas bilgileri ayıkla, eğitim ve test kümelerini birbirinden ayır. Modeli yalnızca eğitim başarısına göre değil, daha önce görmediği test verisindeki sonuçlarına göre değerlendir.
Başarı oranı tek başına yeterli olmayabilir. Dengesiz veride model çoğunluk sınıfını sürekli tahmin ederek yüksek görünen bir oran elde edebilir. Yanlış pozitif ve yanlış negatif sonuçların maliyeti farklıysa kesinlik, duyarlılık veya sınıf bazlı sonuçları da incelemen gerekir.
Sonuçlar zayıfsa hemen daha büyük bir model kullanma. Önce etiketlerin doğru olup olmadığını, test verisinin eğitim verisine karışıp karışmadığını, eksik değerleri ve girdilerin ölçeklerini kontrol et. Sorun veri kaynaklıysa model değiştirmek yerine veriyi düzeltmek daha etkili olabilir.
Eğitim verisine kişisel, ticari veya gizli bilgileri gereksiz yere koyma. Modelin çıktısını özellikle sağlık, hukuk, finans, güvenlik veya işe alım gibi yüksek etkili alanlarda doğrudan kesin karar kabul etme. Çıktıyı doğrulayan kurallar, insan incelemesi ve hatalı sonuçların kaydı bulunmalıdır.
Ayrıca modelin neyi kanıtlamadığını açıkça belirle: yüksek test başarısı tüm kullanıcı gruplarında aynı sonucu vereceğini, modelin neden doğru karar verdiğini bildiğini veya gelecekte değişen verilerde de aynı performansı sürdüreceğini garanti etmez. Küçük örnekle çalışan kod, öğrenme mantığını gösterir; üretim ortamına geçmeden önce daha geniş veri, ayrı test, hata takibi ve güvenlik kontrolleri gerekir.
Yapay zekâ kodlamak ne demektir?
Yapay zekâ, bilgisayarın yalnızca önceden yazılmış koşulları uygulaması yerine verilerden örüntü öğrenmesini veya belirli kararları otomatik vermesini sağlayan yazılım yaklaşımıdır. Bu nedenle “yapay zekâ kodlamak” bazen kurallara dayalı bir sistem yazmak, bazen makine öğrenmesi modeli eğitmek, bazen de hazır bir yapay zekâ hizmetini uygulamaya bağlamak anlamına gelir.
Örneğin e-postaları “istenmeyen” ve “normal” diye ayırmak istiyorsan girdiler e-posta metni veya metinden çıkarılan özellikler, çıktı ise sınıf etiketi olur. Model, etiketleri bilinen örneklerden ilişki öğrenir; daha sonra daha önce görmediği bir e-postayı sınıflandırır. Modelin eğitim verisi kötü veya yetersizse kod doğru çalışsa bile sonuçlar güvenilir olmayabilir.
Hangi yöntem seçilmeli?
İhtiyacın, veri miktarın ve beklediğin sonuca göre yaklaşım değişir:
| Yaklaşım | Ne zaman kullanılır? | Sınırı |
|---|---|---|
| Kural tabanlı sistem | Kurallar açık ve sınırlıysa; örneğin belirli koşullara göre uyarı üretmek için | Yeni durumları kendi başına öğrenmez |
| Makine öğrenmesi | Etiketlenmiş veya örüntü içeren veri varsa; sınıflandırma ve tahmin için | Veri kalitesine ve doğru model seçimine bağlıdır |
| Derin öğrenme | Görüntü, ses veya büyük metin verilerinde karmaşık örüntüler için | Daha fazla veri, işlem gücü ve değerlendirme gerektirir |
| Hazır model veya API | Sohbet, metin üretme, özetleme gibi işlevleri hızlıca uygulamaya eklemek için | Kullanılan hizmetin sınırlarına, maliyetine ve veri politikalarına bağlıdır |
Python ile basit bir model oluşturma
Aşağıdaki örnek, harici kütüphane kullanmadan basit bir algılayıcı modeli kurar. Varsayımsal olarak iki sayısal özelliği olan verileri iki sınıfa ayırır. Model her örnekte tahminini kontrol eder, yanlışsa ağırlıklarını değiştirir.
Ön koşul olarak Python 3 kurulu olmalı ve kodu
yapay_zeka.py adlı bir dosyaya kaydetmelisin.- Eğitim verisini tanımla. Her satırdaki ilk iki sayı girdiyi, son sayı ise beklenen sınıfı temsil eder. Bu örnekte sınıflar 0 ve 1'dir.
- Modelin ağırlıklarını başlat. Ağırlıklar, her girdinin tahminde ne kadar etkili olduğunu belirler. Başlangıçta sıfır olmaları normaldir.
- Eğitim döngüsünü çalıştır. Model her satır için tahmin üretir; tahmin beklenen sınıftan farklıysa ağırlıkları ve eşik değerini günceller.
- Yeni girdiyi sınıflandır. Eğitim tamamlandıktan sonra daha önce eğitimde kullanılmayan bir girdiyi modele ver ve üretilen sınıfı gözle.
- Sonucu eğitim verisinden ayrı değerlendir. Eğitim örneklerini doğru bilmek, modelin yeni verilerde de başarılı olduğunu kanıtlamaz; bunun için ayrı test verisi kullanmalısın.
Python:
# yapay_zeka.py
veriler = [
([1, 1], 0),
([1, 2], 0),
([4, 3], 1),
([5, 4], 1),
]
agirliklar = [0.0, 0.0]
esik = 0.0
ogrenme_orani = 0.1
def tahmin(girdi):
toplam = sum(girdi[i] * agirliklar[i] for i in range(len(girdi)))
return 1 if toplam >= esik else 0
for tur in range(10):
for girdi, beklenen in veriler:
sonuc = tahmin(girdi)
hata = beklenen - sonuc
for i in range(len(agirliklar)):
agirliklar[i] += ogrenme_orani * hata * girdi[i]
global_esik_degisimi = ogrenme_orani * hata
esik -= global_esik_degisimi
ornek = [4, 2]
print("Tahmin:", tahmin(ornek))
print("Ağırlıklar:", agirliklar)
Bu kodu terminalde çalıştırdığında
Tahmin: 1 gibi bir çıktı görmen beklenir; ancak kesin sonuç, kodu nasıl değiştirdiğine ve Python sürümüne değil, esas olarak verilen algoritmaya ve verilere bağlıdır. Buradaki 1, modelin [4, 2] girdisini ikinci sınıfa yakın gördüğü anlamına gelir. Bu, modelin gerçek dünyada kesin veya doğru karar verdiğini göstermez.Kod örneğinde
veriler eğitim kümesidir. agirliklar modelin öğrendiği sayısal değerleri, hata ise beklenen sınıf ile tahmin arasındaki farkı ifade eder. Model yalnızca 0 ve 1 sınıflarını öğrenir; metin anlamaz, görsel tanımaz ve yeni bir problemi kendiliğinden çözemez.Gerçek bir projede izlenecek yol
İlk olarak çıktıyı kesinleştir: sınıflandırma mı, sayı tahmini mi, metin üretimi mi, görüntü tanıma mı? Ardından veriyi topla, hatalı veya hassas bilgileri ayıkla, eğitim ve test kümelerini birbirinden ayır. Modeli yalnızca eğitim başarısına göre değil, daha önce görmediği test verisindeki sonuçlarına göre değerlendir.
Başarı oranı tek başına yeterli olmayabilir. Dengesiz veride model çoğunluk sınıfını sürekli tahmin ederek yüksek görünen bir oran elde edebilir. Yanlış pozitif ve yanlış negatif sonuçların maliyeti farklıysa kesinlik, duyarlılık veya sınıf bazlı sonuçları da incelemen gerekir.
Sonuçlar zayıfsa hemen daha büyük bir model kullanma. Önce etiketlerin doğru olup olmadığını, test verisinin eğitim verisine karışıp karışmadığını, eksik değerleri ve girdilerin ölçeklerini kontrol et. Sorun veri kaynaklıysa model değiştirmek yerine veriyi düzeltmek daha etkili olabilir.
Yapay zekâ uygulamasını güvenli biçimde kullanma
Eğitim verisine kişisel, ticari veya gizli bilgileri gereksiz yere koyma. Modelin çıktısını özellikle sağlık, hukuk, finans, güvenlik veya işe alım gibi yüksek etkili alanlarda doğrudan kesin karar kabul etme. Çıktıyı doğrulayan kurallar, insan incelemesi ve hatalı sonuçların kaydı bulunmalıdır.
Ayrıca modelin neyi kanıtlamadığını açıkça belirle: yüksek test başarısı tüm kullanıcı gruplarında aynı sonucu vereceğini, modelin neden doğru karar verdiğini bildiğini veya gelecekte değişen verilerde de aynı performansı sürdüreceğini garanti etmez. Küçük örnekle çalışan kod, öğrenme mantığını gösterir; üretim ortamına geçmeden önce daha geniş veri, ayrı test, hata takibi ve güvenlik kontrolleri gerekir.