前期准备(默认读者有语言基础)

1、学习卷积神经网络理论知识
推荐视频:b站同济子豪兄卷积基础
     大白话讲解

推荐原因:能够先入为主,一定程度上减少数学知识对神经网络的理解,更加直接的认识神经网络

2、学习深度学习框架——本人用的是Pytorch
推荐视频:b站小土堆入门Pytorch

这套教学能够带你熟练运用Pytorch,从数据集的采集、处理,模型的建立,模型的训练以及模型的demo,都会一一讲解,当你能用自己的模型预测出一个图片时(简单的小模型),恭喜你已经成功入门

3、学习具体的网络模型

  • 什么是网络模型?
       当你完成上面两个任务时,相信你对卷积、池化、全连接这些已经熟的不能再熟了。之前的你只是简单堆砌这些模块,想必你搭建的Accuracy不是很高吧,处理速度也不是很快吧,或者还可能出现了过拟合等等。这个时候就让我们去看看那些佬们所搭建的模型。
       常用、常见的模型大致有这些:LeNet、AlexNet、ResNet、MobileNet、shuffleNet、GoogleNet、EfficientNet等等

  • 那么我们又该怎么学习呢?
      这个时候就需要关注这些模型的亮点和重点解决哪方面的问题,对于不同的模型能够根据论文或某些图自行搭建,对那些需要认为调节的超参数,这个时候也可以练练调参
       总之对模型的学习离不开两点:论文和源码

     这里推荐我觉得超级nice的视频教学
     1、b站同济子豪兄
   带你精读论文,让你对模型中的亮点、改进的方法甚至是idea的产生,都会了解的非常透彻
放一波链接   精读AI论文

     2、b站霹雳吧拉Wz
   读了论文,学习了算法。相信你一定想动手实现,这位良心up会带你逐行编写源码,当然更希望你先自己尝试从头编写。甚至,你可以学到诸多调参技巧,可视化工具
放一波链接   怼源码

拓宽知识面

  以上我介绍的大都是针对图像处理、分类模块的,但深度学习的板块远不止如此。
  你可以根据兴趣或者项目,学习更多相关知识,比如:目标检测模块、可解释性分析、轻量化网络等等,总会有你感兴趣的。

工程实践

  个人觉得深度学习更重要的是为产业赋能,你可以根据demo模块封装接口,由前端来进行用户交互(Web端、小程序、app)——听起来就非常cool,当然这只是较简单的工程思路。

  但这方面可能需要其他相当多的技术栈。但你学到的会更多,让你从真正意义上了解一个开发项目的全过程,大大提升debug的能力。不要相信你不行,不试试怎么知道呢?

科研

到这一步科研实际上已经有些晚了,学习完前期准备3之后就可以开始阅读自己方向的相关顶会论文,确定自己的小方向。最好采用“自顶向下”的学习方式,还有最重要的是要有个好导师/师兄带你,以上都是我的经验之谈。本人可提供CV方向的学习路线,其实AI方向基本一致,如下:

第一周

  • 学习Python:字符串、列表、字典、元组、条件控制、循环语句、模块、面向对象。理解“Python万物皆对象”。
  • 学习如何翻墙,逐渐摆脱高度依赖CSDN等的习惯,多用Google、Stack Overflow、GPT等。
  • 完成一个Python的基本练习

第二周

  • 学习使用conda来方便管理Python环境

    只需要掌握最简单的环境创建、安装包和安装渠道的管理即可

  • 学习使用Jupter Notebook来方便代码编写

    前期方便代码学习、调试,后期工程改用Pycharm

  • 了解数据分析常用的库:numpy、pandas、matplotlib

    可结合知乎专题等进行学习

  • 完成一个数据处理练习(可自行去Kaggle、LeetCode等寻找)

第三周

  • 吴恩达机器学习Deeplearning.ai课程李宏毅2023春机器学习课程

    结合上述课程,快速了解掌握机器学习和深度学习诸如梯度下降、反向传播、激活函数、训练集、测试集等的概念,深度学习的概念现阶段浅尝即止,熟悉相关概念即可。

    这里一定要防止踏入误区,不要盲目走到头,遇到相关概念不懂的,可以查看相关博客。同样,也不需要掌握很多SVM、随机森林诸如此类的传统机器学习算法(除非以后想从事相关研究)。

    一定要记住浅尝即止,了解神经网络的概念、作用机理即可

  • 了解sklearn库以及相关用法。

  • 完成一个或两个线性回归练习 [泰坦尼克](Titanic - Machine Learning from Disaster | Kaggle) [房价预测](House Prices - Advanced Regression Techniques | Kaggle)

    这些比赛网上有很多代码,如果不会直接查看即可,但必须要理解代码含义

第四—五周

  • 了解卷积层、池化层、线性层等CNN神经网络的概念,推荐视频:大白话解释 卷积通俗解释

  • PyTorch的学习:小土堆入门 ,视频只做推荐,强烈建议沿着PyTorch官网的Tutorials和Docs学习,需要逐渐熟悉PyTorch中的Tensor的概念,利用PyTorch构建神经网络,利用PyTorch构建训练流程。

  • 本周任务完成后,应该具备搭建简单神经网络、训练模块、测试模块的能力,同时对不同的数据集也应该具备重写DataLoader的能力。独立具备上述能力后,可以尝试使用他人搭建的框架训练模型,更加专业(需要完全理解代码中每个模块的含义),链接:[深度学习CV工程框架 ](SpikeKing/DL-Project-Template: 深度学习工程模板 (github.com))

第六周

第七—八周

  • 以上学习都只是针对图像分类任务,如果掌握足够后,可以开始完成目标检测、实例分割等任务。
  • 较为经典的:Msak RCNN 、YOLO系列、SSD、Retinanet、DETR等

第九—xx周

  • 正式开始选定研究方向,可根据老师课题方向/个人研究兴趣

祝君好运,早日正式踏上科研的大门!


结语

 到这里你的深度学习才算真正入门了,不同人的学习周期有长有短,但坚持下来,你会感到惊喜的。

 题外话:对于耳熟能详的吴恩达、沐神、李宏毅老师等的教学视频,更适合于适合长期、系统的学习,这个学习过程,可能没有那么快让你感受到实践的乐趣,但打下的数学、算法功底自然是很强的,可能更加适合于研究生或者有较长学习周期的同学。同样,我也不建议初学者一上来直接怼书,比较有名的书籍:西瓜书、花书。建议有一定基础后,再去怼书。

 希望我的建议能对您在深度学习的过程中有些许帮助!

 最后真诚的感谢无私奉献教学资源的,为我们引路的人

 友链:b站同济子豪兄b站霹雳吧拉Wzb站小土堆

Q&A

  • Q:深度学习只是调参吗?

 A:

深度学习当然不只是调参,但我们一般人只能做到调调参数,水水论文。

因为大多数所谓的课程,只是在说怎样去使用深度学习,什么样的场景需要什么样的归纳偏置,怎么选取信息,参数对优化搜索的影响等等。根本没说怎样去研究深度学习。

所以我们能做的也就是编故事(找新场景,新任务),搭积木(组合一些结构),找数据,调参数,水论文。没有能力再干别的了。

这是水平最次的一个梯队。

再强一点的,就是解决非凸优化难题、速度瓶颈之类问题的那批人,致力于普适性的提高深度学习的表现。(要求深厚的数学功底)

再强一点的,搞理论的,尝试从各个角度进行解释和实验,反馈回深度学习以提高表现并完善理论。(数学上有一定造诣)

再强一点的,跳出深度学习甚至机器学习寻求突破的,张口闭口人类级AI,自我感觉起飞,但没什么显著成果。(大牛)

扛旗大佬,在每个可能方向上开拓的领军人物,想要找到路真正实现人类级AI。从神经学上找启发的deepmind等;深度学习正统GAN;传统机器学习遗民,基于贝叶斯网络、EM、提升树、进化算法、遗传算法等来搞的;符号主义,搞知识图谱,图网络,因果推理的;深度学习反对派,搞复杂系统的,混沌学说(传统机器学习皇室,最初的机器学习理论。但是太难了,冯诺依曼,西拉徳那些数学家搞出来的,后来研究的人就少了[十年前兴起了一段时间,现在又不行了])。(大师)

很多人的了解都止步于第一个梯队,他们只是把这个当成一个专业看待,实际上并没有什么兴趣。