公司做网站费用怎么记账app官方安装免费下载

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

公司做网站费用怎么记账,app官方安装免费下载,免费推广选择推广途径与原因,wordpress 模板 教育DCN-Mix和DCN-V2的关系 DCN-Mix(a mixture of low-rank DCN)是基于DCN-V2的改进版#xff0c;它提出使用矩阵分解来降低DCN-V2的时间空间复杂度#xff0c;又引入多次矩阵分解来达到类似混合专家网络MOE的效果从而提升交叉层的表征能力#xff0c;若读者对DCN-V2不甚了解可…DCN-Mix和DCN-V2的关系 DCN-Mix(a mixture of low-rank DCN)是基于DCN-V2的改进版它提出使用矩阵分解来降低DCN-V2的时间空间复杂度又引入多次矩阵分解来达到类似混合专家网络MOE的效果从而提升交叉层的表征能力若读者对DCN-V2不甚了解可以参考上一节[特征交叉系列DeepCross(DCN-V2)理论和实践]做知识铺垫。 DCN-V2权重矩阵的低秩性和矩阵分解 在DCN-V2中核心的参数是交叉层的权重矩阵W该参数是M×M的方阵其中M是所有输入embedding拼接后的向量总长度每一层交叉之间W不共享W矩阵需要学习的参数数量能占到所有参数量的70%以上而进一步作者发现随着网络的训练W矩阵的奇异值出现快速下降呈现出低秩特性代表该矩阵存在信息冗余因此可以考虑通过矩阵分解来进行特征提取和信息压缩。 在PyTorch中可以通过torch.linalg.svd计算出矩阵的奇异值例如 a torch.tensor([[1, 1], [1, 1.1]])u, s, v torch.linalg.svd(a)print(s) tensor([2.0512, 0.0488]) 其中s是对角阵斜对角线上的值就是奇异值a矩阵的第二行几乎可以从第一行线性变换而来因此s各位置上的奇异值差距极大第一个奇异值基本携带了全部的矩阵信息。 在DCN-V2的训练代码里面打印出第一个交叉层初始化的W矩阵和训练早停后W矩阵的奇异值奇异值的长度和输入长度M一致代码如下

初始化时

model DCN(field_num10, feat_dim72, emb_num16, order_num2, dropout0.1, methodparallel).to(DEVICE) init_s torch.linalg.svd(model.cross_net.cell_list[0].w)[1].cpu().detach().numpy().tolist()

早停时

