激活函数在设计神经网络上很关键。隐藏层的激活函数影响的是学习,输出层影响的是输出。
概述:
1.激活函数
2.隐藏层的激活函数
3.输出层的激活函数
激活函数
激活函数定义了输入的加权和是如何被转化成输出的。
一个神经网络通常有三个部分:输入层,隐藏层,输出层。
所有隐藏层的激活函数一般相同,输出层一般不同。激活函数一般可微。
隐藏层的激活函数
Rectified Linear Activation (ReLU)
Logistic (Sigmoid)
Hyperbolic Tangent (Tanh)
ReLU:max(0.0, x)
from matplotlib import pyplot
# rectified linear function
def rectified(x):
return max(0.0, x)
# define input data
inputs = [x for x in range(-10, 10)]
# calculate outputs
outputs = [rectified(x) for x in inputs]
# plot inputs vs outputs
pyplot.plot(inputs, outputs)
pyplot.show()
Sigmoid:1.0 / (1.0 + e^-x)
# example plot for the sigmoid activation function
from math import exp
from matplotlib import pyplot
# sigmoid activation function
def sigmoid(x):
return 1.0 / (1.0 + exp(-x))
# define input data
inputs = [x for x in range(-10, 10)]
# calculate outputs
outputs = [sigmoid(x) for x in inputs]
# plot inputs vs outputs
pyplot.plot(inputs, outputs)
pyplot.show()
tanh:
# example plot for the tanh activation function
from math import exp
from matplotlib import pyplot
# tanh activation function
def tanh(x):
return (exp(x) - exp(-x)) / (exp(x) + exp(-x))
# define input data
inputs = [x for x in range(-10, 10)]
# calculate outputs
outputs = [tanh(x) for x in inputs]
# plot inputs vs outputs
pyplot.plot(inputs, outputs)
pyplot.show()
如何选择一个隐藏层激活函数:
输出层
Linear
Logistic (Sigmoid)
Softmax
线形的并不改变什么,而是直接返回值。
# example plot for the linear activation function
from matplotlib import pyplot
# linear activation function
def linear(x):
return x
# define input data
inputs = [x for x in range(-10, 10)]
# calculate outputs
outputs = [linear(x) for x in inputs]
# plot inputs vs outputs
pyplot.plot(inputs, outputs)
pyplot.show()
softmax和概率相关
sigmoid
如何选择:
回归问题用线性,
Binary Classification: One node, sigmoid activation.
Multiclass Classification: One node per class, softmax activation.