Ana içeriğe atla

R'de Sinir Ağı (NN) Modelleri Oluşturma

Bu eğitimde, R’de bir Sinir Ağı modeli oluşturmayı öğreneceksiniz.
Güncel 3 Eki 2026  · 10 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

R'de Sinir Ağı NN Modelleri Oluşturma

Sinir Ağlarına Giriş

Sinir ağları veya simüle edilmiş sinir ağları, insan beyninden esinlenen bir makine öğrenimi alt kümesidir. Biyolojik nöronların birbirleriyle nasıl iletişim kurduğunu taklit ederek bir karara ulaşırlar. 

Bir sinir ağı; bir girdi katmanı, bir gizli katman ve bir çıktı katmanından oluşur. İlk katman ham girdiyi alır, birden fazla gizli katman tarafından işlenir ve son katman sonucu üretir. 

Aşağıdaki örnekte, tablo verilerini sınıflandırmak için sinir ağlarının eğitim sürecini simüle ettik. Çıktı üretmek için 4 ve 2 nöronlu 2 gizli katmandan geçirilen X1 ve X2 parametrelerimiz var. Birden fazla yineleme ile model hedefleri sınıflandırmada daha iyi hale geliyor. 

tablo verilerini sınıflandırmak için sinir ağlarının eğitim süreci

Görsel TF Playground ile oluşturuldu

Derin öğrenme algoritmaları veya derin sinir ağları birden fazla gizli katman ve düğümden oluşur. “Derin”, sinir ağlarının derinliğini ifade eder. Genellikle Görüntü sınıflandırma, Konuşma tanıma ve Metin üretimi gibi karmaşık sorunları çözmek için kullanılırlar.

Sinir ağları hakkında daha fazla bilgi edinmek için Derin Öğrenme Eğitimi yazımızı okuyun. Aktivasyon Fonksiyonu, Kayıp Fonksiyonu ve Geriye Yayılımın nasıl çalışarak doğru sonuçlar ürettiğini öğreneceksiniz. 

Sinir Ağı Türleri

Gelişmiş makine öğrenimi uygulamaları için kullanılan birden fazla sinir ağı türü vardır. Her durumda işe yarayan tek bir model mimarisi yoktur. En eski sinir ağı türü, 1958'de Frank Rosenblatt tarafından oluşturulan Perceptron’dur. 

Bu bölümde, teknoloji sektöründe kullanılan en popüler 5 sinir ağı türünü ele alacağız. 

İleri Beslemeli Sinir Ağları

İleri beslemeli sinir ağları bir girdi katmanı, gizli katmanlar ve bir çıktı katmanından oluşur. Veri ileri yönde aktığı ve geriye yayılım olmadığı için ileri beslemeli olarak adlandırılır. Çoğunlukla Sınıflandırma, Konuşma tanıma, Yüz tanıma ve Desen tanımada kullanılır.

Çok Katmanlı Algılayıcı

Çok Katmanlı Algılayıcılar (MLP’ler), geriye yayılım yoluyla öğrenememe gibi ileri beslemeli sinir ağının eksikliklerini giderir. Çift yönlüdür ve birden çok gizli katman ile aktivasyon fonksiyonlarından oluşur. MLP’ler girdiler için ileri yayılımı, ağırlıkları güncellemek için geriye yayılımı kullanır. Bilgisayarlı görü, dil teknolojisi ve diğer sinir ağları için temel oluşturan temel sinir ağlarıdır. 

Not: Gerçek dünya problemleri doğrusal olmadığından, MLP’ler algılayıcılardan değil, sigmoid nöronlardan oluşur.

Evrimsel Sinir Ağları (CNN’ler)

Evrimsel Sinir Ağları (CNN) genellikle bilgisayarlı görü, görüntü tanıma ve desen tanımada kullanılır. Birden fazla evrim (konvolüsyon) katmanı kullanarak görüntüden önemli özellikler çıkarmak için kullanılır. CNN’deki evrimsel katman, görüntüler üzerinde evrim yapmak ve bir harita oluşturmak için özel bir matris (filtre) kullanır. 

Genellikle Evrimsel Sinir Ağları; girdi katmanı, evrimsel katman, havuzlama katmanı, tam bağlı katman ve çıktı katmanından oluşur. CNN’in nasıl çalıştığını öğrenmek için TensorFlow ile Python Evrimsel Sinir Ağları (CNN) eğitimimizi okuyun. 

Yinelemeli Sinir Ağları (RNN’ler)

