Buku “Belajar Dalam Gambar. Panduan Visual untuk Kecerdasan Buatan "

gambarHai, habrozhiteli! Pembelajaran mendalam telah menjadi mesin yang kuat untuk bekerja dengan kecerdasan buatan. Ilustrasi yang jelas dan contoh kode sederhana akan menyelamatkan Anda dari kebutuhan untuk mempelajari aspek kompleks dalam membangun model pembelajaran yang mendalam, membuat tugas kompleks dapat diakses dan menyenangkan.



John Krohn, Grant Beileveld, dan ilustrator Aglae Bassens, ilustrator hebat, menggunakan contoh dan analogi yang jelas untuk menjelaskan apa pembelajaran yang mendalam, mengapa pembelajaran itu begitu populer, dan bagaimana konsep itu terkait dengan pendekatan lain pada pembelajaran mesin. Buku ini sangat ideal untuk pengembang, ilmuwan data, peneliti, analis, dan calon programer yang ingin menerapkan pembelajaran mendalam pada pekerjaan mereka. Perhitungan teoritis dilengkapi dengan kode aplikasi Python di notebook Jupyter. Anda akan belajar teknik untuk membuat model yang efisien di TensorFlow dan Keras, dan juga mengenal PyTorch.



Pengetahuan dasar tentang pembelajaran mendalam akan memungkinkan Anda membuat aplikasi nyata - mulai dari penglihatan komputer dan pemrosesan bahasa alami hingga pembuatan gambar dan algoritme permainan.



Jaringan Kedalaman Keras Intermediate



Untuk menyimpulkan bab ini, kami akan mewujudkan pengetahuan teoritis baru ke dalam jaringan saraf dan melihat apakah kita dapat melampaui model shallow_net_in_keras.ipynb sebelumnya dalam mengklasifikasikan angka tulisan tangan.



Beberapa langkah pertama di notebook intermediate_net_in_keras.ipynb Jupyter identik dengan langkah-langkah pendahulunya, web dangkal. Pertama, dependensi Keras yang sama dimuat, dan dataset MNIST dimasukkan dan diproses dengan cara yang sama. Seperti yang Anda lihat di Listing 8.1, kesenangan dimulai ketika arsitektur jaringan saraf didefinisikan.



Daftar 8.1. Kode mendefinisikan arsitektur jaringan saraf kedalaman-menengah



model = Sequential()
model.add(Dense(64, activation='relu', input_shape=(784,)))
model.add(Dense(64, activation='relu'))
model.add(Dense(10, activation='softmax'))


Baris pertama dalam fragmen kode ini, model = Sequential (), sama dengan di jaringan sebelumnya (Listing 5.6); ini adalah contoh dari objek model jaringan saraf. Perbedaan mulai pada baris berikutnya. Di dalamnya, kami mengganti fungsi aktivasi sigmoid di lapisan tersembunyi pertama dengan fungsi relu, seperti yang direkomendasikan di Bab 6. Semua parameter lain dari lapisan pertama, kecuali untuk fungsi aktivasi, tetap sama: masih terdiri dari 64 neuron, dan dimensi lapisan input tetap sama - 784 neuron.



Perubahan signifikan lainnya pada Listing 8.1 di atas arsitektur dangkal pada Listing 5.6 adalah adanya lapisan kedua neuron buatan yang tersembunyi. Dengan memanggil metode model.add (), kami dengan mudah menambahkan lapisan Dense kedua dengan 64 relu neuron, membenarkan kata perantara dalam nama notepad. Dengan memanggil model.summary (), Anda dapat melihat seperti yang ditunjukkan pada Gambar. 8.9 bahwa lapisan tambahan ini menambahkan 4160 parameter pembelajaran tambahan, dibandingkan dengan arsitektur yang dangkal (lihat Gambar 7.5). Parameter dapat dipecah menjadi:



  • 4096 bobot sesuai dengan koneksi masing-masing 64 neuron di lapisan tersembunyi kedua dengan masing-masing 64 neuron di lapisan tersembunyi pertama (64 × 64 = 4096);
  • ditambah 64 offset, satu untuk setiap neuron pada lapisan kedua yang tersembunyi;
  • hasilnya adalah 4160 parameter: nparameters = nw + nb = 4096 + 64 =

    = 4160.


