本文末尾附斯坦福大学人工智能本科4年课程清单和课程资源。
一、数学基础
在系统的知识学习之前,我首先强烈强烈 推荐3Blue1Brown的相关视频,B站和油管上都有。特别是关于线性代数的本质,我看完后收获很大。
除此之外,我还推荐一本吴军博士编写的《数学之美》,这应该是将我引入AI专业的一本书,特别是激发了我对自然语言处理和信息论的兴趣。“数学之美”系列文章原刊载于谷歌黑板报,获得上百万次点击,得到读者高度评价。正式出版前,吴军博士几乎把所有文章都重写了一遍,为的是把高深的数学原理讲得更加通俗易懂,让非专业读者也能领略数学的魅力。
1、微积分
一般学校教授的内容基本就够了,重点要关注链式法则和多元函数求导。 书籍方面据说《托马斯微积分》、Stewart的《微积分》和《普林斯顿微积分读本》都不错,不过这些我没看过,不做评论。
2、线性代数
强烈推荐Gilbert Strang编写的线性代数教材,B站上有配套的MIT Strang公开课,质量非常高。 @梁唐 公众号coder梁上有个日拱一卒系列有MIT线代课的笔记
如果有数学专业背景或者想更深入地学习线性代数理论,可以参考《线性代数应该这样学》(《Linear Algebra Done Right》),我学习了这本书的部分章节,感觉部分内容和习题难度极大,不建议低年级工科生在上面花过多时间。
3、概率统计/随机过程
推荐中科大陈希孺编写的《概率论和数理统计》
4、离散数学
推荐黑皮书系列《离散数学及其应用》
还有 一本《具体数学》很不错,不过这属于扩展内容了
5、凸优化
推荐Boyd的《凸优化》,这本书国外也有配套的课程视频,但是初学者学习难度较大,要求比较高的线性代数基础。 除此之外,B站上中科大的凸优化课程也很好,学习难度比硬啃Boyd的《凸优化》要友好些。
二、计算机基础
1、计算机科学知识
计算机科学的一些概论性知识不建议去买大部头的黑皮书去看(比如计算机科学概论),平时通过一些博客去了解就行了。非著名程序员:推荐一套国外超棒的计算机科学视频课程 据说不错。
除此之外我还推荐吴军博士的《浪潮之巅》,emmm这本书更像是计算机相关企业发展史,我觉得读过还是有些帮助(当然更多是兴趣使然)。
伯克利的cs61a课程的内容和作业质量非常非常高,主要内容有函数式编程这些。不过对于初学者来说难度还是很大的,我大二暑假的时候学习了一遍,作业有不少题需要花时间和精力去思考。据说哈佛CS50也很好,难度应该比cs61a要低一些。
2、编程语言学习
人工智能需要学习的编程语言由python,C/C++/java。 编程语言的学习每个人有适合自己的方法,知乎上也有很多有深厚编程经验的同行介绍,这里就不再展开了。
C/C++推荐MOOC上浙大翁凯的课程,java推荐B站黑马程序员的java入门课程,python推荐《Python 编程,从入门到实践》或者https://www.runoob.com/python/python-tutorial.html。当然这些只是入门,除了看书籍/视频外更重要的是自己动手上手项目实战
3、数字逻辑电路/计算机组成原理
推荐MOOC上南京大学袁春凤的课程。对于大部分AI方向,这块儿没有很高的要求,掌握基础的知识就行了。
4、数据结构与算法
我当时用的资料是 算法第四版 这本书,内容很好,书里的代码用java写的,但是会C++的话看懂肯定没问题,coursera上有普林斯顿配套的课程,评分非常高。 当然,学算法光看书肯定是不够的,还要多做题,可以根据leetcode去训练。
5、操作系统
强烈推荐B站上哈工大李治军的操作系统。
除此之外想深入学习可以参考MIT的操作系统MIT6.828。
6、数据库
B站上东南大学徐立臻老师的课程很好,我是线下修了徐老师的数据库及其应用这门专业选修课,徐老师人真的很nice。 想学得深入一点可以看CMU15445,我后面如果抽出时间的话可能会出个CMU15445专栏笔记。
7、计算机网络
这门课国内外教学模式有些差别,有自顶而下的也有自底而上的。 我个人是推荐一本户根勤《网络是怎样连接的》,内容比较浅,但是脉络清晰而且很有意思。
8、信号与系统/数字图像处理
有些领域比如计算机视觉会需要这块儿的知识
信号与系统推荐东南大学孟桥老师的课程,B站上有。还有祖师爷奥本海姆古早的课程B站上也能找到。这门课经典教材就是祖师爷奥本海姆写的。
数字图像处理我没有系统学过,这里就不好为人师了,经典教材就是冈萨雷斯编写的图像处理
9、编译原理
没学过...本文末尾附上了斯坦福大学编译器这门课程的链接
三、人工智能
首先关于概念性的、入门的知识,可以快速看吴恩达的机器学习公开课。还有一本大部头的《Artificial Intelligence: A Modern Appoach》,我们学校人工智能导论这门课的参考书,是本很经典的书,不过太厚了,不适合新手读
1、机器学习
- 李航《统计机器学习》, 读起来有困难的话B站上搜 机器学习白板推导,系列视频不错
- 《机器学习实战》前半部分,介绍了使用scikit-learn去完成一些简单的机器学习任务
- 李宏毅B站视频机器学习课程
- 机器学习基础知识系统学过一遍,想更深入地学习,可以参考《Patten Recognition And Machine Learning》
2、深度学习
- 邱希鹏《神经网络和深度学习》
- 强烈推荐, B站 李沐的 动手深度学习 系列课程, 也有配套的电子书籍
- pytorch官方文档(我是用pytorch为主的)
3、自然语言处理
- 基础知识的学习强烈推荐Stanford的 Speech and Language Processing, 我一年前开了个专栏记了点笔记,不过比较粗糙,供参考.
- 实践方面,可以参考 @李rumor 的置顶问题。这里推荐一些入门代码练习https://github.com/graykode/nlp-tutorial、https://github.com/FudanNLP/nlp-beginner
- 还有些比较热门常用技术,比如预训练模型、prompt等,需要参考相应的论文和文档资料,Transformer的学习可以参考我之前的文章。相关阅读论文参考NLP入门总结(论文篇)
- 还有些比较经典课程比如CS224n,我没看过,这里不做评价
4、计算机视觉
cs231的课程,基于卷积神经网络的计算机视觉。 (CV我了解的不多qwq)
5、知识工程/知识图谱/知识表示和推理
入门的话强烈推荐@SimmerChan的专栏
知识图谱是非常难以系统地学习的。 可以先学习语义网的相关技术,比如RDF、RDFS/OWL、SPARQL等,比较好的书籍有《A Semantic Web Primer》(这本书要看原版,翻译版很烂,而且有难度,不适合初学者)。除此之外,需要掌握自然语言处理的相关工具。
之后知识图谱的学习又主要分为知识图谱构建和知识图谱应用,可以到github找相关的感兴趣的项目去跟着做一做
人工智能有广泛的领域和方向,我上面提到的也只是比较主流或者我仅仅了解的一些方向,有遗漏和建议的大家可以在评论区补充。
最后附上:
斯坦福大学——人工智能本科4年课程清单 |