Apa itu pembelajaran mendalam? Algoritma yang meniru otak manusia

Pembelajaran mendalam didefinisikan

Pembelajaran mendalam adalah bentuk pembelajaran mesin yang memodelkan pola dalam data sebagai jaringan berlapis-lapis yang kompleks. Karena pembelajaran mendalam adalah cara paling umum untuk memodelkan suatu masalah, ia berpotensi memecahkan masalah yang sulit — seperti visi komputer dan pemrosesan bahasa alami — yang melampaui pemrograman konvensional dan teknik pembelajaran mesin lainnya.

Pembelajaran mendalam tidak hanya dapat memberikan hasil yang berguna jika metode lain gagal, tetapi juga dapat membangun model yang lebih akurat daripada metode lain, dan dapat mengurangi waktu yang diperlukan untuk membuat model yang berguna. Namun, melatih model pembelajaran mendalam membutuhkan banyak daya komputasi. Kelemahan lain dari pembelajaran mendalam adalah sulitnya menafsirkan model pembelajaran yang dalam. 

Karakteristik yang menentukan dari pembelajaran dalam adalah bahwa model yang dilatih memiliki lebih dari satu lapisan tersembunyi antara masukan dan keluaran. Dalam sebagian besar diskusi, pembelajaran mendalam berarti menggunakan jaringan saraf yang dalam. Namun, ada beberapa algoritme yang menerapkan pembelajaran mendalam menggunakan jenis lapisan tersembunyi lain selain jaringan saraf.

Pembelajaran mendalam vs. pembelajaran mesin

Saya menyebutkan bahwa pembelajaran mendalam adalah salah satu bentuk pembelajaran mesin. Saya akan menyebut pembelajaran mesin tidak mendalam sebagai pembelajaran mesin klasik , untuk menyesuaikan dengan penggunaan umum.

Secara umum, algoritme pembelajaran mesin klasik berjalan jauh lebih cepat daripada algoritme pembelajaran mendalam; satu atau lebih CPU sering kali cukup untuk melatih model klasik. Model deep learning sering kali memerlukan akselerator hardware seperti GPU, TPU, atau FPGA untuk pelatihan, dan juga untuk penerapan dalam skala besar. Tanpa mereka, model akan membutuhkan waktu berbulan-bulan untuk dilatih.

Untuk banyak masalah, beberapa algoritme pembelajaran mesin klasik akan menghasilkan model yang "cukup baik". Untuk masalah lain, algoritme pembelajaran mesin klasik tidak berfungsi dengan baik di masa lalu.

Aplikasi pembelajaran mendalam

Banyak contoh permasalahan yang saat ini membutuhkan deep learning untuk menghasilkan model yang terbaik. Pemrosesan bahasa alami (NLP) adalah yang bagus.

Pada Musim Gugur 2016, kualitas keluaran Google Terjemahan untuk pasangan bahasa Inggris-Prancis, Inggris-Mandarin, dan Inggris-Jepang tiba-tiba meningkat secara dramatis, dari membuat salad kata hingga menghasilkan kalimat yang mendekati kualitas terjemahan profesional oleh manusia. Apa yang terjadi di balik layar adalah bahwa tim Google Brain dan Google Terjemahan mengubah Google Terjemahan dari menggunakan algoritme terjemahan mesin statistik berbasis frasa lama (salah satu jenis pembelajaran mesin klasik) menjadi menggunakan jaringan saraf dalam yang dilatih dengan embeddings kata menggunakan kerangka kerja TensorFlow Google .

Itu bukanlah proyek yang mudah. Banyak peneliti tingkat doktoral membutuhkan waktu berbulan-bulan untuk mengerjakan model, dan ribuan GPU-minggu untuk melatih model. Ini juga mendorong Google untuk membuat jenis chip baru, Tensor Processing Unit (TPU), untuk menjalankan jaringan neural dalam skala besar untuk Google Terjemahan.

Selain masalah terjemahan bahasa yang ditangani oleh Google Terjemahan, tugas utama NLP mencakup peringkasan otomatis, resolusi referensi bersama, analisis wacana, segmentasi morfologi, pengenalan entitas, pembuatan bahasa alami, pemahaman bahasa alami, penandaan bagian dari ucapan, sentimen analisis, dan pengenalan ucapan.

