1.学习缓慢问题

  激活函数采用sigmoid,代价函数采用二次项时,会存在学习缓慢即梯度下降较慢的问题。对此,可以使用交叉熵代价函数,或者使用ReLU、Softmax激活函数等,如下图。    
  

2.过拟合与正则化

  防止overfit方法,提高准确度:    
  a、 增加训练样本数量,无法获取更多数据时可人工扩展已知训练集    
  b、 减小网络规模大小;    
  c、 正则化,L2、L1    
  d、 弃权:dropout    

  • L2正则化

  • L1正则化

  • dropout
      类似于多个网络,每次随机丢弃一半神经元,最终评估预测时,使用的权值除以2.    

  • more data
      增加训练集样本数,可以有效改善算法性能。    
    NN vs. SVM

  • 效果评估
    防止过拟合的效果评估

3.权重初始化

  

4.超参数设置

  learning rate参数:    

  
  Epochs:可以使用验证集,比如10个Epoch准确率没有提升,就终止。从而获取合适的Eoch数目,称之为early stoping。    

  可变学习速率:初始时可采用较大学习速率,当验证集的准确性不再提升(如10 Epochs没提高),然后调整为逐步下降如1/10或1/2的较小学习速率,最终变为初始学习速率值的1/128、1/1024或1/1000等。    

  正则化参数:开始时关闭正则化,先获取合适的学习速率η。然后再调整规范化参数λ,可以先初始化为λ=1.0,再按照10的倍数进行调整,从而得到合适的λ。    

  mini_batch_size:与其它超参数相对独立,与网络结构无关,在快速运算与梯度更新速度之间折衷。太小则不能充分利用矩阵运算库的快捷,太大则梯度更新较慢。目标是最大化学习速度。可设置不同值,选择准确性最快提升的取值(可画图验证集准确度 vs. 时间)。    
  得到合适mini_batch_size后,再对其它超参数进行优化。    

  自动化技术:网格搜索grid search,可系统搜索超参数的网格空间。另有贝叶斯自动参数优化方法,可参考https://github.com/jaberg/hyperopt。    

  各参数通常有关系,要互相优化调试。