秋招八股总结

transformer

损失函数

交叉熵的原理

公式

xi是true_label,yi是神经网络预测为正确的概率
在这里插入图片描述

对比学习loss

对比学习损失函数

InfoNEC Loss(bge中也用的这个)

在这里插入图片描述

SimCSE的主要思想:同一句话通过不同的drop out作为正例,其余的作为负例(损失函数还是用的InfoNEC Loss);数据增强用的2次dropout

【【一起读论文】SimCSE: Simple Contrastive Learning of Sentence Embeddings】https://www.bilibili.com/video/BV12g411M7AB?vd_source=22a0d494d7d586e6e37e23570688a816
在这里插入图片描述

为什么除以根号dk

  1. 防止梯度消失
    随着dk维度的值变大,点积的大小会增大,如果没有及时对点积的大小进行缩放,那么万一点积的数量级很大,softmax的梯度就会趋向于0,也就会出现梯度消失问题。
  2. 进行归一化
    为什么选择 ,时因为可以使得 Q 和 K 点积 趋向于 期望为0,方差为1的标准正态分布,说白了就是归一化。

标准化

标准化作用

缓解梯度消失 / BN缓解内部协变量偏移 / 有一定正则化作用

内部协变量偏移

在训练深层神经网络时,各层的输入分布会随着参数更新而变化,这种现象被称为内部协变量偏移(Internal Covariate Shift)。具体来说,随着训练的进行,每层的激活值(即层的输出)的均值和方差可能会发生变化。由于每层的输入分布在训练过程中不断变化,优化过程中的梯度更新也会受到影响,这会导致训练过程变得不稳定。批归一化的目标是缓解这一问题,使得网络的每一层的输入分布更加稳定,从而加快训练速度。

为什么用 LayerNorm 不使用 BatchNorm?

  1. 数据的角度
    CV 通常用 BatchNorm,NLP 通常用 LayerNorm。图像数据一个 Channel 内的关联性比较大,不同 Channel 的信息需要保持差异性。文本数据一个 Batch 内的不同样本关联性不大。
  2. Pad的角度解释
    不同句子的长度不同,在句子的末尾归一化会受到 pad 的影响,使得统计量不置信。
  3. 模型角度解释
    Self Attention 中,内积的大小的上界和 q,k 的 L2Norm 有关。LayerNorm 对 L2Norm 限制更加直接。

(3) BN 在训练和推理时的差别

BN 在训练和推理时的差别
训练阶段:在训练过程中,BN 使用当前小批量的数据计算均值和方差。
推理阶段:在推理阶段,BN 使用在训练过程中累积的全局均值和方差进行标准化,以确保模型的稳定性。

BN 与dropout 能否一起用?为什么?

添加链接描述
本论文作者发现理解 Dropout 与 BN 之间冲突的关键是网络状态切换过程中存在神经方差的(neural variance)不一致行为。试想若有图一中的神经响应 X,当网络从训练转为测试时,Dropout 可以通过其随机失活保留率(即 p)来缩放响应,并在学习中改变神经元的方差,而 BN 仍然维持 X 的统计滑动方差。这种方差不匹配可能导致数值不稳定(见下图中的红色曲线)。而随着网络越来越深,最终预测的数值偏差可能会累计,从而降低系统的性能。简单起见,作者们将这一现象命名为「方差偏移」。事实上,如果没有 Dropout,那么实际前馈中的神经元方差将与 BN 所累计的滑动方差非常接近(见下图中的蓝色曲线),这也保证了其较高的测试准确率。
在这里插入图片描述

attention的时间复杂度

n2d : n为序列长度,d为隐层维度

如何减少时间复杂度:Sparse Self Attention

在这里插入图片描述

instruct_gpt

在这里插入图片描述

RM损失函数

在这里插入图片描述

RL目标函数

在这里插入图片描述

什么阶段达到了所谓 in-context learning(gpt-3)

GPT与transformer decoder的区别

少一层无mask自注意力层(交叉自注意力) / LN层前置 / 模型的输出部分添加一个LN层 / 采用可训练的 postion embedding

分词算法

WordPiece

