神经网络参数优化
1.学习缓慢问题
  激活函数采用sigmoid,代价函数采用二次项时,会存在学习缓慢即梯度下降较慢的问题。对此,可以使用交叉熵代价函数,或者使用ReLU、Softmax激活函数等,如下图。    
   
  
2.过拟合与正则化
  防止overfit方法,提高准确度:    
  a、    增加训练样本数量,无法获取更多数据时可人工扩展已知训练集    
  b、    减小网络规模大小;    
  c、    正则化,L2、L1    
  d、    弃权:dropout    
- L2正则化 
   
- L1正则化 
   
- dropout 
 类似于多个网络,每次随机丢弃一半神经元,最终评估预测时,使用的权值除以2.
- more data 
 增加训练集样本数,可以有效改善算法性能。
   
- 效果评估 
   
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。
各参数通常有关系,要互相优化调试。