Selain perubahan dalam arsitektur model, kami juga mengubah opsi kompilasi untuk model, seperti yang ditunjukkan pada Listing 8.2.



Listing 8.2. Kode kompilasi jaringan saraf kedalaman menengah



model.compile(loss='categorical_crossentropy',
                      optimizer=SGD(lr=0.1),
                      metrics=['accuracy'])


gambar


Baris-baris ini dari Listing 8.2:



  • atur fungsi biaya berdasarkan cross entropy: loss = 'categoryical_crossentropy' (dalam jaringan yang dangkal, biaya kuadratik digunakan loss = 'mean_squared_error');
  • atur metode penurunan gradien stokastik untuk meminimalkan biaya: optimizer = SGD;
  • mendefinisikan hyperparameter tingkat pembelajaran: lr = 0,1 (1) ;
  • , , Keras , : metrics=['accuracy'](2).


(1) , , .



(2) , , , , , . , , , . , , : , (, « 86 »), (« 86 , »).


Akhirnya, kami melatih jaringan perantara dengan mengeksekusi kode pada Listing 8.3.

Listing 8.3. Kode pelatihan jaringan saraf kedalaman menengah



model.fit(X_train, y_train,
              batch_size=128, epochs=20,
              verbose=1,
              validation_data=(X_valid, y_valid))


Satu-satunya hal yang telah berubah dalam melatih jaringan perantara dibandingkan dengan jaringan dangkal (lihat Listing 5.7) adalah penurunan zaman hiperparameter dengan urutan besarnya dari 200 menjadi 20. Seperti yang akan Anda lihat nanti, arsitektur perantara yang lebih efisien membutuhkan lebih banyak zaman untuk melatih.



gambar


Dalam gbr. 8.10 menunjukkan hasil dari empat zaman pertama pelatihan jaringan. Seperti yang Anda ingat, arsitektur dangkal kami mencapai dataran tinggi dengan akurasi 86% pada data validasi setelah 200 zaman. Jaringan kedalaman menengah melampauinya secara signifikan: seperti yang ditunjukkan bidang val_acc, jaringan mencapai akurasi 92,34% setelah zaman pelatihan pertama. Setelah zaman ketiga, akurasi melampaui 95%, dan pada zaman ke-20 tampaknya telah mencapai ketinggian sekitar 97,6%. Kami telah membuat kemajuan serius!



Mari kita lihat lebih dekat output dari model.fit (), yang ditunjukkan pada Gambar. 8.10:



  • Indikator proses yang ditunjukkan di bawah ini diisi selama 469 "siklus pelatihan" (lihat Gambar 8.5):

    60000/60000 [======================= ======]
  • 1s 15us/step , 469 1 , 15 .
  • loss . 0.4744 (SGD) , 0.0332 .
  • acc — . 86.37% 99% . , .
  • , (val_loss), , 0.08 .
  • (val_acc). , 97.6%, 86% .




Kami telah melakukan pekerjaan dengan baik di bab ini. Pertama, kami belajar bagaimana jaringan saraf parameter-tetap memproses informasi. Kemudian kami menemukan metode yang berinteraksi - fungsi biaya, penurunan gradien stokastik dan backpropagation - yang memungkinkan Anda untuk menyesuaikan parameter jaringan untuk memperkirakan nilai y sebenarnya yang memiliki hubungan berkelanjutan dengan beberapa input x. Sepanjang jalan, kami berkenalan dengan beberapa hiperparameter, termasuk tingkat pembelajaran, ukuran paket dan jumlah zaman pembelajaran, serta aturan praktis untuk menyetel masing-masing. Pada akhir bab ini, kami menerapkan pengetahuan baru kami untuk membuat jaringan saraf kedalaman menengah yang secara signifikan melampaui jaringan dangkal sebelumnya pada masalah yang sama dalam mengklasifikasikan angka tulisan tangan.Selanjutnya, kita akan melihat metode untuk meningkatkan stabilitas jaringan saraf tiruan saat mereka memperdalam, memungkinkan kita untuk mengembangkan dan melatih model pembelajaran mendalam yang lengkap.



»Perincian lebih lanjut tentang buku ini dapat ditemukan di situs web penerbit

» Daftar Isi

» Kutipan



untuk Habitat, diskon 25% untuk kupon - Pembelajaran Mendalam



Setelah pembayaran untuk versi kertas buku, sebuah e-book dikirim ke email.



All Articles