Apakah ada cara untuk berurusan dengan gradien menghilang untuk menjenuhkan non-linearitas yang tidak melibatkan unit Normalisasi Batch atau ReLu?

8

Saya ingin melatih jaringan dengan non-linearitas yang menderita menghilangnya (atau meledak masalah gradien meskipun sebagian besar menghilang). Saya tahu bahwa cara standar (saat ini) adalah dengan menggunakan normalisasi batch 1 [BN] 1 atau hanya meninggalkan non-linearitas dan menggunakan unit ReLu Rectifier / ReLu .

Saya menginginkan dua hal:

  1. Tetap dengan non-linearitas saya, jadi saya tidak ingin meninggalkannya dan menggunakan ReLu (yaitu tidak ada ReLu diizinkan!). Re-parametris non-linearitas ok, katakanlah menempatkan multiplikatif di depannya seperti dalam misalnya.θ(s)
  2. Idealnya, saya tidak ingin terlalu banyak mengandalkan normalisasi batch (atau setidaknya jika digunakan, itu harus digunakan dengan cara baru selain bagaimana itu digunakan dalam kertas asli atau menggeneralisasi ke banyak non-linearitas). Salah satu alasan saya ingin menghindari Batch Normalisasi adalah karena tampaknya hanya berfungsi untuk non-linearitas tertentu. Sebagai contoh, untuk sigmoids, tanh tetapi tidak jelas bagaimana mereka bekerja untuk non-linearitas lainnya, katakanlah gaussians.

Alasan saya memiliki kendala ini adalah karena saya ingin menangani masalah menghilangnya gradien atau meledak gradien dengan mengetatkan masalah secara langsung daripada meretas solusi yang hanya berfungsi untuk non-linearitas tertentu atau hanya menghindari masalah dengan mendorong dalam ReLu.

Saya bertanya-tanya, dengan dua kendala itu, apa cara alternatif untuk mengatasi masalah gradien yang hilang? (non-linearitas lain yang dipertimbangkan adalah RBF gaussian kernel dengan euclidean norm pra-aktivasi, sigmoid, tanh, dll)

Gagasan (samar) yang mungkin ada dalam pikiran saya adalah:

  1. Memiliki inisialisasi yang baik sehingga non-linearitas jenuh tidak mulai sudah jenuh (non-linearitas jenuh menghasilkan gradien mendekati nol).
  2. Untuk RBF, sama halnya, init baik mungkin penting karena gaussians sebagian besar memiliki nilai besar mendekati 0 (yaitu ketika filter mirip dengan aktivasi atau datanya). Dengan demikian, memiliki mereka terlalu besar atau terlalu kecil memiliki masalah gradien hilang yang sama.
  3. Saya tidak benar-benar tahu apakah ini terlalu membatasi tetapi akan lebih baik jika ada cara yang berbeda untuk menggunakan normalisasi batch selain dari saran tradisional di kertas asli (atau mungkin beberapa ide BN yang menggeneralisasikan ke set non-besar yang lebih besar). linearitas, saat ini tampaknya sebagian besar penelitian menunjukkan bahwa itu bekerja untuk sigmoids sejauh yang saya tahu).
  4. Gagasan lain adalah alih-alih memiliki non-linearitas kita memiliki mana . Jika , maka itu berarti bahwa non-linearitas tidak dikalikan mundur beberapa kali untuk setiap lapisan, sehingga untuk menghindari "menghilang" untuk lapisan sebelumnya. Mungkin membuat aturan belajar tidak stabil, jadi mungkin beberapa regulator mungkin ide yang bagus.θ(z)Sebuahθ(z)SebuahRSebuah>1
  5. Pengoptimal yang secara intrinsik menangani gradien menghilang (atau setidaknya memperbarui setiap parameter secara berbeda). Sebagai contoh, jika lapisannya mendekati input, maka langkah pembelajaran harus lebih besar. Alangkah baiknya bagi algoritma pembelajaran untuk memperhitungkan ini dengan sendirinya sehingga untuk berurusan dengan gradien menghilang.

Jika ada saran tentang cara menangani lenyapnya gradien selain batch-norm atau ReLu, saya akan senang mendengarnya!


Tampaknya menghilang gradien terjadi terutama karena non-linearitas memiliki properti yang dan juga karena dan setelah mengalikannya berkali-kali, itu meledak atau menghilang. Secara eksplisit mengatakan masalah mungkin membantu menyelesaikannya. Masalahnya adalah hal itu menyebabkan lapisan bawah tidak memperbarui atau menghalangi sinyal melalui jaringan. Alangkah baiknya untuk menjaga sinyal ini mengalir melalui jaringan, selama lulus maju dan mundur (dan juga selama pelatihan, tidak hanya pada inisialisasi).|Sebuah|<1|θ(s)|<1


1 : Ioffe S. dan Szegedy C. (2015),
"Normalisasi Batch: Mempercepat Pelatihan Jaringan Dalam dengan Mengurangi Pergeseran Kovarian Internal",
Prosiding Konferensi Internasional ke-32 tentang Pembelajaran Mesin , Lille, Prancis, 2015.
Jurnal Penelitian Pembelajaran Mesin: Volume W&CP 37

