神经网络激活函数
-
Logistic:典型的激活函数,在计算分类的概率时非常有用。
f ( z ) = 1 1 + e x p ( − z ) f(z)=\frac{1}{1+exp(-z)} f(z)=1+exp(−z)1
-
Tanh :跟 Sigmoid 函数很像,但是范围是 [-1,1] ,而不是 [0,1] 。
f ( z ) = t a n h ( z ) = e z − e − z e z + e − z f(z)=tanh(z)=\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}} f(z)=tanh(z)=ez+e−zez−e−z
-
Relu :修正线性函数,该函数主要是为了对抗梯度消失。也就是当梯度反向传播到第一层的时候,梯度容易趋近于 0 或者一个极小值。
f ( x ) = m a x ( 0 , x ) f(x)=max(0, x) f(x)=max(0,x)
TensorFlow 激活函数
最常用的激活函数如下:
tf.sigmoid(x)
:标准的 sigmoid 函数;tf.tanh(x)
:双曲正切函数;tf.nn.relu(x)
:修正线性函数;
TensorFlow中其他的函数:
tf.nn.elu(x)
:指数线性单元;如果输入小于 0 ,返回 exp(x)-1 ;否则,返回 x;tf.softsign(x)
:返回 x a b s ( x ) + 1 \frac{x}{abs(x)+1} abs(x)+1x ;tf.nn.bias_add(value,bias)
:增加一个bias到value。
TensorFlow 中损失优化方法
tf.train.GradientDescentOptimizer(learning_rate, use_locking, name)
:原始梯度下降方法,唯一参数就是学习率。tf.train.AdagradOptimizer
:自适应调整学习率,累加历史梯度的平方,作为分母,防止有些方向的梯度值过大,提高优化效率,善于处理稀疏梯度。tf.train.AdadeltaOptimizer
:扩展 AdaGrad 优化方法,只累加最近的梯度值,而不对整个历史上的梯度值进行累加。tf.train.AdamOptimizertf.train.AdamOptimizer. (learningrate, beta1, beta2, epsilon, use locking, name)
:梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。 Adam是自适应矩估计( Adaptive Moment Estimation)的首字母缩写。
scikit-learn 预处理函数
preprocessing.StandardScaler()
:数据正规化( Normalization )是机器学习估计的一个常见要求,为了模型能更好地收敛,我们通常会将数据集预处理到一个零均值单位方差的高斯状分布。通常,我们会将数据的各个维度都减去它的均值,然后乘上一个非零的数。这个非零的数就是数据集的标准差。对于该任务,我们直接使用 StandardScaler,它已经实现了我们上面提到的操作。它也保留了变换操作,让我们可以直接用在测试集上。StandardScaler.fit_transform()
:将数据调整到所需要的形式。 StandardScaler 对象会存储数据变化的变量,这样我们可以把数据解正规化到原先的格式。cross_validation.train_test_split
:该方法能够将数据集分割成训练集和测试集。我们只需要提供两者的比例,该方法能够自动帮我们处理。