/Python2AI

人工智能学习

Primary LanguageJupyter Notebook

Python2AI

从零开始学习人工智能,学习路线如下:

  1. 重磅 | 完备的 AI 学习路线,最详细的资源整理!

1. Python

  1. 1.2w 星!火爆 GitHub 的 Python 学习 100 天 | GitHub-Python-100-Days
  2. 伸手党的福音,6个Python练手项目

1.1 第一阶段 - Python基础学习(4月初-5月中旬)

5-7天自学掌握Python基础知识,然后进行Python基础知识测验。根据测试结果考虑是否重新学习Python基础知识。

  1. 学习教材

注:廖雪峰教材看累了,可以换着看看莫烦的Python视频。

  1. Python基础阶段需要掌握知识点

    • Python基础类型:数字类型、None类型、Bool类型、字符串类型
    • Python常用内置数据结构:列表(list)、元组(tuple)、字典(dict)、集合(set)
    • Python逻辑控制与操作:If分支语句、for/while循环控制、try...except异常处理
    • Python函数:定义函数、函数参数、函数式编程
    • Python类与模块:类构造、类实例化、模块介绍、模块加载和使用
    • Python的IO编程:文件读写
    • Python进程与线程:进程与线程区别
  2. Python基础测验 完成上面的基础学习后,可以在下面的题目中小试牛刀:

1.2 第二阶段 - Python玩转算法(5月中旬-6月底)

30天左右时间掌握Python实现基础算法,然后完成牛客网的《剑指Offer》牛客网的LeetCode经典编程题的练习。

算法刷题技巧:

  1. 微信大佬总结的算法学习经验

学习分三个部分:

  1. 自己去 牛客网的《剑指Offer》 做题系统中进行python练习

    《剑指Offer》pdf书籍已经放到algorithm

  2. 自己去 牛客网的LeetCode经典编程题 做题系统中进行python练习
  3. 自己学习慕课网视频《玩转算法面试 leetcode题库分门别类详细解析》

算法作业集 中自主记录完成的习题并定时反馈结果, 算法作业集 实现代码上传至 solution_sample 文件夹中。

学习目标:

  1. 需要掌握的题目类型:

    1. 数组
    2. 字符串
    3. 查找
    4. 排序
    5. 链表
    6. 堆栈
    7. 树+递归
    8. 回溯法
    9. 动态规划
    10. 贪心算法
  2. 需要完成目标:

    1. 希望第二阶段结束后,可以把牛客网的《剑指Offer》全部刷完。
    2. 希望第二阶段结束后,可以把牛客网的LeetCode经典编程题全部刷完。

1.3 第三阶段 - Python进阶学习(5月中旬-5月底)

1天学习基于Python的经典库。14天完成一个Python爬虫工具。

  1. 基于Python的经典库(1天了解经典库)

    1. Numpy
      • 这是一个非常有名的数据分析库。从计算数据分布的中位数,到处理多维数组,NumPy 都可以帮你完成。
    2. Pandas
      • 这是用来处理 CSV 文件的。当然了,你还需要处理一些表格、查看统计数据等,那 Pandas 就是可以满足你的需求的工具。
    3. Matplotlib
      • 把数据存储在 Pandas 的数据框后,你可能需要做一些可视化来理解数据的更多信息。毕竟一图抵千言。
    4. Seaborn
      • 这是另一个可视化工具,但这个工具更侧重于统计结果的可视化,比如直方图、饼图、曲线图或相关性表等。
    5. Scikit-Learn
      • 这是用 Python 实现机器学习的终极工具。所谓用 Python 实现机器学习指的就是这个——Scikit-Learn。所有你需要的从算法到提升的内容都能在这里找到。
    6. 干货|理解Python爬虫基础知识
  2. Python爬虫项目(14天)

    1. 1天完成练手项目 3 个适合新人上手的Python项目(附代码!)
    2. 13天完成爬虫工具 找一个感兴趣的爬虫项目练习

