Apa perbedaan antara initializer penskalaan varians dan penginisialisasi xavier?

20

Dalam implementasi Tensorflow dari ResNet , saya menemukan mereka menggunakan initializer penskalaan varians, saya juga menemukan xavier initializer populer. Saya tidak punya terlalu banyak pengalaman dalam hal ini, mana yang lebih baik dalam praktiknya?

Hanamichi
sumber
Untuk penjelasan lebih rinci tentang inisialisasi Xavier, Anda dapat mengunjungi tautan ini: prateekvjoshi.com/2016/03/29/... Ini termasuk derivasi yang tepat dari inisialisasi Xavier dan intuisi di baliknya.
Himanshu Singh

Jawaban:

31

Perspektif sejarah

Inisialisasi Xavier , awalnya diusulkan oleh Xavier Glorot dan Yoshua Bengio dalam "Memahami kesulitan pelatihan deep neuroforforward neural network" , adalah teknik inisialisasi bobot yang mencoba membuat varians dari output lapisan agar sama dengan varian inputnya . Gagasan ini ternyata sangat berguna dalam praktik. Tentu saja, inisialisasi ini tergantung pada fungsi aktivasi lapisan. Dan di makalah mereka, Glorot dan Bengio dianggap fungsi aktivasi sigmoid logistik , yang merupakan pilihan default pada saat itu.

Kemudian, aktivasi sigmoid dilampaui oleh ReLu, karena diizinkan untuk menyelesaikan masalah gradien pelenyapan / peledakan. Akibatnya, muncul teknik inisialisasi baru, yang menerapkan ide yang sama (menyeimbangkan varian aktivasi) untuk fungsi aktivasi baru ini. Itu diusulkan oleh Kaiming He at al dalam "Delving Deep into Rectifiers: Melampaui Kinerja Level Manusia pada Klasifikasi ImageNet" , dan sekarang sering disebut sebagai inisialisasi He .

Dalam tensorflow, inisialisasi He diimplementasikan dalam variance_scaling_initializer()fungsi (yang, pada kenyataannya, merupakan inisialisasi yang lebih umum, tetapi secara default melakukan inisialisasi He), sedangkan inisialisasi Xavier secara logis xavier_initializer().

Ringkasan

Singkatnya, perbedaan utama bagi praktisi pembelajaran mesin adalah sebagai berikut:

  • Inisialisasi dia berfungsi lebih baik untuk lapisan dengan aktivasi ReLu .
  • Inisialisasi Xavier bekerja lebih baik untuk lapisan dengan aktivasi sigmoid .
Pepatah
sumber
di pytorch initializaiton apa yang digunakan? apakah itu tergantung pada aktivasi?
Charlie Parker
2
Hai, untuk tanh()fungsi aktivasi, fungsi inisialisasi mana yang harus saya gunakan.
GoingMyWay
@GoingMyWay, menurut pytorch.org/docs/stable/… ini , Anda dapat menggunakan inisialisasi He dengan gain 5/3. Tidak yakin dari mana asalnya.
Podgorskiy
3

Variance scaling hanyalah generalisasi dari Xavier: http://tflearn.org/initializations/ . Keduanya beroperasi pada prinsip bahwa skala gradien harus sama di semua lapisan. Xavier mungkin lebih aman untuk digunakan karena tahan uji eksperimental waktu; mencoba memilih parameter Anda sendiri untuk penskalaan varians mungkin menghambat pelatihan atau menyebabkan jaringan Anda tidak menghasilkan sama sekali.

liangjy
sumber
Terima kasih. Apa maksud Anda memilih parameter sendiri untuk varian?
Hanamichi
Dalam implementasi TF, ini akan menjadi parameter faktor (yang menentukan rasio varians input ke varians output)
liangjy