若发现有违反侵权地方,请通知我删除!谢谢
Preprocess_data(数据预处理)
数据预处理具有很重要的意义,由于直接得到的数据具有很大差异性,数据的归一化有利于算法达到最优的效果。不同的数据具有不同的数据特性,其预处理技术也不一样。以图片为例,会对图像进行平均归一化处理。常用的有mean image(图像均值法)和mean channel(通道均值法)。Mean image: 对所有图片求平均值得到mean image,再利用每张图片减去均值图像进行中心化处理。优点:图片整体数据归一化。缺点:当图片数量过大,存在溢出的风险,且计算量较大。(AlexNet 采用过此方法)Mean channel:每张图片的三通道分别求通道平均值得到一个(x’,y’,z’),使该图片每个像素点减去该值得到一副处理后的图像。优点:计算量小,不存在计算溢出,图像处理主流预处理方法。缺点:整体归一化不如Mean image,但对实验结果几乎没有影响。(VGGNet 采用)。
Weights and Bisas Initialization(权值的初始化)
权值初始化的好坏直接影响到模型训练的好坏。一个坏的权值设置可能会导致网络不收敛。权值设置是一个经验问题,一般来说,权值的设定不能太大,太大容易导致参数爆炸(深层网络时层层累加最后结果会boom),这个问题在sigmoid,tan(h(x))等激活函数中还会导致网络不收敛。详细参考激活函数。权值也不能设置全相同或全0。这样会导致输出的网络中每个神经元得到相同的梯度。常规的做法是采用Xavier init,即通常采用(0,1)之间较小的元素来初始化权值。 权值矩阵通常为: W = 0.01*np.random.randn(D,H);其中randn()表示产生标准的正太分布随机数,D,H为矩阵表示矩阵的大小D。这样使得每个神经元的权重向量被初始化为多维的高斯随机抽样向量,所以,神经元在输入空间中指向具有随机性,具有更好的鲁棒性。当然这不是最好的权值初始化方法,在不同的学习特征和激活函数中,权值的初始化方法也不同。偏置矩阵b的设置,在一般的过程设置中经常把b初始化为0.原因是在权重初始化中提供了权重的对称性。但是在人们使用relu激活函数,为了确保不使大量的神经元初始化后输出为0经常将b初始化为0.01。
activeFunction(激活函数)