GithubHelp home page GithubHelp logo

tdcsu / algorithm-engineer-prepares Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jzsherlock4869/algorithm-engineer-prepares

0.0 0.0 0.0 34.99 MB

A brief collections of (minimal) required knowledge for algorithm engineers. Including computer vision, deep learning, machine learning and other basic algorithms

algorithm-engineer-prepares's Introduction

Algorithm Engineer Prepares

算法工程师的自我修养

【一个关于算法类的最小必要知识梳理】(持续更新ing)

visitors


基础概念

图像分类经典模型(LeNet、AlexNet、VGG、ResNet、GoogLeNet)

语义分割任务经典模型(FCN、Unet、RefineNet、PSPnet、SegNet)

目标检测任务基础模型(两阶段、一阶段,包括R-CNN系列、YOLO系列、SSD)

实例分割基本概念与经典模型

计算机视觉中的loss函数

CNN的轻量化方法基本概念(剪枝、蒸馏、量化、小网络)

蒸馏(distillation)的基本原理;

YOLO实现细节;

DeepLab实现细节;

非极大值抑制方法(NMS)及其实现;

数据增广与测试时增强(TTA);

low-level任务基本概念;

RoIAlign算子具体代码实现(以facebook的maskrcnn-benchmark为例)

DeepLab中的CRF的实现

低层视觉技术(low-level task)

图像去噪;去雾;超分辨率;去雨雪;

分割与检测

DeepLab系列模型内容梳理

并行的多尺度融合策略:HRNet

多次稠密上采样后融合的unet加强版:Unet++

OCRNet(Object Contextural Representation):基于transformer attention机制的上下文关联策略

Dilated Residual Net(DRN):空洞卷积改进resnet

MS COCO 数据集的实例分割/目标检测的annotation基本格式

anchor-free目标检测模型之:FCOS(多尺度、相对位置、centerness)

COCO数据集的官方api的基本用法(get类别/图像/标注Id、load图像/标注信息)

生成模型(GAN etc.)

生成对抗网络GAN基本原理与问题

Wasserstein GAN:log微操防止JS散度的梯度消失和logD trick的模式坍塌

Cycle GAN;Style GAN;

神经网络鲁棒性与攻击

神经网络的鲁棒性(clever Hans效应)

轻量化模型

Mobilenet系列模型梳理

Shufflenet v1&v2:分组卷积加通道shuffle信息交互

Squeezenet:压缩通道学特征与膨胀

Ghostnet:ghost特征加简单变换生成丰富feature map

Efficientnet:通道数、深度、分辨率的复合NAS搜索优化

小样本学习

小样本基本概念

小样本分割经典模型梳理

  • OSLSM 2017 (Pascal 5i做交叉验证,weight hashing,sup和que最终特征logistic回归)
  • SG-One 2018 (mask pooling + cosine sim)
  • Prototype Alignment Network (PANet) 2019 (alignment,一种类cycle loss)
  • FSS-1000(relation net) 2019 (主要是数据集FSS-1000,适用于小样本分割的数据集)
  • CANet: Class-Agnostic Segmentation 2019(对结果进行 refinement)
  • BMVC 2018 2018(网络设计较复杂)
  • Prototype Mixture Models(PMM) 2020 (将prototype拆成多个)
  • Prior Guided Feature Enrichment Network(PFENet) 2020(先生成无须训练的prior,后接多特征融合)
  • FSIL(Few shot Seg Image Level) 2020 (利用image-level的弱监督信息做few shot seg)

弱监督学习

TBD

骨干网络(backbone)

Resnet变体;SENet;DenseNet;Inceptions;


基础概念

数据处理和评估中的常用度量指标(AUC/KS/Gain/Lift)

特征分箱原则与策略(等频分箱、等距分箱、卡方分箱、bestKS分箱)

特征分析之单变量分析(WOE/IV/PSI)


损失函数

最常用的损失函数(BCE、交叉熵、MSE、MAE)

PyTorch中定义的其他几种损失函数(NLL、Multi-label、Huber、Triplet Loss等)

分割和检测任务中的损失函数(IoU loss、Dice loss、Lovasz loss)

下降方法与学习率策略

