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

中国医院建设协会网站上海全网营销推广

中国医院建设协会网站,上海全网营销推广,专业定制网站建设公司,开发公司工程部年终总结GPT1开山之作:Improving language understanding by generative pre-training 本文提出了gpt1,即使用无标签的数据对模型先进行训练,让模型学习能够适应各个任务的通用表示;后使用小部分 task-aware的数据对模型进行微调&#xff…

GPT1开山之作:Improving language understanding by generative pre-training

在这里插入图片描述
本文提出了gpt1,即使用无标签的数据对模型先进行训练,让模型学习能够适应各个任务的通用表示;后使用小部分 task-aware的数据对模型进行微调,可以在各个task上实现更强大的功能。

设计框架

分为两块,pre-train和fine-tune,使用transformer模型的解码器部分。

第一阶段:Unsupervised pre-training

预测连续的k个词的下一个词的概率,本质就是最大似然估计,让模型下一个输出的单词的最大概率的输出是真实样本的下一个单词的 u i u_i ui。后面的元素不会看,只看前k个元素,这就和transformer的解码器极为相似。
在这里插入图片描述

第二阶段:Supervised fine-tuning

训练下游的task的数据集拥有以下形式的数据:假设每句话中有m个单词,输入序列 { x 1 , x 2 , . . . , x m } \{x^1,x^2,...,x^m\} {x1,x2,...,xm} 和一个标签 y y y(忧下游任务决定)。
在这个阶段,作者定义了两个优化函数,L1保证句子的连贯性,L2保证下游任务的准确率。
在这里插入图片描述

下游任务

针对不同的下游任务,制定了不同的训练方案,其完整的内部框架结构如下:

在这里插入图片描述

复现代码

一个十分简易的复现:

import torch
import torch.nn as nn
import torch.nn.functional as F
import math
import copyimport torch.nn.functional as F# accepts input in [ batch x channels x shape ] format
class Attention(nn.Module):def __init__(self, in_channels, heads, dropout=None):assert in_channels % heads == 0super().__init__()self.in_channels = in_channelsself.heads = headsself.dropout = dropoutdef forward(self, queries, keys, values, mask=None):attention = torch.bmm(queries, keys.permute(0,2,1)) / self.in_channels**0.5if mask is not None:attention = attention.masked_fill(mask, -1e9)attention = F.softmax(attention, dim=-1)if self.dropout is not None:attention = F.dropout(attention, self.dropout)output = torch.bmm(attention, values)return output# adds positional encodings
class PositionalEncoding(nn.Module):def forward(self, input_):_, channels, length = input_.shapenumerator = torch.arange(length, dtype=torch.float)denominator = 1e-4 ** (2 * torch.arange(channels, dtype=torch.float) / channels)positional_encodings = torch.sin(torch.ger(denominator, numerator))return input_ + positional_encodingsclass EncoderLayer(nn.Module):def __init__(self, in_channels, heads, dropout=None):super().__init__()self.in_channels = in_channelsself.heads = headsself.produce_qkv = nn.Linear(in_channels, 3*in_channels)self.attention = Attention(in_channels, heads, dropout)self.linear = nn.Linear(in_channels, in_channels)def forward(self, inputs):qkv = self.produce_qkv(inputs)queries, keys, values = qkv.split(self.in_channels, -1)attention = self.attention(queries, keys, values)outputs = F.layer_norm(attention + inputs, (self.in_channels,))outputs = F.layer_norm(self.linear(outputs) + outputs, (self.in_channels,))return outputs class DecoderLayer(nn.Module):def __init__(self, in_channels, heads, dropout=None):super().__init__()self.in_channels = in_channelsself.heads = headsself.produce_qkv = nn.Linear(in_channels, 3*in_channels)self.produce_kv = nn.Linear(in_channels, 2*in_channels)self.masked_attention = Attention(in_channels, heads, dropout)self.attention = Attention(in_channels, heads, dropout)self.linear = nn.Linear(in_channels, in_channels)def forward(self, inputs, outputs):qkv = self.produce_qkv(outputs)queries, keys, values = qkv.split(self.in_channels, -1)n = inputs.shape[1]mask = torch.tril(torch.ones((n, n), dtype=torch.uint8))attention = self.masked_attention(queries, keys, values, mask)outputs = F.layer_norm(attention + outputs, (self.in_channels,))kv = self.produce_kv(inputs)keys, values = kv.split(self.in_channels, -1)attention = self.attention(outputs, keys, values)outputs = F.layer_norm(attention + outputs, (self.in_channels,))outputs = F.layer_norm(self.linear(outputs) + outputs, (self.in_channels,))return outputsif __name__ == '__main__':print("Running...")test_in = torch.rand([3,4,5])encoder = EncoderLayer(5, 1)test_out = encoder(test_in)  # torch.Size([3, 4, 5])assert test_out.shape == (3, 4, 5)print("encoder passed")decoder = DecoderLayer(5, 1) # 这就是gpt模型test_mask = torch.tril(torch.ones((4, 4), dtype=torch.uint8))test_out = decoder(test_in, test_in)assert test_out.shape == (3, 4, 5)  # torch.Size([3, 4, 5])print("decoder passed")

GPT2

http://www.yayakq.cn/news/880800/

相关文章:

  • 哪些网站可以seo网站建设和网站开发的区别
  • 创建一个自己的网站的步骤网站建设算加工承揽合同吗
  • 网站出问题wordpress能发多少邮件
  • 建网站做商城个体户资质可以wordpress font-spider
  • 百度手机网站建设网站建设域名空间
  • 深圳办公室装修公司哪家好网站关键词优化排名公司
  • 外国可以做站外推广的网站百度只收录网站首页
  • 网站建设和网络维护阿里云虚拟主机安装wordpress
  • 相亲网站开发dedecms网站模板下载
  • 公司网站开发费用计入哪个科目网站设置为信任站点
  • 企业怎么建设网站首页做宣传网站
  • 织梦手机网站如何调用网站开发免费视频播放器
  • 网站首页结构wordpress仿
  • 做网站的抬头怎么做小程序制作页面教程
  • 中昌国际建设集团网站高端的西安网页设计
  • 长春建站培训班广水网站定制
  • 如何自己学做网站番禺怎样优化网站建设
  • 多语言企业网站开发专业柳州网站建设多少钱
  • wordpress pc站m站哪里有网站建设电话
  • 工信部 诚信网站备案wordpress后台链接
  • php网站开发工程师哈尔滨专业做网站公司
  • 米拓建站教程想做一个什么样的网站
  • 平台类网站做多久沈阳网站优化推广方案
  • 多就能自己做网站网站ps照片怎么做的
  • 网站建设 深路互动高明做网站
  • 郑州网站建设 股权投资网站建设一般用哪种语言开发
  • 怎么自学网站建设企业科技网站建设
  • 北京网站优化seo教育
  • app开发必须要网站吗wordpress无法创建配置文件
  • 怎么做网站添加二维码设计广告公司网站建设