
Deep learning adalah seperangkat algoritma pembelajaran mesin yang memodelkan abstraksi tingkat tinggi dalam data menggunakan arsitektur yang terdiri dari banyak transformasi non-linear. Setuju, frasa ini terdengar mengancam. Tetapi semuanya tidak begitu menakutkan jika Francois Schollay, yang menciptakan Keras, perpustakaan paling kuat untuk bekerja dengan jaringan saraf, berbicara tentang pembelajaran yang mendalam. Rasakan pembelajaran mendalam dengan contoh-contoh praktis dari berbagai bidang. Buku ini dibagi menjadi dua bagian, yang pertama diberikan dasar teoretis, yang kedua dikhususkan untuk memecahkan masalah tertentu. Ini akan memungkinkan Anda tidak hanya untuk memahami dasar-dasar DL, tetapi juga belajar bagaimana menggunakan peluang baru dalam praktik. Buku ini ditulis untuk orang-orang dengan pengalaman pemrograman R yang ingin cepat menjadi terbiasa dengan pembelajaran mendalam dalam praktiknya, dan merupakan pengaturan oleh buku terlaris Francois Schollet, Deep Learning in Python, tetapi menggunakan contoh-contoh berdasarkan antarmuka R untuk Keras.
Tentang buku ini
Buku "Deep Learning on R" ditujukan kepada ahli statistik, analis, insinyur, dan siswa yang memiliki keterampilan pemrograman dalam R, tetapi tidak memiliki pengetahuan yang signifikan di bidang mesin dan pembelajaran yang mendalam. Buku ini adalah versi revisi dari buku sebelumnya,
Deep Learning in Python , berisi contoh-contoh yang menggunakan antarmuka R untuk Keras. Tujuan buku ini adalah untuk memberikan komunitas R panduan yang berisi semua yang Anda butuhkan, dari teori dasar hingga aplikasi praktis lanjutan. Anda akan melihat lebih dari 30 contoh kode program dengan komentar terperinci, rekomendasi praktis, dan penjelasan umum sederhana tentang semua yang perlu Anda ketahui untuk menggunakan pembelajaran mendalam dalam menyelesaikan masalah tertentu.
Contoh-contoh ini menggunakan kerangka kerja pembelajaran Keras dalam dan perpustakaan TensorFlow sebagai mekanisme internal. Keras adalah salah satu kerangka belajar mendalam yang paling populer dan paling cepat berkembang. Ini sering direkomendasikan sebagai alat paling sukses bagi pemula untuk belajar pembelajaran yang mendalam. Setelah membaca buku ini, Anda akan memahami apa itu deep learning, untuk memecahkan masalah apa yang dapat melibatkan teknologi ini dan keterbatasan apa yang dimilikinya. Anda akan belajar tentang proses standar menafsirkan dan memecahkan masalah pembelajaran mesin dan cara menangani masalah umum. Anda akan belajar cara menggunakan Keras untuk menyelesaikan masalah praktis mulai dari pengenalan pola hingga pemrosesan bahasa alami: klasifikasi gambar, prediksi urutan waktu, analisis emosi dan pembuatan gambar dan teks dan banyak lagi.
Kutipan. 5.4.1. Visualisasi Aktivasi Menengah
Visualisasi aktivasi antara terdiri dari menampilkan peta fitur yang ditampilkan oleh berbagai tingkat konvolusional dan penggabungan dalam jaringan sebagai respons terhadap data input tertentu (level output, hasil dari fungsi aktivasi, sering disebut aktivasi). Teknik ini memungkinkan Anda untuk melihat bagaimana data input diuraikan menjadi berbagai filter yang diterima oleh jaringan dalam proses pembelajaran. Biasanya, peta fitur dengan tiga dimensi digunakan untuk visualisasi: lebar, tinggi, dan kedalaman (saluran warna). Saluran mengkode fitur yang relatif independen, oleh karena itu, untuk memvisualisasikan peta fitur ini, lebih baik untuk membangun gambar dua dimensi untuk setiap saluran secara terpisah. Kami mulai dengan memuat model yang disimpan di bagian 5.2:
> library(keras) > model <- load_model_hdf5("cats_and_dogs_small_2.h5") > model________________________________________________________________ Layer (type) Output Shape Param # ============================================================== conv2d_5 (Conv2D) (None, 148, 148, 32) 896 ________________________________________________________________ maxpooling2d_5 (MaxPooling2D) (None, 74, 74, 32) 0 ________________________________________________________________ conv2d_6 (Conv2D) (None, 72, 72, 64) 18496 ________________________________________________________________ maxpooling2d_6 (MaxPooling2D) (None, 36, 36, 64) 0 ________________________________________________________________ conv2d_7 (Conv2D) (None, 34, 34, 128) 73856 ________________________________________________________________ maxpooling2d_7 (MaxPooling2D) (None, 17, 17, 128) 0 ________________________________________________________________ conv2d_8 (Conv2D) (None, 15, 15, 128) 147584 ________________________________________________________________ maxpooling2d_8 (MaxPooling2D) (None, 7, 7, 128) 0 ________________________________________________________________ flatten_2 (Flatten) (None, 6272) 0 ________________________________________________________________ dropout_1 (Dropout) (None, 6272) 0 ________________________________________________________________ dense_3 (Dense) (None, 512) 3211776 ________________________________________________________________ dense_4 (Dense) (None, 1) 513 ================================================================ Total params: 3,453,121 Trainable params: 3,453,121 Non-trainable params: 0
Selanjutnya, pilih gambar input kucing yang bukan bagian dari set pelatihan.
Listing 5.25. Uji tampilan gambar
plot(as.raster(img_tensor[1,,,]))
Untuk mengekstrak peta fitur yang akan divisualisasikan, buat model Keras yang menerima paket gambar dan menampilkan aktivasi semua level konvolusional dan kombinasi. Untuk melakukan ini, kita menggunakan fungsi keras_model dari kerangka Keras, yang mengambil dua argumen: tensor input (atau daftar tensor input) dan tensor output (atau daftar tensor output). Hasilnya akan menjadi objek model Keras mirip dengan model yang dikembalikan oleh fungsi keras_afterential_model () yang sudah Anda kenal; model ini memetakan input yang diberikan ke output yang diberikan. Model fitur
Tipe ini adalah kemampuan untuk membuat model dengan banyak keluaran (berbeda dengan keras_ berikutnyaential_model ()). Fungsi keras_model dibahas secara lebih rinci di bagian 7.1.
Jika Anda mengirimkan gambar ke model ini, itu akan mengembalikan nilai aktivasi lapisan dalam model asli. Ini adalah contoh pertama model dengan beberapa output dalam buku ini: sejauh ini, semua model yang disajikan di atas memiliki tepat satu input dan satu output. Secara umum, model dapat memiliki sejumlah input dan output. Secara khusus, model ini memiliki satu input dan delapan output: satu untuk setiap tingkat aktivasi.
Ambil contoh aktivasi lapisan konvolusional pertama untuk gambar input kucing:
> first_layer_activation <- activations[[1]] > dim(first_layer_activation) [1] 1 148 148 32
Ini adalah peta fitur 148 × 148 dengan 32 saluran. Mari kita coba menampilkannya. Pertama, kami mendefinisikan fungsi untuk memvisualisasikan saluran.
Listing 5.28. Fungsi visualisasi saluran
plot_channel <- function(channel) { rotate <- function(x) t(apply(x, 2, rev)) image(rotate(channel), axes = FALSE, asp = 1, col = terrain.colors(12)) }
Sekarang kita akan menampilkan saluran kedua aktivasi tingkat pertama dari model asli (Gbr. 5.18). Saluran ini tampaknya mewakili detektor lingkaran.
Listing 5.29. Visualisasi saluran 2
plot_channel(first_layer_activation[1,,,2])
Sekarang mari kita lihat saluran ketujuh (Gbr. 5.19), tetapi ingatlah bahwa saluran Anda mungkin berbeda, karena mempelajari filter spesifik bukan operasi deterministik. Saluran ini sedikit berbeda dan sepertinya menyoroti iris kucing.
Listing 5.30. Visualisasi saluran 7
plot_channel(first_layer_activation[1,,,7])
Sekarang kita akan membangun visualisasi lengkap dari semua aktivasi di jaringan (Listing 5.31). Untuk melakukan ini, ekstrak dan tampilkan setiap saluran di delapan peta aktivasi, letakkan hasilnya dalam satu tensor yang lebih besar dengan gambar (Gbr. 5.20-5.23).
Listing 5.31. Visualisasi semua saluran untuk semua aktivasi perantara
image_size <- 58 images_per_row <- 16 for (i in 1:8) { layer_activation <- activations[[i]] layer_name <- model$layers[[i]]$name n_features <- dim(layer_activation)[[4]] n_cols <- n_features %/% images_per_row png(paste0("cat_activations_", i, "_", layer_name, ".png"), width = image_size * images_per_row, height = image_size * n_cols) op <- par(mfrow = c(n_cols, images_per_row), mai = rep_len(0.02, 4)) for (col in 0:(n_cols-1)) { for (row in 0:(images_per_row-1)) { channel_image <- layer_activation[1,,,(col*images_per_row) + row + 1] plot_channel(channel_image) } } par(op) dev.off() }
Berikut adalah beberapa komentar tentang hasilnya.
- Lapisan pertama bertindak sebagai kumpulan detektor loop yang berbeda. Pada tahap ini, aktivasi menyimpan hampir semua informasi yang tersedia di gambar asli.
- Saat Anda naik ke lapisan aktivasi, mereka menjadi lebih abstrak, dan interpretasi visualnya menjadi lebih kompleks. Mereka mulai mengkodekan konsep tingkat tinggi seperti "telinga kucing" atau "mata kucing". Representasi tingkat tinggi membawa semakin sedikit informasi tentang gambar asli dan semakin banyak tentang kelas gambar.
- Rendahnya aktivasi meningkat dengan kedalaman lapisan: di lapisan pertama, semua filter diaktifkan oleh gambar asli, tetapi di lapisan berikutnya ada semakin banyak filter kosong. Ini berarti bahwa pola yang cocok dengan filter tidak ditemukan dalam gambar asli.
Kami baru saja memeriksa karakteristik universal yang penting dari representasi yang dibuat oleh jaringan saraf yang dalam: fitur yang diekstraksi oleh lapisan menjadi lebih abstrak dengan kedalaman lapisan. Aktivasi pada lapisan atas mengandung semakin sedikit informasi tentang gambar input tertentu, dan semakin banyak tentang target (dalam hal ini, kelas gambar adalah kucing atau anjing). Jaringan saraf yang dalam sebenarnya bertindak sebagai saluran pipa untuk membersihkan informasi, yang menerima data mentah (dalam hal ini, gambar dalam format RGB) dan mentransformasikannya berulang kali, menyaring informasi yang tidak perlu (misalnya, tampilan spesifik gambar) dan meninggalkan serta membersihkan yang benar (misalnya, kelas) gambar).
Dalam kira-kira dengan cara yang sama, orang dan hewan memandang dunia di sekitar mereka: setelah mengamati pemandangan selama beberapa detik, seseorang ingat benda abstrak mana yang ada di dalamnya (sepeda, pohon), tetapi tidak mengingat semua detail penampilan benda-benda ini. Bahkan, ketika mencoba menggambar sepeda dari memori, kemungkinan besar Anda tidak akan bisa mendapatkan gambar yang kurang lebih benar, meskipun Anda bisa melihat sepeda ribuan kali (lihat contoh pada Gambar 5.24). Cobalah untuk melakukannya sekarang, dan Anda akan diyakinkan akan kebenaran dari apa yang telah dikatakan. Otak Anda telah belajar untuk sepenuhnya mengabstraksi gambar terlihat yang diterima pada input dan mengubahnya menjadi konsep visual tingkat tinggi, sambil menyaring detail visual yang tidak penting, sehingga sulit untuk mengingatnya.
»Informasi lebih lanjut tentang buku ini dapat ditemukan di
situs web penerbit»
Isi»
KutipanKupon diskon 20% untuk pedagang asongan -
Deep Learning with R