1.4 大牛阶段 - Python高级学习(选学)

  1. Python高级用法
    1. Python对象的比较与复制
    2. 值传递、引用传递or其他,Python里参数是如何传递的?
    3. 强大的装饰器
    4. metaclass
    5. 深入理解迭代器和生成器
    6. 揭秘Python协程
    7. Python并发编程之future
    8. Python并发编程之asyncio
    9. 你真的懂Python GIL(全局解释器锁)吗?
    10. Python垃圾回收机制
    11. SWIG:TensorFlow等流行框架背后的Python/C++混合编程技术
    12. Python实现Web开发框架:Django、Flask

2. 机器学习(6月初-6月底)

以下内容为了解内容,可以学习完整个机器学习内容后,再看:

机器学习算法地图

本阶段学习教材:书籍《统计学习方法》,李航著。统计学习方法书籍pdf/算法Python代码实现/课件

2.1 机器学习基础

  1. 数据归一化方法
  2. 过拟合/欠拟合
  3. 正则化
  4. 交叉验证
  5. 模型评估
  6. 偏差和方差
  7. 数据不均衡处理方法
  8. 优化算法
    • 梯度下降算法
    • 坐标下降法(Coordinate Descent)
    • 随机梯度下降法
    • 小批量梯度下降法

2.2 监督学习

  1. 线性模型

    1. 线性回归
      • 岭回归
      • Lasso回归
      • ElasticNet回归(弹性网络回归)
    2. 线性分类
      • 逻辑回归(会推导)
      • 最大似然
      • 多元逻辑回归模型
      • SoftMax回归
  2. 支持向量机(会推导)->支持向量回归(support vector regression, SVR)

    1. Max-Margin的方法核心**
    2. 线性SVM的一步步构建
    3. Slack Variable以及条件的松弛
    4. SVM的Dual Formulation
    5. Kernelized SVM
    6. 不同核函数的详解以及使用
    7. 核函数设计以及Mercer's Theorem
    8. Kernelized Linear Regression
    9. Kernelized PCA, Kernelized K-means
    10. SMO算法
  3. 决策树

    1. ID3
    2. C4.5 -> 随机森林 <- Bagging
    3. CART -> AdaBoost/GBDT <- Boosting
      • CART分类树
      • CART回归树
    4. 信息论

决策树学习要与集成学习联系起来。

  1. 贝叶斯模型

    1. 朴素贝叶斯
    2. 贝叶斯网络
    3. 正态贝叶斯
    4. 主题模型(LDA) 以及生成过程
    5. Dirichlet Distribution, Multinomial Distribution
    6. 蒙特卡洛与MCMC(马尔可夫链蒙特卡罗算法)
    7. Metropolis Hasting与Gibbs Sampling
    8. 使用Collapsed Gibbs Sampler求解LDA
    9. Mean-field variational Inference
    10. 使用VI求解LDA
    11. Stochastic Optimization与Bayesian Inference
    12. 利用SLGD和SVI求解LDA
    13. 基于分布式计算的贝叶斯模型求解
    14. 随机过程与无参模型(non-parametric)
    15. Chinese Retarant Process
    16. Stick Breaking Process
    17. Stochastic Block Model与MMSB
    18. 基于SGLD与SVI的MMSB求解
    19. Bayesian Deep Learning模型
    20. Deep Generative Model
  2. 浅层神经网络

  3. KNN(k-Nearest Neighbor, k近邻学习)

    1. 距离度量学习
    2. Weighted KNN算法
    3. Approximated KNN算法
    4. KD树
    5. 近似KD树
    6. Locality Sensitivity Hashing (LSH, 局部敏感哈希)
  4. LDA(线性判别分析) -> KLDA

  5. 隐马尔科夫模型

  6. 条件随机场CRF

  7. 采用方法:马尔可夫链蒙特卡洛方法(MCMC)

