
Pengenalan Neural Network
Neural network atau jaringan saraf tiruan adalah subset dari machine learning yang terinspirasi oleh otak manusia. Mereka meniru cara neuron biologis berkomunikasi satu sama lain untuk mengambil keputusan.
Sebuah neural network terdiri dari lapisan input, lapisan tersembunyi (hidden), dan lapisan output. Lapisan pertama menerima input mentah, diproses oleh beberapa lapisan tersembunyi, dan lapisan terakhir menghasilkan keluaran.
Pada contoh di bawah, kami mensimulasikan proses pelatihan neural network untuk mengklasifikasikan data tabular. Kita memiliki parameter X1 dan X2 yang dilewatkan melalui 2 lapisan tersembunyi dengan 4 dan 2 neuron untuk menghasilkan output. Dengan iterasi berulang, model menjadi lebih baik dalam mengklasifikasikan target.

Gambar dibuat dengan TF Playground
Algoritma deep learning atau deep neural network terdiri dari banyak lapisan tersembunyi dan node. “Deep” mengacu pada kedalaman neural network. Umumnya digunakan untuk menyelesaikan masalah kompleks seperti klasifikasi gambar, pengenalan suara, dan pembuatan teks.
Pelajari lebih lanjut tentang neural network dengan membaca Tutorial Deep Learning kami. Anda akan mempelajari cara kerja Activation Function, Loss Function, dan Backpropagation untuk menghasilkan hasil yang akurat.
Jenis-Jenis Neural Network
Terdapat berbagai jenis neural network yang digunakan untuk aplikasi machine learning tingkat lanjut. Kita tidak memiliki satu arsitektur model yang cocok untuk semua. Jenis neural network tertua dikenal sebagai Perceptron, dibuat oleh Frank Rosenblatt pada tahun 1958.
Pada bagian ini, kita akan membahas 5 jenis neural network paling populer yang digunakan di industri teknologi.
Feedforward Neural Networks
Feedforward neural network terdiri dari lapisan input, lapisan tersembunyi, dan lapisan output. Disebut feedforward karena aliran data bergerak ke arah depan, dan tidak ada backpropagation. Umumnya digunakan dalam Klasifikasi, Pengenalan Suara, Pengenalan Wajah, dan Pengenalan Pola.
Multi-Layer Perceptron
Multi-Layer Perceptron (MLP) menyelesaikan kekurangan feedforward neural network yang tidak dapat belajar melalui backpropagation. MLP bersifat dua arah dan terdiri dari beberapa lapisan tersembunyi dan fungsi aktivasi. MLP menggunakan forward propagation untuk input dan backpropagation untuk memperbarui bobot. Mereka adalah neural network dasar yang meletakkan fondasi untuk computer vision, teknologi bahasa, dan neural network lainnya.
Catatan: MLP terdiri dari neuron sigmoid, bukan perceptron, karena masalah dunia nyata bersifat non-linear.
Convolutional Neural Networks (CNN)
Convolutional Neural Network (CNN) umumnya digunakan dalam computer vision, pengenalan gambar, dan pengenalan pola. CNN digunakan untuk mengekstraksi fitur penting dari gambar menggunakan beberapa lapisan konvolusi. Lapisan konvolusi pada CNN menggunakan matriks kustom (filter) untuk melakukan konvolusi pada gambar dan membuat peta.
Secara umum, Convolutional Neural Network terdiri dari lapisan input, lapisan konvolusi, lapisan pooling, lapisan fully connected, dan lapisan output. Baca tutorial Python Convolutional Neural Networks (CNN) dengan TensorFlow untuk mempelajari lebih lanjut cara kerja CNN.
Recurrent Neural Networks (RNN)
Recurrent Neural Network (RNN) umum digunakan untuk data berurutan seperti teks, urutan gambar, dan deret waktu. Mirip dengan feed-forward network, kecuali mereka menerima input dari urutan sebelumnya menggunakan loop umpan balik. RNN digunakan dalam NLP, prediksi penjualan, dan prakiraan cuaca.
RNN memiliki masalah vanishing gradient, yang diselesaikan oleh versi RNN yang lebih maju bernama Long Short-Term Memory (LSTM) dan Gated Recurrent Unit (GRU). Baca tutorial Recurrent Neural Network (RNN) untuk mempelajari lebih lanjut tentang LSTM dan GRU.
Implementasi Neural Network di R
Kita akan belajar membuat neural network dengan paket R populer neuralnet dan Keras.
Pada contoh pertama, kita akan membuat neural network sederhana dengan usaha minimal, dan pada contoh kedua, kita akan mengatasi masalah yang lebih lanjut menggunakan paket Keras.
Mari siapkan lingkungan R dengan mengunduh pustaka dan dependensi penting.
install.packages(c('neuralnet','keras','tensorflow'),dependencies = T)
Implementasi Neural Network Sederhana di R
Pada contoh pertama ini, kita akan menggunakan data bawaan R iris dan menyelesaikan masalah klasifikasi multi-kelas dengan neural network sederhana.
Kita akan mulai dengan mengimpor paket R penting untuk manipulasi data dan pelatihan model.
library(tidyverse)
library(neuralnet)
Analisis Data
Anda dapat mengakses data dengan mengetik `iris` dan menjalankannya di konsol R. Sebelum melatih data, kita perlu mengonversi kolom bertipe karakter menjadi faktor.
Catatan: kami menggunakan workspace R DataCamp untuk menjalankan contoh.
iris <- iris %>% mutate_if(is.character, as.factor)
Fungsi `summary` digunakan untuk analisis statistik dan distribusi data.
summary(iris)
Seperti yang terlihat, kita memiliki data yang seimbang. Ketiga kelas target masing-masing memiliki 50 sampel.
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
Pemisahan Data Train dan Test
Kita akan menetapkan seed agar hasil dapat direplikasi dan membagi data menjadi dataset train dan test untuk pelatihan serta evaluasi model. Kita akan membaginya menjadi 80:20.
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,]
Melatih Neural Network
Paket neuralnet sudah agak usang, tetapi masih populer di komunitas R.
Fungsi `neuralnet` sederhana. Fungsi ini tidak memberi kita keleluasaan untuk membuat arsitektur model yang sepenuhnya dapat dikustomisasi.
Dalam kasus kita, kita memberikannya formula machine learning dan data, mirip seperti GLM. Formula terdiri dari variabel target dan fitur.
Setelah itu, kita membuat dua lapisan tersembunyi, lapisan pertama dengan empat neuron dan lapisan kedua dengan dua neuron.
model = neuralnet(
Species~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width,
data=train_data,
hidden=c(4,2),
linear.output = FALSE
)
Untuk melihat arsitektur model, kita akan menggunakan fungsi `plot`. Fungsi ini memerlukan objek model dan argumen `rep`.
plot(model,rep = "best")