Pinokio
sumber
+1 Ini adalah pertanyaan yang menarik. Hanya ingin tahu - mengapa Anda tidak ingin menggunakan ReLU?
Sycorax berkata Reinstate Monica
alasan saya adalah: 1) Tampaknya bagi saya bahwa menggunakan ReLu semacam menghindari pertanyaan menghilang dan meledak gradien daripada mengatasinya secara langsung. 2) jika seseorang memiliki aktivasi yang diyakini sangat baik pada beberapa tugas daripada yang lain, maka entah bagaimana kita dipaksa untuk beralih ke ReLu meskipun mereka mungkin bukan yang benar. 3) ... (komentar berikutnya)
Pinocchio
3) ketika berhadapan dengan gaussians misalnya, generalisasi batch normalisasi tidak sepele (haruskah saya batch menormalkan preaktivasi norma euclidean? Jika saya lakukan maka input ke guassian RBF bisa negatif yang mengarah ke meledak gradien, tetapi bagaimana jika saya sebaliknya saya menormalkan output dari non-linearitas secara langsung, maka, kita menormalkan sesuatu yang sudah membatasi momen, karena output dari RBF dan bahkan sigmoid (tanh) juga, dibatasi pada interval kecil [0,1] atau [- 1,1]) Pada dasarnya, sepertinya kedua ide ini dapat diambil lebih jauh, saya hanya tidak tahu caranya.
Pinocchio
Meskipun alasan saya sebagian besar didasarkan pada firasat, jelas, kami membutuhkan lebih banyak penelitian atau sesuatu untuk menangani semua poin itu.
Pinocchio
1
Hanya ingin tahu jika Anda tahu apa-apa tentang bagaimana LSTM atau jaringan Residual dengan kejenuhan nonlinier. Saya ingin tahu apakah mereka cenderung bekerja dengan ReLus. Di koran mereka berdua menentukan bahwa menggunakan ReLus tapi saya bertanya-tanya apakah itu penting untuk metode atau hanya sesuatu yang memberi mereka dorongan.
testuser

Jawaban:

2

Sudahkah Anda melihat ke RMSProp? Lihatlah kumpulan slide ini dari Geoff Hinton:

Gambaran umum tentang penurunan gradien mini-batch

Khususnya halaman 29, berjudul 'rmsprop: Versi mini-batch rprop', meskipun mungkin perlu membaca set lengkap untuk mendapatkan ide yang lebih lengkap dari beberapa ide terkait.

Juga terkait adalah No More Pesky Learning Rates Yan Le Cun

dan Brandyn Webb SMORMS3 .

Gagasan utamanya adalah melihat tanda gradien dan apakah itu flip-flopping atau tidak; jika konsisten maka Anda ingin bergerak ke arah itu, dan jika tanda tidak membalik maka langkah apa pun yang Anda ambil harus OK, asalkan tidak semakin kecil, jadi ada cara mengendalikan ukuran langkah untuk menjaganya masuk akal dan yang agak independen dari gradien yang sebenarnya.

Jadi jawaban singkat untuk bagaimana menangani gradien menghilang atau meledak adalah sederhana - jangan gunakan besarnya gradien!

redcalx
sumber
bagaimana Anda melakukannya "jadi ada cara untuk mengontrol ukuran langkah agar tetap masuk akal dan yang agak independen dari gradien yang sebenarnya." Apakah kita harus melakukan ini secara manual atau adakah algoritma yang berfungsi yang melakukan ini?
Pinocchio
Ada berbagai metode (dan varian) yang dibahas dalam tautan, tetapi semuanya memberikan metode untuk menghitung pembaruan bobot yang merupakan sesuatu selain produk gradien dan tingkat pembelajaran.
redcalx
1

Beberapa pemahaman saya, mungkin tidak benar.

Penyebab hilangnya gradien masalah adalah bahwa sigmoid tanh(dan RBF) jenuh di kedua sisi ( -infdan inf), sehingga sangat mungkin untuk input non-linearitas jatuh pada daerah jenuh.

Efek BN adalah bahwa ia "menarik" input non-linearitas ke kisaran kecil sekitar 0 N(0,1)sebagai titik awal, di mana non-linearitas seperti itu tidak jenuh. Jadi saya kira ini akan bekerja dengan RBF juga.

Untuk menghapus non-linearitas ReLU, kita dapat menggunakan funtion softplus catatan(1+ex), Yang sangat dekat dengan ReLU, dan digunakan dalam Geoffrey Hinton`s papper untuk menjelaskan mengapa ReLU akan bekerja.

masukkan deskripsi gambar di sini

Juga jaringan residual atau jaringan jalan raya menyediakan cara lain untuk mengatasi gradien yang hilang (melalui jalan pintas). Dari pengalaman saya, arsitektur seperti itu dilatih jauh lebih cepat daripada hanya menghubungkan kerugian ke lapisan terakhir.

Terlebih lagi , kesulitan melatih jaringan yang dalam bukan semata-mata karena lenyapnya gradien , tetapi juga faktor-faktor lain (misalnya pergeseran kovariat internal). Ada normalisasi lapisan kertas baru-baru ini tentang cara lain untuk melakukan normalisasi, itu tidak mengatakan tentang lenyapnya gradien, tapi mungkin Anda akan tertarik.

dontloo
sumber