Yapay Zeka Nasıl Eğitilir?

nt

Emekli
Katılım
21 Nisan 2023
Mesajlar
1,221
Makine öğrenimi dediğimiz şey, sistemlere deneyimlerden öğrenme yetisi kazandıran bir yaklaşım. Örneğin, bir görüntü tanıma sistemi düşünün. Ona yüzlerce hatta binlerce farklı insan yüzü resmi gösterirseniz, zamanla hangi özelliklerin neye benzediğini çıkarmayı öğrenir. İşte bu noktada doğru ve çeşitli veri sağlamak çok önemli. Ayrıca, derin öğrenme denen bir şey var ki, bu da daha karmaşık görevler için kullanılıyor. Özellikle büyük veri setleri üzerinden öğrenerek, tahminlerde bulunma yeteneği kazandırıyoruz bu sistemlere.

Yapay zeka eğitimi konusunda bir diğer önemli mesele de etik ve sorumluluk. gizliliği korumak ve insan güvenliğini sağlamak gibi etik sorunlarla da başa çıkmamız gerekiyor.
 
Son düzenleme:
Sizlerle yapay zekayı basit bir şekilde anlamak ve temel seviyede eğitmek konusunda bir rehber paylaşmak istiyorum.
Yapay zeka, karmaşık gibi görünse de aslında mantığı anladığınızda oldukça yakından takip edilebilir ve hatta kendi modellerinizi eğitebilirsiniz.
(kod yazmayı bildiğinizi düşünüyorum o bölümleri atladım)

Veri Toplama
Her şeyden önce, bir yapay zeka modeli eğitmek için büyük bir veri setine ihtiyacınız olacak. Örnek veriler, resimler, metinler veya sayılar olabilir. Örneğin, el yazısı rakamları tanıyan bir yapay zeka yapmak istediğinizde, farklı insanlar tarafından yazılmış rakam resimlerine ihtiyacınız olacak.
bunları resimler için değil diğer veriler için .cvs .txt (exel,world herhangi bir dosya olabilir kitli olmayan pdfler dahil) bilgisayarımıza ya da sanal sunucumuzda verileri kaydedelim

Veri Ön İşleme

Veriyi Bölme
Verilerinizi eğitim ve test verileri olmak üzere iki bölüme ayırın. Eğitim verileri, modelinizin öğrenmeye çalışacağı verilerdir. Test verileri ise modelinizin ne kadar iyi öğrendiğini değerlendireceğiniz verilerdir.

Model Eğitimi
Yapay zeka modeli seçmek önemlidir. Başlangıç için "Yapay Sinir Ağları" modelini seçelim. Bu model insan beyninin çalışma mantığına benzer bir şekilde işler.Eğitim verilerini kullanarak yapay zeka modelinizi eğitmeye başlayın. Model, veriler arasındaki ilişkileri ve desenleri öğrenecek ve bu sayede tahminlerde bulunabilecek hale gelecektir.

Model Değerlendirmesi
Eğittikten sonra modelinizin test verileri üzerinde nasıl performans gösterdiğini değerlendirin. Doğru tahmin oranlarına bakın ve modelinizin hatalı neler yaptığını anlamaya çalışın.

Model Ayarlamaları
Modeliniz hatalı tahminler yapıyorsa veya istediğiniz performansa ulaşamıyorsa, parametre ayarlamaları gibi değişiklikler yaparak modelinizi geliştirebilirsiniz. Fazla yüklenizseniz uyku vakitleri ekliye bilirsiniz ya da katmanları çoğaltıp azaltabilirsiniz

Sınıflandırma: Verileri farklı kategorilere ayırmak için kullanılır. Örneğin, el yazısı rakamları sınıflandırırken, her rakam bir kategori olur.
1 sayısının yüzlerce hatta binlerce resmine ihtiyacınız var ve sadece 1 için bir kategori oluşturacaksınız böylelikle eğittiğiniz modelin doğruluğu artacak ilerideki sorunların üstesinden gelmiş olucaksınız

Regresyon: Veriler arasındaki ilişkiyi anlamak ve tahminlerde bulunmak için kullanılır. Örneğin, bir evin özelliklerine göre fiyatını tahmin edebilirsiniz. ya da el yazısının sağ ellemi sol ellemi yazıldığını bulabilirsiniz

