大师Geoff Hinton关于Deep Neural Networks的建议
主要分为如下几点展开:
- Have a Deep Network.
1-2个hidden layers被认为是一个shallow network,浅浅的神经网络,当hidden layers数量多时,会造成local optima,缺乏数据等。
因为deep neural network相比shallow neural network,最大的区别就是greater representational power,这个能力随着layer的增加而增加。
- Pretrain if you do not have a lot of unlabelled training data. If you do skip it.
pre-training 又叫做greedy layer-wise training,如果没有足够的标签样本就需要执行greedy layer-wise pretraining,如果有足够多的样本,只需执行正常的full network stack 的训练即可。
pre-training可以让parameters能够站在一个较好的初始值上,当你有足够的无标签样本时,这一点就无意义了。
- Initialize the weight to sensible values.
可以将权重设置为小的随机数,这些小随机数权重的分布取决于在network中使用的nonlinearity,如果使用的是rectified linear units,可以设置为小的正数。
- Use rectified linear units.
可以参看我的博文《修正线性单元(Rectified linear unit,ReLU)》
- Have many more parameters than training examples.
确保整个参数的数量(a single weight in your network counts as one parameter)超过训练样本的数量一大截,总是使得neural network overfit,然后强力的regularize它,比如,一个例子是有1000个训练样本,须有1百万个参数。
- Use dropout to regularize it instead of L1 and L2 regularization.
dropout是一项用来在一个隐含层中丢掉或者遗漏某些隐含单元的技术,每当训练样本被送入network时就发生。随机从隐含层中进行子采样。一种不同的架构是all sharing weights。
- Convolutional Frontend (optional)
如果数据包含任何空间结构信息,比如voice,images,video等,可以使用卷积前段。
可以参看我的博文《卷积神经网络(CNN)》
参考文献:
http://343hz.com/general-guidelines-for-deep-neural-networks/