Bagaimana aljabar linier diterapkan dalam pembelajaran mesin

Ketika Anda mempelajari subjek abstrak seperti aljabar linier, Anda mungkin bertanya-tanya: mengapa Anda membutuhkan semua vektor dan matriks ini? Bagaimana Anda akan menerapkan semua inversi, transposisi, vektor eigen, dan nilai eigen ini untuk tujuan praktis?


Nah, jika Anda belajar aljabar linier dengan tujuan melakukan pembelajaran mesin, inilah jawabannya.


Secara singkat, Anda dapat menggunakan aljabar linier untuk pembelajaran mesin pada 3 level berbeda:


  • aplikasi model untuk data;
  • melatih model;
  • memahami cara kerjanya atau mengapa itu tidak berhasil.

menggambar

Saya berasumsi bahwa Anda, pembaca, paling tidak memiliki gagasan samar tentang konsep aljabar linier (seperti vektor, matriks, produk mereka, matriks terbalik, vektor eigen, dan nilai eigen), dan masalah pembelajaran mesin (seperti regresi, klasifikasi, dan pengurangan dimensi). . Jika tidak, mungkin sekarang saat yang tepat untuk membacanya di Wikipedia, atau bahkan mendaftar untuk MOOC tentang hal-hal ini.


Aplikasi


Apa yang biasanya dilakukan pembelajaran mesin adalah menyesuaikan beberapa fungsi fW(X)=Hdimana Xadalah data input, Hadalah beberapa representasi berguna dari data ini, dan Wadalah parameter tambahan, yang bergantung pada fungsi kita dan yang harus dipelajari. Ketika kita memiliki representasi ini H, kita dapat menggunakannya misalnya untuk merekonstruksi data asli X(Seperti dalam pembelajaran tanpa pengawasan), atau untuk memprediksi beberapa nilai yang menarik, Y(seperti dalam pembelajaran yang diawasi).


Semua X, H, Wdan Ybiasanya array numerik, dan setidaknya dapat disimpan sebagai vektor dan matriks. Tetapi penyimpanan saja tidak penting. Yang penting adalah fungsi kita fsering linier, yaitu, H=XW. Contoh dari algoritma linier tersebut adalah:


  • regresi linier, di mana Y=H. Ini adalah dasar yang masuk akal untuk masalah regresi, dan alat yang populer untuk menjawab pertanyaan seperti "tidak xmempengaruhi y, hal lain dianggap sama? "
  • regresi logistik, di mana Y=softmax(H). Ini adalah baseline yang bagus untuk masalah klasifikasi, dan terkadang baseline ini sulit dikalahkan.
  • analisis komponen utama, di mana Hhanyalah representasi dimensi rendah dari dimensi tinggi X, dari mana Xdapat dikembalikan dengan presisi tinggi. Anda dapat menganggapnya sebagai algoritma kompresi.
  • Algoritma mirip PCA lainnya (penguraian matriks) banyak digunakan dalam sistem rekomendasi, untuk mengubah matriks sangat sparce dari "produk mana yang dibeli oleh pengguna" menjadi representasi pengguna dan produk yang padat dan padat, yang selanjutnya dapat digunakan untuk memprediksi baru transaksi.

Algoritma lain, seperti jaringan saraf, mempelajari transformasi nonlinier, tetapi masih sangat bergantung pada operasi linear (yaitu, matriks-matriks atau perkalian matriks-vektor). Jaringan saraf sederhana mungkin terlihat seperti Y= sigma(W2 sigma(W1X))- Menggunakan dua perkalian matriks, dan transformasi nonlinier  sigmadi antara mereka.


Pelatihan


Untuk melatih suatu algoritma, Anda biasanya mendefinisikan fungsi kerugian dan mencoba mengoptimalkannya. Kerugian itu sendiri kadang-kadang nyaman untuk menulis dalam hal aljabar linier. Misalnya, kerugian kuadratik (digunakan dalam metode kuadrat terkecil) dapat ditulis sebagai produk titik (Y hatY)T(Y hatY)dimana  hatYadalah vektor prediksi Anda, dan Yadalah kebenaran dasar yang Anda coba prediksi. Representasi ini berguna, karena memungkinkan kita mendapatkan cara untuk meminimalkan kerugian ini. Misalnya, jika Anda menggunakan regresi linier dengan metode kuadrat terkecil ini, maka solusi optimal Anda akan terlihat W=(XTX)1XTY. Banyak operasi linier di satu tempat!


Contoh lain dari solusi linier adalah PCA, di mana parameter yang menarik Wadalah yang pertama kvektor eigen dari matriks XTX, sesuai dengan nilai eigen terbesar.


Jika Anda melatih jaringan saraf, biasanya tidak ada solusi analitis untuk parameter optimal, dan Anda harus menggunakan gradient descent. Untuk melakukan ini, Anda perlu membedakan kerugian dengan parameter, dan saat melakukannya, Anda harus menggandakan matriks, karena jika loss=f(g(h(w))))(fungsi gabungan), lalu  frac partialloss partialw=f timesg timesh, dan semua turunan ini adalah matriks atau vektor, karena gdan hbersifat multidimensi.


