*【neuron network】
{
*【function set】
1logistic ,linear都是决定set的一种方法,neuron network也是一样,只是换种方式来决定func set。这种方法包含的func set大于之前,包含之前方式所得func set中无法包含的。
2ml需手动选择feature(自己知道好的feature是怎样的),dl需思考如何设计神经网络结构(语音、图像)。
3可以自动找到结构吗?有Evolutionary Artificial Neural Networks,但不普及。
4如何设计?CNN,fully connect,rnn...
*【problem】
几个layer?几个neuron?(领域知识)
如何connect(即设计结构的问题)?
*【backpropagation】
属于数学问题即计算微分,可使用框架
forward ,backward
}
*【keras】
{
tensorflow or theano =>flexible,有难度
怎么把image存到numpy array
batch_size
nb_epoch = 10 时最稳定、快 太大则GPU无法并行这么多或卡住
gradient descent需要随机性
为什么minibatch更快?batch将一个batch里的example组成matrix进行运算。GPU使同时运算。GPU+minibatch
*【tips】{
1检查在training上的结果,不好则修改network
2testing不好则overfitting=>未必,因为dl与ml不同,dl的training无法保证结果是良好的,也因此需要进行步骤1。有时是overfit有时不是。
3选择解决方案时考虑是为了training的提高还是testing
*【如何】
1换activation function
σ现象 vanishing gradient descent:当前几层gradients很小、参数几乎随机,后几层很大时、参数收敛,但结果不会太好。
方法:对其中一个参数进行变动,看loss变化多大,估测偏微分。对learning rate动态化或直接改σ,后者方法几乎总是可以奏效。换成ReLU。
原因:σ总是会将input衰减,即每个layer都会使得变化衰减,因此loss对靠近input layer的参数偏微分会小,gradient descent小。而ReLU将整个neuron变成一个线性的network,那么gradient就不会变小。
*【ReLU 变种】
leaky, parametric
ELU
(都是将小于0的输入变为另一种形式输入,不是0而是线性或exponential)
*【Maxout】
learnable activation function,可自行学习参数
ReLU是其中一种(将maxout参数调成适当的则为ReLU)
需要更多参数才能得到相同数量的输出
将几个作为一组,自己调参 2,3,5...
*【RMSProp】
比adagrad复杂
当training NN的时候,error surface更加复杂
* 【Momentum】
* 【Adam】
* 【 以下为了解决overfitting】{
* 【early stopping】
validation set的结果已经不再好的时候停止training
* 【dropout】
从training 中sample一个minibatch再丢掉部分neuron,再update参数
为什么要在testing时候×(1-p)?
ensemble思想,dropout的结果和n个nn的结果进行平均得到最后的结果,两者相近
线性+dropout结果会更好。
* 【regularization】
(svm是有regularization的项的)
不希望参数大 ,越接近0越好( early stopping如果比较小,那么不需要regularization)
L2 是对较大的参数给以较大地惩罚
L1 一视同仁,但都向0的方向移动
}
}
}
网友评论