Apa itu pembelajaran mendalam? Algoritma yang meniru otak manusia

Pembelajaran mendalam ditentukan

Pembelajaran mendalam adalah satu bentuk pembelajaran mesin yang memodelkan corak dalam data sebagai jaringan multi-lapisan yang kompleks. Oleh kerana pembelajaran mendalam adalah cara yang paling umum untuk memodelkan masalah, ia berpotensi untuk menyelesaikan masalah yang sukar — seperti penglihatan komputer dan pemrosesan bahasa semula jadi — yang melampaui pengaturcaraan konvensional dan teknik pembelajaran mesin yang lain.

Pembelajaran mendalam tidak hanya dapat menghasilkan hasil yang berguna di mana kaedah lain gagal, tetapi juga dapat membangun model yang lebih tepat daripada kaedah lain, dan dapat mengurangi waktu yang diperlukan untuk membangun model yang berguna. Walau bagaimanapun, melatih model pembelajaran mendalam memerlukan banyak kekuatan pengkomputeran. Kelemahan lain dalam pembelajaran mendalam adalah kesukaran menafsirkan model pembelajaran mendalam. 

Ciri utama pembelajaran mendalam adalah bahawa model yang dilatih mempunyai lebih dari satu lapisan tersembunyi antara input dan output. Dalam kebanyakan perbincangan, pembelajaran mendalam bermaksud menggunakan rangkaian neural mendalam. Namun, ada beberapa algoritma yang menerapkan pembelajaran mendalam menggunakan jenis lapisan tersembunyi lain selain jaringan saraf.

Pembelajaran mendalam berbanding pembelajaran mesin

Saya menyebut bahawa pembelajaran mendalam adalah satu bentuk pembelajaran mesin. Saya akan merujuk pembelajaran mesin bukan mendalam sebagai pembelajaran mesin klasik , untuk menyesuaikan dengan penggunaan biasa.

Secara umum, algoritma pembelajaran mesin klasik berjalan jauh lebih pantas daripada algoritma pembelajaran mendalam; satu atau lebih CPU selalunya akan mencukupi untuk melatih model klasik. Model pembelajaran yang mendalam sering memerlukan pemecut perkakasan seperti GPU, TPU, atau FPGA untuk latihan, dan juga untuk penggunaan pada skala besar. Tanpa mereka, model akan mengambil masa berbulan-bulan untuk dilatih.

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

Aplikasi pembelajaran mendalam

Terdapat banyak contoh masalah yang memerlukan pembelajaran mendalam untuk menghasilkan model terbaik. Pemprosesan bahasa semula jadi (NLP) adalah baik.

Pada musim gugur 2016, kualiti output Terjemahan Google untuk pasangan bahasa Inggeris-Perancis, Inggeris-Cina, dan Inggeris-Jepun tiba-tiba meningkat secara mendadak, dari membuat salad perkataan hingga menghasilkan ayat yang hampir dengan kualiti terjemahan profesional oleh manusia. Apa yang berlaku di sebalik tabir ialah pasukan Google Brain dan Google Translate mengubah Google Translate dari menggunakan algoritma terjemahan mesin statistik berasaskan frasa lama (satu jenis pembelajaran mesin klasik) hingga menggunakan rangkaian neural mendalam yang dilatih dengan penyisipan kata menggunakan kerangka kerja TensorFlow Google .

Itu bukan projek yang mudah. Diperlukan banyak penyelidik peringkat doktoral selama berbulan-bulan mengerjakan model, dan ribuan minggu GPU untuk melatih model tersebut. Ini juga mendorong Google untuk membuat cip jenis baru, Tensor Processing Unit (TPU), untuk menjalankan rangkaian neural pada skala Google Translate.

Sebagai tambahan kepada masalah terjemahan bahasa yang ditangani oleh Google Translate, tugas-tugas NLP utama merangkumi ringkasan automatik, resolusi rujukan bersama, analisis wacana, segmentasi morfologi, pengenalan entiti bernama, penjanaan bahasa semula jadi, pemahaman bahasa semula jadi, penandaan bahagian-ucapan, sentimen analisis, dan pengecaman pertuturan.