Yinelemeli Sinir Ağları (RNN’ler) yaygın olarak metinler, görüntü dizileri ve zaman serileri gibi sıralı veriler için kullanılır. Geri bildirim döngüsü kullanarak önceki dizilerden girdi almaları dışında ileri beslemeli ağlara benzerler. RNN’ler NLP, satış tahminleri ve hava durumu tahminlerinde kullanılır. 

RNN’ler, Kısa Süreli Bellek Ağları (LSTM’ler) ve Kapılı Yinelemeli Birim Ağları (GRU’lar) olarak adlandırılan gelişmiş RNN sürümleriyle çözülen kaybolan gradyan sorunlarıyla birlikte gelir. LSTM ve GRU’lar hakkında daha fazla bilgi edinmek için Yinelemeli Sinir Ağı (RNN) Eğitimi yazısını okuyun. 

R'de Sinir Ağlarının Uygulanması

Popüler R paketleri neuralnet ve Keras ile sinir ağları oluşturmayı öğreneceğiz. 

İlk örnekte minimum çabayla basit bir sinir ağı oluşturacağız, ikinci örnekte ise Keras paketiyle daha gelişmiş bir problemi ele alacağız. 

Gerekli kütüphane ve bağımlılıkları indirerek R ortamını kurarak başlayalım. 

install.packages(c('neuralnet','keras','tensorflow'),dependencies = T)

R'de Basit Sinir Ağı uygulaması

Bu ilk örnekte, yerleşik R verisi iris’i kullanarak basit bir sinir ağı ile çoklu sınıflandırma problemlerini çözeceğiz. 

Veri manipülasyonu ve model eğitimi için gerekli R paketlerini içe aktararak başlayacağız. 

library(tidyverse)
library(neuralnet)

Veri Analizi

R konsolunda `iris` yazıp çalıştırarak veriye erişebilirsiniz. Veriyi eğitmeden önce, karakter türündeki sütunları faktöre dönüştürmemiz gerekir.

Not: örnekleri çalıştırmak için DataCamp R çalışma alanını kullanıyoruz. 

iris <- iris %>% mutate_if(is.character, as.factor)

`summary` fonksiyonu istatistiksel analiz ve veri dağılımı için kullanılır. 

summary(iris)

Görüldüğü gibi, dengeli veriye sahibiz. Üç hedef sınıfın her birinde 50 örnek bulunuyor. 

Sepal.Length    Sepal.Width     Petal.Length    Petal.Width  
Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100 
1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300 
Median :5.800   Median :3.000   Median :4.350   Median :1.300 
Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199 
3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800 
Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500 
      Species 
setosa    :50 
versicolor:50 
virginica :50 

Eğitim ve Test Ayrımı

Tekrarlanabilirlik için tohum belirleyecek ve modeli eğitmek ve değerlendirmek üzere veriyi eğitim ve test kümelerine böleceğiz. %80:%20 oranında böleceğiz. 

set.seed(245)
data_rows <- floor(0.80 * nrow(iris))
train_indices <- sample(c(1:nrow(iris)), data_rows)
train_data <- iris[train_indices,]
test_data <- iris[-train_indices,]

Sinir Ağının Eğitilmesi

neuralnet paketi eski olsa da R topluluğu arasında hâlâ popülerdir. 

`neuralnet` fonksiyonu basittir. Tamamen özelleştirilebilir bir model mimarisi oluşturma özgürlüğü sağlamaz. 

Bizim durumda, GLM’de olduğu gibi makine öğrenimi formülü ve veri sağlıyoruz. Formül, hedef değişkenleri ve özelliklerden oluşur. 

Ardından iki gizli katman oluşturuyoruz: ilk katman dört, ikinci katman iki nöron içeriyor. 

model = neuralnet(
    Species~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width,
data=train_data,
hidden=c(4,2),
linear.output = FALSE
)

Model mimarisini görüntülemek için `plot` fonksiyonunu kullanacağız. Bir model nesnesi ve `rep` argümanı gerektirir. 

plot(model,rep = "best")

NN Modeli

Model Değerlendirme

Karmaşıklık matrisi için:

  1. Test veri kümesini kullanarak kategorileri tahmin edeceğiz. 
  2. Kategori adlarının bir listesini oluşturun.
  3. Bir tahmin veri çerçevesi oluşturup sayısal çıktıları etiketlerle değiştirin. 
  4. ‘gerçek’ ve ‘öngörülen’ değerleri yan yana göstermek için tabloları kullanın. 
pred <- predict(model, test_data)
labels <- c("setosa", "versicolor", "virginca")
prediction_label <- data.frame(max.col(pred)) %>%     
mutate(pred=labels[max.col.pred.]) %>%
select(2) %>%
unlist()

table(test_data$Species, prediction_label)

