神经网络由输入/输出/隐藏层组成
神经网络三层结构
这些Layer都是由一个个神经元组成,每个神经元都接受多个输入,并产生一个输出,就好像人的神经元突触一样。神经元在接收输入时,会各自乘以一定的权重(有时候还会加上一个bias),并根据自己的激活函数产生输出。权重大则说明神经网络认为它的信息比较重要,权重小则认为神经网络认为它的信息不那么重要。
神经元
如下图,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数 Activation Function。
如果不用激励函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。 如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。 常用的激活函数有三种,Sigmoid, ReLU 和 Softmax。
未研究,详情见参考
a.饱和 当一个激活函数h(x)满足
时我们称之为右饱和。
当一个激活函数h(x)满足
时我们称之为左饱和。当一个激活函数,既满足左饱和又满足又饱和时,我们称之为饱和。
b.硬饱和与软饱和 对任意的x,如果存在常数c,当x>c时恒有 h′(x)=0则称其为右硬饱和,当x<c时恒 有h′(x)=0则称其为左硬饱和。若既满足左硬饱和,又满足右硬饱和,则称这种激活函数为硬饱和。但如果只有在极限状态下偏导数等于0的函数,称之为软饱和。
激活函数好或坏,不能凭感觉定论。然而,根据问题的性质,我们可以为神经网络更快更方便地收敛作出更好的选择。
做的时候,可以从ReLU函数开始,如果ReLU函数没有提供最优结果,再尝试其他激活函数。
https://www.cnblogs.com/Belter/p/6653773.html 此处有比较好的阐述,暂未仔细研究
http://www.sohu.com/a/149921578_610300 此处有比较好思路,但时间不足未能仔细研究,后根据需要补上。 一般都是采用梯度下降。梯度下降的幅度即使learning_rate,幅度过大,则在接近最优解时难以收敛,幅度过小,则收敛速度过慢。真正的生产环节中,可以是先采取大的learning_rate,再慢慢减小。
https://www.youtube.com/watch?v=yYUN_k36u5Q
生成-对抗网络的训练过程就是训练评估模型与生成模型。一边纠正评估模型,一边让评估模型指导生成模型的生成。 详细地说,就是先让初始生成模型生成一组,再与样本数据合在一起让初始判别模型判断,并得到判断的准确性的评估。让这个评估作为反馈,进行BP,让生成模型和判别模型都反馈学习。