WordPiece核心思想是将单词拆分成多个前缀符号(比如BERT中的##)最小单元,再通过子词合并规则将最小单元进行合并为子词级别。例如对于单词"word",拆分如下:
w ##o ##r ##d
然后通过合并规则进行合并,从而循环迭代构建出一个词表,以下是核心步骤:

  1. 计算初始词表:通过训练语料获得或者最初的英文中26个字母加上各种符号以及常见中文字符,这些作为初始词表。
  2. 计算合并分数:对训练语料拆分的多个子词单元通过合拼规则计算合并分数。
  3. 合并分数最高的子词对:选择分数最高的子词对,将它们合并成一个新的子词单元,并更新词表。
  4. 重复合并步骤:不断重复步骤 2 和步骤 3,直到达到预定的词表大小、合并次数,或者直到不再有有意义的合并(即,进一步合并不会显著提高词表的效益)。
  5. 分词:使用最终得到的词汇表对文本进行分词。

Byte-Pair Encoding (BPE)

核心思想是逐步合并出现频率最高的子词对而不是像Wordpiece计算合并分数,从而构建出一个词汇表。
6. 计算初始词表:通过训练语料获得或者最初的英文中26个字母加上各种符号以及常见中文字符,这些作为初始词表。
7. 构建频率统计:统计所有子词单元对(两个连续的子词)在文本中的出现频率。
合并频率最高的子词对:选择出现频率最高的子词对,将它们合并成一个新的子词单元,并更新词汇表。
8. 重复合并步骤:不断重复步骤 2 和步骤 3,直到达到预定的词汇表大小、合并次数,或者直到不再有有意义的合并(即,进一步合并不会显著提高词汇表的效益)。
9. 分词:使用最终得到的词汇表对文本进行分词。

Byte-level BPE(BBPE)

手撕代码

多头自注意力代码

在这里插入图片描述

from math import sqrt
import torch
import torch.nn as nnclass MultiHeadSelfAttention(nn.Module):def __init__(self, dim_in, dim_k, dim_v, num_heads=8):super(MultiHeadSelfAttention, self).__init__()assert dim_k % num_heads == 0 and dim_v % num_heads == 0, "dim_k and dim_v must be multiple of num_heads"self.dim_in = dim_inself.dim_k = dim_kself.dim_v = dim_vself.num_heads = num_heads# 定义线性变换矩阵self.linear_q = nn.Linear(dim_in, dim_k, bias=False)self.linear_k = nn.Linear(dim_in, dim_k, bias=False)self.linear_v = nn.Linear(dim_in, dim_v, bias=False)# 最后通过线性层将输出映射回原来的维度self.fc_out = nn.Linear(dim_v, dim_in)self._norm_fact = 1 / sqrt(dim_k // num_heads)def forward(self, x):batch, n, dim_in = x.shapeassert dim_in == self.dim_innh = self.num_headsdk = self.dim_k // nh  # dim_k of each headdv = self.dim_v // nh  # dim_v of each head# 线性变换并切分头q = self.linear_q(x).reshape(batch, n, nh, dk).transpose(1, 2)  # (batch, nh, n, dk)k = self.linear_k(x).reshape(batch, n, nh, dk).transpose(1, 2)  # (batch, nh, n, dk)v = self.linear_v(x).reshape(batch, n, nh, dv).transpose(1, 2)  # (batch, nh, n, dv)# 计算注意力dist = torch.matmul(q, k.transpose(2, 3)) * self._norm_fact  # batch, nh, n, ndist = torch.softmax(dist, dim=-1)  # batch, nh, n, n# 根据注意力分数加权值矩阵att = torch.matmul(dist, v)  # batch, nh, n, dvatt = att.transpose(1, 2).reshape(batch, n, self.dim_v)  # batch, n, dim_v# 最后通过线性层融合不同头的输出,并映射回原始维度out = self.fc_out(att)  # (batch, n, dim_in)return out# test
x = torch.randn(2, 10, 128)
attn = MultiHeadSelfAttention(128, 64, 64, 8)
y = attn(x)
print(y.shape)  # torch.Size([2, 10, 64])

反向传播代码

激活函数

激活函数
激活函数
在这里插入图片描述
在这里插入图片描述

deepspeed(数据并行:zero、模型并行、张量并行(magnetron))

Deepspeed加速/优化方式

单byte-Adam / 稀疏注意力计算内核 / 3D并行

三种并行方式

Data Parallelism、Pipeline Parallelism、Tensor Parallelism

数据并行的5个步骤

在这里插入图片描述

通信的术语

all_reduce

在这里插入图片描述

不同分布式聚集的时间和带宽复杂度

在这里插入图片描述

递归的进行all_reduce

在这里插入图片描述

zero1,2,3

在这里插入图片描述

magatron

【Megatron LM 论文精读【论文精读】】https://www.bilibili.com/video/BV1nB4y1R7Yz?vd_source=22a0d494d7d586e6e37e23570688a816
在这里插入图片描述

petf

常用的轻量级微调方法有什么,异同点,与传统的fine-tuning的区别?
部分参数微调策略仅选择性地更新模型中的某些权重,尤其是在需要保留大部分预训练知识的情况下。

BitFit:Fine-tune only the bias terms

在这里插入图片描述

adapter

在这里插入图片描述
将较小的神经网络层或模块插入预训练模型的每一层,这些新插入的神经模块称为 adapter(适配器),下游任务微调时也只训练这些适配器参数;

prompt tuning

在这里插入图片描述

Prefix-Tuning

在这里插入图片描述

prompt tuning和Prefix-Tuning的缺点

在这里插入图片描述
在模型的输入或隐层添加个额外可训练的前缀 tokens(这些前缀是连续的伪 tokens,不对应真实的 tokens),只训练这些前缀参数;

lora

在这里插入图片描述
通过向模型权重矩阵添加低秩矩阵来进行微调,既允许模型学习新的任务特定模式,又能够保留大部分预训练知识,从而降低过拟合风险并提高训练效率。

lora参数量变化: 原矩阵 dd,lora秩为r (一般很小如4、8、16),则新参数量为 2d*r

qlora

在这里插入图片描述
使用一种新颖的高精度技术将预训练模型量化为 4 bit,然后添加一小组可学习的低秩适配器权重,这些权重通过量化权重的反向传播梯度进行微调。

排序算法

插入、交换、选择、归并、基数
稳定性:插入、冒泡、归并、基数

过拟合问题以及如何解决

a) 正则化
b) dropout 在训练和推理阶段分别怎样做
(训练只保留p的神经元激活值,推理激活值除以p恢复数据原始分布)
c) 增大数据规模 / 降低模型复杂度
d) Early-stop策略