Neredeyse kusursuz sonuçlar elde ettik. Görünüşe göre modelimiz üç örneği yanlış tahmin etmiş. Her katmana daha fazla nöron ekleyerek sonucu iyileştirebiliriz. 

           prediction_label
            setosa versicolor virginica
  setosa          8          0        0
  versicolor      0         13        0
  virginica       0          3        6 

Doğruluğu kontrol etmek için önce gerçek kategorik değerleri sayısal değerlere dönüştürüp tahmin edilen değerlerle karşılaştırmamız gerekir. Sonuç olarak bir boole değerleri listesi elde edeceğiz. 

`sum` fonksiyonunu kullanarak `TRUE` değerlerinin sayısını bulup toplam örnek sayısına bölebilir ve doğruluğu hesaplayabiliriz. 

check = as.numeric(test_data$Species) == max.col(pred)
accuracy = (sum(check)/nrow(test_data))*100
print(accuracy)

Model, değerleri %90 doğrulukla tahmin etti. 

90

Not: Bu örneğin kaynak kodu R çalışma alanında mevcuttur: R'de Sinir Ağı (NN) Modelleri Oluşturma.

Keras ile R'de Evrimsel Sinir Ağı

Bu örnekte, görüntü sınıflandırma görevi için bir Evrimsel Sinir Ağı modeli oluşturup eğitmek üzere Keras ve TensorFlow kullanacağız. Bunun için, on kategoriye etiketlenmiş 60.000 adet 32x32 renkli görüntüden oluşan cifar10 görüntü veri setini kullanacağız.

CIFAR-10 Veri Seti

Görsel kaynağı: CIFAR-10

Gerekli R paketlerini içe aktarın. 

library(keras)
library(tensorflow)

Verinin hazırlanması

Keras’ın yerleşik veri setini içe aktaracak ve eğitim ile test kümelerine böleceğiz. 

c(c(x_train, y_train), c(x_test, y_test)) %<-% dataset_cifar10()

Eğitim ve test özelliklerini 255’e bölerek veriyi normalleştirin. 

x_train <- x_train / 255
x_test <-  x_test / 255

Modelin oluşturulması

Keras API, tamamen özelleştirilebilir karmaşık sinir ağı mimarileri kurma esnekliği sağlar. 

Bizim durumda; birden çok evrimsel katman, ardından maksimum havuzlama katmanı, dropout katmanı, yoğun katman ve çıktı katmanı oluşturacağız. 

Çıktı katmanı hariç tüm katmanlar için aktivasyon fonksiyonu olarak ‘Leaky ReLU’ kullanıyoruz. Çıktı katmanında ise ‘softmax’ kullanıyoruz. 

İlk 2B evrimsel katmanın girdi şeklini, eğitim veri setindeki görüntünün (32,32,3) biçimine ayarlamamız gerekir. 

model <- keras_model_sequential()%>%
  # Start with a hidden 2D convolutional layer
  layer_conv_2d(
    filter = 16, kernel_size = c(3,3), padding = "same",
    input_shape = c(32, 32, 3), activation = 'leaky_relu'
  ) %>%

  # 2nd hidden layer
  layer_conv_2d(filter = 32, kernel_size = c(3,3), activation = 'leaky_relu') %>%
 

  # Use max pooling
  layer_max_pooling_2d(pool_size = c(2,2)) %>%
  layer_dropout(0.25) %>%

  # 3rd and 4th hidden 2D convolutional layers
  layer_conv_2d(filter = 32, kernel_size = c(3,3), padding = "same", activation = 'leaky_relu') %>%

  layer_conv_2d(filter = 64, kernel_size = c(3,3), activation = 'leaky_relu') %>%

  # Use max pooling
  layer_max_pooling_2d(pool_size = c(2,2)) %>%
  layer_dropout(0.25) %>%
 
  # Flatten max filtered output into feature vector
  # and feed into dense layer
  layer_flatten() %>%
  layer_dense(256, activation = 'leaky_relu') %>%
  layer_dropout(0.5) %>%

  # Outputs from dense layer
  layer_dense(10, activation = 'softmax')

Model mimarisini görmek için `summary` fonksiyonunu kullanacağız. 

summary(model)

İki evrimsel katman ve bunları izleyen bir maksimum havuzlama katmanı, ardından iki evrimsel katman daha, bir maksimum havuzlama katmanı, çıktıların vektöre dönüştürülmesi için bir düzleştirme katmanı ve sonrasında iki yoğun katmanımız var. 