Kümeleme: Verileri benzer özelliklere sahip gruplara ayırmak için kullanılır. Örneğin, müşterileri alışveriş alışkanlıklarına göre farklı gruplara ayırabilirsiniz.ya da tek çift diye sayıları ayırabilirsiniz

Örnek: Basit Bir El Yazısı Rakam Tanıma Modeli
  1. Veri Toplama: El yazısı rakam verileri toplayın. (mp3 indir free :p )
  2. Model Seçimi: Yapay Sinir Ağları modelini seçin.(SymPY,PYTORCH,scikitLearn,TensorFlow,niLearn)
  3. Veri Ön İşleme: Resimleri aynı boyuta yeniden boyutlandırın.(ya da verileri pandas,numpy,matplotlib,seaborn,Scikit-image ile daha ayrıntılı işliyebilirsiniz örnegin imaj olmayan verileri grafiklere çevirebilir büyük verileri daha rahat aktarabilirsiniz)
  4. Veriyi Bölme: Verileri eğitim ve test verileri olarak ayırın.(burada amaç 100 resimden 10 unu test için ayırma mantığında bakabiliriz test etmek iileride işimizi kolaylaştırır, sayıları kafadan uyduruyorum bunları yaptıgınız projeye göre iyice araştırmanız gerekli)
  5. Model Eğitimi: Eğitim verilerini kullanarak modeli eğitin.(Evet..Kung Fu :D )
  6. Model Değerlendirmesi: Test verileri üzerinde modelin performansını (bu tamamen gözlem sabır yeteneğiniz ile ilgili) değerlendirin.
  7. Model Ayarlamaları: Gerekirse model parametrelerini ayarlayarak performansı artırın.(daha fazla test ekiyebilir modelinizdeki nöron sayısını atrırıp azaltabilirsiniz)
Bu adımları takip ederek basit bir el yazısı rakam tanıma modeli oluşturabilirsiniz. Bu sadece başlangıç! Yapay zekanın derinliklerine inerek daha karmaşık modeller ve uygulamalar geliştirebilirsiniz.

Modelimiz: Yapay Sinir Ağları (Artificial Neural Networks - ANN)

örnek kodumuz :
Kod:
# Gerekli kütüphaneleri içe aktarın
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score
import joblib  # Modeli kaydetmek ve yüklemek için joblib kütüphanesini içe aktarın

# Veri kümesini yükleyin
digits = load_digits()  # Scikit-learn kütüphanesinde bulunan önceden hazırlanmış el yazısı rakam veri kümesini yükler
X = digits.data  # Giriş verileri (rakam resimleri)
y = digits.target  # Hedef etiketler (rakam değerleri)

# Veriyi eğitim ve test verileri olarak ayırın
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Verilerinizi rastgele karıştırarak eğitim ve test veri setlerine böler
# test_size=0.2 ifadesi verilerin %20'sini test verilerine ayıracağını belirtir

# Yapay Sinir Ağı modelini oluşturun ve eğitin
model = MLPClassifier(hidden_layer_sizes=(64, 64), max_iter=1000, random_state=42)
# Yapay Sinir Ağı modelini tanımlayın
# hidden_layer_sizes=(64, 64) ifadesi iki katmanlı gizli katmanların her birinin 64 düğüm içereceğini belirtir
# max_iter=1000 ifadesi modelin maksimum 1000 iterasyonda eğitileceğini belirtir
model.fit(X_train, y_train)
# Verileri kullanarak modeli eğitin

# Modelin performansını değerlendirin
y_pred = model.predict(X_test)  # Test verilerini kullanarak tahminler yapın
accuracy = accuracy_score(y_test, y_pred)  # Gerçek etiketlerle tahminleri karşılaştırarak doğruluk hesaplayın
print("Model Accuracy:", accuracy)  # Modelin doğruluğunu yazdırın

# Modeli bir dosyaya kaydedin
joblib.dump(model, 'yapay_zeka_modeli.pkl')
# Oluşturduğunuz modeli 'yapay_zeka_modeli.pkl' adlı dosyaya kaydedin
# Bu sayede daha sonra bu dosyayı yükleyerek modeli tekrar kullanabilirsiniz

artık yapay zekamız hazır şimdi onu bir kameraya entegre edip gördüğü yazıları işletebiliriz