L1/L2正则化

为什么加入正则化项只限制参数w,而不限制b

在这里插入图片描述

数据类别不均衡问题以及如何解决

  1. 不均衡时如何评估(类别不均衡时, 准确率意义不大) -> ROC曲线
    在这里插入图片描述
  2. 欠采样 (欠采样+集成学习) / 过采样
  3. 集成学习 + 阈值调整 (如随机森林)
  4. 一些特殊策略 如:focal loss (对难分类样本附加高权重)

举例三个线性的机器学习方法和三个非线性的机器学习方法

区分线性非线性:决策边界是否线性
线性:线性回归分类器,贝叶斯分类,单层感知机,SVM(线性核)等
非线性:决策树、随机森林、GBDT、SVM(非线性核)、多层感知机、神经网络

交叉熵 / 互信息 / 信息熵 公式

在这里插入图片描述

MOE机制原理

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144177.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

halcon中的放射变换

放射变换原理 怎样计算放射变换 仿射变换affine是透视变换的子集 - 仿射矩阵 仿射变换矩阵为2*3的矩阵,第三列的元素起着平移的作用,前面两列的数字对角线上是缩放,其余为旋转或者斜切的作用 - 计算仿射矩阵只需要3对不共线的点 定义 指…

SOMEIP_ETS_117: SD_Entry_references_options_of_same_kind

测试目的: 验证DUT能够处理一个包含两种相同类型选项的SubscribeEventgroup消息,DUT可以选择拒绝订阅尝试或忽略该请求。 描述 本测试用例旨在确保DUT遵循SOME/IP协议,当接收到一个包含重复相同类型选项的SubscribeEventgroup消息时&#…

英飞凌 PSoC6 RT-Thread 评估板简介

概述 2023年,英飞凌(Infineon)联合 RT-Thread 发布了一款 PSoC™ 62 with CAPSENSE™ evaluation kit 开发板 (以下简称 PSoC 6 RTT 开发板),该开发套件默认内置 RT-Thread 物联网操作系统。PSoC 6 RTT 开…

window.open()地址栏隐藏问题解决方案

问题 使用window.open打开一个页面时,想要隐藏地址栏,但是无效。 window.open (test.html,newwindow,height100,width400,top0,left0,toolbarno,menubarno,scrollbarsno, resizableno,locationno, statusno)由于浏览器区别和安全问题,浏览器…

idea工具,一个项目开启多个项目运行窗口并且显示端口,service窗口

在多数情况下,通常会打开一个项目,里面有多个项目需要运行,这里教大家怎么开启多个窗口来查看项目运行状态,最终效果如下。 点击view -> Tool Windows-> Services 点击services之后,会在下面出现这个页面。 点击…

8.1差分边缘检测

基本概念 差分边缘检测是一种图像处理技术,用于检测图像中的边缘。边缘是指图像中灰度值发生显著变化的区域。差分边缘检测通常通过计算图像的梯度来实现,梯度反映了灰度值的变化率。在OpenCV中,可以使用不同的算子来检测不同方向的边缘&…

R18 NES 之SSB-less SCell operation for inter-band CA

