当前位置: 首页 > news >正文

浙江网站建设营销自动app优化官网

浙江网站建设营销,自动app优化官网,flask做的购物网站,东莞网站制作网络建设公司文章目录 前言什么是CrossEntropyLoss语言模型中的CrossEntropyLoss计算loss的前期准备CrossEntropyLoss的输入CrossEntropyLoss的输出 额外说明 前言 在大语言模型时代#xff0c;我们常常使用交叉熵损失函数来计算loss#xff0c;因此#xff0c;理解该loss的计算流程有助… 文章目录 前言什么是CrossEntropyLoss语言模型中的CrossEntropyLoss计算loss的前期准备CrossEntropyLoss的输入CrossEntropyLoss的输出 额外说明 前言 在大语言模型时代我们常常使用交叉熵损失函数来计算loss因此理解该loss的计算流程有助于帮助我们对训练过程有更清晰的认知。本文从以下几个角度介绍nn.CrossEntropyLoss() 使用该函数的前期准备如何组织函数的输入logits labels该函数流程常用参数该文章内容仅为个人理解如有误解欢迎讨论 什么是CrossEntropyLoss 这部分并不是本文的重点我们仅介绍在语言模型的训练过程中如何利用该loss 相关信息可见本人博客以及官网CrossEntropyLoss官网 语言模型中的CrossEntropyLoss 计算loss的前期准备 在huggingface-transformers源码中我们在语言模型的forward中总是能看到这样一段函数。我们以LlamaForCausalLM为例Llama源码 if labels is not None:# Shift so that tokens n predict nshift_logits logits[..., :-1, :].contiguous()shift_labels labels[..., 1:].contiguous()# Flatten the tokensloss_fct CrossEntropyLoss()shift_logits shift_logits.view(-1, self.config.vocab_size)shift_labels shift_labels.view(-1)# Enable model parallelismshift_labels shift_labels.to(shift_logits.device)loss loss_fct(shift_logits, shift_labels)if not return_dict:output (logits,) outputs[1:]return (loss,) output if loss is not None else output对于Decoder-only模型在训练时我们的目标是next token prediction任务流程如下 假定我们是常规的问答任务问题是“where is the capital of China“label为“The capital is Beijing”。该任务的目标为当输入为“where is the capital of China“时 我们对question和label进行拼接和tokenize化一般转化结果 (tokenize忽略) 为 bos where is the capital of China sep The capital is Beijing eos bos为句子开头的标志 sep用于分隔question和label本质作用是当模型看到时就知道问题结束了下一个token要输出答案了 eos为生成结束的标志假定每个词算一个token (忽略空格)那么输入一共有13个token 这时我们将整个序列输入到模型中模型在每个token的位置都生成一个向量我们利用lm_head将最后一层的hidden state转化成词表大小的向量logits用于后续利用Softmax确定每个token的概率 现在模型有了输出logits怎么计算loss 对比labels和logits之间的差异来计算loss 现在一共有13个token生成了13个logits每个logits都是用于生成next token的。那么很直接的我们来对比该logits生成的next token准不准就好了 输入 bos where is the capital of China sep The capital is Beijing eos 对比情况为 sep-The, The-capital, …, is-Beijing, Beijing- eos sep对应位置要生成The,…, Beijing对应位置要输出 eos 我们可以将输入右移一位作为labels: where is the capital of China sep The capital is Beijing 可以看到对于输入来说, eos位置没有对应的需要生成的token因此我们去掉该token对于labels bos不需要生成因此我们去掉该token 因此我们在计算loss时对logits去尾labels是输入掐头且右移一位 在代码中对应 shift_logits logits[..., :-1, :].contiguous()shift_labels labels[..., 1:].contiguous()CrossEntropyLoss的输入 此时还不能直接将shift_logits和shift_labels进行对比来计算loss。因为我们上面的操作只是为了sep The capital is Beijing和The capital is Beijing eos中的token能一一对应起来对于其他部分生成的token我们并没有要求因为不是answer不需要生成 CrossEntropyLoss函数中有一个参数为ignore_idx默认值为-100。labels值设置为-100的位置不会计算loss因此我们将除了需要计算loss的位置 最后5个位置的labels都设置为-100最终需要输入到CrossEntropyLoss中的inputs和labels为 inputs为: [, where, is, the, capital, of, China, sep, The, capital, is, Beijing]对应的logits 注意不需要进行Softmax直接传logits即可函数内部有更稳定的Softmax计算方式 labels为: [-100, -100, -100, -100, -100, -100, -100, The, capital, is, Beijing, eos]我们在训练时构造输入和labels要注意构造为这种形式 CrossEntropyLoss的输出 默认情况下输出为mean即各个token计算得到loss的平均值在token-level上平均分母是token的个数 import torch import torch.nn as nn# 假设有 3 个类logits 形状为 (batch_size3, num_classes3) logits torch.tensor([[2.0, 1.0, 0.1], [0.5, 2.5, 0.3], [1.5, 0.5, 2.0]])# 标签其中第二个样本的标签为 ignore_index (-100) labels torch.tensor([0, -100, 2])# 定义 CrossEntropyLoss criterion nn.CrossEntropyLoss()# 计算损失 loss criterion(logits, labels)print(fLoss: {loss})Loss: 0.51058030128479常用参数 reduction控制loss的输出形式共三种none, mean, sum默认为mean mean: 每个token计算得到的loss的平均值 none: 直接返回每个token计算得到的loss 例子 import torch import torch.nn as nn# 假设有 3 个类logits 形状为 (batch_size3, num_classes3) logits torch.tensor([[2.0, 1.0, 0.1], [0.5, 2.5, 0.3], [1.5, 0.5, 2.0]])# 标签其中第二个样本的标签为 ignore_index (-100) labels torch.tensor([0, -100, 2])# 定义 CrossEntropyLoss criterion nn.CrossEntropyLoss(reductionnone)# 计算损失 loss criterion(logits, labels)print(fLoss: {loss})Loss: tensor([0.4170, 0.0000, 0.6041])sum: 所有token对应loss求和 额外说明 对最上面的代码补充说明 shift_logits shift_logits.view(-1, self.config.vocab_size)shift_labels shift_labels.view(-1)训练数据往往是按batch组织的shape为(batch_size, seq_len, vocab_size)我们将所有batch的token压缩为一个序列计算整个序列的loss这样比较方便
http://www.hkea.cn/news/14537218/

