混合神经网络中全连接层的一些技巧
我们做深度学习时往往要结合多种神经网络来构建模型,这种模型构建方式称之为混合神经网络模型,不管是CNN、RNN、BERT、RoBERTa还是混合神经网络模型,最后的最后一定要接一个全连接层来学习提取到的特征并转换为我们输出的维度(此处不讨论实现自注意力机制的全连接和Transformer中的全连接层)。全连接层的设置将最大化的挖掘模型的性能,怎么设置全连接层成了一个重点和难点。
结合自身经验,以下是个人认为的tricks:
-
批归一化:nn.BatchNorm1d(dim)
批归一化操作是为了将输入中所有特征约束在(0~1)之间,防止强特征数值过大导致忽略弱特征,不过视具体情况而定吧,有的时候输入本身就有强弱之分,这时你归一化反而消除了强特征,多试试。 -
隐藏层层数:视情况而定,和模型的复杂性成反比。
我们都知道全连接层一般越多越好,但是必须有非线性激活函数和Dropout,否则再多的线性层也等价于一层,但是实际上层数越多,模型要学习的东西就越复杂,这个时候模型难拟合或者过拟合,尤其是对于复杂模型来说,全连接层往往不需要过深,设置1-2层即可。 -
神经元个数:第一层适当增加,后续逐层递减。
根据一些论文,有如下tricks:
1、隐藏单元的数量不应该超过输入层中单元的两倍[1]
2、隐藏单元的大小应该介于输入单元和输出单元之间[2]
3、神经元的数量应捕获输入数据集方差的70~90%[3]
根据我的实践,第一层适当增加比如100个神经元会取得不错的效果,后续则逐层递减,最后一层就是我们要输出的特征个数。 -
激活函数:RELU、GELU、ELU。
传统的激活函数Sigmoid、Tanh把输入控制在(0,1)、(-1,1)之间,容易产生梯度消失和梯度爆炸问题,所以往往要结合RELU:max(0,x)及其变种来防止这个问题,而GELU是预训练模型BERT[4]采用的激活函数,是一种更好更快的激活函数。
其形式:
G E L U ( x ) = 0.5 x ( 1 + t a n h [ 2 / π ( x + 0.044715 x 3 ) ] ) GELU(x)=0.5x(1+tanh[\sqrt{2/π}(x+0.044715x^3)]) GELU(x)=0.5x(1+tanh[2/π(x+0.044715x3)])
其代码:
def gelu(input_tensor):
cdf = 0.5 * (1.0 + tf.erf(input_tensor / tf.sqrt(2.0)))
return input_tesnsor*cdf
- Dropout:0.1~0.5
Dropout最早由Hinton[5]提出,用于防止过拟合,一般为0.5,但是Transformer[6]中使用的是0.1,根据经验,这个也和模型的复杂度成反比,太大模型难以拟合,太小过拟合,视情况而定。 - 权重衰减和学习率衰减:AdamW、get_linear_schedule_with_warmup
学习率是一个非常重要的参数,他决定了模型的上限,学习率一般采用预热的方式,即线性地先增后减[7]:
最大学习率根据 Learning Rate Finder 来确定,最小值则可以取最大值的十分之一。
[1] M. J. A. Berry and G. S. Linoff, Data Mining Techniques: For Marketing, Sales, and Customer Support, New York: John Wiley & Sons, 1997.
[2] A. Blum, Neural Networks in C++, New York: Wiley, 1992.
[3] Z. Boger and H. Guterman, “Knowledge extraction from artificial neural network models,” in Systems, Man, and Cybernetics, 1997. Computational Cybernetics and Simulation., 1997 IEEE International Conference, Orlando, FL, 1997.
[4] Devlin J, Chang M-W, Lee K, Toutanova K. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv preprint, arXiv:1810.04805 [cs.CL] 2018.
[5] Hinton G E, Srivastava N, Krizhevsky A, et al. Improving neural networks by preventing co-adaptation of feature detectors. arXiv preprint, arXiv:1207.0580 [cs.NE] 2012
[6] Vaswani A, Attention Is All You Need, arXiv preprint, arXiv : 1706.03762 [cs.CL] 2017.
[7] Leslie N. Smith. A disciplined approach to neural network hyper-parameters: Part 1 – learning rate, batch size, momentum, and weight decay. arXiv preprint, arXiv : 1803.09820[cs.LG] 2018.