Model: "sequential"
________________________________________________________________________________
Layer (type)                        Output Shape                    Param #    
================================================================================
conv2d_3 (Conv2D)                   (None, 32, 32, 16)              448        
________________________________________________________________________________
conv2d_2 (Conv2D)                   (None, 30, 30, 32)              4640       
________________________________________________________________________________
max_pooling2d_1 (MaxPooling2D)      (None, 15, 15, 32)              0          
________________________________________________________________________________
dropout_2 (Dropout)                 (None, 15, 15, 32)              0          
________________________________________________________________________________
conv2d_1 (Conv2D)                   (None, 15, 15, 32)              9248       
________________________________________________________________________________
conv2d (Conv2D)                     (None, 13, 13, 64)              18496      
________________________________________________________________________________
max_pooling2d (MaxPooling2D)        (None, 6, 6, 64)                0          
________________________________________________________________________________
dropout_1 (Dropout)                 (None, 6, 6, 64)                0          
________________________________________________________________________________
flatten (Flatten)                   (None, 2304)                    0          
________________________________________________________________________________
dense_1 (Dense)                     (None, 256)                     590080     
________________________________________________________________________________
dropout (Dropout)                   (None, 256)                     0          
________________________________________________________________________________
dense (Dense)                       (None, 10)                      2570       
================================================================================
Total params: 625,482
Trainable params: 625,482
Non-trainable params: 0
________________________________________________________________________________

Modelin derlenmesi

  1. Öğrenme oranını üstel azalma zamanlayıcısı ile ayarlayacağız. 1500 adımda öğrenme oranını 0,98’e düşürür.
  2. Öğrenme oranı nesnesini Adamax optimize edicisine verin.
  3. Kayıp fonksiyonumuz seyrek kategorik çapraz entropi olacaktır.
  4. Modeli kayıp ve optimize edici fonksiyon ile performans metriğini kullanarak derleyin.
learning_rate <- learning_rate_schedule_exponential_decay(
  initial_learning_rate = 5e-3,
  decay_rate = 0.96,
  decay_steps = 1500,
  staircase = TRUE
)
opt <- optimizer_adamax(learning_rate = learning_rate)

loss <- loss_sparse_categorical_crossentropy(from_logits = TRUE)


model %>% compile(
  loss = loss,
  optimizer = opt,
  metrics = "accuracy"
)

Modelin eğitilmesi

Modelimizi eğitecek ve değerlendirme metriğini `history` içinde saklayacağız. 

  • Modeli 10 epoch boyunca eğitecek ve yığın boyutunu 32 olarak ayarlayacağız. 
  • Doğrulama için test veri kümesini ekliyoruz.
  • `shuffle` argümanı, her epoch başında eğitim verisini karıştıracaktır. 
history <- model %>% fit(
  x_train, y_train,
  batch_size = 32,
  epochs = 10,
  validation_data = list(x_test, y_test),
  shuffle = TRUE
)

Modelin değerlendirilmesi

`evaluate` fonksiyonunu kullanarak modeli test veri kümesi üzerinde değerlendirebilir ve nihai kayıp ile doğruluğu elde edebilirsiniz. 

model %>% evaluate(x_test, y_test)

Modeli 50 epoch boyunca yeniden eğitmek, doğruluğu artıracaktır. 

Loss 0.648191571235657 Accuracy 0.776799976825714

Her epoch için kayıp ve doğruluk çizgi grafiklerini çizmek üzere `plot` fonksiyonunu kullanacağız. 

plot(history)

Grafiğe baktığımızda, çizginin henüz yataylaşmadığını görebiliriz. Bu, epoch sayısını artırarak model metriklerini iyileştirebileceğimiz anlamına gelir. 

CNN model kayıp ve doğruluk grafiği

Keras API hakkında daha fazla bilgi edinmek ve onu derin sinir ağları kurmak için nasıl kullanabileceğinizi öğrenmek isterseniz, keras: R'de Derin Öğrenme eğitimine göz atın. 

Sinir Ağlarının Uygulamaları

Gerçek hayatta sinir ağı örneklerini, mobil uygulamalardan mühendisliğe kadar her yerde bulabiliriz. Dil ve büyük görsel modellerdeki son patlama sayesinde, daha fazla şirket kârı ve müşteri memnuniyetini artırmak için derin sinir ağlarını uygulamaya ilgi duyuyor. 

Bu bölümde, modern dünyayı şekillendiren sinir ağlarının en iyi 10 uygulamasını öğreneceğiz. 

1. Tablo Verisi Tahmini

Basit sinir ağları, büyük tablo verilerinde oldukça etkilidir. Sınıflandırma, kümeleme ve regresyon problemleri için kullanılabilirler. 

2. Hisse Senedi Fiyat Tahmini