Contoh bagus lainnya dari penerapan pembelajaran mendalam adalah klasifikasi gambar. Karena organisme hidup memproses gambar dengan korteks visualnya, banyak peneliti menggunakan arsitektur korteks visual mamalia sebagai model jaringan saraf yang dirancang untuk melakukan pengenalan gambar. Penelitian biologi kembali ke tahun 1950-an.

Terobosan dalam bidang jaringan saraf untuk penglihatan adalah LeNet-5 1998 milik Yann LeCun, jaringan saraf konvolusional tujuh tingkat (CNN) untuk pengenalan digit tulisan tangan yang didigitalkan dalam gambar 32x32 piksel. Untuk menganalisis gambar dengan resolusi lebih tinggi, jaringan LeNet-5 perlu diperluas ke lebih banyak neuron dan lebih banyak lapisan.

Model klasifikasi gambar dalam terbaik saat ini dapat mengidentifikasi beragam katalog objek dengan resolusi HD dalam warna. Selain jaringan neural dalam murni (DNN), terkadang orang menggunakan model hybrid vision, yang menggabungkan pembelajaran mendalam dengan algoritme pembelajaran mesin klasik yang melakukan sub-tugas tertentu.

Permasalahan penglihatan lainnya selain klasifikasi citra dasar yang telah diselesaikan dengan deep learning antara lain klasifikasi citra dengan lokalisasi, deteksi objek, segmentasi objek, transfer gaya citra, pewarnaan citra, rekonstruksi citra, resolusi super citra, dan sintesis citra.

Klasifikasi gambar dapat diperluas ke klasifikasi video dengan mengekstraksi bingkai individu dari video dan mengklasifikasikan setiap bingkai. Objek yang terdeteksi dalam klip video dapat dilacak dari bingkai ke bingkai.

Menurut Goodfellow, Bengio, dan Courville, yang menulis pada tahun 2016, pembelajaran mendalam telah berhasil digunakan untuk memprediksi bagaimana molekul akan berinteraksi untuk membantu perusahaan farmasi merancang obat baru, untuk mencari partikel subatomik, dan secara otomatis mengurai gambar mikroskop yang digunakan untuk membuat peta 3-D otak manusia.

Jaringan saraf pembelajaran mendalam

Ide untuk jaringan saraf "buatan" kembali ke tahun 1940-an. Konsep dasarnya adalah bahwa jaringan neuron buatan yang dibangun dari sakelar ambang yang saling berhubungan dapat belajar mengenali pola dengan cara yang sama seperti yang dilakukan oleh otak dan sistem saraf hewan (termasuk retina).

Propagasi mundur

Pembelajaran di jaringan saraf dalam terjadi dengan memperkuat hubungan antara dua neuron ketika keduanya aktif pada waktu yang sama selama pelatihan. Dalam perangkat lunak jaringan saraf modern, hal ini paling umum adalah masalah peningkatan nilai bobot untuk koneksi antar neuron menggunakan aturan yang disebut backpropagation of error , backprop, atau BP.

Neuron

Bagaimana neuron dimodelkan? Masing-masing memiliki fungsi propagasi yang mengubah keluaran dari neuron yang terhubung, seringkali dengan jumlah tertimbang. Output dari fungsi propagasi diteruskan ke fungsi aktivasi, yang diaktifkan ketika inputnya melebihi nilai ambang batas.

Fungsi aktivasi

Pada 1940-an dan 1950-an neuron buatan menggunakan fungsi aktivasi langkah dan disebut perceptron . Jaringan saraf modern mungkin mengatakan bahwa mereka menggunakan perceptron, tetapi sebenarnya mereka memiliki fungsi aktivasi yang lancar, seperti fungsi logistik atau sigmoid, garis singgung hiperbolik, dan Unit Linear Rektifikasi (ULT). ULT biasanya merupakan pilihan terbaik untuk konvergensi cepat, meskipun memiliki masalah neuron "sekarat" selama pelatihan jika kecepatan pemelajaran disetel terlalu tinggi.

Keluaran dari fungsi aktivasi dapat diteruskan ke fungsi keluaran untuk pembentukan tambahan. Seringkali, bagaimanapun, fungsi keluaran adalah fungsi identitas, yang berarti bahwa keluaran dari fungsi aktivasi diteruskan ke neuron yang terhubung ke hilir.

