AI学习记录 - transformers 的 linear 词映射层的详细分析, CrossEntropyLoss 函数解析

创作不易,有用的话点个赞。。。。。。

1. 假设条件

词汇表:假设词汇表包含四个词汇:[token_0, token_1, token_2, token_3]。
模型的输出概率分布:模型的输出经过 Softmax 转换后,得到概率分布:[0.1,0.5,0.2,0.2],我们需要将[0.1,0.5,0.2,0.2]套进如下公式。

数学公式

在这里插入图片描述

真实标签

y 的独热编码向量为:y=[0,1,0,0]

如下图表示:
在这里插入图片描述
代入公式可得:
在这里插入图片描述

在这个例子中,torch.log 的计算过程可以简化为计算预测概率的自然对数 log(0.5),然后取其负值得到最终的交叉熵损失 0.6931。这个损失值表示的是模型在该样本上的预测误差。
一般来说,计算误差,按照上面的数字,直接计算不好吗,如下:

0 - 0.1 = 0.1,
1 - 0.5 = 0.5,
0 - 0.2 = 0.2,
0 - 0.2 = 0.2,
逐个计算进行反向传播。

那为什么要使用log函数呢?

因为在数据处理上,我们已经使用了softmax函数,使得所有数字加起来等于1,当我把其中一个修改了,自然会影响到其他的维度的数字。所以我只需要让0.5这一个进行反向传播就可以了。

看看log函数图像,我们发现,0到1之间,数字越大,也就是越接近1,-log(x)数字就越小,那么就可以把-log(x)的值当作是损失值,也是符合预期的。例如按照原来的分类方法当0.5(x)越大,越靠近1,证明 1 - 0.5(x) 越小,也越是符合预期,所以把-log(x)当成是损失率刚刚好也满足原来的多分类的概念,torch就可以根据-log(x)作为损失率去反向传播,就是对权重的调大还是调小,调整幅度是多少。

在这里插入图片描述

在这里插入图片描述

可以看出y越靠近1,log越接近0,寓意为损失率越低。。。。。。。。。。。。。。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值