Keturunan gradien sederhana adalah OK, tetapi lambat. Anda dapat mempercepatnya, dengan menerapkan metode optimasi Newton. Metode dasarnya adalah Wt+1=WtA1Bdimana Bdan Aare adalah vektor turunan pertama dan matriks dari turunan kedua dari kerugian Anda wrt parameter W. Tetapi ini bisa menjadi tidak stabil dan / atau mahal secara komputasi, dan Anda mungkin perlu membuat perkiraannya (seperti L-BFGS) yang menggunakan aljabar linier yang bahkan lebih terlibat untuk optimasi cepat dan murah.


Analisis


Anda melihat bahwa aljabar linier membantu Anda menerapkan dan melatih model Anda. Tetapi sains yang sebenarnya (atau sihir) dimulai ketika model Anda menolak untuk berlatih atau memprediksi dengan baik. Pembelajaran mungkin macet pada titik yang buruk, atau tiba-tiba menjadi liar. Dalam pembelajaran yang mendalam, sering terjadi karena gradien menghilang atau meledak. Artinya, ketika Anda menghitung gradien, Anda mengalikan banyak matriks, dan kemudian hal-hal aneh terjadi, dan Anda perlu tahu apa, mengapa, dan bagaimana cara mengatasinya. Salah satu cara untuk memeriksa apa yang terjadi adalah untuk melacak nilai eigen dari matriks yang Anda coba untuk membalikkan. Jika mereka mendekati 0, atau hanya sangat berbeda, maka inversi dari matriks ini dapat menyebabkan hasil yang tidak stabil. Jika Anda melipatgandakan banyak matriks dengan nilai eigen besar, produk akan meledak. Ketika nilai eigen ini kecil, hasilnya memudar menjadi nol.


Teknik yang berbeda, seperti regularisasi L1 / L2, normalisasi batch, dan LSTM diciptakan untuk mengatasi masalah ini dengan konvergensi. Jika Anda ingin menerapkan salah satu dari teknik-teknik itu, Anda perlu cara untuk mengukur apakah mereka banyak membantu untuk masalah khusus Anda. Dan jika Anda ingin menemukan teknik semacam itu sendiri, Anda perlu cara untuk membuktikan bahwa itu bisa berhasil. Ini lagi melibatkan banyak manipulasi dengan vektor, matriks, dekomposisi mereka, dll.


Kesimpulan


Anda dapat melihat bahwa semakin dalam Anda terjun ke pembelajaran mesin, semakin banyak aljabar linear yang Anda lihat di sana. Untuk menerapkan model pra-terlatih, Anda harus setidaknya mengkonversi data Anda ke dalam format, kompatibel dengan aljabar linier (misalnya numpy.array dengan Python). Jika Anda perlu mengimplementasikan algoritma pelatihan, atau bahkan untuk membuat yang baru, bersiaplah untuk melipatgandakan, membalikkan, dan menguraikan banyak matriks.


Dalam teks ini, saya telah merujuk beberapa konsep yang mungkin tidak Anda kenal. Tidak apa-apa Apa yang dianjurkan artikel ini adalah mencari kata-kata yang tidak dikenal dan memperbesar wawasan Anda.


Ngomong-ngomong, akan menarik untuk mendengar beberapa cerita dari Anda di komentar, tentang bagaimana Anda menemukan aplikasi aljabar linier dalam pekerjaan atau studi Anda sendiri.


PS Dalam salah satu artikel saya , saya berpendapat bahwa Anda tidak perlu belajar matematika untuk menjadi sukses (itu masih stereotip populer di Rusia), bahkan jika Anda bekerja di IT. Namun, saya tidak pernah mengatakan bahwa matematika itu tidak berguna (jika tidak, saya tidak akan mengajarkannya sepanjang waktu). Biasanya itu bukan kunci keberhasilan, tetapi dalam banyak kasus, itu membantu, dan dalam beberapa (seperti mengembangkan model pembelajaran yang mendalam), itu penting.


PPS Kenapa dalam bahasa Inggris ?! Yah, hanya karena aku bisa. Pertanyaan asli ditanyakan dalam bahasa ini, dan dalam bahasa Inggris saya menjawabnya. Dan kemudian dia memutuskan bahwa jawabannya bisa dibawa ke tingkat artikel publik kecil.


Mengapa Habr, dan bukan, misalnya, Sedang? Pertama, tidak seperti Medium, rumus biasanya didukung di sini. Kedua, Habr sendiri akan memasuki pasar internasional, jadi mengapa tidak mencoba menempatkan konten berbahasa Inggris di sini?


Mari kita lihat apa yang terjadi.

Source: https://habr.com/ru/post/id427185/


All Articles