Saya sedang membaca Buku Yoshua Bengio tentang pembelajaran mendalam dan dikatakan di halaman 224:
Jaringan konvolusional hanyalah jaringan saraf yang menggunakan konvolusi sebagai pengganti perkalian matriks umum dalam setidaknya satu lapisannya.
Namun, saya tidak 100% yakin bagaimana "mengganti perkalian matriks dengan konvolusi" dalam arti yang tepat secara matematis.
Yang benar-benar menarik bagi saya adalah mendefinisikan ini untuk vektor input dalam 1D (seperti pada ), jadi saya tidak akan memiliki input sebagai gambar dan mencoba untuk menghindari konvolusi dalam 2D.
Jadi misalnya, dalam jaringan saraf "normal", operasi dan pola ruang makan dapat secara ringkas diungkapkan seperti dalam catatan Andrew Ng:
di mana adalah vektor yang dihitung sebelum melewatinya melalui non-linearitas . Non-linearitas bertindak entri pero pada vektor dan adalah output / aktivasi unit tersembunyi untuk layer yang dimaksud.
Komputasi ini jelas bagi saya karena perkalian matriks didefinisikan dengan jelas bagi saya, namun, hanya mengganti perkalian matriks dengan konvolusi tampaknya tidak jelas bagi saya. yaitu
Saya ingin memastikan saya memahami persamaan di atas secara matematis dengan tepat.
Masalah pertama yang saya miliki dengan hanya mengganti perkalian matriks dengan konvolusi adalah bahwa biasanya, seseorang mengidentifikasi satu baris dengan produk titik. Jadi, seseorang dengan jelas tahu bagaimana keseluruhan berhubungan dengan bobot dan memetakan ke vektor dari dimensi seperti yang ditunjukkan oleh . Namun, ketika salah satu menggantikannya dengan convolutions, yang tidak jelas bagi saya yang baris atau bobot bersesuaian yang entri dalam . Itu bahkan tidak jelas bagi saya bahwa masuk akal untuk mewakili bobot sebagai matriks lagi sebenarnya (saya akan memberikan contoh untuk menjelaskan hal itu nanti)
Dalam kasus di mana input dan output semua dalam 1D, apakah orang hanya menghitung konvolusi sesuai dengan definisi dan kemudian meneruskannya melalui singularitas?
Sebagai contoh jika kita memiliki vektor berikut sebagai input:
dan kami memiliki bobot berikut (mungkin kami mempelajarinya dengan backprop):
maka konvolusi adalah:
apakah benar untuk melewatkan non-linearitas melaluinya dan memperlakukan hasilnya sebagai layer / representasi tersembunyi (anggap tidak ada penyatuan untuk saat ini)? yaitu sebagai berikut:
( tutorial UDLF Stanford saya pikir memotong tepi di mana konvolusi menyatu dengan 0 untuk beberapa alasan, apakah kita perlu memotong itu?)
Apakah ini cara kerjanya? Setidaknya untuk vektor input dalam 1D? Apakah bukan vektor lagi?
Saya bahkan menggambar jaringan saraf tentang bagaimana ini seharusnya terlihat seperti yang saya pikirkan:
sumber
xcorr(x, y) = conv(x, fliplr(y))
. Komunitas NN cenderung mengatakan konvolusi ketika mereka benar-benar melakukan korelasi silang, tetapi sangat mirip.