Birçok şirket finansal tahmin için LSTM, GRU ve RNN kullanıyor. Bu, daha iyi kararlar almalarını sağlar. 

3. Tıbbi Görüntüleme

Meme kanseri tespiti, anomali tespiti ve görüntü bölütleme, Evrimsel sinir ağlarının bazı uygulamalarıdır. Önceden eğitilmiş dönüştürücüler sayesinde, hastalıkların önlenmesi ve ölümcül hastalıkların erken tespitinde ileri araştırmalar gördük.  

4. E-ticaret

Ürün önerileri, kişiselleştirilmiş deneyimler ve sohbet botları, E-ticarette kullanılan sinir ağı uygulamalarından bazılarıdır. Bu modeller, platformda müşteri deneyimini iyileştirmek için ağırlıkla kümeleme, doğal dil işleme ve bilgisayarlı görüde kullanılır. 

5. Üretken Görüntü

DALL·E 2 ve stable diffusion’ın popülerliği sayesinde bu alan ana akıma taşındı. Canva ve Adobe gibi şirketler, kullanıcı sayısını artırmak için üretken görüntü yeteneklerini çoktan uygulamaya koydu. Ana akım ilgisinin ötesinde, üretken görüntüler; modelin performansını, kararlılığını ve önyargılarını iyileştirmek üzere sentetik veri üretmek için her sektörde kullanılıyor. 

6. Üretken Metin

ChatGPT, GPT-3 ve GPT-NEO alana hakim olan derin sinir ağı modelleridir. Bu modeller programlama yardımı, sohbet botları, çeviri, soru/cevap ve daha fazlası için kullanılır. Her yerde karşımıza çıkıyor ve şirketler mevcut sistemlerine entegre etmeyi kolay buluyor.

7. Müşteri Hizmetleri Sohbet Botu

DailoGPT ve Blenderbot, sohbet botu deneyiminizi geliştiren popüler konuşma modelleridir. Uyarlanabilirdirler ve belirli bir amaç için ince ayar yapılabilirler. Gelecekte uzun bekleme süreleri görmeyeceğiz; bu sohbet botları sorunlarınızı anlayıp gerçek zamanlı çözümler sunabilecek. 

8. Robotik

Pekiştirmeli öğrenme ve bilgisayarlı görü sinir ağı modelleri, sektörlerin dönüşümünde büyük rol oynuyor. Örneğin, tamamen otomatik depo yönetimi, fabrikalar ve alışveriş deneyimi. 

9. Konuşma Tanıma

Konuşma tanıma, metinden konuşmaya ve ses etkinliği tespiti sinir ağı modelleri; sesli asistanlar, otomatik deşifre ve gelişmiş iletişim uygulamalarında kullanılır. 

10. Çok Modlu

Metinden Görüntüye (DALLE-2), Görüntü Metin, Görsel Soru Cevaplama ve özellik çıkarımı; çok modlu sinir ağlarında kullanılan uygulamalardan bazılarıdır. Gelecekte sesli metinden videoya görürsünüz. Sadece senaryoyu vererek tam bir film oluşturabileceksiniz.

Sonuç

Keras ve TensorFlow R paketleri, belirli görevler için karmaşık model mimarileri oluşturmak üzere tam bir araç yelpazesi sunar. Veri setini yükleyebilir, ön işleme yapabilir, modeli kurup optimize edebilir ve birkaç satır kodla modeli değerlendirebilirsiniz. Ayrıca TensorFlow ile deneylerinizi izleyebilir, GPU’ları yapılandırabilir ve modeli üretime alabilirsiniz. 

Bu eğitimde sinir ağlarının temellerini, model mimarisi türlerini ve uygulamalarını öğrendik. Ayrıca `neuralnet` kullanarak basit bir sinir ağını ve `keras` kullanarak bir evrimsel sinir ağını nasıl eğiteceğimizi gördük. Eğitim; modelin oluşturulması, derlenmesi, eğitilmesi ve değerlendirilmesini kapsamaktadır. 

TensorFlow ve Keras API hakkında daha fazla bilgi edinmek için R'de TensorFlow’a Giriş kursunu alın. TensorBoard ve diğer TensorFlow API’lerini, derin sinir ağları kurmayı ve düzenlileştirme, dropout ve hiperparametre optimizasyonu kullanarak model performansını artırmayı öğreneceksiniz.  

Konular
R
Veri Bilimi
Yapay Zeka

R Kursları

Kurs

R’ye Giriş

4 sa
3.1M
Vektörler, listeler ve veri çerçeveleri de dahil olmak üzere R'da veri analizinin temellerini öğrenin ve gerçek veri setleriyle R pratiği yapın.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör