Skip to main content
  1. CheatSheet/

Basic Nerual Networks

Survey

Arcitecture
#

所有类型的神经网络都可以看成是线性变换+交互。线性变换是不变的,即对每一个像素/token/节点的特征向量进行相同的Linear+Activation;交互则取决于具体的任务:CNN的交互是相邻的像素点加权平均,RNN的交互是下一个token依赖上一个token,Transformer的交互是token与token之间的注意力加权平均,GNN的交互是一阶邻域内节点的加权平均。大部分模型结构层面的优化也是根据任务场景来设计新的交互方式。

CNN
#

Series Model Time Consumption
UNet UNet 2014 跳跃连接,精细分割
RCNN RCNN 2013 用CNN做Dectection,再用CNN做Classification 40-50s
Fast-RCNN 2015 使用同一个CNN计算bounding box和Label 2s
Faster-RCNN 2015 去除了Selective Search 0.2s
Mask-RCNN 支持Instance Segmentation
YOLO Yolo v1 2015 用回归问题统一了Bounding Box的坐标预测和类别预测
Yolo v2 2016 支持不同输入尺寸
Yolo v3 2018 支持多标签;引入多尺度;
Yolo v4, v5, v6 2020
2021
Yolo v6, v7 2022
Yolo v8 2023

RNN
#

感觉已经G了,不想写了,随便写点吧

Model
RNN t时刻的输出与t时刻的输入和t-1时刻的隐状态有关
LSTM 设置遗忘门、输入门和输出门,输出是记忆和输入的加权和,以达到选择性遗忘和选择性输入的目的。
Mamba 一文通透想颠覆Transformer的Mamba:从SSM、HiPPO、S4到Mamba

Transformer
#

7

注意力机制:计算每个向量(Q)与其他向量(K, V)的相关性,用加权和取代原来的向量

多头:将c维向量拆成n个c/n维向量,分别使用注意力机制,然后再拼接回

多头注意力的使用方式 并行计算
自注意力 Encoder 第n个token是Q,当前Encoder层输入的所有token是K和V 完全并行
Decoder 第n个token是Q,当前Decoder层输出的前n-1个token是K和V 高度并行(Teacher Forcing)
交叉注意力 Decoder 第n个token是Q,最后一层Encoder输出的所有token是K和V 高度并行(Teacher Forcing)
Series Model
BERT Roberta 字节对编码(BPE);动态掩码;去除NSP;大bs和大lr;10倍规模的数据集;
Albert Embedding低秩矩阵分解;NSP改成SOP;跨层attention参数共享;
ERNIE (THU) 设计Aggregator来使文本和实体进行充分交互;使文本在映射后可以预测实体;
ERNIE1.0 (Baidu) 在MLM阶段额外进行phrase-level和entity-level的mask
ERNIE2.0 (Baidu) 持续多任务学习,渐进地增加更复杂的任务
GPT GPT-2 Pretraining+Zero-Shot 在9个任务上超过有监督SOTA;在摘要、翻译、问答等任务上不如无监督模型
GPT-3 Pretraining+Few-Shot 超过了有监督BERT,尚未超过有监督SOTA
GPT3.5:InsturctGPT GPT3+SFT+RM+PPO
VIT 将图片拆成patch,每个patch通过reshape和MLP转化为词向量,送入Tansformer的encoder
SwinTransformer
UNETR Transformer Encoder + UNet Decoder
SwinUnet

GNN
#

在神经网络兴起之前,主流方法是通过构造合理的度量函数来优化每个实体的表示

KG2E 度量函数 建模关系
TransE 平移 Inversion; Composition
DisMult 双线性 Symmetry;
CompIEx 复空间内积/共轭内积 Symmerty; Antisymmerty
RotateE 复空间旋转 Inversion; Compostition; Symmertry;

随着神经网络的发展,GNN被提出,通过建模邻域节点的特征,来获取更好的中心节点表示;GNN的层数一般取2或3

_

GNN 聚合方式
GCN 邻域内平均
GAT 邻域注意力加权
GraphSAGE 邻域,区分自身和邻居

通常情况下,每次前向传播是将采样的子图作为一个Batch,以当前子图上所有含有标签的节点/边作为监督信号计算Loss并进行反向传播。

Application
#

VAE
#

变分:用人为构造的分布近似无法准确获知的分布;例如在贝叶斯公式中丢弃分母就是一种变分

熵:信息量的期望;概率越小熵越大;独立事件的熵具有可加性

KL散度:真实分布和估计分布的交叉熵-真实分布的熵;两个分布差别越大,KL散度越大;不是对称度量;

推导:为了用Encoder拟合出$P(z|x)$的分布,需要最小化两者的KL散度,然后通过推导(X的分布于Z的分布无关,联合概率和条件概率,等等)得出只需最大化ELBO,进一步化简ELBO的相反数,即可得到损失函数

损失函数:Z条件下X的分布的对数似然(正态分布下是X和预测结果的插值)+ X条件下Z的分布和正态分布的KL散度(有解析解)

重参数化:将采样转化为标准正态随机变量和X条件下Z分布的参数的线性运算

DDPM
#

前向(加噪):给定某个图像,视为从latent space中的一次采样,可以计算出从噪声扩散成图像的过程中的每一步图像,常见的步数有10步、20步、100步

逆向(去噪/采样):训练神经网络,可以从每个时刻扩散到下一时刻,并基于最新时刻的采样点,,扩散成想要的图像

应用

  • Restoration:根据加噪类型,添加合理的逆变换,以最大程度保留原图特征,然后基于此训练扩散模型

  • Generation:施加不同的噪声,产生多样化的结果