Evaluasi Model
Untuk confusion matrix:
- Kita akan memprediksi kategori menggunakan dataset test.
- Membuat daftar nama kategori.
- Membuat dataframe prediksi dan mengganti output numerik dengan label.
- Gunakan tabel untuk menampilkan nilai ‘aktual’ dan ‘terprediksi’ berdampingan.
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)
Kita memperoleh hasil yang hampir sempurna. Tampaknya model salah memprediksi tiga sampel. Kita dapat meningkatkan hasil dengan menambahkan lebih banyak neuron di setiap lapisan.
prediction_label
setosa versicolor virginica
setosa 8 0 0
versicolor 0 13 0
virginica 0 3 6
Untuk memeriksa akurasi, pertama-tama kita harus mengonversi nilai kategorikal aktual menjadi numerik dan membandingkannya dengan nilai prediksi. Hasilnya, kita akan menerima daftar nilai boolean.
Kita dapat menggunakan fungsi `sum` untuk menghitung jumlah nilai `TRUE` dan membaginya dengan total jumlah sampel untuk mendapatkan akurasi.
check = as.numeric(test_data$Species) == max.col(pred)
accuracy = (sum(check)/nrow(test_data))*100
print(accuracy)
Model memprediksi nilai dengan akurasi 90%.
90
Catatan: kode sumber untuk contoh ini tersedia di R workspace: Building Neural Network (NN) Models in R.
Convolutional Neural Network di R dengan Keras
Pada contoh ini, kita akan menggunakan Keras dan TensorFlow untuk membangun dan melatih model Convolutional Neural Network untuk tugas klasifikasi gambar. Untuk itu, kita akan menggunakan dataset gambar cifar10 yang terdiri dari 60.000 gambar berwarna 32x32 berlabel sepuluh kategori.

