代价函数与激活函数
损失函数:定义在单个样本上的,算的是一个样本的误差。
代价函数:定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。
目标函数:有约束条件下的最小化就是代价函数,多了正则化,控制模型的复杂度。
# Adaline分类模型的代价函数是误差平方和,系数1/2容易求导
# 逻辑斯谛的代价函数是最大似然函数L,可以通过梯度上升等优化算法最大化似然函数,或-对数似然函数为代价函数J,这样就可以用梯度下降了。
逻辑斯谛回归中的回归系数更新用到的梯度下降本质上与误差平方和的相同
也可以用MSE:误差平方和/样本数,称为均方误差。
# 支持向量机的代价函数是正、负超平面间的距离,要最大化,目标函数是距离+线性约束条件(松弛系数ξ),非线性使用核技巧映射特征空间
# KNN根据欧几里得距离为度量标准,划分数据点
# 决策树的代价函数是信息增益(父节点的不纯度与所有子节点不纯度总和之差),最大化。
不纯度衡量标准或划分标准分别是:基尼系数(Gini index,IG)、熵(entropy,IH),以及误分类率(classification error,IE)。
熵:如果某一节点中所有的样本都属于同一类别,则其熵为0,当样本以相同的比例分属于不同的类时,熵的值最大。
基尼系数:当所有类别是等比例分布时,基尼系数的值最大。
误分类率:对于剪枝方法很有用的准则,但是不建议用于决策树的构建过程,因为它对节点中各类别样本数量的变动不敏感。
# 深度神经网络的代价函数是sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits),效果与应用softmax函数再计算交叉熵相同(logit层不用激活函数了)
并且期望以0到分类个数减1的整数形式标记,
计算出一个包含每个实例的交叉熵的一维张量,可以使用TensorFlow的reduce_mean()函数来计算所有实例的平均交叉熵。
logits是预测值y
交叉熵:源于信息理论,预测错误的情况下,交叉熵将会变大,增加的这一部分我们称之为KL散度(Kullback-Leibler divergence,也叫作相对熵)。
# 交叉熵法是使成本函数最小化的一些其他优化算法,与梯度下降类似。
简单的可以是error = y_pred – y gradients = 2/m * tf.matmul(tf.transpose(X), error)
# DNN的回归任务,完全可以不使用激活函数。RNN时间序列也不用激活函数
# 卷积CNN,循环RNN的代价函数和DNN一样,时间序列的RNN还可以loss = tf.reduce_mean(tf.square(outputs – y))
# 自然语言处理用loss = tf.reduce_mean(tf.nn.nce_loss(nce_weights, nce_biases, train_labels, embed,num_sampled, vocabulary_size))
# 机器翻译的是xentropy = W_flat * tf.nn.sparse_softmax_cross_entropy_with_logits(labels=Y_target_flat, logits=logits_flat)
loss = tf.reduce_mean(xentropy)
# 自动编码器的是reconstruction_loss = tf.reduce_mean(tf.square(outputs – X))
变分的是reconstruction_loss = tf.reduce_sum(tf.nn.sigmoid_cross_entropy_with_logits(labels=X, logits=logits))
# 强化学习 策略梯度的是cross_entropy = tf.nn.sigmoid_cross_entropy_with_logits(labels=y, logits=logits),logits是反馈激励
Q学习目标是优化一个状态-行为对(s,a),是代理到达状态s并选择了行为a后,假设在此行为后其行为最优,预期的平均折扣后未来回报的总和。
Q是一个矩阵,优化该矩阵的元素。
代价函数是cost = tf.reduce_mean(tf.square(y – q_value))
激活(激励)函数:将权重与输入X的线性组合结果Z,映射到一个值y,以简单判断神经元是否激活,y与类标输入代价函数对每个权重的偏导即可求得权重ΔW
代价函数(误差平方和)最小化求偏导时,y激活函数如果可导(而不是单位阶跃函数这类),即可沿着梯度下降方向求得ΔW
对权重w的偏导求出后,y和y_i是当前已知量(不同代价函数不一样),代入即可求解ΔW,沿着偏导方向能最终收敛于最小点
总结:
0.单位阶跃函数、线性函数(在隐层和输出层使用线性激励函数并不能发挥多大的作用)
1.sigmoid函数:将净输入映射到一个介于[0,1]区间的逻辑斯谛分布上去,分布的原点为z=0.5处
2.softmax函数:分母是经归一化处理的所有M个线性函数之和,而分子为净输入z,二者的比值即为特定样本属于第i个类别的概率,是归一化的sigmoid函数
3.双曲正切tanh函数:输出值的范围更广,介于开区间(-1,1),这可以加速反向传播算法的收敛
4.RELU函数 ReLU(z)=max(0,z) 这个函数也是连续的,不过在z=0时不可微分(坡度的突然变化可以使梯度下降反弹)
5.带泄漏随机ReLU
6.ELU(加速线性单元)计算速度慢