本人目前已经大三下了,学习机器学习、深度学习有一年多的时间,这里站在本科生的角度,结合自己的经验给对机器学习、深度学习感兴趣的同学一些建议和规划
目录
Step1 数学基础和Python
数学基础
Python
Step2 机器学习理论和编程实现
机器学习理论
深度学习理论
Pytorch
Step3 项目实战、论文阅读
选一个方向
建议
Step1 数学基础和Python 数学基础
- 微积分(数学系或一些尖子班一般学的数学分析,其他专业大多是高数) 推荐华师大的《数学分析》(高教出版社)
- 线性代数 推荐MIT网课
- 概率论与数理统计 推荐浙大第四版教材
- 可选:最优化方法等
注重对概念的理解,定理、公式的推导,建议看一些国外英文教材,以后读论文方便一些
Python- 基本语法
- 常用数据结构:List,Set,Dictionary 等
- 面向对象: 类 继承 多态等
- 常用的库: Numpy、Pandas、Sklearn(scikit-learn)
- 模块封装、模块引入、多文件组织(实际工程中为了提升复用性、扩展性一般会写成多个文件夹,每个文件夹里会多个py文件)
推荐b站莫烦Python(比较简略),求知讲堂的课程(很全面,详细,举了很多例子)
莫烦Python的个人空间_哔哩哔哩_bilibili
求知讲堂python+人工智能 99天完整版 学完可就业_哔哩哔哩_bilibili
- 以上只是基本的,我在看一些论文的代码时发现还有很多东西没见过或者不熟悉,或者之前了解过但是记忆模糊,比如装饰器、“魔法”等,可以收藏下面这篇文档,里面一条一条罗列了出来,很清晰、细致
https://docs.pythontab.com/interpy/Lambdas/README/
Step2 机器学习理论和编程实现 机器学习理论推荐《机器学习》 作为课本,人称西瓜书,周志华老师编写的
自己就是通过这本书入的门,感觉讲的比较全面、基础,适合初学者,三点经验
- 光看理论比较抽象,注意力难以一直集中,这时可以多上b站看一些生动形象的解释和动画
- 边学边用Python实现,不会编程实现的话也可以多看看b站up主的讲解(小破站yyds!),自己编出来后理解会更透彻,记忆也更深刻
- 配套的“南瓜书”,网上可以搜到,是对西瓜书中的定理做推导证明的,建议多啃啃,尤其想深入理解其中原理的
建议一周学一章,耐心一点,学扎实,不要求快,导致记忆模糊、理解不深刻
此外,李航的《统计学习方法》也不错,我也看过一点;如果不喜欢看文字,吴恩达的网课好像评价很高,也很火(我个人没怎么看过)
深度学习理论机器学习是个相对宽泛的概念,下面还有很多子领域,如强化学习、深度学习等,目前最流行的应该还是深度学习,如果对深度学习感兴趣,可以进一步学习相关理论
推荐李飞飞的cs231n,以及配套作业
Pytorch主流的深度学习框架之一,Pytorch在学术界更流行,代码量小一点,调试方便,建议本科期间还是先学习一下Pytorch,另一个主流的框架是Tensorflow,工业界可能用的多一些
- 配置一下深度学习环境,可参考我之前的博客(第一次配环境可能会非常坎坷,做好心理准备,自己当时配了好几天)(电脑带英伟达显卡支持cuda的,建议装GPU版)windows系统下即可,也可尝试装虚拟机,在linux下安装
(62条消息) Pytorch GPU版安装_江海一飞鸥的博客-CSDN博客
- 推荐跟着网课边看边敲
干货分享!浙江大学教授【深度学习框架PyTorch】课程,这绝对是你不可多得的PyTorch教程!太强了!-人工智能/机器学习/深度学习/AI_哔哩哔哩_bilibili
Step3 项目实战、论文阅读(如果觉得自己能力还不够,可以再巩固巩固,毕竟大一到大三课多,尤其对于想保研、读研的同学,要保证自己的排名)
这时候已经有一定数学基础、机器学习和深度学习理论基础和编程能力了,可以根据自己兴趣,联系学校导师做一些相关的项目
选一个方向AI的方向很多,从应用领域来看,最火的有下面几个
- 计算机视觉 大概是目前最火的,当前就业竞争也很激烈,个人也是cv入门
- 自然语言处理
- 语音
个人了解到的一些近年似乎不错的方向(个人不太成熟的判断,主要是看了一些AI会议,和一些老师的看法)
- 结构表示模型与学习(如图神经网络,上海Amazon研究院在研究这个方向)
- 领域泛化
- 分布式机器学习
- 自动机器学习系统
- 主动学习
如果喜欢交叉一些的,有条件的,可尝试以下方向,我有一些同学和老师在做其中一些
- AI+医疗
- AI+游戏(天美、网易雷火有相关算法岗)
- AI+机器人
- AI+艺术(如图像风格变化)
很多老师不关注本科生,所有其实一般都是跟着研究生学长,在他们的指导下做项目、看论文,深入下去,有能力的可以尝试写论文等,
- 建议把一个项目做全做深,从对任务的理解分析,到数据集获取和分析,(到特征工程,)到模型选择,到代码编写,到训练,到结果分析,到改进,到数据可视化(到部署,)并把问题相关的各个常见方法都做一些了解
- 可以找一些积极不划水的队友,互相交流、促进,保证以后找实习或其他面试的时候可以对答如流
- 可以提前进导师的组会,每周汇报,以此督促自己
- 平时可以多看看github等平台的开源项目,知乎、csdn、b站一些大佬的动态(沐神、清华刘知远老师等还是很活跃的,以及一些优秀本科生、硕士、博士、算法研究员和工程师们的经验分享)
以上是个人见解和经验,建议大家结合自己导师和学长的指导,和自身实际情况,制定规划。
祝好!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)