我一直在阅读有关神经网络的一些东西,并且我了解单层神经网络的一般原理。我知道需要额外的层,但为什么要使用非线性激活函数?
激活函数的目的是将 非线性引入网络
反过来,这允许您对随解释变量非线性变化的响应变量(也称为目标变量、类标签或分数)进行建模
非线性 意味着不能从输入的线性组合中再现输出(这与呈现为直线的输出不同——这个词是 affine )。
另一种思考方式:如果网络中没有 非线性 激活函数,NN,无论它有多少层,都会像单层感知器一样工作,因为将这些层相加只会给你另一个线性函数(见上面的定义)。
>>> in_vec = NP.random.rand(10) >>> in_vec array([ 0.94, 0.61, 0.65, 0. , 0.77, 0.99, 0.35, 0.81, 0.46, 0.59]) >>> # common activation function, hyperbolic tangent >>> out_vec = NP.tanh(in_vec) >>> out_vec array([ 0.74, 0.54, 0.57, 0. , 0.65, 0.76, 0.34, 0.67, 0.43, 0.53])
反向传播(双曲正切 )中使用的常见激活函数从 -2 评估到 2: