|
|
||
|---|---|---|
| .. | ||
| lab | ||
| OwnFramework.ipynb | ||
| README.md | ||
README.md
Pengenalan kepada Rangkaian Neural. Multi-Layered Perceptron
Dalam bahagian sebelumnya, anda telah mempelajari model rangkaian neural yang paling mudah - perceptron satu lapisan, iaitu model klasifikasi linear dua kelas.
Dalam bahagian ini, kita akan memperluaskan model ini kepada rangka kerja yang lebih fleksibel, membolehkan kita:
- melakukan klasifikasi pelbagai kelas selain daripada dua kelas
- menyelesaikan masalah regresi selain daripada klasifikasi
- memisahkan kelas yang tidak boleh dipisahkan secara linear
Kita juga akan membangunkan rangka kerja modular kita sendiri dalam Python yang membolehkan kita membina pelbagai seni bina rangkaian neural.
Kuiz pra-kuliah
Formalisasi Pembelajaran Mesin
Mari kita mulakan dengan memformalkan masalah Pembelajaran Mesin. Katakan kita mempunyai dataset latihan X dengan label Y, dan kita perlu membina model f yang akan membuat ramalan paling tepat. Kualiti ramalan diukur oleh fungsi kerugian ℒ. Fungsi kerugian berikut sering digunakan:
- Untuk masalah regresi, apabila kita perlu meramalkan nombor, kita boleh menggunakan ralat mutlak ∑i|f(x(i))-y(i)|, atau ralat kuasa dua ∑i(f(x(i))-y(i))2
- Untuk klasifikasi, kita menggunakan kerugian 0-1 (yang pada dasarnya sama seperti ketepatan model), atau kerugian logistik.
Untuk perceptron satu lapisan, fungsi f ditakrifkan sebagai fungsi linear f(x)=wx+b (di sini w adalah matriks berat, x adalah vektor ciri input, dan b adalah vektor bias). Untuk seni bina rangkaian neural yang berbeza, fungsi ini boleh mengambil bentuk yang lebih kompleks.
Dalam kes klasifikasi, sering kali diinginkan untuk mendapatkan kebarangkalian kelas yang sepadan sebagai output rangkaian. Untuk menukar nombor sewenang-wenang kepada kebarangkalian (contohnya untuk menormalkan output), kita sering menggunakan fungsi softmax σ, dan fungsi f menjadi f(x)=σ(wx+b)
Dalam definisi f di atas, w dan b dipanggil parameter θ=⟨w,b⟩. Diberikan dataset ⟨X,Y⟩, kita boleh mengira ralat keseluruhan pada keseluruhan dataset sebagai fungsi parameter θ.
✅ Matlamat latihan rangkaian neural adalah untuk meminimumkan ralat dengan mengubah parameter θ
Pengoptimuman Gradient Descent
Terdapat kaedah pengoptimuman fungsi yang terkenal dipanggil gradient descent. Ideanya ialah kita boleh mengira derivatif (dalam kes berbilang dimensi dipanggil gradien) fungsi kerugian berkenaan dengan parameter, dan mengubah parameter sedemikian rupa sehingga ralat akan berkurangan. Ini boleh diformalkan seperti berikut:
- Inisialisasi parameter dengan beberapa nilai rawak w(0), b(0)
- Ulang langkah berikut berkali-kali:
- w(i+1) = w(i)-η∂ℒ/∂w
- b(i+1) = b(i)-η∂ℒ/∂b
Semasa latihan, langkah pengoptimuman sepatutnya dikira dengan mempertimbangkan keseluruhan dataset (ingat bahawa kerugian dikira sebagai jumlah melalui semua sampel latihan). Walau bagaimanapun, dalam kehidupan sebenar kita mengambil bahagian kecil dataset yang dipanggil minibatch, dan mengira gradien berdasarkan subset data. Oleh kerana subset diambil secara rawak setiap kali, kaedah sedemikian dipanggil stochastic gradient descent (SGD).
Multi-Layered Perceptrons dan Backpropagation
Rangkaian satu lapisan, seperti yang kita lihat di atas, mampu mengklasifikasikan kelas yang boleh dipisahkan secara linear. Untuk membina model yang lebih kaya, kita boleh menggabungkan beberapa lapisan rangkaian. Secara matematik, ini bermakna fungsi f akan mempunyai bentuk yang lebih kompleks, dan akan dikira dalam beberapa langkah:
- z1=w1x+b1
- z2=w2α(z1)+b2
- f = σ(z2)
Di sini, α adalah fungsi pengaktifan tidak linear, σ adalah fungsi softmax, dan parameter θ=<w1,b1,w2,b2>.
Algoritma gradient descent akan kekal sama, tetapi ia akan menjadi lebih sukar untuk mengira gradien. Berdasarkan peraturan pembezaan rantai, kita boleh mengira derivatif sebagai:
- ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2)
- ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1)
✅ Peraturan pembezaan rantai digunakan untuk mengira derivatif fungsi kerugian berkenaan dengan parameter.
Perhatikan bahawa bahagian paling kiri semua ekspresi tersebut adalah sama, dan oleh itu kita boleh mengira derivatif dengan berkesan bermula daripada fungsi kerugian dan bergerak "ke belakang" melalui graf pengiraan. Oleh itu, kaedah latihan perceptron berbilang lapisan dipanggil backpropagation, atau 'backprop'.
TODO: rujukan imej
✅ Kita akan membincangkan backprop dengan lebih terperinci dalam contoh notebook kita.
Kesimpulan
Dalam pelajaran ini, kita telah membina perpustakaan rangkaian neural kita sendiri, dan kita telah menggunakannya untuk tugas klasifikasi dua dimensi yang mudah.
🚀 Cabaran
Dalam notebook yang disertakan, anda akan melaksanakan rangka kerja anda sendiri untuk membina dan melatih perceptron berbilang lapisan. Anda akan dapat melihat secara terperinci bagaimana rangkaian neural moden beroperasi.
Teruskan ke notebook OwnFramework dan selesaikan latihan tersebut.
Kuiz pasca-kuliah
Kajian & Pembelajaran Kendiri
Backpropagation adalah algoritma biasa yang digunakan dalam AI dan ML, yang patut dikaji dengan lebih terperinci
Tugasan
Dalam makmal ini, anda diminta menggunakan rangka kerja yang anda bina dalam pelajaran ini untuk menyelesaikan klasifikasi digit tulisan tangan MNIST.
Penafian:
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI Co-op Translator. Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.