if early_stop_flag:train_s torch.linalg.svd(model.cross_net.cell_list[0].w)[1].cpu().detach().numpy().tolist()break 奇异值列表中元素大小逐个递减对init_s和train_s分别做最大最小归一化要求第一个奇异值归因化为1 init_s [(x - min(init_s)) / (max(init_s) - min(init_s)) for x in init_s] train_s [(x - min(train_s)) / (max(train_s) - min(train_s)) for x in train_s] 然后做图看一下初始矩阵的奇异值和收敛后的奇异值的各个位置元素的大小情况 import matplotlib.pylab as plt plt.scatter(list(range(len(init_s))), init_s, labelinit, s3) plt.scatter(list(range(len(train_s))), train_s, labellearned, s3) plt.legend(loc0) plt.show() init和learned奇异值下降对比 相比于初始化阶段(蓝线)模型收敛后(橙线)的W矩阵奇异值急速下降说明头部的奇异值已经携带了大部分矩阵信息W矩阵可以考虑做压缩。 在论文中作者将W分解为UV两个矩阵的相乘其中UV都是维度为[M, R]的二维矩阵M和输入等长RM/2公式如下 矩阵分解 此时一个交叉权重的参数数量由M平方降低为2×MR。 DCN-Mix的混合专家网络 DCN-Mix使用矩阵UV分解来逼近原始的交叉矩阵W受到MOE(Mixture of Experts)混合专家网络的启发作者对W进行多次矩阵分解单个矩阵分解相当于单个专家网络(Expert)在子空间学习特征交叉再引入门控机制(Gate)对多个子空间的交叉结果进行自适应地融合从而提高交叉层的表达能力DCN结合MOE的示意图如下 MOE示意图 其中该层的输入Input x分别进入n个Expert专家网络专家网络中包含UV矩阵相乘同时Input x输入给一个门控网络GateSoftmax输出n个权重标量最后Input x会和加权求和的专家网络结果做残差连接。 将矩阵分解和MOE结合起来形成最终的交叉层公式如下 结合MOE的矩阵分解交叉层 相比于DCN-V2等号左侧的哈达玛积部分改为了一个Σ加权求和的UV矩阵逼近而右侧的残差连接放到最后和MOE的结果一起做残差连接。 DCN-Mix在PyTorch下的实践 本次实践的数据集和上一篇特征交叉系列完全理解FM因子分解机原理和代码实战一致采用用户的购买记录流水作为训练数据用户侧特征是年龄性别会员年限等离散特征商品侧特征采用商品的二级类目产地品牌三个离散特征随机构造负样本一共有10个特征域全部是离散特征对于枚举值过多的特征采用hash分箱得到一共72个特征。 DCN-Mix的PyTorch代码实现如下 class Embedding(nn.Module):def init(self, feat_num, emb_num):super(Embedding, self).init()self.embedding nn.Embedding(feat_num, emb_num)nn.init.xaviernormal(self.embedding.weight.data)def forward(self, x):# [None, filed_num] [None, filed_num, emb_num] [None, filed_num * emb_num]return self.embedding(x).flatten(1)class DNN(nn.Module):def init(self, input_num, hidden_nums, dropout0.1):super(DNN, self).init()layers []input_num input_numfor hidden_num in hidden_nums:layers.append(nn.Linear(input_num, hidden_num))layers.append(nn.BatchNorm1d(hidden_num))layers.append(nn.ReLU())layers.append(nn.Dropout(pdropout))input_num hidden_numself.mlp nn.Sequential(*layers)for layer in self.mlp:if isinstance(layer, nn.Linear):nn.init.xaviernormal(layer.weight.data)def forward(self, x):return self.mlp(x)class CrossCell(nn.Module):一个交叉单元def init(self, input_num, r):super(CrossCell, self).init()self.v nn.Parameter(torch.randn(input_num, r))self.u nn.Parameter(torch.randn(input_num, r))self.b nn.Parameter(torch.randn(input_num, 1))nn.init.xaviernormal(self.v.data)nn.init.xaviernormal(self.u.data)def forward(self, x0, xi):# [None, emb_num] [None, emb_num, 1]xi xi.unsqueeze(2)x0 x0.unsqueeze(2)# [r, input_num] * [None, emb_num, 1] [None, r, 1]# [input_num, r] * [None, r, 1] [None, emb_num, 1]xii (torch.matmul(self.u, torch.matmul(self.v.t(), xi)) self.b) * x0return xii # [None, emb_num, 1]class MOECrossCell(nn.Module):def init(self, input_num, r, k):super(MOECrossCell, self).init()self.k kself.cross_cell nn.ModuleList([CrossCell(input_num, r) for i in range(self.k)])self.gate nn.Linear(input_num, self.k)nn.init.xaviernormal(self.gate.weight.data)def forward(self, x0, xi):# [None, emb_num] [None, emb_num, 1]xii xi.unsqueeze(2)export_out []for i in range(self.k):cross_out self.cross_celli# [[None, emb_num, 1], [None, emb_num, 1], [None, emb_num, 1], [None, emb_num, 1]]export_out.append(cross_out)export_out torch.concat(export_out, dim2) # [None, emb_num, 4]# [None, k] [None, 1, k]gate_out self.gate(xi).softmax(dim1).unsqueeze(dim1)# [None, emb_num, 4] * [None, 1, k] [None, emb_num, k] [None, emb_num, 1]out torch.sum(export_out * gate_out, dim2, keepdimTrue)out out xii # [None, emb_num, 1]return out.squeeze(2)class CrossNet(nn.Module):def init(self, order_num, input_num, r, k):super(CrossNet, self).init()self.order order_numself.cell_list nn.ModuleList([MOECrossCell(input_num, r, k) for i in range(order_num)])def forward(self, x0):xi x0for i in range(self.order):xi self.cell_listireturn xiclass DCN(nn.Module):def init(self, field_num, feat_dim, emb_num, order_num, r16, k4, dropout0.1, methodparallel,hidden_nums(128, 64, 32)):super(DCN, self).init()input_num field_num * emb_numself.embedding Embedding(feat_numfeat_dim, emb_numemb_num)self.dnn DNN(input_numinput_num, hidden_numshidden_nums, dropoutdropout)self.cross_net CrossNet(order_numorder_num, input_numinput_num, rr, kk)if method not in (parallel, stacked):raise ValueError(unknown combine type: method)self.method methodlinear_dim hidden_nums[-1]if self.method parallel:linear_dim linear_dim input_numself.linear nn.Linear(linear_dim, 1)nn.init.xaviernormal(self.linear.weight.data)def forward(self, x):emb self.embedding(x) # [None, field * emb_num]cross_out self.cross_net(emb) # [None, input_num]if self.method parallel:dnn_out self.dnn(emb) # [None, input_num]out torch.concat([cross_out, dnn_out], dim1)else:out self.dnn(cross_out) # [None, input_num]out self.linear(out)return torch.sigmoid(out).squeeze(dim1) 在CrossCell模块中完成了一个给予UV逼近的交叉操作在MOECrossCell模块中完成了MOE和残差连接其中export_out和gate_out分别为专家网络的输出和门控机制的权重。 本例全部是离散分箱变量所有有值的特征都是1因此只要输入有值位置的索引即可一条输入例如 train_data[0] Out[120]: (tensor([ 2, 10, 14, 18, 34, 39, 47, 51, 58, 64]), tensor(0)) x的长度为10代表10个特征域每个域的值是特征的全局位置索引从0到71一共72个特征。 DCN-Mix调参和效果对比 对阶数(order_num)和融合策略(method)这两个参数进行调参分别尝试14层交叉层stacked和parallel两种策略采用10次验证集AUC不上升作为早停条件验证集的平均AUC如下 DCN调参AUC并行parallel串行stacked1层交叉2阶0.63450.63212层交叉3阶0.63280.63233层交叉4阶0.63310.63334层交叉5阶0.63400.6331 结论依旧是parallel效果好于stacked其中一层交叉的并行parallel达到验证集最优AUC为0.6345。 再对比一下之前文章中实践的FMFFMPNNDCN-V2等一系列算法验证集AUC和参数规模如下 算法AUC参数量FM0.6274361FFM0.63172953PNN*0.634229953DeepFM0.632212746NFM0.632910186DCN-parallel-30.6348110017DCN-stacked-30.6344109857DCN-Mix-parallel-10.634554501DCN-Mix-stacked-30.633397869 使用矩阵分解逼近策略的DCN-Mix略低于原生的DCN-V2,但是还是超越一众FM系列的算法其中以同样是三层交叉的stacked DCN为例DCN-Mix的参数量相比于DCN-V2有所降低也印证了论文中提到的“在模型效果和部署延迟之间找到一个平衡”。 最后的最后 感谢你们的阅读和喜欢我收藏了很多技术干货可以共享给喜欢我文章的朋友们如果你肯花时间沉下心去学习它们一定能帮到你。 因为这个行业不同于其他行业知识体系实在是过于庞大知识更新也非常快。作为一个普通人无法全部学完所以我们在提升技术的时候首先需要明确一个目标然后制定好完整的计划同时找到好的学习方法这样才能更快的提升自己。 这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
一、全套AGI大模型学习路线 AI大模型时代的学习之旅从基础到前沿掌握人工智能的核心技能 二、640套AI大模型报告合集 这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。 三、AI大模型经典PDF籍 随着人工智能技术的飞速发展AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型如GPT-3、BERT、XLNet等以其强大的语言理解和生成能力正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。 四、AI大模型商业化落地方案 五、面试资料 我们学习AI大模型必然是想找到高薪的工作下面这些面试题都是总结当前最新、最热、最高频的面试题并且每道题都有详细的答案面试前刷完这套面试题资料小小offer不在话下。
这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】