1、损失函数LOSS
损失函数(Loss Function)在机器学习和深度学习中是一个核心概念,它用于度量模型的预测值与真实值之间的差距。换句话说,损失函数衡量了模型的误差或损失,通常表示为L(y, f(x)),其中y是真实值,f(x)是模型的预测值。损失函数的目标是最小化误差或损失,使模型能够更好地拟合数据。
在训练过程中,模型通过调整参数来减小损失函数的值,从而提高性能。不同的任务和问题需要不同的损失函数,因此了解如何选择和定制损失函数至关重要。
常见的损失函数类型包括均方误差损失(Mean Squared Error,MSE)、交叉熵损失(Cross-Entropy Loss)、对数损失(Logarithmic Loss,Log Loss)、感知损失(Perceptron Loss)和汉明损失(Hamming Loss)等。
(1)MSE
优点:MSE的函数曲线光滑、连续,处处可导,便于使用梯度下降算法,是一种常用的损失函数。 而且,随着误差的减小,梯度也在减小,这有利于收敛,即使使用固定的学习速率,也能较快的收敛到最小值。
缺点:当真实值y和预测值f(x)的差值大于1时,会放大误差;而当差值小于1时,则会缩小误差,这是平方运算决定的。MSE对于较大的误差(>1)给予较大的惩罚,较小的误差(<1)给予较小的惩罚。也就是说,对离群点比较敏感,受其影响较大。
2、感知机
(1)单层感知机
左侧为输入层,对于所有元素,上标0代表为输入层,下标1~N表示有(N-1)个元素。左面由输入层到加和符号,再到σ为一个连接层。加和符号代表了一个节点。Wij中,i代表了上一层的节点编号,j代表了这一层的节点编号。其中加和符号上的x代表了第一层上的0号单层输出感知机,经过激活函数后,得到了第1层的第0号输出值。
后面的E代表了error,将输出值与error进行了对比。
#感知机梯度推导
import torch
from torch.nn import functional as F
#MSE 均方误差-loss函数
#单层感知机
x = torch.randn(1,10)
print(x)
w = torch.randn(1,10,requires_grad=True)
print(w)
#激活函数使用SIGMOD
o = torch.sigmoid(x@w.t())#o为输出,。t表示矩阵转置
print(o)
#计算损失函数LOSS,使用MSE
loss = F.mse_loss(torch.ones(1,1),o)
print(loss)
loss.backward()
w.grad
print(w.grad)
输出:
tensor([[ 1.4464e-05, -3.3433e-05, -9.8845e-05, 7.8284e-05, -2.7778e-05,
1.0374e-05, -9.1783e-06, 1.6131e-05, 4.5356e-05, -1.2137e-05]])
(2)多层感知机
3、反向传播MLP(全连接网络/感知机)