LeNet5 LeNet5 lahir pada tahun 1994 dan merupakan salah satu jaringan saraf konvolusional pertama dan telah memajukan bidang pembelajaran mendalam. Sejak 1988, setelah banyak iterasi yang sukses, karya perintis oleh Yann LeCun ini telah diberi nama LeNet5 (lihat: Pembelajaran Berbasis Gradien yang Diterapkan pada Pengenalan Dokumen).
Arsitektur LeNet5 didasarkan pada gagasan bahwa (terutama) fitur gambar didistribusikan di seluruh gambar, dan bahwa konvolusi dengan parameter yang dapat dipelajari adalah cara yang efisien untuk mengekstrak fitur serupa di beberapa lokasi dengan sejumlah kecil parameter. Saat itu, tidak ada GPU untuk membantu pelatihan, dan bahkan CPU-nya lambat. Oleh karena itu, kemampuan untuk menyimpan parameter serta proses perhitungan adalah perkembangan utama. Ini adalah kebalikan dari menggunakan setiap piksel sebagai input terpisah untuk jaringan saraf berlapis-lapis yang besar. LeNet5 menjelaskan bahwa piksel tersebut tidak boleh digunakan di lapisan pertama karena gambar memiliki korelasi spasial yang kuat yang tidak dapat dieksploitasi dengan menggunakan piksel independen dalam gambar sebagai fitur input yang berbeda.
Fitur LeNet5 dapat diringkas sebagai berikut:
Jaringan saraf konvolusional menggunakan 3 lapisan sebagai urutan: konvolusional, pooled, non-linear, → Ini mungkin fitur utama dari pembelajaran mendalam gambar sejak makalah ini! Gunakan konvolusi untuk mengekstrak fitur spasial Subsampel menggunakan pemetaan ke rata-rata spasial Nlinier dalam bentuk garis singgung hiperbolik (tanh) atau berbentuk S (sigmoid). Multilayer Neural Networks (MLP) berfungsi sebagai pengklasifikasi akhir Matriks koneksi yang jarang antar lapisan menghindari biaya komputasi yang besar
Secara keseluruhan, jaringan ini adalah titik awal untuk sejumlah besar arsitektur terbaru dan telah menginspirasi banyak orang di ruang ini.
Interval Dari tahun 1998 hingga 2010, jaringan saraf berada dalam tahap inkubasi. Kebanyakan orang tidak menyadari kekuatan pertumbuhan mereka, sementara peneliti lain lambat melakukannya. Berkat munculnya kamera ponsel dan kamera digital yang murah, semakin banyak data yang dieksploitasi. Dan daya komputasi juga tumbuh, CPU semakin cepat, dan GPU menjadi alat komputasi untuk berbagai tujuan. Tren ini telah memungkinkan jaringan saraf untuk berkembang, meskipun lambat. Data dan daya komputasi membuat tugas yang dapat diselesaikan jaringan saraf semakin menarik. Setelah itu semuanya menjadi jelas......
Dan Ciresan Net Pada tahun 2010, Dan Claudiu Ciresan dan Jurgen Schmidhuber menerbitkan implementasi jaringan saraf GPU paling awal. Implementasi ini adalah jaringan saraf 9 lapis yang berjalan pada prosesor grafis NVIDIA GTX 280, termasuk propagasi maju dan mundur.
AlexNet Pada tahun 2012, Alex Krizhevsky menerbitkan Alexet (lihat: Klasifikasi ImageNet dengan Jaringan Saraf Konvolusional Dalam), versi LeNet yang lebih dalam dan lebih luas yang memenangkan persaingan ImageNet yang sulit dengan selisih yang signifikan.
AlexNet memperluas ide-ide LeNet ke jaringan saraf yang lebih besar yang dapat mempelajari objek dan tingkat objek yang jauh lebih kompleks. Kontribusi dari karya ini adalah:
Gunakan unit linier yang dimodifikasi (ReLU) sebagai nonlinier Gunakan teknik Dropout untuk secara selektif mengabaikan neuron individu selama pelatihan untuk menghindari model overfitting Ganti kolam besar untuk menghindari efek rata-rata dari pengumpulan rata-rata Kurangi waktu pelatihan dengan GPU NVIDIA GTX 580
Pada saat itu, GPU dapat menyediakan jumlah inti yang lebih tinggi daripada CPU, dan waktu pelatihan dapat ditingkatkan 10 kali lipat, yang pada gilirannya memungkinkan kumpulan data yang lebih besar dan gambar yang lebih besar.
Keberhasilan AlexNet telah menyebabkan revolusi kecil. Jaringan saraf konvolusional sekarang menjadi tulang punggung pembelajaran mendalam, dan mereka telah menjadi identik dengan "jaringan saraf besar yang sekarang dapat menyelesaikan tugas-tugas yang berguna."
Prestasi berlebihan Pada bulan Desember 2013, laboratorium Yann LeCun di Universitas New York mengusulkan turunan dari AlexNet, Overfeat (lihat: OverFeat: Pengenalan, Lokalisasi dan Deteksi Terintegrasi menggunakan Jaringan Konvolusi). Artikel ini juga mengusulkan kotak pembatas pembelajaran, yang mengarah ke banyak makalah tentang topik yang sama ini. Saya percaya lebih baik belajar membagi objek daripada mempelajari kotak pembatas buatan.
VGG Jaringan VGG dari University of Oxford (lihat: Jaringan Konvolusional yang Sangat Dalam untuk Pengenalan Gambar Skala Besar) adalah jaringan pertama yang menggunakan filter 3×3 yang lebih kecil di setiap lapisan konvolusi dan menggabungkannya untuk memprosesnya sebagai urutan konvolusional.
Ini tampaknya kebalikan dari prinsip LeNet, di mana konvolusi besar digunakan untuk mendapatkan fitur serupa dalam gambar. Tidak seperti filter 9×9 atau 11×11 AlexNet, filter mulai menjadi lebih kecil, mendekati anomali konvolusi 1×1 yang terkenal yang coba dihindari LeNet—setidaknya di lapisan pertama jaringan. Namun, VGG telah membuat kemajuan besar dengan menggunakan beberapa konvolusi 3×3 secara berturut-turut untuk meniru efek medan reseptif yang lebih besar, seperti 5×5 dan 7×7. Ide-ide ini juga telah digunakan dalam arsitektur jaringan yang lebih baru, seperti Inception dan ResNet.
Jaringan VGG menggunakan beberapa lapisan konvolusional 3×3 untuk mengkarakterisasi fitur kompleks. Perhatikan bahwa blok ke-3, ke-4, ke-5 dari filter VGG-E: 256×256, dan 512×512 3×3 digunakan beberapa kali secara bergantian untuk mengekstrak fitur dan kombinasi yang lebih kompleks dari fitur ini. Efeknya setara dengan pengklasifikasi 512×512 besar dengan 3 lapisan konvolusi. Ini jelas berarti bahwa ada banyak parameter dan kemampuan belajar. Tetapi jaringan ini sulit dilatih dan harus dibagi menjadi jaringan yang lebih kecil dan terakumulasi lapis demi lapis. Hal ini disebabkan oleh kurangnya cara yang kuat untuk mengatur model atau kurang lebih membatasi sejumlah besar ruang pencarian karena banyaknya parameter.
VGG menggunakan ukuran fitur besar di banyak lapisan karena inferensi memakan waktu saat runtime. Seperti halnya kemacetan Inception, mengurangi jumlah fitur akan menghemat beberapa biaya komputasi.
Jaringan-dalam-jaringan Ide Network in Network (NiN, lihat makalah: Network In Network) sederhana dan hebat: penggunaan konvolusi 1×1 untuk memberikan lebih banyak kemampuan composable untuk fitur lapisan konvolusional.
Arsitektur NiN menggunakan lapisan MLP spasial setelah konvolusi individu untuk menggabungkan fitur dengan lebih baik sebelum lapisan lain. Sekali lagi, Anda dapat berpikir bahwa 1×1 konvolusi bertentangan dengan prinsip asli LeNet, tetapi sebenarnya mereka dapat menggabungkan fitur konvolusi dengan cara yang lebih baik daripada yang tidak mungkin dilakukan hanya dengan menumpuk lebih banyak fitur konvolusional. Ini berbeda dengan menggunakan piksel asli sebagai input layer berikutnya. 1×1 konvolusi sering digunakan untuk menggabungkan fitur secara spatis pada peta fitur setelah konvolusi, sehingga mereka benar-benar dapat menggunakan sangat sedikit parameter dan membagikannya di semua piksel fitur ini!
Kemampuan MLP untuk sangat meningkatkan efektivitas fitur konvolusional individu dengan menggabungkannya menjadi kelompok yang lebih kompleks. Ide ini sejak itu telah digunakan dalam beberapa arsitektur terbaru, seperti ResNet, Inception, dan turunannya.
NiN juga menggunakan lapisan pengumpulan rata-rata sebagai bagian dari pengklasifikasi akhir, praktik lain yang akan menjadi umum. Ini dilakukan dengan rata-rata respons jaringan ke beberapa gambar input sebelum klasifikasi.
GoogLeNet dan Inception Christian Szegedy dari Google memulai pencariannya untuk mengurangi overhead komputasi jaringan saraf dalam dan merancang GoogLeNet, arsitektur Inception pertama (lihat: Going Deeper with Convolutions).
Itu pada musim gugur 2014, dan model pembelajaran mendalam menjadi berguna dalam mengklasifikasikan bingkai gambar versus video. Sebagian besar skeptis tidak lagi meragukan bahwa pembelajaran mendalam dan jaringan saraf benar-benar kembali kali ini, dan akan terus berkembang. Mengingat kegunaan teknologi ini, raksasa internet seperti Google sangat tertarik untuk menerapkan arsitektur ini secara efisien dan dalam skala besar di server mereka.
Christian banyak berpikir tentang bagaimana jaringan saraf dalam dapat mencapai tingkat kinerja yang tinggi, seperti di ImageNet, sambil mengurangi overhead komputasi mereka. Atau peningkatan kinerja dapat dilakukan sambil memastikan overhead komputasi yang sama.
Dia dan timnya datang dengan modul Inception:
Sekilas, ini pada dasarnya adalah kombinasi paralel dari filter konvolusional 1×1, 3×3, 5×5. Tetapi ide bagus dari Inception adalah untuk mengurangi jumlah fitur sebelum modul paralel yang mahal dengan 1×1 blok konvolusional (NiN). Ini biasanya disebut sebagai "kemacetan". Bagian ini akan dijelaskan di bagian "lapisan kemacetan" di bawah ini.
GoogLeNet menggunakan tulang punggung tanpa modul inception sebagai lapisan awal, diikuti oleh lapisan pengumpulan rata-rata ditambah pengklasifikasi softmax yang mirip dengan NiN. Pengklasifikasi ini memiliki jumlah operasi yang jauh lebih kecil daripada pengklasifikasi AlexNet dan VGG. Hal ini juga mengarah pada desain jaringan yang sangat efektif, lihat makalah: Analisis Model Jaringan Saraf Dalam untuk Aplikasi Praktis.
Lapisan kemacetan Terinspirasi oleh NiN, lapisan kemacetan Inception mengurangi jumlah fitur di setiap lapisan, dan dengan demikian jumlah operasi; Jadi waktu inferensi dapat dijaga tetap rendah. Jumlah fitur dikurangi 4 kali lipat sebelum data dilewatkan melalui modul konvolusional yang mahal. Ini adalah penghematan yang signifikan dalam hal biaya komputasi dan keberhasilan arsitektur.
Mari kita verifikasi secara khusus. Sekarang setelah Anda memiliki 256 input fitur dan 256 output fitur, mari kita asumsikan bahwa lapisan Inception hanya dapat melakukan 3×3 konvolusi, yang berarti total 256×256×3×3 konvolusi (hampir 589.000 operasi perkalian dan akumulasi (MAC)). Ini mungkin di luar anggaran komputasi kami, katakanlah, untuk menjalankan layer dalam 0,5 milidetik di server Google. Sebagai gantinya, kami memutuskan untuk mengurangi jumlah fitur yang perlu berbelit-belit, yaitu 64 (yaitu 256/4). Dalam hal ini, kita mulai dengan konvolusi 256 -> 64 1×1, kemudian 64 konvolusi pada semua cabang Inception, diikuti oleh konvolusi 1×1 dari fitur 64 -> 256, dan sekarang operasinya adalah sebagai berikut:
256×64 × 1×1 = 16.000 detik 64×64 × 3×3 = 36.000 detik 64×256 × 1×1 = 16.000 detik
Dibandingkan dengan 600.000 sebelumnya, sekarang ada total 70.000 volume komputasi, yang hampir 10 kali lebih sedikit.
Dan meskipun kami melakukan operasi yang lebih baik, kami tidak kehilangan keumumannya di lapisan ini. Lapisan kemacetan telah terbukti menjadi yang terbaik pada kumpulan data seperti ImageNet, dan juga digunakan dalam arsitektur seperti ResNet, yang akan kita perkenalkan selanjutnya.
Ini berhasil karena fitur input terkait, sehingga redundansi dapat dikurangi dengan menggabungkannya dengan benar dengan konvolusi 1×1. Kemudian, setelah sejumlah kecil fitur berbelit-belit, mereka dapat diperluas lagi menjadi kombinasi yang bermakna di lapisan berikutnya.
Awal V3 (dan V2) Christian dan timnya adalah peneliti yang sangat produktif. Pada bulan Februari 2015, Batch-normalized Inception diperkenalkan sebagai Inception V2 (lihat makalah: Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariat Shift). Normalisasi batch menghitung rata-rata dan standar deviasi semua peta fitur pada output satu lapisan, dan menggunakan nilai-nilai ini untuk menormalkan responsnya. Ini setara dengan "memutihkan" data, sehingga semua peta saraf merespons dalam rentang yang sama dan nol rata-rata. Ini membantu pelatihan ketika lapisan berikutnya tidak perlu mempelajari offset dari data input, dan juga berfokus pada cara menggabungkan fitur-fitur ini dengan lebih baik.
Pada bulan Desember 2015, tim merilis versi baru dari modul Inception dan arsitektur serupa (lihat makalah: Memikirkan kembali Arsitektur Inception untuk Visi Komputer). Makalah ini lebih menjelaskan arsitektur GoogLeNet asli, memberikan lebih banyak detail tentang pilihan desain. Ide aslinya adalah sebagai berikut:
Dengan membangun jaringan dengan hati-hati, kedalaman dan lebarnya seimbang, sehingga dapat memaksimalkan aliran informasi ke dalam jaringan. Sebelum setiap pengumpulan, tambahkan pemetaan fitur. Seiring bertambahnya kedalaman, kedalaman atau jumlah fitur lapisan jaringan juga meningkat secara sistematis. Gunakan setiap peningkatan kedalaman lapisan untuk meningkatkan pengikatan fitur sebelum lapisan berikutnya. Hanya dengan menggunakan 3×3 konvolusi, filter 5×5 dan 7×7 tertentu dapat dibagi menjadi beberapa 3×3 jika memungkinkan. Lihat gambar di bawah ini
Akibatnya, Inception baru menjadi:
Anda juga dapat membagi filter dengan meratakan konvolusi menjadi modul yang lebih kompleks:
Saat melakukan perhitungan awal, modul Inception juga dapat mengurangi ukuran data dengan menyediakan pengumpulan. Ini pada dasarnya mirip dengan menjalankan lapisan pengumpulan sederhana secara paralel saat menjalankan konvolusi:
Inception juga menggunakan lapisan pooling dan softmax sebagai pengklasifikasi akhir.
ResNet Desember 2015 melihat perubahan baru, yang bertepatan dengan Inception V3. ResNet memiliki ide sederhana: memberi makan output dari dua lapisan konvolusional berturut-turut dan melewati input ke lapisan berikutnya (lihat makalah: Deep Residual Learning for Image Recognition).
Ini mirip dengan beberapa ide lama sebelumnya. Tetapi di ResNet, mereka membagi dua lapisan dan diterapkan pada skala yang lebih besar. Triding setelah 2 lapisan adalah intuisi kunci karena membagi satu lapisan tidak memberikan lebih banyak peningkatan. Melewati lapisan 2 mungkin dianggap sebagai pengklasifikasi kecil, atau jaringan-dalam-jaringan.
Ini adalah pertama kalinya jumlah lapisan jaringan melebihi 100, dan bahkan 1000 lapisan dapat dilatih.
ResNet, yang memiliki sejumlah besar lapisan jaringan, mulai menggunakan lapisan jaringan yang mirip dengan lapisan kemacetan Inception:
Lapisan ini memproses sejumlah fitur yang lebih kecil dengan pertama-tama membungkukkan sejumlah kecil fitur dengan 1×1 dengan output yang lebih kecil (biasanya 1/4 dari input), kemudian menggunakan lapisan 3×3 dan kemudian lapisan 1×1. Mirip dengan modul Inception, ini memastikan intensitas komputasi yang rendah sekaligus memberikan kombinasi fitur yang kaya.
ResNet menggunakan lapisan awal yang relatif sederhana pada input: lapisan dasar 7×7 volume dengan dua kumpulan. Bandingkan ini dengan Inception V3 dan V4 yang lebih kompleks dan kurang intuitif.
ResNet juga menggunakan lapisan pooling plus softmax sebagai pengklasifikasi akhir.
Wawasan lain tentang ResNet terjadi setiap hari:
ResNet dapat dianggap paralel dan berdekatan, memperlakukan input dan output (inout) sebagai paralel di banyak modul, sedangkan output dari setiap modul terhubung terus menerus. ResNet juga dapat dianggap sebagai kombinasi modul paralel atau kontinu (lihat makalah: Jaringan Residual adalah Ansambel Eksponensial dari Jaringan Relatif Dangkal). Telah ditemukan bahwa ResNet biasanya beroperasi secara paralel pada blok jaringan pada lapisan 20-30. Alih-alih terus mengalir di seluruh jaringan. Ketika ResNet memberi makan output kembali ke input seperti RNN, jaringan dapat dianggap sebagai model kortikal yang lebih tepercaya secara biologis (lihat makalah: Menjembatani Kesenjangan Antara Pembelajaran Residual, Jaringan Saraf Berulang dan Korteks Visual).
Awal V4 Berikut versi Inception lain dari Christian dan timnya, yang mirip dengan Inception V3:
Inception V4 juga menggabungkan modul Inception dan modul ResNet:
Saya pikir arsitekturnya tidak terlalu ringkas, tetapi juga penuh dengan heuristik yang kurang transparan. Sulit untuk memahami pilihan di dalamnya, dan sulit bagi penulis untuk menjelaskan.
Mengingat kesederhanaan jaringan, yang dapat dengan mudah dipahami dan diperbaiki, ResNet mungkin lebih baik.
SqueezeNet SqueezeNet (lihat makalah: SqueezeNet: Akurasi tingkat AlexNet dengan parameter 50x lebih sedikit dan ukuran model <0,5MB) adalah arsitektur yang baru-baru ini diterbitkan yang memproses ulang konsep di ResNet dan Inception. Model jaringan desain arsitektur yang lebih baik lebih kecil, dan parameternya belum memerlukan algoritma kompresi yang kompleks.
ENet Tim kami berencana untuk menggabungkan semua fitur arsitektur yang baru-baru ini terungkap untuk menciptakan jaringan yang sangat efisien dan berbobot rendah yang menggunakan lebih sedikit parameter dan perhitungan untuk mencapai hasil terbaik. Arsitektur jaringan ini disebut ENet dan dirancang oleh Adam Paszke. Kami telah menggunakannya untuk markup piksel tunggal dan resolusi adegan.
Untuk informasi lebih lanjut tentang ENet, lihat makalah ENet: Arsitektur Jaringan Neural Dalam untuk Segmentasi Semantik Real-Time. ENet adalah jaringan pengkodean, penambahan, dan decoding. Encoder adalah desain CNN biasa untuk diklasifikasikan. Dekoder adalah jaringan upsampling yang menyebarkan klasifikasi mundur ke gambar asli untuk segmentasi. Ini hanya menggunakan jaringan saraf dan tidak ada algoritme lain untuk segmentasi gambar.
ENet dirancang untuk menggunakan jumlah sumber daya seminimal mungkin di awal. Itu sebabnya ia memiliki skrip yang sangat kecil, dengan jaringan gabungan encoder dan decoder yang menempati 0,7 MB dengan akurasi 16 fp. Bahkan dengan model sekecil itu, ENet mirip atau lebih tinggi daripada solusi jaringan saraf lainnya dalam akurasi segmentasi.
Analisis modul Analisis modul CNN, yang telah dilakukan dalam makalah (Evaluasi sistematis kemajuan CNN di ImageNet), sangat membantu:
Gunakan ELU nonlinearity tanpa batchnorm atau ReLU dengan batchnorm. Gunakan transformasi ruang warna RGB yang dipelajari. Gunakan strategi penurunan tingkat pembelajaran linier. Gunakan jumlah lapisan gabungan rata-rata dan lebih besar. Gunakan ukuran batch mini sekitar 128 hingga 256. Jika itu terlalu besar untuk GPU Anda, cukup skalakan tingkat pembelajaran ke ukuran ini. Gunakan lapisan yang terhubung sepenuhnya sebagai konvolusi dan rata-rata semua prediksi untuk membuat prediksi akhir. Ketika penelitian meningkatkan ukuran set pelatihan, ia mendeteksi apakah ada dataran tinggi yang tidak tercapai Kebersihan data lebih penting daripada ukuran data. Jika Anda tidak dapat meningkatkan ukuran gambar input, kurangi langkah pada layer berikutnya, melakukannya memiliki efek yang sama. Jika jaringan Anda memiliki arsitektur yang kompleks dan sangat dioptimalkan, seperti GoogLeNet, Anda harus berhati-hati dalam memodifikasinya.
Arsitektur lain yang patut diperhatikan FractalNet (lihat makalah: FractalNet: Ultra-Deep Neural Networks without Residuals) menggunakan arsitektur rekursif, yang tidak diuji di ImageNet. Arsitektur ini adalah turunan dari ResNet atau lebih umum, ResNet.
masa depan Kami percaya bahwa membuat arsitektur jaringan saraf adalah prioritas utama untuk pengembangan pembelajaran mendalam. Tim kami sangat merekomendasikan untuk membaca dan memahami makalah yang disebutkan dalam artikel dengan cermat.
Tetapi orang mungkin bertanya-tanya mengapa kita menghabiskan begitu banyak waktu untuk membuat arsitektur? Mengapa tidak memberi tahu kami apa yang harus digunakan dengan data? Bagaimana Anda menggabungkan modul? Pertanyaan-pertanyaan ini bagus, tetapi masih dalam penelitian, dan ada makalah untuk dirujuk: Jaringan saraf dengan struktur yang dapat dibedakan.
Perhatikan bahwa sebagian besar arsitektur yang telah kita bicarakan dalam artikel ini adalah tentang visi komputer. Arsitektur jaringan saraf serupa telah dikembangkan di area lain, dan sangat menarik untuk belajar tentang perubahan arsitektur dalam semua tugas lainnya.
Jika Anda tertarik untuk membandingkan arsitektur jaringan saraf dan kinerja komputasi, lihat makalah: Analisis Model Jaringan Saraf Dalam untuk Aplikasi Praktis.
|