Python2AI
从零开始学习人工智能,学习路线如下:
1. Python
- 1.2w 星!火爆 GitHub 的 Python 学习 100 天 | GitHub-Python-100-Days
- 伸手党的福音,6个Python练手项目
- GitHub-The-Flask-Mega-Tutorial GitHub-中文 | 英文原文地址
- Django 入门完全指南 中文地址 | 英文原文地址
- Flask Vue.js全栈开发教程系列
1.1 第一阶段 - Python基础学习(4月初-5月中旬)
5-7天自学掌握Python基础知识,然后进行Python基础知识测验。根据测试结果考虑是否重新学习Python基础知识。
注:廖雪峰教材看累了,可以换着看看莫烦的Python视频。
-
Python基础阶段需要掌握知识点
- Python基础类型:数字类型、None类型、Bool类型、字符串类型
- Python常用内置数据结构:列表(list)、元组(tuple)、字典(dict)、集合(set)
- Python逻辑控制与操作:If分支语句、for/while循环控制、try...except异常处理
- Python函数:定义函数、函数参数、函数式编程
- Python类与模块:类构造、类实例化、模块介绍、模块加载和使用
- Python的IO编程:文件读写
- Python进程与线程:进程与线程区别
-
Python基础测验 完成上面的基础学习后,可以在下面的题目中小试牛刀:
1.2 第二阶段 - Python玩转算法(5月中旬-6月底)
30天左右时间掌握Python实现基础算法,然后完成牛客网的《剑指Offer》和牛客网的LeetCode经典编程题的练习。
算法刷题技巧:
学习分三个部分:
- 自己去 牛客网的《剑指Offer》 做题系统中进行python练习
《剑指Offer》pdf书籍已经放到algorithm
- 自己去 牛客网的LeetCode经典编程题 做题系统中进行python练习
- 自己学习慕课网视频《玩转算法面试 leetcode题库分门别类详细解析》
在 算法作业集 中自主记录完成的习题并定时反馈结果, 算法作业集 实现代码上传至 solution_sample 文件夹中。
学习目标:
-
需要掌握的题目类型:
- 数组
- 字符串
- 查找
- 排序
- 链表
- 堆栈
- 树+递归
- 回溯法
- 动态规划
- 贪心算法
-
需要完成目标:
- 希望第二阶段结束后,可以把牛客网的《剑指Offer》全部刷完。
- 希望第二阶段结束后,可以把牛客网的LeetCode经典编程题全部刷完。
1.3 第三阶段 - Python进阶学习(5月中旬-5月底)
1天学习基于Python的经典库。14天完成一个Python爬虫工具。
-
基于Python的经典库(1天了解经典库)
- Numpy
- 这是一个非常有名的数据分析库。从计算数据分布的中位数,到处理多维数组,NumPy 都可以帮你完成。
- Pandas
- 这是用来处理 CSV 文件的。当然了,你还需要处理一些表格、查看统计数据等,那 Pandas 就是可以满足你的需求的工具。
- Matplotlib
- 把数据存储在 Pandas 的数据框后,你可能需要做一些可视化来理解数据的更多信息。毕竟一图抵千言。
- Seaborn
- 这是另一个可视化工具,但这个工具更侧重于统计结果的可视化,比如直方图、饼图、曲线图或相关性表等。
- Scikit-Learn
- 这是用 Python 实现机器学习的终极工具。所谓用 Python 实现机器学习指的就是这个——Scikit-Learn。所有你需要的从算法到提升的内容都能在这里找到。
- 干货|理解Python爬虫基础知识
- Numpy
-
Python爬虫项目(14天)
- 1天完成练手项目 3 个适合新人上手的Python项目(附代码!)
- 13天完成爬虫工具 找一个感兴趣的爬虫项目练习
1.4 大牛阶段 - Python高级学习(选学)
- Python高级用法
- Python对象的比较与复制
- 值传递、引用传递or其他,Python里参数是如何传递的?
- 强大的装饰器
- metaclass
- 深入理解迭代器和生成器
- 揭秘Python协程
- Python并发编程之future
- Python并发编程之asyncio
- 你真的懂Python GIL(全局解释器锁)吗?
- Python垃圾回收机制
- SWIG:TensorFlow等流行框架背后的Python/C++混合编程技术
- Python实现Web开发框架:Django、Flask
2. 机器学习(6月初-6月底)
以下内容为了解内容,可以学习完整个机器学习内容后,再看:
本阶段学习教材:书籍《统计学习方法》,李航著。统计学习方法书籍pdf/算法Python代码实现/课件
2.1 机器学习基础
- 数据归一化方法
- 过拟合/欠拟合
- 正则化
- 机器学习中的L1和L2正则化项
- L-inifity Norm
- 交叉验证
- 模型评估
- 偏差和方差
- 数据不均衡处理方法
- 优化算法
- 梯度下降算法
- 坐标下降法(Coordinate Descent)
- 随机梯度下降法
- 小批量梯度下降法
2.2 监督学习
-
线性模型
- 线性回归
- 岭回归
- Lasso回归
- ElasticNet回归(弹性网络回归)
- 线性分类
- 逻辑回归(会推导)
- 最大似然
- 多元逻辑回归模型
- SoftMax回归
- 线性回归
-
支持向量机(会推导)->支持向量回归(support vector regression, SVR)
- Max-Margin的方法核心思想
- 线性SVM的一步步构建
- Slack Variable以及条件的松弛
- SVM的Dual Formulation
- Kernelized SVM
- 不同核函数的详解以及使用
- 核函数设计以及Mercer's Theorem
- Kernelized Linear Regression
- Kernelized PCA, Kernelized K-means
- SMO算法
-
决策树
- ID3
- C4.5 -> 随机森林 <- Bagging
- CART -> AdaBoost/GBDT <- Boosting
- CART分类树
- CART回归树
- 信息论
决策树学习要与集成学习联系起来。
-
贝叶斯模型
- 朴素贝叶斯
- 贝叶斯网络
- 正态贝叶斯
- 主题模型(LDA) 以及生成过程
- Dirichlet Distribution, Multinomial Distribution
- 蒙特卡洛与MCMC(马尔可夫链蒙特卡罗算法)
- Metropolis Hasting与Gibbs Sampling
- 使用Collapsed Gibbs Sampler求解LDA
- Mean-field variational Inference
- 使用VI求解LDA
- Stochastic Optimization与Bayesian Inference
- 利用SLGD和SVI求解LDA
- 基于分布式计算的贝叶斯模型求解
- 随机过程与无参模型(non-parametric)
- Chinese Retarant Process
- Stick Breaking Process
- Stochastic Block Model与MMSB
- 基于SGLD与SVI的MMSB求解
- Bayesian Deep Learning模型
- Deep Generative Model
-
浅层神经网络
-
KNN(k-Nearest Neighbor, k近邻学习)
- 距离度量学习
- Weighted KNN算法
- Approximated KNN算法
- KD树
- 近似KD树
- Locality Sensitivity Hashing (LSH, 局部敏感哈希)
-
LDA(线性判别分析) -> KLDA
-
隐马尔科夫模型
-
条件随机场CRF
-
采用方法:马尔可夫链蒙特卡洛方法(MCMC)
2.3 无监督学习
2.3.1 聚类
- K-means聚类(会推导、会写代码)
- K-means++
- 层次聚类算法
- 高斯混合聚类
- 高斯混合模型
- 密度聚类
- DBSCAN
- OPTICS
- Mean Shift
- 谱聚类( Spectral Clustering)
- EM算法以及收敛性
- 基于EM算法的参数估计
- DCSCAN
- 隐变量与隐变量模型
- 隐马尔可夫模型(HMM)的应用以及参数
- 条件独立、D-separation(D分离)
- 基于Viterbi的Decoding
- Forward/Backward算法
- 有向图与无向图模型区别
- Log-Linear Model
- Feature Function的设计
- Linear CRF以及参数估计
2.3.2 降维
- PCA -> KPCA
- SVD
- 流行学习
- LLE
- 拉普拉斯特征映射
- 等距映射
- 局部保持投影
- 主题模型
2.4 集成学习
- 集成模型的优势
- Bagging
- 随机森林
- 完全随机森林
- Boosting
- AdaBoost
- GBDT
- XGBoost
- LightGBM
- CatBoost
- ThunderGBM
- Stacking
- Blending
- 基于残差的提升树训练思想
- 集成不同类型的模型
- VC理论
2.5 强化学习
- 策略迭代
- 价值迭代
- 蒙特卡罗算法
- 时序差分算法
- SARSA算法
- Q学习
- DQN
- 策略梯度
- Policy Learning
- Deep RL
2.6 凸优化
- 凸集、凸函数
- 凸函数与判定凸函数
- Linear/Quadratic/Integer Programming
- 对偶理论,Duality Gap,KKT条件
- Projected Gradient Descent
- 迭代式算法的收敛分析
机器学习案例练习
- 机器学习基础与凸优化案例
- 基于QP的股票投资组合策略设计
- 基于LP的短文本相似度计算
- 基于KNN的图像识别
- SVM与集成模型案例
- 基于XGBoost的金融风控模型
- 基于PCA和Kernel SVM的人脸识别
- 基于Kernel PCA和Linear SVM的人脸识别
- 无监督学习与序列模型
- 基于HMM和GMM的语音识别
- 基于聚类分析的用户群体分析
- 基于CRF的命名实体识别
- 贝叶斯模型
- 基于Bayesian LSTM的文本分析
- 使用无参主题模型做文本分类
- 基于贝叶斯模型实现小数量的图像识别
3. 深度学习
3.1 神经网络概述
- 感知器
- 感知器模型-神经网络的起点
- logistic回归
- logisitc回归虽然名字叫回归,但实际上是一种用于分类问题的算法,它在感知器模型的基础上加了一个logistic函数进行映射,得到区间(1, 0)类的概率值,刚好可以作为样本属于正样本的概率。logistic回归的作用类似于神经网络中的单个神经元,logistic函数即激活函数。这个函数导数的有界性为神经网络的梯度消失问题埋下了祸根。
- MLP
- 多层感知模型(MLP)-真正意义上的神经网络
- 激活函数
- BP算法
3.2 卷积神经网络
- 基础知识
- 卷积层
- Pooling层
- 全连接层
- Dropout
- Bath Normalization
- 分类网络
- AlexNet
- GoogleNet
- VGGNet
- ResNet
- 检测网络
- RCNN簇
- RCNN
- SPPNet
- FastRCNN
- MaskRCNN
- YOLO簇
- YOLO V1
- YOLO V2
- YOLO V3
- SSD簇
- SSD
- DSSD
- RFCN簇
- FPN簇
- RetinaNet簇
- Anchorfree簇
- 其它
- RCNN簇
- 分割网络
- FCN
- DialatedConv
- 跟踪网络
- HCF
- 轻量化网络
- MobileNet V1
- MobileNet V2
- ShuffleNet V1
- Xception
3.3 循环神经网络
- RNN与梯度消失
- LSTM
- GRU
- BRNN
- NTM
- seq2seq
- seq2seq+注意力机制
- RNN+CTC
- Word2Vec, Elmo, Bert, XLNet
- 深度学习中的调参技术
- 深度学习与图嵌入(Graph Embedding)
- Translating Embedding (TransE)
- Node2Vec
- Graph Convolutional Network
- Structured Deep Network Embedding
- Dynamic Graph Embedding
3.4 生成式模型
3.4.1 自回归模型:pixelRNN与pixelCNN
- pixelRNN
- pixelCNN
3.4.2 VAE(Variational Auto-Encoder)
- VAE
- 变分自编码器VAE:原来是这么一回事 | 附开源代码
- Variational Autoencoder(VAE)与求解
- CVAE
- 隐变量的Disentangling
- 图像的生成以及Disentangling
- 文本的生成以及Disentangling
3.4.3 GAN(Generative Adversial Network)
- GAN
- DCGAN
- 层级结构的GAN
- 使用多对GAN的模型有:StackGAN、GoGAN
- 使用单一GAN,分阶段生成的有ProgressiveGAN
- 自编码器结构的GAN
- BEGAN
- EBGAN
- MAGAN
- CGAN
- CycleGan
3.5 GNN(图神经网络)
- GCN
3.6 自编码器
深度学习优化方法
- SGD
- Adam
- Adagrad
推荐系统与在线学习
- 基于内容和协同过滤的推荐算法
- 矩阵分解,带条件的矩阵分解
- 基于内容的Gradient Tree
- 基于深度学习的推荐算法
- 冷启动问题的处理
- Exploration vs Exploitation
- Multi-armed Bandit
- UCB1 algorithm,EXP3 algorithm
- Adversarial Bandit model
- Contexulalized Bandit
- LinUCB
- 在线学习优化算法
- SGD(Stochastic Gradient Descent)
- TG(Truncated Gradient)
- FOBOS(Forward-Backward Splitting)
- RDA(Regularized Dual Averaging)
- FTRL-proximal(Follow the Regularized Leader)
深度学习其它前言发展
- 深度学习的可解释性
- Deconvolution与图像特征的解释
- Layer-wise Propagation
- Adversial Machine Learning
- Purturbation Analysis
- Fair Learning
深度学习案例练习
- 深度学习
- 基于Seq2Seq和注意力机制的机器翻译
- 基于TransE和GCN的知识图谱推理
- 基于CNN的人脸关键点检测
- 推荐系统与在线学习
- 使用Gradient Boosting Tree做基于 interaction 与 content的广告推荐
- 使用深度神经网络做基于interaction 与 content的推荐
- LinUCB做新闻推荐, 最大化rewards
- 生成式模型
- 基于GAN的图像生成
- 基于VAE的文本Style Transfer
- 深度学习其它前言发展
- 可视化机器翻译系统
读论文方法
- 读一篇论文要带着四个问题读:
- 要解决什么问题?
- 用了什么方法解决?
- 效果如何?
- 还存在什么问题?
- Andrew Ng关于机器学习职业生涯以及阅读论文的一些建议