人们通常如何为其变量和参数选择初始值?我们只是修补它直到它有效吗?
我正在关注tensorflow的入门教程,并且能够训练线性模型。但是,我注意到变量W,b的起始值与实际情况相当接近。
当我更改数据以使地面实况值更远时,梯度下降优化器给出了W,b的NaN值。
但是,一般来说,我不认为能够猜测模型中变量的初始值是合理的。似乎我应该能够选择任意的起点并到达我想要的地方。
我在想我在参数中的选择可能不好。但是,我不知道以什么方式调整这个。默认值为0.01,我尝试过从0.001到100的值。
在一般机器学习手册中是否会讨论优化参数选择和模型变量的初始值?我真的只是在寻找资源。
谢谢!
答案 0 :(得分:0)
一些着名的卷积神经网络初始化器:
Glorot Normal :也称为Xavier。正态分布以0为中心,stddev = sqrt(2 /(fan_in + fan_out))其中fan_in是权重张量中的输入单位数,fan_out是权重张量中的输出单位数。
http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf
Lecun Uniform :[-limit,limit]内的均匀分布,其中limit为sqrt(3 / fan_in),其中fan_in是权重张量中的输入单位数。
http://yann.lecun.com/exdb/publis/pdf/lecun-98b.pdf
他正常: 截断正态分布,以0为中心,stddev = sqrt(2 / fan_in),其中fan_in是权重张量中的输入单位数。
http://arxiv.org/abs/1502.01852
除了这些初始化器,还必须搜索学习率,动量和其他超参数。