目录
简单的理解就是每一个样本经过模型后会得到一个预测值,然后得到的预测值和真实值的差值就成为损失。损失值越小证明模型越是成功。
损失函数用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好。不同的模型用的损失函数一般也不一样。
损失函数分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数指经验风险损失函数加上正则项。
均方差损失函数
交叉熵损失
损失函数使用步骤
- 均方差损失函数:
- def MSE (y, y_predicted):
- sq_error = (y_predicted - y) ** 2
- sum_sq_error = np.sum(sq_error)
- mse = sum_sq_error/y.size
- return mse
-
- 交叉熵损失函数:
-
- import math
-
-
- def softmax(x):
- m, n = len(x), len(x[0])
- for i in range(m):
- cur_m = max(x[i])
- for j in range(n):
- x[i][j] = math.exp(x[i][j] - cur_m)
- cur_s = sum(x[i])
- for j in range(n):
- x[i][j] = x[i][j] / cur_s
- return x
-
-
- def crossentropy(y_hat, y):
- # y_hat: [N, C]
- # y: [N]
- loss = 0
- batch_size = len(y)
- y_softmax = softmax(y_hat)
- for i in range(batch_size):
- loss -= math.log(y_softmax[i][y[i]])
- return loss
-
-
- x = [[0.1, 0.2, 0.7], [0.5, 0.2, 0.3]]
- y = [2, 0]
- print(crossentropy(x, y))
-
交叉熵损失函数计算得出损失值
均方差函数常用于线性回归计算预测值和真实值之间的欧式距离。预测值和真实值越接近,两者的均方差就越小。
交叉熵误差是一个-log函数,也就意味着,交叉熵误差值越小,神经网络在对应正确解标签的输出越接近1,即神经网络的判断和正确解标签越接近。