Contoh lain yang baik dari penerapan pembelajaran mendalam adalah pengelasan gambar. Kerana organisma hidup memproses gambar dengan korteks visualnya, banyak penyelidik telah mengambil seni bina korteks visual mamalia sebagai model untuk rangkaian saraf yang dirancang untuk melakukan pengecaman gambar. Penyelidikan biologi bermula pada tahun 1950-an.

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

Model klasifikasi gambar dalam terbaik hari ini dapat mengenal pasti pelbagai katalog objek pada resolusi HD berwarna. Sebagai tambahan kepada rangkaian neural dalam yang tulen (DNN), kadang-kadang orang menggunakan model penglihatan hibrid, yang menggabungkan pembelajaran mendalam dengan algoritma pembelajaran mesin klasik yang melakukan sub-tugas tertentu.

Masalah penglihatan lain selain klasifikasi gambar asas yang telah diselesaikan dengan pembelajaran mendalam termasuk klasifikasi gambar dengan penyetempatan, pengesanan objek, segmentasi objek, pemindahan gaya gambar, pewarnaan gambar, pembinaan semula gambar, resolusi super gambar, dan sintesis gambar.

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

Menurut Goodfellow, Bengio, dan Courville, menulis pada tahun 2016, pembelajaran mendalam telah berjaya digunakan untuk meramalkan bagaimana molekul akan berinteraksi untuk membantu syarikat farmaseutikal merancang ubat baru, mencari zarah subatom, dan secara automatik menguraikan gambar mikroskop yang digunakan untuk membina peta 3-D otak manusia.

Rangkaian saraf pembelajaran mendalam

Idea untuk rangkaian saraf "buatan" wujud sejak tahun 1940-an. Konsep pentingnya ialah rangkaian neuron tiruan yang dibina daripada suis ambang yang saling berkaitan dapat belajar mengenali corak dengan cara yang sama seperti yang dilakukan oleh otak dan sistem saraf haiwan (termasuk retina).

Backpropagation

Pembelajaran dalam rangkaian neural mendalam berlaku dengan mengeratkan hubungan antara dua neuron ketika kedua-duanya aktif pada masa yang sama semasa latihan. Dalam perisian rangkaian saraf moden, ini biasanya merupakan masalah peningkatan nilai berat untuk hubungan antara neuron menggunakan peraturan yang disebut backpropagation of error , backprop, atau BP.

Neuron

Bagaimana neuron dimodelkan? Masing-masing mempunyai fungsi penyebaran yang mengubah output neuron yang bersambung, selalunya dengan jumlah tertimbang. Output fungsi penyebaran diteruskan ke fungsi pengaktifan, yang menyala ketika inputnya melebihi nilai ambang.

Fungsi pengaktifan

Pada tahun 1940-an dan 1950-an neuron buatan menggunakan fungsi pengaktifan langkah dan disebut sebagai perceptron . Rangkaian neural moden mungkin mengatakan bahawa mereka menggunakan perceptron, tetapi mereka sebenarnya mempunyai fungsi pengaktifan yang lancar, seperti fungsi logistik atau sigmoid, tangen hiperbolik, dan Rectified Linear Unit (ReLU). ReLU biasanya merupakan pilihan terbaik untuk penumpuan yang cepat, walaupun ia mempunyai masalah neuron "mati" semasa latihan jika kadar pembelajaran ditetapkan terlalu tinggi.

Output fungsi pengaktifan dapat diteruskan ke fungsi output untuk pembentukan tambahan. Namun, sering kali, fungsi output adalah fungsi identiti, yang bermaksud bahawa output fungsi pengaktifan diteruskan ke neuron yang disambungkan ke hilir.

Topologi rangkaian saraf

Sekarang kita tahu mengenai neuron, kita perlu belajar mengenai topologi rangkaian saraf yang biasa. Dalam rangkaian feed-forward, neuron disusun ke dalam lapisan yang berbeza: satu lapisan input, sebilangan lapisan pemprosesan tersembunyi, dan satu lapisan output, dan output dari setiap lapisan hanya menuju ke lapisan berikutnya.

