激励函数
通过一些数学手段,将上面讲的流程纯线性计算过程进行优化。使其加速的手段
Torch 中的激励函数有很多, 不过我们平时要用到的就这几个. relu, sigmoid, tanh, softplus
import torch
import torch.nn.functional as F # 激励函数都在这
from torch.autograd import Variable
# 做一些假数据来观看图像
x = torch.linspace(-5, 5, 200) # x data (tensor), shape=(100, 1)
x = Variable(x)
接着就是做生成不同的激励函数数据:
x_np = x.data.numpy() # 换成 numpy array, 出图时用
# 几种常用的 激励函数
y_relu = F.relu(x).data.numpy()
y_sigmoid = F.sigmoid(x).data.numpy()
y_tanh = F.tanh(x).data.numpy()
y_softplus = F.softplus(x).data.numpy()
# y_softmax = F.softmax(x) softmax 比较特殊, 不能直接显示, 不过他是关于概率的, 用于分类
优化器
优化器,主要是为了优化我们的神经网络,使他在我们的训练过程中快起来,节省网络训练的时间。
在 pytorch 中提供了 torch.optim 方法优化我们的神经网络,torch.optim 是实现各种优化算法的包
optimizer 的几种优化方法
这6种方法分为2大类:一大类方法是SGD及其改进(加Momentum);
另外一大类是Per-parameter adaptive learning rate methods(逐参数适应学习率方法),包括AdaGrad、RMSProp、Adam等。
损失函数
我们如何让优化器进行工作?需要有一个模型计算结果作为依据,而模型计算结果是非常复杂的而且结论是不统一的,所以我们要设计一个损失 loss 的计算方法,让它统一成一个损失值,进行计算。也就是算好了一个结论之后下一次模型要朝向哪个方向去优化权重
具体损失函数的选择要取决于模型最终吐出的结论和标签(数据标注)之间的关系上,常见的损失函数有如下几种:
0-1损失函数(zero-one loss)
绝对值损失函数
log对数损失函数
平方损失函数
指数损失函数(exponential loss)
Hinge 损失函数
感知损失(perceptron loss)函数
交叉熵损失函数 (Cross-entropy loss function)
均方误差(Mean Squared Error)
均方根误差
平均绝对误差(Mean Absolute Error)
每一种损失函数都对应一种数学模型计算,目的就是把模型训练的结果与标签建立起联系,在梯度下降优化器中,让loss不断减小的方向是训练方向