Baru-baru ini saya telah membaca tentang pembelajaran yang mendalam dan saya bingung tentang istilah (atau mengatakan teknologi). Apa perbedaan antara
- Jaringan saraf convolutional (CNN),
- Mesin Boltzmann terbatas (RBM) dan
- Penyandi otomatis?
sumber
Baru-baru ini saya telah membaca tentang pembelajaran yang mendalam dan saya bingung tentang istilah (atau mengatakan teknologi). Apa perbedaan antara
Autoencoder adalah jaringan saraf 3-lapisan sederhana di mana unit output terhubung langsung kembali ke unit input . Misalnya dalam jaringan seperti ini:
output[i]
memiliki tepi kembali ke input[i]
untuk setiap i
. Biasanya, jumlah unit tersembunyi jauh lebih sedikit daripada jumlah yang terlihat (input / output). Akibatnya, ketika Anda melewatkan data melalui jaringan seperti itu, pertama-tama memampatkan (mengkodekan) input vektor untuk "cocok" dalam representasi yang lebih kecil, dan kemudian mencoba untuk merekonstruksi (mendekode) kembali. Tugas pelatihan adalah untuk meminimalkan kesalahan atau rekonstruksi, yaitu menemukan representasi kompak (pengkodean) yang paling efisien untuk input data.
RBM berbagi ide yang sama, tetapi menggunakan pendekatan stokastik. Alih-alih deterministik (misalnya logistik atau ReLU) ia menggunakan unit stokastik dengan distribusi tertentu (biasanya biner Gaussian). Prosedur pembelajaran terdiri dari beberapa langkah pengambilan sampel Gibbs (menyebar: sampel hiddens diberi visibles; merekonstruksi: sampel visibles diberikan hiddens; ulangi) dan menyesuaikan bobot untuk meminimalkan kesalahan rekonstruksi.
Intuisi di balik RBM adalah bahwa ada beberapa variabel acak yang terlihat (misalnya ulasan film dari pengguna yang berbeda) dan beberapa variabel tersembunyi (seperti genre film atau fitur internal lainnya), dan tugas pelatihan adalah untuk mengetahui bagaimana kedua set variabel ini sebenarnya terhubung satu sama lain (lebih lanjut tentang contoh ini dapat ditemukan di sini ).
Jaringan Neural Konvolusional agak mirip dengan keduanya, tetapi alih-alih mempelajari matriks berat global tunggal antara dua lapisan, mereka bertujuan untuk menemukan satu set neuron yang terhubung secara lokal. CNN sebagian besar digunakan dalam pengenalan gambar. Nama mereka berasal dari operator "konvolusi" atau sekadar "filter". Singkatnya, filter adalah cara mudah untuk melakukan operasi yang kompleks dengan cara mengubah konvolusi kernel sederhana. Terapkan kernel Gaussian blur dan Anda akan membuatnya lebih lancar. Terapkan Canny kernel dan Anda akan melihat semua sisi. Terapkan kernel Gabor untuk mendapatkan fitur gradien.
(gambar dari sini )
Tujuan dari jaringan saraf convolutional adalah bukan untuk menggunakan salah satu kernel yang telah ditentukan, tetapi untuk mempelajari kernel data-spesifik . Idenya sama dengan autoencoder atau RBM - menerjemahkan banyak fitur tingkat rendah (misalnya ulasan pengguna atau piksel gambar) ke representasi tingkat tinggi terkompresi (misalnya genre atau tepi film) - tetapi sekarang bobot dipelajari hanya dari neuron yang merupakan dekat secara spasial satu sama lain.
Ketiga model memiliki kasus penggunaan, pro dan kontra, tetapi mungkin sifat yang paling penting adalah:
UPD.
Pengurangan dimensi
komponen terpenting kemudian digunakan sebagai basis baru. Masing-masing komponen ini dapat dianggap sebagai fitur tingkat tinggi, yang menggambarkan vektor data lebih baik daripada sumbu asli.
Arsitektur yang dalam
Tetapi Anda tidak hanya menambahkan layer baru. Pada setiap lapisan Anda mencoba mempelajari representasi terbaik untuk data dari yang sebelumnya:
Pada gambar di atas ada contoh jaringan yang begitu dalam. Kita mulai dengan piksel biasa, lanjutkan dengan filter sederhana, lalu dengan elemen wajah dan akhirnya berakhir dengan seluruh wajah! Inilah inti dari pembelajaran yang mendalam .
Sekarang perhatikan, bahwa pada contoh ini kami bekerja dengan data gambar dan secara berurutan mengambil area yang lebih besar dan lebih besar dari piksel yang dekat secara spasial. Bukankah itu terdengar sama? Ya, karena ini adalah contoh jaringan konvolusional yang dalam . Baik itu berdasarkan autoencoder atau RBM, ia menggunakan konvolusi untuk menekankan pentingnya lokalitas. Itu sebabnya CNN agak berbeda dari autoencoder dan RBM.
Klasifikasi
Tidak ada model yang disebutkan di sini yang berfungsi sebagai algoritma klasifikasi per se. Sebaliknya, mereka digunakan untuk pretraining - belajar transformasi dari representasi tingkat rendah dan sulit dikonsumsi (seperti piksel) ke yang tingkat tinggi. Setelah jaringan yang dalam (atau mungkin tidak sedalam itu) diprasrrain, vektor input ditransformasikan ke representasi yang lebih baik dan vektor yang dihasilkan akhirnya diteruskan ke pengklasifikasi nyata (seperti SVM atau regresi logistik). Dalam gambar di atas itu berarti bahwa di bagian paling bawah ada satu komponen lagi yang sebenarnya melakukan klasifikasi.
Semua arsitektur ini dapat diartikan sebagai jaringan saraf. Perbedaan utama antara AutoEncoder dan Convolutional Network adalah tingkat pemasangan kabel jaringan. Jaring konvolusional sudah cukup bawaan. Operasi konvolusi cukup lokal dalam domain gambar, yang berarti jauh lebih sedikit dalam jumlah koneksi dalam tampilan jaringan saraf. Operasi pooling (subsampling) dalam domain gambar juga merupakan rangkaian koneksi neural yang tertanam dalam domain saraf. Kendala topologi tersebut pada struktur jaringan. Mengingat kendala seperti itu, pelatihan CNN mempelajari bobot terbaik untuk operasi konvolusi ini (Dalam praktiknya ada beberapa filter). CNN biasanya digunakan untuk tugas-tugas gambar dan pidato di mana kendala convolutional adalah asumsi yang baik.
Sebaliknya, Autoencoder hampir tidak menentukan apa pun tentang topologi jaringan. Mereka jauh lebih umum. Idenya adalah untuk menemukan transformasi saraf yang baik untuk merekonstruksi input. Mereka terdiri dari encoder (memproyeksikan input ke hidden layer) dan decoder (memproyeksikan hidden layer ke output). Lapisan tersembunyi mempelajari serangkaian fitur laten atau faktor laten. Autoencoder linear menjangkau subruang yang sama dengan PCA. Diberikan dataset, mereka belajar sejumlah dasar untuk menjelaskan pola data yang mendasarinya.
RBM juga merupakan jaringan saraf. Tetapi interpretasi jaringan sama sekali berbeda. RBM menafsirkan jaringan bukan sebagai feedforward, tetapi grafik bipartit di mana idenya adalah untuk mempelajari distribusi probabilitas gabungan variabel tersembunyi dan input. Mereka dipandang sebagai model grafis. Ingatlah bahwa AutoEncoder dan CNN mempelajari fungsi deterministik. RBM, di sisi lain, adalah model generatif. Ini dapat menghasilkan sampel dari representasi tersembunyi yang dipelajari. Ada berbagai algoritma untuk melatih RBM. Namun, pada akhirnya, setelah mempelajari RBM, Anda dapat menggunakan bobot jaringannya untuk mengartikannya sebagai jaringan feedforward.
sumber
RBM dapat dilihat sebagai semacam encoder otomatis probabilistik. Sebenarnya, telah ditunjukkan bahwa dalam kondisi tertentu mereka menjadi setara.
Namun demikian, jauh lebih sulit untuk menunjukkan kesetaraan ini daripada hanya percaya bahwa mereka adalah binatang buas yang berbeda. Memang, saya merasa sulit untuk menemukan banyak kesamaan di antara ketiganya, segera setelah saya mulai melihat dari dekat.
Misalnya jika Anda menuliskan fungsi yang diimplementasikan oleh auto encoder, RBM dan CNN, Anda mendapatkan tiga ekspresi matematika yang sama sekali berbeda.
sumber
Saya tidak bisa bercerita banyak tentang RBM, tetapi autoencoder dan CNN adalah dua hal yang berbeda. Autoencoder adalah jaringan saraf yang dilatih dengan cara yang tidak diawasi. Tujuan dari autoencoder adalah untuk menemukan representasi data yang lebih kompak dengan mempelajari encoder, yang mengubah data menjadi representasi kompak yang sesuai, dan dekoder, yang merekonstruksi data asli. Bagian encoder dari autoencoder (dan awalnya RBM) telah digunakan untuk mempelajari bobot awal yang baik dari arsitektur yang lebih dalam, tetapi ada aplikasi lain. Pada dasarnya, autoencoder mempelajari pengelompokan data. Sebaliknya, istilah CNN mengacu pada jenis jaringan saraf yang menggunakan operator konvolusi (seringkali konvolusi 2D ketika digunakan untuk tugas pemrosesan gambar) untuk mengekstraksi fitur dari data. Dalam pemrosesan gambar, filter, yang berbelit-belit dengan gambar, dipelajari secara otomatis untuk menyelesaikan tugas yang ada, misalnya tugas klasifikasi. Apakah kriteria pelatihan adalah regresi / klasifikasi (diawasi) atau rekonstruksi (tidak diawasi) tidak terkait dengan gagasan konvolusi sebagai alternatif transformasi affine. Anda juga dapat memiliki CNN-autoencoder.
sumber