Topologi jaringan saraf

Sekarang kita tahu tentang neuron, kita perlu belajar tentang topologi jaringan saraf umum. Dalam jaringan umpan-maju, neuron diatur ke dalam lapisan yang berbeda: satu lapisan masukan, sejumlah lapisan pemrosesan tersembunyi, dan satu lapisan keluaran, dan keluaran dari setiap lapisan hanya pergi ke lapisan berikutnya.

Dalam jaringan umpan-maju dengan koneksi pintas, beberapa koneksi dapat melompati satu atau lebih lapisan perantara. Dalam jaringan saraf berulang, neuron dapat mempengaruhi dirinya sendiri, baik secara langsung maupun tidak langsung melalui lapisan berikutnya.

Latihan

Pembelajaran jaringan neural yang diawasi dilakukan seperti halnya pembelajaran mesin lainnya. Anda menyajikan jaringan dengan grup data pelatihan, membandingkan keluaran jaringan dengan keluaran yang diinginkan, menghasilkan vektor kesalahan, dan menerapkan koreksi ke jaringan berdasarkan vektor kesalahan. Kumpulan data pelatihan yang dijalankan bersama sebelum menerapkan koreksi disebut epoch.

Bagi mereka yang tertarik pada detailnya, propagasi mundur menggunakan fungsi gradien kesalahan (atau biaya) sehubungan dengan bobot dan bias model untuk menemukan arah yang benar untuk meminimalkan kesalahan. Dua hal yang mengontrol penerapan koreksi: algoritme pengoptimalan, dan variabel kecepatan pembelajaran, yang biasanya harus berukuran kecil untuk menjamin konvergensi dan menghindari kematian neuron ULT.

Pengoptimal

Pengoptimal untuk jaringan neural biasanya menggunakan beberapa bentuk algoritme penurunan gradien untuk mendorong propagasi mundur, seringkali dengan mekanisme untuk membantu menghindari macet di minimum lokal, seperti mengoptimalkan tumpukan-mini yang dipilih secara acak (Penurunan Gradien Stokastik) dan menerapkan koreksi momentum ke gradien . Beberapa algoritme pengoptimalan juga mengadaptasi kecepatan pembelajaran dari parameter model dengan melihat riwayat gradien (AdaGrad, RMSProp, dan Adam).

Seperti halnya semua pembelajaran mesin, Anda perlu memeriksa prediksi jaringan neural terhadap kumpulan data validasi terpisah. Tanpa melakukan itu, Anda berisiko membuat jaringan saraf yang hanya menghafal masukannya alih-alih belajar menjadi prediktor umum.

DNN nyata

Jaringan neural dalam untuk masalah nyata mungkin memiliki lebih dari 10 lapisan tersembunyi. Topologinya mungkin sederhana atau cukup kompleks.

Semakin banyak lapisan dalam jaringan, semakin banyak karakteristik yang dapat dikenali. Sayangnya, semakin banyak lapisan dalam jaringan, semakin lama waktu yang dibutuhkan untuk menghitung, dan semakin sulit untuk melatihnya.

Algoritma pembelajaran mendalam

Seperti yang saya sebutkan sebelumnya, sebagian besar pembelajaran mendalam dilakukan dengan jaringan saraf yang dalam. Jaringan saraf konvolusional (CNN) sering digunakan untuk penglihatan mesin. Jaringan saraf berulang (RNN) sering digunakan untuk bahasa alami dan pemrosesan urutan lainnya, seperti juga jaringan Memori Jangka Pendek Panjang (LSTM) dan jaringan saraf berbasis perhatian. Random Forests, juga dikenal sebagai Random Decision Forests, yang bukan merupakan jaringan saraf, berguna untuk berbagai masalah klasifikasi dan regresi.

Jaringan saraf CNN