Gambar dari CIFAR-10
Impor paket R yang penting.
library(keras)
library(tensorflow)
Mempersiapkan data
Kita akan mengimpor dataset bawaan Keras dan membaginya menjadi set train dan test.
c(c(x_train, y_train), c(x_test, y_test)) %<-% dataset_cifar10()
Bagi fitur train dan test dengan 255 untuk menormalkan data.
x_train <- x_train / 255
x_test <- x_test / 255
Membangun model
API Keras memberi kita fleksibilitas untuk membangun arsitektur neural network kompleks yang sepenuhnya dapat dikustomisasi.
Pada kasus kita, kita akan membuat beberapa lapisan konvolusi, diikuti oleh lapisan max pooling, lapisan dropout, lapisan dense, dan lapisan output.
Kita menggunakan ‘Leaky ReLU’ sebagai fungsi aktivasi untuk semua lapisan kecuali lapisan output. Untuk lapisan output, kita menggunakan ‘softmax’.
Kita perlu mengatur bentuk input pada lapisan konvolusi 2D pertama sesuai bentuk gambar (32,32,3) dari dataset pelatihan.
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')
Untuk melihat arsitektur model, kita akan menggunakan fungsi `summary`.
summary(model)
Kita memiliki dua lapisan konvolusi yang diikuti oleh lapisan max pooling, dua lapisan konvolusi lagi, satu lapisan max pooling, satu lapisan flatten untuk mengubah keluaran terfilter maksimum menjadi vektor, lalu dua lapisan dense.
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
________________________________________________________________________________
Mengompilasi model
- Kita akan menetapkan learning rate menggunakan fungsi schedule exponential decay. Learning rate akan dikurangi setiap 1500 langkah sebesar 0,98.
- Masukkan objek learning rate ke dalam optimizer Adamax.
- Fungsi loss kita adalah sparse categorical cross-entropy.
- Kompilasi model menggunakan fungsi loss dan optimizer, serta metrik kinerja.
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"
)
Melatih model
Kita akan melakukan fitting model dan menyimpan metrik evaluasi di `history`.
- Kita akan melatih model selama 10 epoch dan menetapkan ukuran batch 32.
- Menambahkan dataset test untuk validasi.
- Argumen `shuffle` akan mengacak data pelatihan di awal setiap epoch.
history <- model %>% fit(
x_train, y_train,
batch_size = 32,
epochs = 10,
validation_data = list(x_test, y_test),
shuffle = TRUE
)
Mengevaluasi model
Anda dapat mengevaluasi model pada dataset test menggunakan fungsi `evaluate`, dan fungsi ini akan mengembalikan nilai loss dan akurasi akhir.
model %>% evaluate(x_test, y_test)
Melatih ulang model selama 50 epoch akan meningkatkan akurasi model.
Loss 0.648191571235657 Accuracy 0.776799976825714
Untuk memplot grafik garis loss dan akurasi per epoch, kita akan menggunakan fungsi `plot`.
plot(history)
Dari grafik, kita dapat melihat garisnya belum melandai. Artinya dengan epoch yang lebih tinggi, kita dapat meningkatkan metrik model.