2.3 无监督学习

2.3.1 聚类

  1. K-means聚类(会推导、会写代码)
    1. K-means++
  2. 层次聚类算法
  3. 高斯混合聚类
    1. 高斯混合模型
  4. 密度聚类
    1. DBSCAN
  5. OPTICS
  6. Mean Shift
  7. 谱聚类( Spectral Clustering)
  8. EM算法以及收敛性
    1. 基于EM算法的参数估计
  9. DCSCAN
  10. 隐变量与隐变量模型
  11. 隐马尔可夫模型(HMM)的应用以及参数
  12. 条件独立、D-separation(D分离)
  13. 基于Viterbi的Decoding
  14. Forward/Backward算法
  15. 有向图与无向图模型区别
  16. Log-Linear Model
  17. Feature Function的设计
  18. Linear CRF以及参数估计

2.3.2 降维

  1. PCA -> KPCA
  2. SVD
  3. 流行学习
    1. LLE
    2. 拉普拉斯特征映射
    3. 等距映射
    4. 局部保持投影
  4. 主题模型

2.4 集成学习

  1. 集成模型的优势
  2. Bagging
    1. 随机森林
    2. 完全随机森林
  3. Boosting
    1. AdaBoost
    2. GBDT
    3. XGBoost
    4. LightGBM
    5. CatBoost
    6. ThunderGBM
  4. Stacking
  5. Blending
  6. 基于残差的提升树训练**
  7. 集成不同类型的模型
  8. VC理论

2.5 强化学习

  1. 策略迭代
  2. 价值迭代
  3. 蒙特卡罗算法
  4. 时序差分算法
    1. SARSA算法
    2. Q学习
      • DQN
      • 策略梯度
  5. Policy Learning
  6. Deep RL

2.6 凸优化

  1. 凸集、凸函数
  2. 凸函数与判定凸函数
  3. Linear/Quadratic/Integer Programming
  4. 对偶理论,Duality Gap,KKT条件
  5. Projected Gradient Descent
  6. 迭代式算法的收敛分析

机器学习案例练习

  1. 机器学习基础与凸优化案例
    1. 基于QP的股票投资组合策略设计
    2. 基于LP的短文本相似度计算
    3. 基于KNN的图像识别
  2. SVM与集成模型案例
    1. 基于XGBoost的金融风控模型
    2. 基于PCA和Kernel SVM的人脸识别
    3. 基于Kernel PCA和Linear SVM的人脸识别
  3. 无监督学习与序列模型
    1. 基于HMM和GMM的语音识别
    2. 基于聚类分析的用户群体分析
    3. 基于CRF的命名实体识别
  4. 贝叶斯模型
    1. 基于Bayesian LSTM的文本分析
    2. 使用无参主题模型做文本分类
    3. 基于贝叶斯模型实现小数量的图像识别

3. 深度学习

3.1 神经网络概述

  1. 感知器
    • 感知器模型-神经网络的起点
  2. logistic回归
    • logisitc回归虽然名字叫回归,但实际上是一种用于分类问题的算法,它在感知器模型的基础上加了一个logistic函数进行映射,得到区间(1, 0)类的概率值,刚好可以作为样本属于正样本的概率。logistic回归的作用类似于神经网络中的单个神经元,logistic函数即激活函数。这个函数导数的有界性为神经网络的梯度消失问题埋下了祸根。
  3. MLP
    • 多层感知模型(MLP)-真正意义上的神经网络
  4. 激活函数
  5. BP算法