Jaringan saraf konvolusional biasanya menggunakan lapisan konvolusional, penggabungan, ULT, terhubung sepenuhnya, dan kerugian untuk mensimulasikan korteks visual. Lapisan konvolusional pada dasarnya mengambil integral dari banyak daerah kecil yang tumpang tindih. Lapisan penggabungan melakukan bentuk downsampling non-linier. Lapisan ULT menerapkan fungsi aktivasi non-saturasi f(x) = max(0,x). Dalam lapisan yang sepenuhnya terhubung, neuron memiliki koneksi ke semua aktivasi di lapisan sebelumnya. Lapisan kerugian menghitung bagaimana pelatihan jaringan menghukum penyimpangan antara label yang diprediksi dan label sebenarnya, menggunakan fungsi kerugian Softmax atau lintas-entropi untuk klasifikasi, atau fungsi kerugian Euclidean untuk regresi.

RNN, LSTM, dan jaringan saraf berbasis perhatian

Dalam jaringan saraf umpan maju, informasi mengalir dari masukan, melalui lapisan tersembunyi, ke keluaran. Ini membatasi jaringan untuk menangani satu status pada satu waktu.

Dalam jaringan neural berulang, informasi berputar melalui loop, yang memungkinkan jaringan untuk mengingat keluaran sebelumnya. Ini memungkinkan untuk analisis urutan dan deret waktu. RNN memiliki dua masalah umum: gradien yang meledak (mudah diperbaiki dengan menjepit gradien) dan gradien yang hilang (tidak mudah diperbaiki).

Dalam LSTM, jaringan mampu melupakan (gating) informasi sebelumnya atau mengingatnya, dalam kedua kasus dengan mengubah bobot. Ini secara efektif memberi LSTM memori jangka panjang dan jangka pendek dan memecahkan masalah gradien yang hilang. LSTM dapat menangani urutan ratusan input sebelumnya.

Modul perhatian adalah gerbang umum yang menerapkan bobot ke vektor input. Encoder perhatian saraf hierarkis menggunakan beberapa lapisan modul perhatian untuk menangani puluhan ribu input sebelumnya.

Hutan Acak

Jenis lain dari algoritma pembelajaran mendalam — bukan jaringan saraf dalam — adalah Random Forest, atau Random Decision Forest. Random Forest dibangun dari banyak lapisan, tetapi alih-alih neuron, ia dibangun dari pohon keputusan, dan menghasilkan rata-rata statistik (mode untuk klasifikasi atau mean untuk regresi) dari prediksi pohon individu. Aspek acak dari Random Forests adalah penggunaan agregasi bootstrap (alias bagging ) untuk pohon individu dan mengambil subset acak dari fitur.

Kerangka pembelajaran mendalam

Meskipun Anda dapat menulis program pembelajaran mendalam dari prinsip pertama, jauh lebih efisien untuk menggunakan kerangka kerja pembelajaran yang dalam, terutama mengingat bahwa mereka telah dioptimalkan untuk digunakan dengan GPU dan akselerator lainnya. Framework unggulannya adalah TensorFlow, yang berasal dari Google. API tingkat tinggi yang disukai untuk TensorFlow adalah Keras, yang juga dapat digunakan dengan kerangka kerja back-end lainnya.

PyTorch, dari Facebook dan lainnya, adalah alternatif yang kuat untuk TensorFlow, dan memiliki perbedaan dalam mendukung jaringan neural dinamis, di mana topologi jaringan dapat berubah dari waktu ke waktu. Fastai adalah API pihak ketiga tingkat tinggi yang menggunakan PyTorch sebagai back-end.

MXNet, dari Amazon dan lainnya, adalah alternatif kuat lainnya untuk TensorFlow, dengan klaim skalabilitas yang lebih baik. Gluon adalah API imperatif tingkat tinggi yang disukai untuk MXNet.

Chainer, dari IBM, Intel, dan lainnya, dalam beberapa hal menjadi inspirasi PyTorch, mengingat bahwa ia mendefinisikan jaringan saraf dengan menjalankan dan mendukung jaringan saraf dinamis.

Sementara semua kerangka kerja yang disebutkan di atas sebagian besar adalah Python, Deeplearning4j (DL4J), aslinya dari Skymind dan sekarang merupakan proyek Apache, utamanya adalah Java dan Scala. DL4J kompatibel dengan Apache Spark dan Hadoop.

ONNX awalnya diusulkan sebagai ekosistem terbuka untuk model AI yang dapat dipertukarkan. ONNX sekarang memiliki runtime selain format file interchange.