文章

机器学习教程

机器学习教程

摘自这里

学习

  1. 基础篇
    书籍
    1. 统计机器学习。李航
    2. 机器学习。周志华

    讲座

    1. 吴恩达的机器学习课程知乎参考, 网易云课堂
      1. 机器学习网易云课堂, Coursera
      2. 卷积神经网络网易云课堂, Coursera
      3. 神经网络和深度学习网易云课堂, Coursera
      4. 深度学习专项课程
      5. 吴恩达官网
    2. Tom Mitchell(CMU) 机器学习
    3. Stanford.CS231n: Convolutional Neural Networks for Visual Recognition, 视频(2017)
    4. Stanford.CS224N: Natural Language Processing with Deep Learning
    5. MIT.Deep Learning and Artificial Intelligence Lectures
  2. 升级篇
    书籍:
    1. 机器学习实战
    2. 深度学习-AI圣经

    视频:

    1. Learning from Data
    2. 機器學習基石
  3. 实战篇
    书籍
    1. Tensorflow实战google深度学习框架

搭建环境

安装步骤, 参考

  1. 这里获得显卡对应的compute compatibility(8.9)
  2. 使用nvidia-smi检查当前driver版本(535.98)
  3. 根据检查compute compatibility对应的CUDA(11.0+)和driver版本(450.36.06+)
  4. 根据这里看tf支持的CUDA和cuDNN版本
  5. 根据表1检查CUDA(11.8)对应的driver版本(452.39+)
  6. 这里(或这里)下载CUDA toolkit
  7. 这里检查CUDA对应的cuDNN版本(8.9.2)
  8. 这里这里下载cuDNN, 按照说明安装
    1. 如果是用.tar直接copy的方法安装, 在sudo apt install时会提示/sbin/ldconfig.real: libcudnn_adv_train.so.8 is not a symbolic link, 根据参考可以解决
      1
      2
      3
      
       for file in libcudnn*.so.8.9.2; do
       sudo ln -sf "$file" "${file/.8.9.2/.8}" && sudo ln -sf "${file/.8.9.2/.8}" "${file/.8.9.2/}"
       done
      
  9. 这里检查TensorRT(8.6.x)支持的CUDA版本
  10. 这里下载TensorRT GA.tar.gz版本(8.6), 按照说明安装

    Linux

  11. 更新Ubuntu版本 doc
    1. 若使用了第三方镜像源, 在使用sudo do-release-upgrade之前, 需要将/etc/update-manager/meta-release中的镜像源修改
  12. 根据doc查看kernel是否支持该CUDA版本
  13. 根据表2处理之前的driver和cuda
  14. 使用.deb或使用apt安装driver和CUDA
    1. 1
      2
      3
      4
      5
      6
      
       sudo apt-get --purge remove "*nvidia*" "libxnvctrl*"
       sudo apt-get autoremove
       # sudo ubuntu-drivers install --gpgpu
       # apt install nvidia-utils-525-server
       apt list | grep cuda-driver
       apt install cuda-driver-525
      

python包

1
2
3
python -m pip install tensorflow
python -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

经验

  1. 加入开源项目(github上找),争取成为contributer
  2. 参加国内外机器学习竞赛,拿名次,国内有天池、国外有kaggle

会议

  1. 机器学习领域
    1. 国际会议:
      1. 国际机器学术会议:ICML
      2. 国际神经信息处理系统会议NIPS
      3. 国际学习理论会议COLT
    2. 区域会议:
      1. 欧洲机器学习会议ECML
      2. 亚洲机器学习会议ACML
    3. 国际期刊
      1. journal of machine learning research
      2. machine learning
  2. 人工智能领域
    1. 重要会议
      1. IJCAI
      2. AAAI
    2. 重要期刊
      1. artificial intelligence
      2. journal of artificial intelligence research
  3. 数据挖掘领域
    1. 重要会议
      1. KDD
      2. ICDM
    2. 重要期刊
      1. ACM transactions on knowledge discovery from data
      2. data mining and knowledge discovery
  4. 计算机与模式识别
    1. 重要会议
      1. CVPR
    2. 重要期刊
      1. IEEE transactions on pattern analysis and machine intelligence
  5. 神经网络领域
    1. 重要期刊
      1. neural computation
      2. IEEE transactions on neural networks and learning systems
  6. 统计领域
    1. 重要期刊
      1. annals of statistics
  7. 国内:
    1. 中国机器学习大会(CCML)两年一次
    2. 机器学习机器应用(MLA)

9本书