在TR 21.918 Summary of Rel-18 Work Items 中可以看到SSB-less SCell operation for inter-band CA 是Network energy savings for NR 的一部分,其中还包括cell DTX/DRX 等等其他内容。 网络节能是 5G/NR 成功的关键,可以减少对环境的影响(温室气体排放)并节省运营成本。R…

Linux-vim使用

文章目录 一、什么是vim二、vim模式2.1 正常模式下的快捷键2.2 vim的基本操作2.3 vim末行模式命令2.4 vim操作总结 三、配置vim3.1 配置文件的位置3.2 常用配置选项,用来测试3.3 使用插件3.4 使用git 一、什么是vim vi/vim的区别简单点来说,它们都是多模式编辑器&am…

poi生成的ppt,powerPoint打开提示内容错误解决方案

poi生成的ppt,powerPoint打开提示内容错误解决方案 最近做了ppt的生成,使用poi制作ppt,出现一个问题。微软的powerPoint打不开,提示错误信息 通过xml对比工具发现只需要删除幻灯片的某些标签即可解决。 用的是XML Notepand 分析思路: 1.把poi生成的pptx用wps打开,正…

每日学习一个数据结构-红黑树

文章目录 什么是红黑树?示意图红黑树的特点红黑树的节点结构插入和删除操作旋转操作重新着色 红黑树的应用 树的构造过程插入新节点自平衡调整策略 示例 查询过程 什么是红黑树? 红黑树(Red-Black Tree)是一种自平衡的二叉查找树…

小程序体验版无法正常请求接口,开启 调试可以正常请求

在本地开发工具可以正常访问小程序,上传代码后打开体验版,界面无法请求接口,手机小程序打开调试模式可以正常访问。这可以查看下小程序后台是否设置了服务器域名以及业务域名 然后查看小程序开发工具 - 详情 - 项目配置 重新上传代码&#xf…

基于vue框架的宠物寻回小程序8g7el(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:发布人,宠物分类,宠物信息,接取人,接取信息,完成信息 开题报告内容 基于Vue框架的宠物寻回小程序开题报告 一、研究背景与意义 随着城市化进程的加快和人们生活水平的提高,宠物已成为许多家庭不可或缺的一员。它们不仅为生…

yolov5测试代码

一般源码的测试代码涉及很多文件,因项目需要写一个独立测试的代码。传入的是字典 import time import cv2 import os import numpy as np import torch from modules.detec.models.common import DetectMultiBackend from modules.detec.utils.dataloaders import …

工业交换机如何保证数据的访问安全

在现代工业自动化环境中,工业交换机作为关键的网络设备,扮演着数据传输和信息交互的重要角色。为了确保数据的访问安全,工业交换机不仅具备高效的转发性能,还集成了多层次的安全防护机制,以抵御各种潜在的网络威胁。 首…

输电线螺栓销钉缺失检测数据集

输电线螺栓销钉缺失检测数据集共1209张。标注文件为YOLO适用的txt格式以及VOC格式。可以直接用于模型训练。 类别:缺失和不缺失 包含yolov7tiny训练验证结果以及权重文件和数据集。 数据集亮点: 丰富的图像资源: 本数据集包含1209张高质量…

PHP及Java等其他语言转Go时选择GoFly快速快速开发框架指南

概要 经过一年多的发展GoFly快速开发框架已被一千多家科技企业或开发者用于项目开发,他的简单易学得到其他语言转Go首选框架。且企业版的发展为GoFly社区提供资金,这使得GoFly快速框架得到良好的发展,GoFly技术团队加大投入反哺科技企业和开…

268页PPT大型集团智慧工厂信息化顶层架构设计(2024版)

智能制造装备是高端制造业的关键,通过整合智能传感、控制、AI等技术,具备了信息感知、分析规划等智能化功能,能显著提升加工质量、效率和降低成本。该装备是先进制造、信息、智能技术的深度融合。其原理主要包括物联网集成、大数据分析与人工…

Windows Server2016多用户登录破解

使用场景 很多时候,公司开发和测试运维会同时登录同一台windows服务器进行查询、更新、维护等操作,本文就来介绍一下Windows2016配置多人远程桌面登录实现,感兴趣的可以了解一下。 操作流程 (1)首先桌面需要安装远程…

详解x86汇编指令:test edx, edx

前言 有不少新手在学习汇编指令的时候可能会被网上一些人误导(很显然我就被误导了),认为test与cmp指令相同,都是在比较两个值是否相同的,那么来看这两个指令: test edx,edx jne 0040BCA3jne 指令为不等于0…

18.DHT11编程案例

温湿度传感器 产品概述 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,应用领域:暖通 空调;汽车;消费品;气象站;湿度调节器;除湿器;家电;医疗…