Jika Anda tertarik mempelajari lebih lanjut tentang Keras API dan bagaimana menggunakannya untuk membangun deep neural network, lihat tutorial keras: Deep Learning di R.
Aplikasi Neural Network
Kita dapat menemukan contoh nyata neural network di mana-mana, dari aplikasi seluler hingga rekayasa. Karena ledakan terbaru pada model bahasa dan model visual besar, semakin banyak perusahaan tertarik mengimplementasikan deep neural network untuk meningkatkan keuntungan dan kepuasan pelanggan.
Pada bagian ini, kita akan mempelajari 10 aplikasi teratas neural network yang membentuk dunia modern.
1. Prediksi Tabular
Neural network sederhana cukup efektif pada data tabular berukuran besar. Kita dapat menggunakannya untuk masalah klasifikasi, klastering, dan regresi.
2. Peramalan Harga Saham
Banyak perusahaan menggunakan LSTM, GRU, dan RNN untuk peramalan finansial. Ini membantu mereka membuat keputusan yang lebih baik.
3. Citra Medis
Deteksi kanker payudara, deteksi anomali, dan segmentasi gambar adalah beberapa aplikasi dari Convolutional Neural Network. Berkat transformer pra-latih, kita melihat riset lanjutan dalam pencegahan penyakit dan deteksi dini penyakit mematikan.
4. E-commerce
Rekomendasi produk, pengalaman yang dipersonalisasi, dan chatbot adalah beberapa aplikasi neural network yang digunakan di E-commerce. Model-model ini terutama digunakan untuk klastering, pemrosesan bahasa alami, dan computer vision guna meningkatkan pengalaman pelanggan di platform.
5. Gambar Generatif
Berkat popularitas DALL·E 2 dan stable diffusion, area ini menjadi arus utama. Perusahaan seperti Canva dan Adobe telah menerapkan kemampuan gambar generatif untuk meningkatkan jumlah pengguna. Selain hype arus utama, gambar generatif digunakan di setiap industri untuk membuat data sintetis guna meningkatkan kinerja, stabilitas, dan bias model.
6. Teks Generatif
ChatGPT, GPT-3, dan GPT-NEO adalah model deep neural network yang mendominasi area ini. Model-model ini digunakan untuk bantuan pemrograman, chatbot, penerjemahan, tanya jawab, dan lainnya. Teknologi ini ada di mana-mana, dan perusahaan merasa mudah mengintegrasikannya ke dalam sistem mereka saat ini.
7. Chatbot Layanan Pelanggan
DialoGPT dan Blenderbot adalah model percakapan populer yang meningkatkan pengalaman chatbot Anda. Model ini adaptif dan dapat di-fine-tune untuk tujuan spesifik. Di masa depan, kita tidak akan melihat waktu tunggu yang lama; chatbot ini akan mampu memahami masalah Anda dan memberikan solusi secara real-time.
8. Robotika
Model neural network reinforcement learning dan computer vision memainkan peran utama dalam mentransformasi industri. Contohnya, manajemen gudang otomatis penuh, pabrik, dan pengalaman berbelanja.
9. Pengenalan Ucapan
Pengenalan ucapan, text-to-speech, dan model neural network deteksi aktivitas audio digunakan untuk asisten suara, transkripsi otomatis, dan aplikasi komunikasi yang ditingkatkan.
10. Multimodal
Teks ke Gambar (DALLE-2), Teks Gambar, Visual Question Answering, dan ekstraksi fitur adalah beberapa aplikasi yang digunakan dalam neural network multimodal. Di masa depan, Anda akan melihat teks-ke-video dengan audio. Anda akan dapat membuat film lengkap hanya dengan memberikan naskah.
Kesimpulan
Paket R Keras dan TensorFlow menyediakan rangkaian lengkap alat untuk membuat arsitektur model kompleks untuk tugas spesifik. Anda dapat memuat dataset, melakukan pra-pemrosesan, membangun dan mengoptimalkan model, serta mengevaluasi model hanya dengan beberapa baris kode. Lebih lanjut, dengan TensorFlow, Anda dapat memantau eksperimen, mengonfigurasi GPU, dan menerapkan model ke produksi.
Dalam tutorial ini, kita telah mempelajari dasar-dasar neural network, jenis arsitektur model, dan aplikasinya. Selain itu, kita mempelajari cara melatih neural network sederhana menggunakan `neuralnet` dan convolutional neural network menggunakan `keras`. Tutorial ini mencakup pembuatan model, kompilasi, pelatihan, dan evaluasi.
Pelajari lebih lanjut tentang TensorFlow dan Keras API dengan mengikuti kursus Introduction to TensorFlow in R. Anda akan mempelajari tensorboard dan API TensorFlow lainnya, membangun deep neural network, serta meningkatkan kinerja model menggunakan regularization, dropout, dan optimisasi hyperparameter.