alt text

  1. The Algorithm Manual
    这本书比起大名鼎鼎的《算法导论》,可读性更强,用的例子也更为有趣,更加适合对算法基础比较薄弱的同学,尤其适合希望掌握怎么样能够“提出属于自己的新算法”的同学。
  2. Mining of Massive Datasets
    本书是斯坦福大学数据挖掘硕士课程的教材,内容通俗易懂,案例非常经典,学完这本书基本上能够掌握常见的数据挖掘方法,能够解决常见的数据挖掘、推荐系统问题。
  3. The Pragamatic Programmer
    每一个想成为真正编程界“职业选手”的同学都应该读一读,被誉为程序员自我提升阶段的首选书籍。
  4. Artificial Intelligence
    人工智能的扛鼎之作!书籍的作者现在是Google Research的Director,本书极具深度和广度,每一个严肃的人工智能学习者都推荐仔细阅读此书。
  5. Deep Learning
    著名的“花书”,几乎可以说是目前深度学习中知识点最全,最为细致的书籍,从基本的数学知识开始讲起,逐渐到神经网络最重要的知识,并且覆盖了最前沿的深度学习讲展。
  6. Speech and Language Processing
    本书是斯坦福大学自然语言处理实验室主任的力作,通过学习本书,同学可以把常见的自然语言处理、文本挖掘方法进行深入的学习。本书既有理论高度又不失趣味性与可读性,是每位希望能够掌握文本相关处理的同学都值得学习的书籍。
  7. Convex Optimization
    现在深度学习的本质是函数优化(Optimzation),要做优化就要尽可能把函数转化成凸函数(Convex),这本书对于任何一个像深入了解神经网络的从业者都值得认真学习。

    CV学习流程

    参考

  8. 看吴恩达《机器学习》《深度学习》课程,学一点机器学习的知识。
  9. 读几篇CV模型的文章,了解一下经典的Alexnet、R-CNN系列、YOLO等。
  10. 在github上找几个tensorflow、pytorch实现上述模型的开源代码。
  11. 下载VOC、ImageNet、COCO、kaggle等数据集。
  12. 按照开源代码中的Readme准备一下数据集,跑一下结果。

    python库

  13. scikit-learn
    数据分析
  14. resNet

计算机视觉学习路线(链接)

第一章:机器学习与计算机视觉

计算机视觉简介

技术背景

  1. 了解人工智能方向、热点

计算机视觉简介

  1. cv简介
  2. cv技能树构建
  3. 应用领域

机器学习的数学基础

  1. 线性与非线性变换
  2. 概率学基础
  3. kl散度
  4. 梯度下降法

计算机视觉与机器学习基础

图像和视频

  1. 图像的取样与量化
  2. 滤波
  3. 直方图
  4. 上采样
  5. 下采样
  6. 卷积
  7. 直方图均衡化算法
  8. 最近邻差值
  9. 单/双线性差值

特征选择与特征提取

  1. 特征选择方法
  2. filter等
  3. 特征提取方法:PCA、LDA、SVD等

边缘提取

  1. Canny
  2. Roberts
  3. Sobel
  4. Prewitt
  5. Hessian特征
  6. Haar特征

相机模型

  1. 小孔成像模型
  2. 相机模型
  3. 镜头畸变
  4. 透视变换

计算机视觉与机器学习进阶

聚类算法

  1. kmeans
  2. 层次聚类
  3. 密度聚类
  4. 谱聚类

坐标变换与视觉测量

  1. 左右手坐标系及转换
  2. 万向锁
  3. 旋转矩阵
  4. 四元数

三维计算机视觉

  1. 立体视觉
  2. 多视几何
  3. SIFT算法

三维计算机视觉与点云模型

  1. PCL点云模型
  2. spin image
  3. 三维重构
  4. SFM算法

图像滤波器

  1. 直通滤波
  2. 体素滤波
  3. 双边滤波器
  4. 条件滤波
  5. 半径滤波
  6. 图像增加噪声与降噪

OpenCV详解

OpenCV算法解析

  1. 线性拟合
  2. 最小二乘法
  3. RANSAC算法
  4. 哈希算法
  5. DCT算法
  6. 汉明距离
  7. 图像相似度

第二章:深度学习与计算机视觉

神经网络

深度学习与神经网络

  1. 深度学习简介
  2. 基本的深度学习架构
  3. 神经元
  4. 激活函数详解(sigmoid、tanh、relu等)
  5. 感性认识隐藏层
  6. 如何定义网络层
  7. 损失函数

推理和训练

  1. 神经网络的推理和训练
  2. bp算法详解
  3. 归一化
  4. Batch Normalization详解
  5. 解决过拟合
  6. dropout
  7. softmax
  8. 手推神经网络的训练过程

从零开始训练神经网络

  1. 使用python从零开始实现神经网络训练
  2. 构建神经网络的经验总结

深度学习开源框架

  1. pytorch
  2. tensorflow
  3. caffe
  4. mxnet
  5. keras
  6. 优化器详解(GD,SGD,RMSprop等)
本文由作者按照 CC BY 4.0 进行授权