相关文章:

  • 怎么查网站死链接广西建网站公司
  • 页面紧急情况访问升级跳拿笔记站长工具seo查询软件
  • 网站源码带采集崇明建设小学网站
  • 小学科学可以做实验的网站西安知名网络推广公司
  • 麻章网站建设公司黑山网站制作公司
  • 石家庄网站建设公司东莞网站建设报价 一呼百应
  • 找人做试管婴儿的网站学院网站建设的要求
  • 网站制作的前期主要是做好什么工作专做民宿预定的网站
  • 网站字体大小是多少合适管理咨询公司的成本有哪些
  • 网站常见攻击wordpress菜单添加
  • 蒙自做网站的公司网页个人主页模板
  • 做做网站沈阳网站seo
  • 淘宝网站jquery长沙人才网最新招聘
  • 帝国cms手机网站技术支持:佛山网站建设
  • 一个商城网站开发周期京东商城网站wordpress模板
  • 国内旅游网站排行榜什么是网站推广策略
  • 成功的网络营销案例ppt新浪 博客可以做网站优化吗
  • 如何优化一个网站最新经济新闻
  • 阿里巴巴网站建设的基本情况网站建设布吉
  • 做诚信通网站推荐西安知名的集团门户网站建设公司
  • wordpress实现论坛功能wordpress中文插件seo百度云
  • 烟台违建举报网站wordpress文学模版
  • 网站上面的logo怎么做wordpress 滑到底部自动加载
  • 网站建设基本流程备案抚州哪里有做企业网站的公司
  • 新强生产建设兵团网站南山品牌网站建设企业
  • 神农架网站建设公司南阳网站建设多少钱
  • 河南网站建设详细流程有哪些做室内设计好用的网站
  • 微信 网站提成方案点做版式设计网站
  • 织梦网站首页内容修改WordPress文章修改样式
  • 如何建设学校的微网站首页wordpress影视主题52破解