Dalam rangkaian feed-forward dengan sambungan pintasan, beberapa sambungan dapat melompati satu atau lebih lapisan perantaraan. Dalam rangkaian saraf berulang, neuron dapat mempengaruhi diri mereka, baik secara langsung, atau tidak langsung melalui lapisan berikutnya.

Latihan

Pembelajaran rangkaian saraf yang diawasi dilakukan sama seperti pembelajaran mesin yang lain. Anda menghadirkan rangkaian dengan kumpulan data latihan, membandingkan output rangkaian dengan output yang diinginkan, menghasilkan vektor ralat, dan menerapkan pembetulan ke rangkaian berdasarkan vektor ralat. Kumpulan data latihan yang dijalankan bersama sebelum melakukan pembetulan disebut zaman.

Bagi mereka yang berminat dengan perinciannya, backpropagation menggunakan kecerunan fungsi ralat (atau kos) berkenaan dengan bobot dan berat sebelah model untuk mengetahui arah yang betul untuk mengurangkan kesalahan. Dua perkara mengawal penerapan pembetulan: algoritma pengoptimuman, dan pemboleh ubah kadar pembelajaran, yang biasanya perlu kecil untuk menjamin penumpuan dan mengelakkan menyebabkan neuron ReLU mati.

Pengoptimum

Pengoptimum untuk rangkaian saraf biasanya menggunakan beberapa bentuk algoritma keturunan kecerunan untuk mendorong penyebaran belakang, selalunya dengan mekanisme untuk membantu mengelakkan terjebak dalam minima tempatan, seperti mengoptimumkan kumpulan kecil yang dipilih secara rawak (Stochastic Gradient Descent) dan menerapkan pembetulan momentum pada gradien . Beberapa algoritma pengoptimuman juga menyesuaikan kadar pembelajaran parameter model dengan melihat sejarah kecerunan (AdaGrad, RMSProp, dan Adam).

Seperti semua pembelajaran mesin, anda perlu memeriksa ramalan rangkaian saraf terhadap set data pengesahan yang berasingan. Tanpa melakukan itu, anda berisiko membuat rangkaian saraf yang hanya menghafal inputnya daripada belajar menjadi peramal umum.

DNN sebenar

Rangkaian neural yang mendalam untuk masalah sebenar mungkin mempunyai 10 lapisan tersembunyi. Topologi mungkin sederhana atau agak kompleks.

Semakin banyak lapisan dalam rangkaian, semakin banyak ciri yang dapat dikenalinya. Malangnya, semakin banyak lapisan dalam rangkaian, semakin lama masa yang diperlukan untuk mengira, dan semakin sukar untuk dilatih.

Algoritma pembelajaran mendalam

Seperti yang saya nyatakan sebelumnya, kebanyakan pembelajaran mendalam dilakukan dengan jaringan saraf dalam. Rangkaian neural konvolusional (CNN) sering digunakan untuk penglihatan mesin. Rangkaian neural berulang (RNN) sering digunakan untuk bahasa semula jadi dan pemprosesan urutan lain, seperti rangkaian Memori Jangka Pendek Panjang (LSTM) dan rangkaian saraf berdasarkan perhatian. Hutan Rawak, juga dikenal sebagai Hutan Keputusan Rawak, yang bukan jaringan saraf, berguna untuk berbagai masalah klasifikasi dan regresi.

Rangkaian saraf CNN

Jaringan saraf konvolusional biasanya menggunakan lapisan konvolusional, penyatuan, ReLU, terhubung sepenuhnya, dan kehilangan untuk mensimulasikan korteks visual. Lapisan konvolusional pada dasarnya mengambil gabungan banyak kawasan bertindih kecil. Lapisan penyatuan melakukan bentuk pensampelan bawah tak linear. Lapisan ReLU menerapkan fungsi pengaktifan tidak tepu f(x) = max(0,x). Dalam lapisan yang terhubung sepenuhnya, neuron mempunyai hubungan dengan semua pengaktifan pada lapisan sebelumnya. Lapisan kerugian menghitung bagaimana latihan rangkaian menghukum penyimpangan antara label yang diramalkan dan benar, menggunakan fungsi kehilangan Softmax atau cross-entropy untuk klasifikasi, atau fungsi kerugian Euclidean untuk regresi.