Örnek kodumuz :
Kod:
import cv2  # OpenCV kütüphanesini içe aktarın
import joblib  # Kaydedilmiş modeli yüklemek için joblib kütüphanesini içe aktarın

# Eğitilmiş modeli yükleyin
model = joblib.load('yapay_zeka_modeli.pkl')

# Kamera yakalayıcısını başlatın
cap = cv2.VideoCapture(0)  # 0, birincil kamera demektir. Birden fazla kamera varsa değiştirin.

# Sonuçları kaydetmek için bir dosya açın
output_file = open('tanima_sonuclari.txt', 'w')

while True:
    ret, frame = cap.read()  # Kameradan bir görüntü çekin
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  # Görüntüyü siyah beyaz yapın

    # Görüntüyü model için uygun boyuta yeniden boyutlandırın (örneğin, 8x8 piksel)
    resized_image = cv2.resize(gray, (8, 8))

    # Görüntüyü düzleştirin ve ölçeklendirin (0 ile 16 arasında)
    flattened_image = resized_image.flatten() / 16.0

    # Yapay zeka modelini kullanarak tahmin yapın
    predicted_digit = model.predict([flattened_image])

    # Tahmin edilen rakamı görüntü üzerine yazın
    cv2.putText(frame, f"Predicted Digit: {predicted_digit[0]}", (10, 50),
                cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)

    # Görüntüyü gösterin
    cv2.imshow('Yapay Zeka ile Rakam Tanıma', frame)

    # Sonuçları dosyaya kaydedin
    output_file.write(f"Tahmin: {predicted_digit[0]}\n")

    # 'q' tuşuna basıldığında döngüyü sonlandırın
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# Dosyayı kapatın
output_file.close()

# Kamerayı serbest bırakın ve pencereyi kapatın
cap.release()
cv2.destroyAllWindows()

başınızı şişirdiysem kusura bakmayın :)
 
Son düzenleme:
Başlangıç ve YZ'ya giriş mahiyetinde güzel bir yazı olmuş. Elinize sağlık. Devamını sabırsızlıkla bekliyorum.
 
Başka modelden devam edelim anlatmaya "karar ağaçları" modelimizde modeli bir orman gibi düşünün istediğimiz kadar ağaç dikebiliriz

bu ağaçların dallarını ve yaprak sayılarını ayarlıyabiliriz, hatta yapraklarımızın üzerindeki liflere kadar fakat burada dikkat edeceğimiz tek şey

test sonuçlarımızın bize ne kadar doğru karar aldıgını göstermesi bunu içinde aşırı öğrenme ile ilgili önlemler almak

örnek: karar ağaçlarının sayısını 1 ve 100 arasında deniyor ve modelin test sonuçlarına göre en iyi rakamı seçmesini sağlıyoruz

Kod:
for n_estimators in range(1, 100):
    model.n_estimators = n_estimators
    model.fit(X_train, y_train)
    train_pred = model.predict(X_train)
    test_pred = model.predict(X_test)
    train_errors.append(mean_squared_error(y_train, train_pred))
    test_errors.append(mean_squared_error(y_test, test_pred))

    if n_estimators > 10 and test_errors[-1] > test_errors[-2]:
        break

bu basit bir örnek daha kesin sonuçlar almanızı sağlayacaktır

benim kullandığım diğer bir yöntem tüm adımları prirnt komutu ile yazdırmak oluyor

örnek olarak;veriyi yükledik diyedim

Kod:
print(df.head())
print(df)
print(df.dtypes)
print(df.index)
kodumuzu ayarladık ve eğitime geçtik çapraz doğrulama yapalım
Kod:
cv_scores = cross_val_score(model, X, y, cv=6)
print("Çapraz Doğrulama Skorları:", cv_scores)
print("Ortalama R-squared (R-kare):", np.mean(cv_scores))
print("test_ok")
model.fit(X_train, y_train)
print("model_ok")
train_errors = []
test_errors = []

kısacacı print candır :D
 
Son düzenleme:
1699129473141.png
 

Forum istatistikleri

Konular
7,285
Mesajlar
123,131
Üyeler
2,938
Son üye
oguzbaste

Son kaynaklar

Son profil mesajları

Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Prooffy semih_s Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal taydin Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
Back
Top