需要的数学基础:
数学课本
有了基础的《概率/统计》、《线性代数》、《微积分》知识,就可以上手深度学习的算法和实践了。但经过一段时间的工程实践,慢慢觉得大多数时间都用在选模型,调超参,或者是网络结构的排列组合上。深度学习的黑盒特性越来越明显。难道深度学习工程师就当真是数据“炼丹师”吗?机器学习以数学理论为基础,要学好机器学习必须做好艰苦奋斗的准备,坚持对数学知识的追求。掌握机器学习至少需要微积分,线性代数,概率论,统计学,优化理论等五种数学的基本知识。
《高等数学同济第七版》上下册
《线性代数同济第六版》
《概率论与数理统计浙大第四版》
《最优化理论与方法》,袁亚湘,孙文瑜,科学出版社
《最优化理论与算法(第2版)》,陈宝林,清华大学出版社
《最优化方法及其MATLAB实现》,许国根,北京航空航天大学出版社,配套资源下载
《神经网络与深度学习》,邱锡鹏,复旦大学,https://github.com/nndl/nndl.github.io
人工智能必备高等数学知识点清单
AI 技术岗所要求的高等数学知识,大致可以分为四个方面:微积分、概率统计、线性代数,和最优化理论。
每个分领域都至少是一本书(也可以是一摞书)。我们在这里暂且抽取和机器学习、深度学习相关的最基础部分,给大家做一下聚焦:
【微积分】
基础概念(极限、可微与可导、全导数与偏导数):只要学微积分,就必须要明白的概念,否则后面什么都无法继续学习。
函数求导:求导是梯度的基础,而梯度是 AI 算法的基础,因此求导非常重要!必须要搞清楚概念,并学会常见函数的导函数求法。
链式法则:符合函数求导法则,反向传播算法的理论基础。
泰勒公式和费马引理:这两者也是梯度下降法的基础组成,重要程度与求导相同。
微分方程及其求解:很重要,是部分机器学习模型求解的必备知识。
拉格朗日乘子法和对偶学习:理解 SVM/SVR 的理论基础。SVM/SVR 作为机器学习模型的常用“中坚力量”,其重要程度不言而喻。
【概率统计】
简单统计量(个数、最大值、最小值、中位数、均值、方差)及其物理意义:概率统计的概念基础。
随机和抽样:随机——概率统计成立的基础;抽样——统计的方法。
频率和概率,以及概率的基本概念:搞清什么是概率,它和频率的区别与联系。
几种常见的概率分布及公式(平均分布、二项分布、正态分布……)
参数估计:只知道大致的分布,不知道具体的参数怎么办?没关系,我们可以根据估计一下。其中最重要的是极大似然估计。
中心极限定理:如果不知道某事物的概率分布该怎么办?没关系,就当它符合正态分布好了。可是为什么能这样近似呢?因为我们有中心极限定理呀。
假设验证:到底假设得对不对呢?我们根据样本来验证一下。
贝叶斯公式:太重要啦!是它使得我们可以根据先验概率来预测后验概率。而朴素贝叶斯公式自己就是朴素贝叶斯模型本身啊。
回归分析:想想那么多名字里有“回归”的模型吧!
状态转移网络:概率链、隐马尔可夫模型和条件随机场。
【线性代数】
向量与标量:用向量和标量表示事物特征的差别是什么?
向量空间,向量性质及向量的几何意义:所谓高维低维指的是什么?同一个向量能否存在于不同的向量空间里?向量的移动、转向和拉伸是如何做到的?
线性函数:什么是线性函数,它具备怎样的性质?
矩阵和矩阵运算:矩阵出现的目的是什么?掌握矩阵的基础运算(与常数/向量/矩阵的加法和乘法)。
特殊矩阵(方阵、实对称矩阵、(半)正定/负定矩阵等)及其性质:根据不同的性质,我们可以划分出哪些特殊矩阵,它们都有哪些特殊性质?
特征值和特征向量:定义、性质,以及特征值求解。
用矩阵求解微分方程。
正交:什么是正交?函数的正交,向量的正交,和超平面的正交分别是如何形式化表达的,又具备怎样的物理意义。
【最优化方法】
凸函数与极值:搞清楚什么是凸函数,凸函数与极值的关系,极值和最值的关系等。
注意:国内不同教科书对于“凸”的定义存在不一致的情况,有些书上把其他书上说的“凸函数”叫做“凹函数”。
直观而言,我们一向说的“凸函数”是那类一维自变量情况下看起来像个“U”,二维自变量下像个碗的那种函数。
最优化:什么是最优化问题?什么是最优化方法?无限制条件和有限制条件下的最优化方法基本原理分别是什么?
梯度下降法:最基础最常用的最优化方法,以及其他若干最优化方法的基础,务必全面掌握。
其他最优化算法:了解其他一些常用最优化方法,例如,牛顿法、共轭梯度法、线性搜索算法、模拟退火算法、遗传算法等。
AI数学基础
一、高等数学:
导数:
一阶导数:实际计算中,离散情况下,两个点参与差分计算,分为前项求导和后项求导;
二阶导数:实际计算中,离散情况下,三或四个点参与差值计算,分为中间差分、前项差分和后项差分;
梯度:
梯度概念是建立在偏导数和方向导数概念基础上的。偏导数:对于一个多元函数,选定一个自变量并让其他自变量保持不变,只考察因变量与选定变量的变化关系。
泰勒展级数(泰勒公式):
泰勒展级数是部分机器学习和深度学习算法实用性解释的基础。泰勒公式,应用于数学、物理领域,是一个用函数在某点的信息描述其附近取值的公式。如果函数足够平滑的话,在已知函数在某一点的各阶导数值的情况之下,泰勒公式可以用这些导数值做系数构建一个多项式来近似函数在这一点的邻域中的值。泰勒公式还给出了这个多项式和实际的函数值之间的偏差。
二、凸优化:
最优化问题:
函数存在最大值和最小值
无约束优化:
没有约束条件,函数本身就是凸函数,在全空间上存在最小值。采用求导的方式进行处理。
约束优化:
等式约束(拉格朗日乘子法)、不等式约束(KKT条件&拉格朗日乘子法)
线性代数(矩阵计算):
标量:0阶张量,只有大小,没有方向
矢量:1阶张量,有大小,也有方向
矩阵:
矩阵乘法【点乘、叉乘、卷积(卷积神经网络中主要适用该矩阵运算进行处理) 】
矩阵转置
特殊矩阵【对角矩阵、对称矩阵、正交矩阵、正定矩阵】
矩阵求导【一阶导数、二阶导数】
矩阵分解【特征值分解、奇异值分解(旋转、拉伸、映射)】
矩阵的迹【矩阵主对角线上元素和】
张量:张量的学习涉及到深度学习里张量相关的变换操作
三、概率统计:
随机变量及其分布:
在随机实验中,可能出现也可能不出现,而在大楼重复实验中具有某种规律性的事件,叫做随机事件。
随机事件:
随机变量:连续随机变量、离散随机变量
分布律:随机事件取到某个可能值的概率
概率分布:伯努利分布、二项分布、泊松分布、正态分布
随机变量的数字特征:
期望(均值)
方差:方差大,说明数据的波动性较大,数据分布不稳定,含有信息量多,对样本的区分度较大,。在实际应用中,主要的应用方向包含两个方面,意识特征旋转,另一个是模型评估。模型输出若是方差大,说明与真实输出差距相对较小(偏差小),说明模型有可能过拟合。
协方差:协方差、相关系数和协方差矩阵主要用于衡量属性之间的相关性,其中相关系数取值在[-1,1],在进行特征处理时,可以作为特征选择的依据。
相关系数
协方差矩阵
卡方检验
大数据定律及中心极限定理:
大数定律
中心极限定理
参数估计与假设检验:
参数估计、假设检验、矩阵估计、最小二乘法、最大似然估计法
四、信息论:
信息熵:事件发生的不确定性
信息增益:信息熵的变化量
GINI指数:样本的不纯度
https://github.com/mml-book/mml-book.github.io
主流开发框架
TensorFlow 和 PyTorch 依然维持着「业界 vs 学界」分庭抗礼的局面。但是随着 PyTorch 的高歌猛进,这样的局面可能不久就会变化。Tensorflow对于机器学习新手来说并不是很友好,Tensorflow自己也有高层API,比如Estimator和tf.data就相对来说更容易上手。Keras本来是独立的机器学习框架,但已经逐渐被整合进了Tensorflow。
TensorFlow:
关于TensorFlow | TensorFlow中文官网 官网
https://github.com/tensorflow/tensorflow
PyTorch
PyTorch
https://github.com/pytorch/pytorch
主页 - PyTorch中文文档 中文文档
Caffe:贾扬清
卷积神经网络框架
Caffe | Deep Learning Framework
Keras
是一个封装了 TF 等深度学习框架的代码库,具有很好的易用性。TensorFlow 为了解决饱受诟病的上手困难问题而引入了 Keras 的 API。但是从 TensorFlow 的定位和功能来看,和 Keras 的结合在目前来说不够成功。
Keras: the Python deep learning API
PaddlePaddle
百度飞浆,PaddlePaddle (PArallel Distributed Deep LEarning)是一个易用、高效、灵活、可扩展的深度学习框架
飞桨PaddlePaddle-源于产业实践的开源深度学习平台
https://github.com/PaddlePaddle
PaddlePaddle: 源于产业实践的开源深度学习平台,飞桨致力于让深度学习技术的创新与应用更简单
PaddlePaddle_飞桨PaddlePaddle_CSDN博客
旷视Brain++
旷视Face++
Face⁺⁺ - 旷视Face⁺⁺人工智能开放平台
MegEngine-深度学习,简单开发
https://github.com/MegEngine/MegEngine 20200325旷视开源自研深度学习框架,中文名天元——取自围棋棋盘中心点的名称
清华计图
Jittor的研发团队是清华大学计算机系的图形学实验室,负责人现为胡事民教授,长期从事可视媒体智能处理的研究。
https://github.com/Jittor/Jittor
港中文-商汤Open-MMLab
OpenMMLab 为香港中文大学-商汤科技联合实验室 MMLab 开源的算法平台。
Redict to new OpenMMLab Homepage
MMCV是用于计算机视觉研究的基础Python库,支持OpenMMLab旗下其他开源库。
https://github.com/open-mmlab/mmcv
主要功能是I/O、图像视频处理、标注可视化、各种CNN架构、各类CUDA操作算子。
MMDetection是基于PyTorch的开源目标检测工具箱。是OpenMMLab最知名的开源库,几乎是研究目标检测必备!
https://github.com/open-mmlab/mmdetection
MMDetection3D该库是专门用于3D目标检测的开源库。
MMSegmentation是一个基于PyTorch的开源语义分割工具箱。
MMClassification是基于PyTorch的开源图像分类工具箱。
MMPose是一个基于PyTorch的开源姿势估计工具箱。
MMAction是一个基于PyTorch开放源代码的工具箱,用于动作理解。
MMAction2是一个基于PyTorch开放源代码的工具箱,用于动作理解。
MMSkeleton用于人体姿势估计,基于骨架的动作识别和动作合成。
MMFashion是一个基于PyTorch的开源视觉时尚分析工具箱。
MMEditing是基于PyTorch的开源图像和视频编辑工具箱。
OpenPCDet是一个清晰,简单,自成体系的开源项目,用于基于LiDAR的3D目标检测。
OpenUnReID是研究用于目标重识别的无监督学习和无监督域适应的开源库,基于PyTorch实现。
OpenSelfSup是基于PyTorch的无监督表示学习工具箱。
腾讯优图
https://github.com/TencentYoutuResearch/
https://github.com/jantic/DeOldify
Andrew Ng:吴恩达
https://github.com/deeplearning-ai/machine-learning-yearning-cn
https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes 黄海广,计算机博士,深度学习笔记 (吴恩达) 5.7
https://github.com/fengdu78/deeplearning_ai_books
机器学习初学者-AI入门的宝典
微软
https://github.com/microsoft/computervision-recipes
京东
https://github.com/JDAI-CV/FaceX-Zoo
言有三
《深度学习之图像识别 核心技术与案例实战》
《深度学习之模型设计 核心算法与案例实践》
https://github.com/longpeng2008
https://github.com/longpeng2008/yousan.ai
言有三 - 知乎
若干开源应用
1、基于tensorflow框架的工业缺陷检测
https://github.com/sundyCoder/DEye
基于深度学习的工业缺陷检测(DEye)。Defect Eye是一个基于tensorflow1.4的开源软件库,专注于表面缺陷检测。 应用领域涵盖制造环境中的所有屈服应用,包括进入工艺工具认证,晶圆认证,玻璃表面认证,光罩鉴定,研究和开发以及工具,工艺和生产线监控。 此外,它可用于医学图像的检测,包括肺PET / CT,乳房MRI,CT Colongraphy,数字胸部X射线图像。
2、静默活体检测(Silent-Face-Anti-Spoofing)
https://github.com/minivision-ai/Silent-Face-Anti-Spoofing
若干博客
qq_29462849的博客_Tom Hardy_CSDN博客
深度学习在自动视觉检测中的血泪史
主流深度学习框架对比(TensorFlow、Keras、MXNet、PyTorch)
若干开源教程
动手学深度学习
https://github.com/d2l-ai/d2l-zh
https://github.com/d2l-ai/d2l-en