[latexpage]
Model Parameter Initialization adalah inisialisasi nilai awal parameter untuk model, yaitu weights dan biases.
Inisialisasi nilai parameter sangat penting, karena inisialisasi yang asal akan menghasilkan model yang tidak optimal.
Pada lesson sebelumnya, cara inisialisasi yang dilakukan hanya dengan menentukan nilai random dalam rentang -0.1 s/d 0.1 menggunakan numpy.random.uniform function. Setiap nilai dalam rentang diatas memiliki probabilitas yang sama untuk dipilih.

Pendekatan kedua adalah menggunakan normal initializer, dengan memilih nilai random yang kecil dalam rentang -0.1 s/d 0.1 dalam zero mean normal distribution.
Karena distribusi normal, nilai yang terpilih kemungkinan besar dekat dengan nilai 0.
Kedua pendekatan diatas dapat menimbulkan masalah dalam deep learning yang menggunakan activation function. Seperti yang kita ketahui, activation function bertujuan menambahkan non-linearity pada model yang kita training.
Activation function dalam hal ini kita gunakan sigmoid activation function, akan menerima input dari hasil perhitungan linear dari layer sebelumnya.
Jika nilai weights terlalu rendah, maka nilai akan jatuh ditengah-tengah. Pada area ini, sigmoid hampir linear. Begitu juga jika terlalu besar, nilai akan jatuh diarea atas, dimana sigmoid hampir linear juga.

Jadi tujuan kita menambahkan non-linearity pada model tidak tercapai. (menambahkan non-linearity merupakan salah satu tujuan dari deep-net).
Xavier Initialization
Pendekatan ketiga adalah Xavier Initialization atau disebut juga glorot initialization. Ada dua tipe, uniform dan normal xavier initialization.
Uniform Xavier Initialization, inisialisasi weights dalam range [-x, x] dimana x dihitung dengan formula:
$x = \sqrt{\frac{6}{inputs + outputs}}$
Normal Xavier Initialization, inisialisai weight dari zero mean normal distribution dengan standard deviation:
$\sigma = \sqrt{\frac{2}{inputs + outputs}}$
Jumlah Output adalah jumlah output dari hasil perhitungan activation function