交叉熵损失函数与参数更新计算实例(节点分类为例)

交叉熵损失与参数更新

数据准备

对于下面这样一个图网络网络:
在这里插入图片描述

假如我们得到了节点i的嵌入表示 z i z_i zi数据如下:
i d , x 0 , x 1 , x 2 , x 3 1 , 0.5 , 0.6 , 0.7 , 0.8 2 , 0.3 , 0.8 , 0.3 , 0.4 3 , 0.7 , 0.9 , 0.6 , 0.9 4 , 0.2 , 0.1 , 0.2 , 0.3 5 , 0.8 , 0.4 , 0.3 , 0.2 id,x_0,x_1,x_2,x_3\\ 1,0.5,0.6,0.7,0.8\\ 2,0.3,0.8,0.3,0.4\\ 3,0.7,0.9,0.6,0.9\\ 4,0.2,0.1,0.2,0.3\\ 5,0.8,0.4,0.3,0.2\\ id,x0,x1,x2,x31,0.5,0.6,0.7,0.82,0.3,0.8,0.3,0.43,0.7,0.9,0.6,0.94,0.2,0.1,0.2,0.35,0.8,0.4,0.3,0.2
为了方便说明,我们来处理一个对节点进行有监督分类的问题。
假设我们要对节点的嵌入表示进行分类
真实的类别如下:
1,3,属于第0类
2,4,属于第1类
5,属于第2类

分类层

我们对每个节点经过一个全连接层,我们随机初始化w0,w1,w2三个4维(嵌入向量维数)的权重向量(结果保留两位有效数字,下同)。
w 0 = [ 0.17 , 0.4 , − 0.14 , 0.51 ] w_0 = [0.17,0.4,-0.14,0.51] w0=[0.17,0.4,0.14,0.51]
w 1 = [ 0.75 , − 0.04 , 0.67 , − 0.18 ] w_1 = [0.75,-0.04,0.67,-0.18] w1=[0.75,0.04,0.67,0.18]
w 2 = [ 0.53 , − 0.04 , 0.4 , 0.77 ] w_2 = [0.53,-0.04,0.4,0.77] w2=[0.53,0.04,0.4,0.77]
b 0 , b 1 , b 2 = 0.05 , − 0.11 , − 0.32 b_0,b_1,b_2 = 0.05,-0.11,-0.32 b0,b1,b2=0.05,0.11,0.32
w i , b i w_i,b_i wi,bi对应将节点向量转化为节点属于i类的过程的一些权重;

于是对节点 z 1 z_1 z1,我们得到:

h 1 = [ z 1 w 0 + b 0 , z 1 w 1 + b 1 , z 1 w 2 + b 2 ] = [ 0.68 , 0.57 , 0.82 ] h_1 = [z_1w_0+b_0,z_1w_1+b_1,z_1w_2+b_2]\\ = [0.68, 0.57, 0.82] h1=[z1w0+b0,z1w1+b1

### DDQN 中交叉熵损失函数的应用 DDQN(Double Deep Q-Network)是一种改进版的DQN算法,旨在解决原始DQN中存在的过估计问题。然而,通常情况下,DDQN并不使用交叉熵损失函数作为其主要损失计算方式。 #### 损失函数的选择依据 在大多数实现中,DDQN采用均方误差(MSE)或Huber Loss来衡量预测Q值目标Q值之间的差异[^1]。这是因为MSE能够有效地度量数值型输出间的差距,并且具有良好的收敛特性: ```python loss_fn = nn.MSELoss() ``` 但对于某些特定场景下,如果涉及到分类性质的任务或者需要优化概率分布,则可能会引入交叉熵损失函数如,在多动作空间下的决策过程中,当每个可能的动作被视作独立类别,可以利用交叉熵来进行训练: ```python import torch.nn.functional as F # 定义交叉熵损失函数 criterion = F.cross_entropy ``` 在这种设定里,网络的最后一层通常是softmax激活函数,用于生成各个类别的概率向量;而标签则是one-hot编码形式的实际采取行动索引。 #### 场景实例 假设在一个环境中存在多个离散动作选项,这些动作并非简单地对应单一数值奖励而是关联着不同事件发生的可能性。此就可以构建一个多分类器式的架构,其中输出节点数目等于可选动作数,每一轮迭代根据当前观测到的状态输入模型得到一组未经归一化的logits,再经由softmax转换成合法的概率分布。接着对比真实发生的结果所对应的one-hot向量,以此为基础调整参数使得未来相似情境下能更精准地预估最有可能成功的那项操作。 不过值得注意的是这种情况相对少见,更多候还是应该遵循传统做法即运用回归类型的损失函数如上述提到过的MSE等针对具体项目需求做出合理选择。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

today__present

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值