梯度下降法及其变体(Momentum、Nesterov、RMSprop、Adagrad、Adam、AdamW等)

牛顿法和拟牛顿法:二阶优化的策略

Gradient Clipping:梯度裁剪,防止梯度爆炸的手段

L1 norm下的优化;ISTA&FISTA;学习率策略;ADMM;

激活函数

常见激活函数(sigmoid/ReLU/Maxout 等)

RELU6:适应低精度计算的有界激活函数

GELU:依据高斯分布cdf计算设计的激活函数

Swish:光滑非单调下有界的self-gating函数

卷积层设计

分组卷积;deformable(可变)卷积

初始化方法

常用初始化方法(随机初始化、xavier初始化、kaiming初始化)


必备基础

SVM、逻辑回归、决策树的关键内容整理

kNN与k-d树:简单算法的工程优化

集成学习方法(bagging、boosting、stacking)、梯度提升原理

进阶模型与算法

隐马尔科夫模型HMM;MCMC;Viterbi算法;

无权重二部图最大匹配的匈牙利算法(Hungarian Algorithm)、赋权图Kuhn-Munkres算法

宽表数据建模常用集成模型:XGBoost、GBDT、LightGBM,原理与区别


基础概念

注意力机制;

视觉Transformer

ViT模型基本原理:image=16x16 words

DETR:基于transformer的端到端目标检测(bbox集合预测、二分匹配)

Swin Transformer;SETR;DeiT;CaiT;Segmenter;SegFormer;MLP-Mixer(非transformer);


必备基础

文本数据预处理:分词、去停用词、tfidf编码

主题模型;

基本NLP模型

最基础的词嵌入模型Word2vec(skip-gram & cbow)

GloVe词嵌入:基于共现矩阵学习词间关系差别的嵌入方法

ELMo:基于语言模型的bi-LSTM的基于上下文动态嵌入的模型,处理一词多义(芝麻街命名模型第一弹)

FastText:Facebook开源的文本分类和词嵌入工具包

GPT系列:Generative Pre-Training,单向Transformer,非监督预训练+下游任务微调

BERT:谷歌开放的基于bidirectional Transformer的最强语言模型,BERT yyds !

NLP模型实现的相关tricks

Negative Sampling:词嵌入训练中的负采样操作

Hierachical Softmax:基于Huffman编码的高输出维度(词典大小)的优化方法


0x006 信息论

TBD


0x007 矩阵论

TBD


TBD


并行化策略(DataParalle和DistributedDataParallel)与多机多卡训练


数据结构:单调栈(MonoStack)基本原理

Huffman树与Huffman编码:最优权重路径的无损压缩编码算法

跳表(skiplist):基于多级别索引的查找复杂度log(n)的链表

并查集(union-find):近乎常数操作复杂度的不相交集合查询

Trie(字典树/前缀树)字符串前缀匹配查询

自平衡的二叉查找树:AVL树(平衡因子,左旋、右旋)


TBD


经典推荐算法:协同过滤(Collaborative Filtering,CF)

Matrix Factorization:从用户-物品矩阵中分解出用户和物品的特征隐向量

LR模型及其改进版MLR(piece-wise LR):一阶特征建模的CTR预估

POLY2:二阶特征交叉

FM(因子分解机)和FFM(Field-aware FM):隐向量内积实现特征交叉权重


图嵌入方法DeepWalk:利用random walk将图嵌入转为词嵌入

LINE:基于一阶相似度和二阶(邻域)相似度的图嵌入方法

node2vec:通过参数整合BFS和DFS的游走采样

PyTorchBigGraph:一种分块的处理大图的方法和框架,Facebook出品


>> Git相关

>> hadoop相关

>> SQL相关

>> Docker相关

>> 后端开发语言

==== Python相关

Python的反射机制及其使用方法

Python中的类(class)的原理与特点

Python的垃圾回收机制(Garbage Collection)

Python的with语句执行原理

Python中的函数wrapper和装饰器(decorator)

Python的线程、进程,与协程(Corountine)的基本概念

==== Java相关

>> 前端开发语言

algorithm-engineer-prepares's People

Contributors

jzsherlock4869 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.