RNN, LSTM, dan rangkaian saraf berdasarkan perhatian

Dalam rangkaian neural feed-forward, maklumat mengalir dari input, melalui lapisan tersembunyi, ke output. Ini menghadkan rangkaian untuk berurusan dengan satu keadaan pada satu masa.

Dalam rangkaian saraf berulang, maklumat berputar melalui satu gelung, yang membolehkan rangkaian mengingat output sebelumnya baru-baru ini. Ini memungkinkan untuk analisis urutan dan siri masa. RNN mempunyai dua masalah yang sama: kecerunan meletup (mudah diperbaiki dengan menjepit kecerunan) dan kecerunan lenyap (tidak begitu mudah diperbaiki).

Di LSTM, rangkaian mampu melupakan (gating) maklumat sebelumnya atau mengingatnya, dalam kedua kes tersebut dengan mengubah bobot. Ini berkesan memberi LSTM memori jangka panjang dan jangka pendek dan menyelesaikan masalah kecerunan yang hilang. LSTM dapat menangani urutan beratus input yang lalu.

Modul perhatian adalah gerbang umum yang menerapkan berat pada vektor input Pengekod perhatian neural hierarki menggunakan pelbagai lapisan modul perhatian untuk menangani puluhan ribu input masa lalu.

Hutan Rawak

Algoritma pembelajaran mendalam lain - bukan rangkaian neural mendalam - adalah Hutan Rawak, atau Hutan Keputusan Rawak. Hutan Rawak dibina dari banyak lapisan, tetapi bukannya neuron, ia dibina dari pohon keputusan, dan menghasilkan purata statistik (mod untuk klasifikasi atau min untuk regresi) ramalan setiap pokok. Aspek-aspek rawak Hutan Rawak adalah penggunaan agregasi bootstrap (aka bagging ) untuk pokok individu dan mengambil subkumpulan ciri secara rawak.

Kerangka pembelajaran mendalam

Walaupun anda dapat menulis program pembelajaran mendalam dari prinsip pertama, jauh lebih cekap menggunakan kerangka pembelajaran mendalam, terutama kerana program tersebut telah dioptimumkan untuk digunakan dengan GPU dan pemecut lain. Rangka kerja yang unggul adalah TensorFlow, yang berasal dari Google. API tahap tinggi yang disukai untuk TensorFlow adalah Keras, yang juga dapat digunakan dengan kerangka belakang yang lain.

PyTorch, dari Facebook dan lain-lain, adalah alternatif yang kuat untuk TensorFlow, dan mempunyai perbezaan menyokong rangkaian saraf dinamik, di mana topologi rangkaian dapat berubah dari zaman ke zaman. Fastai adalah API pihak ketiga tahap tinggi yang menggunakan PyTorch sebagai back-end.

MXNet, dari Amazon dan lain-lain, adalah alternatif lain yang kuat untuk TensorFlow, dengan tuntutan untuk skalabiliti yang lebih baik. Gluon adalah API penting peringkat tinggi yang disukai untuk MXNet.

Chainer, dari IBM, Intel, dan lain-lain, dalam beberapa cara menjadi inspirasi bagi PyTorch, memandangkan ia menentukan rangkaian neural dengan berjalan dan menyokong rangkaian neural yang dinamik.

Walaupun semua kerangka kerja yang disebutkan di atas terutama Python, Deeplearning4j (DL4J), yang berasal dari Skymind dan sekarang merupakan projek Apache, adalah terutamanya Java dan Scala. DL4J serasi dengan Apache Spark dan Hadoop.

ONNX pada mulanya dicadangkan sebagai ekosistem terbuka untuk model AI yang boleh ditukar ganti. ONNX kini mempunyai runtime selain format fail pertukaran.