3.2 卷积神经网络

  1. 基础知识
    1. 卷积层
    2. Pooling层
    3. 全连接层
    4. Dropout
    5. Bath Normalization
  2. 分类网络
    1. AlexNet
    2. GoogleNet
    3. VGGNet
    4. ResNet
  3. 检测网络
    1. RCNN簇
      • RCNN
      • SPPNet
      • FastRCNN
      • MaskRCNN
    2. YOLO簇
      • YOLO V1
      • YOLO V2
      • YOLO V3
    3. SSD簇
      • SSD
      • DSSD
    4. RFCN簇
    5. FPN簇
    6. RetinaNet簇
    7. Anchorfree簇
    8. 其它
  4. 分割网络
    1. FCN
    2. DialatedConv
  5. 跟踪网络
    1. HCF
  6. 轻量化网络
    • MobileNet V1
    • MobileNet V2
    • ShuffleNet V1
    • Xception

3.3 循环神经网络

  1. RNN与梯度消失
  2. LSTM
  3. GRU
  4. BRNN
  5. NTM
  6. seq2seq
  7. seq2seq+注意力机制
  8. RNN+CTC
  9. Word2Vec, Elmo, Bert, XLNet
  10. 深度学习中的调参技术
  11. 深度学习与图嵌入(Graph Embedding)
  12. Translating Embedding (TransE)
  13. Node2Vec
  14. Graph Convolutional Network
  15. Structured Deep Network Embedding
  16. Dynamic Graph Embedding

3.4 生成式模型

3.4.1 自回归模型:pixelRNN与pixelCNN

  1. pixelRNN
  2. pixelCNN

3.4.2 VAE(Variational Auto-Encoder)

  1. VAE
  2. CVAE
  3. 隐变量的Disentangling
  4. 图像的生成以及Disentangling
  5. 文本的生成以及Disentangling

3.4.3 GAN(Generative Adversial Network)

  1. GAN
  2. DCGAN
  3. 层级结构的GAN
    • 使用多对GAN的模型有:StackGAN、GoGAN
    • 使用单一GAN,分阶段生成的有ProgressiveGAN
  4. 自编码器结构的GAN
    • BEGAN
    • EBGAN
    • MAGAN
  5. CGAN
  6. CycleGan

3.5 GNN(图神经网络)

  1. GCN

3.6 自编码器

深度学习优化方法

  1. SGD
  2. Adam
  3. Adagrad

推荐系统与在线学习

  1. 基于内容和协同过滤的推荐算法
  2. 矩阵分解,带条件的矩阵分解
  3. 基于内容的Gradient Tree
  4. 基于深度学习的推荐算法
  5. 冷启动问题的处理
  6. Exploration vs Exploitation
    1. Multi-armed Bandit
    2. UCB1 algorithm,EXP3 algorithm
    3. Adversarial Bandit model
    4. Contexulalized Bandit
    5. LinUCB
  7. 在线学习优化算法
    • SGD(Stochastic Gradient Descent)
    • TG(Truncated Gradient)
    • FOBOS(Forward-Backward Splitting)
    • RDA(Regularized Dual Averaging)
    • FTRL-proximal(Follow the Regularized Leader)

深度学习其它前言发展

  1. 深度学习的可解释性
  2. Deconvolution与图像特征的解释
  3. Layer-wise Propagation
  4. Adversial Machine Learning
  5. Purturbation Analysis
  6. Fair Learning

深度学习案例练习

  1. 深度学习
    1. 基于Seq2Seq和注意力机制的机器翻译
    2. 基于TransE和GCN的知识图谱推理
    3. 基于CNN的人脸关键点检测
  2. 推荐系统与在线学习
    1. 使用Gradient Boosting Tree做基于 interaction 与 content的广告推荐
    2. 使用深度神经网络做基于interaction 与 content的推荐
    3. LinUCB做新闻推荐, 最大化rewards
  3. 生成式模型
    1. 基于GAN的图像生成
    2. 基于VAE的文本Style Transfer
  4. 深度学习其它前言发展
    1. 可视化机器翻译系统

读论文方法

  1. 读一篇论文要带着四个问题读:
    • 要解决什么问题?
    • 用了什么方法解决?
    • 效果如何?
    • 还存在什么问题?
  2. Andrew Ng关于机器学习职业生涯以及阅读论文的一些建议