CNTK - Membuat Jaringan Neural Pertama
Bab ini akan menguraikan tentang cara membuat jaringan saraf di CNTK.
Bangun struktur jaringan
Untuk menerapkan konsep CNTK untuk membangun NN pertama kita, kita akan menggunakan NN untuk mengklasifikasikan jenis bunga iris berdasarkan sifat fisik lebar dan panjang sepal, serta lebar dan panjang kelopak. Dataset yang akan kita gunakan adalah dataset iris yang menggambarkan sifat fisik dari berbagai varietas bunga iris -
- Panjang sepal
- Lebar sepal
- Panjang kelopak
- Lebar kelopak
- Kelasnya yaitu iris setosa atau iris versicolor atau iris virginica
Di sini, kita akan membangun NN biasa yang disebut NN feedforward. Mari kita lihat langkah-langkah implementasi untuk membangun struktur NN -
Step 1 - Pertama, kami akan mengimpor komponen yang diperlukan seperti jenis lapisan kami, fungsi aktivasi, dan fungsi yang memungkinkan kami untuk menentukan variabel input untuk NN kami, dari perpustakaan CNTK.
from cntk import default_options, input_variable
from cntk.layers import Dense, Sequential
from cntk.ops import log_softmax, relu
Step 2- Setelah itu, kami akan membuat model kami menggunakan fungsi sekuensial. Setelah dibuat, kita akan memberinya makan dengan lapisan yang kita inginkan. Di sini, kita akan membuat dua layer berbeda di NN kita; satu dengan empat neuron dan satu lagi dengan tiga neuron.
model = Sequential([Dense(4, activation=relu), Dense(3, activation=log_sogtmax)])
Step 3- Terakhir, untuk mengkompilasi NN, kita akan mengikat jaringan ke variabel input. Ini memiliki lapisan masukan dengan empat neuron dan lapisan keluaran dengan tiga neuron.
feature= input_variable(4)
z = model(feature)
Menerapkan fungsi aktivasi
Ada banyak fungsi aktivasi untuk dipilih dan memilih fungsi aktivasi yang tepat pasti akan membuat perbedaan besar pada seberapa baik model pembelajaran mendalam kita akan bekerja.
Pada lapisan keluaran
Memilih file activation Fungsi pada lapisan keluaran akan tergantung pada jenis masalah yang akan kita selesaikan dengan model kita.
Untuk masalah regresi, kita harus menggunakan file linear activation function pada lapisan keluaran.
Untuk masalah klasifikasi biner, kita harus menggunakan file sigmoid activation function pada lapisan keluaran.
Untuk masalah klasifikasi kelas jamak, kita harus menggunakan file softmax activation function pada lapisan keluaran.
Di sini, kita akan membuat model untuk memprediksi salah satu dari tiga kelas. Artinya kita perlu menggunakansoftmax activation function di lapisan keluaran.
Di lapisan tersembunyi
Memilih file activation fungsi pada lapisan tersembunyi memerlukan beberapa eksperimen untuk memantau kinerja guna melihat fungsi aktivasi mana yang bekerja dengan baik.
Dalam masalah klasifikasi, kita perlu memprediksi probabilitas suatu sampel termasuk dalam kelas tertentu. Itu sebabnya kami membutuhkan fileactivation functionyang memberi kita nilai probabilistik. Untuk mencapai tujuan ini,sigmoid activation function dapat membantu kami.
Salah satu masalah utama yang terkait dengan fungsi sigmoid adalah masalah gradien menghilang. Untuk mengatasi masalah seperti itu, kita bisa menggunakanReLU activation function yang menutupi semua nilai negatif menjadi nol dan berfungsi sebagai filter penerusan untuk nilai positif.
Memilih fungsi kerugian
Setelah kita memiliki struktur untuk model NN kita, kita harus mengoptimalkannya. Untuk mengoptimalkan kita membutuhkan aloss function. Tidak sepertiactivation functions, kami memiliki fungsi kerugian yang sangat sedikit untuk dipilih. Namun, memilih fungsi kerugian akan bergantung pada jenis masalah yang akan kita selesaikan dengan model kita.
Misalnya, dalam masalah klasifikasi, kita harus menggunakan fungsi kerugian yang dapat mengukur perbedaan antara kelas yang diprediksi dan kelas yang sebenarnya.
fungsi kerugian
Untuk masalah klasifikasi, kita akan menyelesaikannya dengan model NN kita, categorical cross entropyfungsi kerugian adalah kandidat terbaik. Di CNTK, ini diimplementasikan sebagaicross_entropy_with_softmax yang dapat diimpor dari cntk.losses paket, sebagai berikut-
label= input_variable(3)
loss = cross_entropy_with_softmax(z, label)
Metrik
Dengan memiliki struktur untuk model NN kami dan fungsi kerugian untuk diterapkan, kami memiliki semua bahan untuk mulai membuat resep untuk mengoptimalkan model pembelajaran mendalam kami. Namun, sebelum mendalami hal ini, kita harus belajar tentang metrik.
cntk.metrics
CNTK memiliki paket bernama cntk.metricsdari mana kita dapat mengimpor metrik yang akan kita gunakan. Saat kami membangun model klasifikasi, kami akan menggunakanclassification_error matriks yang akan menghasilkan angka antara 0 dan 1. Angka antara 0 dan 1 menunjukkan persentase sampel yang diprediksi dengan benar -
Pertama, kita perlu mengimpor metrik dari cntk.metrics paket -
from cntk.metrics import classification_error
error_rate = classification_error(z, label)
Fungsi di atas sebenarnya membutuhkan keluaran NN dan label yang diharapkan sebagai masukan.