0%

对AI初学者和学生的若干学习建议

对AI初学者和学生的若干学习建议:

写这篇文章的起因是想给新入门或即将入学的AI专业学生一些学习建议。

核心思想包括:注重实践,夯实基础,聚焦前沿

1. 实践

AI是一个多学科交叉方向,其核心由计算机学(Computer Science, CS)发展而来,所以有CS基础的学生会好上手一些。没有CS基础一般需要补一下编程,unix知识。但是AI和CS是有很大不同的,兴趣和方向才是未来发展的根本。

这里说一下为什么重实践,如何实践。

1.1 注重代码的学习

AI无论在科研和就业上都继承了CS的特性,包括:

- ‘Show me the code’

这句话省略了前半句,大意是空说没用,用代码证明,其涵盖了这个学科的精髓,就是任何想法和改变只有现实中能使用才有价值。

1.2 开源精神

- Open Source 

即源代码公开,是一种软件发布模式。 早在1998年就被提出,开源运动涵盖了Unix等自由软件的发展。开源不仅是种行为,更是一种精神:

a.知识共享,互惠互利。

b.扶弱济困,先进带动后进。

c.公正公开,维护开发者与使用者利益。

大意是:提倡自由,创新,互助,进取。反对垄断,封闭,排异,畏缩。避免造成弱者恒弱,强者恒强的局面。

AI技术整体是学术和产业高度整合的,好的研究工作会同时受到企业和高校的关注,因此开源也是一种默契。大家在积极依靠开源的同时,自己也要有开源的勇气和并保持开放的心态。

2. 基础

基础非常重要,很多方向和应用所需的知识是相通的,当前AI的基本任务大体可分为机器视觉(CV)和自然语言处理任务(NLP)。所用到的技能主要是机器学习,特别是深度学习这一块。近年来随着大模型的突破,更多前沿任务是以跨模态(CV+NLP)的形式出现。

如何打好基础,是个系统而长期的问题,取决于个人的天赋、努力和学习效率。这里只能给大家一些建议。

  • 掌握编程基础和机器学习/深度学习框架

当前主要用Python语言,其特性是极简的面向对象编程和丰富的库支持(胶水语言)

a. 编程基础:

面向过程编程(基础变量,集合变量,条件控制,函数等)

面向对象编程(对象, 类,构造函数等),这个精髓是一种编程思想

b. 机器学习框架:

总的来说要掌握熟悉各类常见库,包括:

算法库sklearn,数据结构和处理库numpy, pandas, 以及一些作图库:matplotlib,opencv,imageio等

c.深度学习框架:

当前Pytorch为主要深度学习框架,其次是tensorflow。另外框架就是个工具,用好工具的关键还是工具后面的“技术”。

  • 学习方法

除了个别关键库有时需要去阅读和查阅分析外(pytorch,numpy,sklearn)。其他库没有必要刻意去学习,主要通过实践去学习。这里建议如下学习方法:

可以通过一些小项目,模型demo,代码片段调试,去掌握核心代码含义。

通过调试一些感兴趣的视频(b站),帖子(知乎,csdn),开源代码(github)的代码去学习

tips: 注重学习的质而非量,一定要深入搞懂核心功能,结构,梳理关键代码

3. 前沿

3.1 研究方向

AI发展非常快,当前以ChatGPT等大语言模型(LLM)从发布到现在只有很短的时间,但却产生深刻的影响,造成广泛行业变革,有未来新一代科技革命的可能性。因此聚焦前沿是AI最重要能力之一。

当前可以关注的大模型技术包括:

  • NLP模型结构GPT:

    GPT一般人没有设备和资源去跑或者之间参与训练工作,能做的是在大模型基础上做微调和应用,只要熟悉深度学习(这里主要是attention-transformer结构),搞懂大模型的一些基本原理,在预训练模型下加一些改进结构(涉及迁移学习和知识蒸馏),或者在熟悉大模型框架下将其应用到一个特殊的领域(比如医疗,法务,教育等等)

  • CV视觉大模型(StyleGAN, 扩散模型)

    原理同GPTs,这里主要是cnn等结构和相关模型,包括常见的resnet, u-net, yolo等

  • 跨模态应用

    就是结合CV和GPT进行完成更加智能和有挑战性的AI任务,包括图像理解(描述图像,编辑),语言问答(专家系统:专业知识问答如医疗诊断),音视频生成和编辑(如音乐和视频的创作)。

tips:有一个普遍困难是觉得大模型需要大量设备或者大量数据,其实这是一个误区。一方面是大模型都倾向小型化并部署在消费级显卡上(比如12gb显存,或者24gb显存下)。而且有众繁多开源的预训练模型直接加载使用,并不需要个人消耗资源和时间训练,因此最最关键是搞懂深度学习基础,会用,然后稍微改或调一下大模型,即可达到画龙点睛的效果。

3.2 研究方法

这里主要指发表论文,专利等成果的研究。因此需要在大量调试代码,得到各类实验结果的基础上,整理研究思路,总结研究成果,并最终撰写论文,大体方法和建议是:

a.泛读论文

通过大量阅读前沿和高质量领域相关论文,能从”没吃过猪肉,但见猪跑“的情况下逐渐积累研究内容,方法。同时积累写作方法和经验,这是一个漫长的积累过程。

b.精读论文

谈到具体研究,方向众多,思路多样。因此你需要聚焦,聚焦是你在大量阅读和了解大方向和领域的基础上提炼并关注一个可行的小方向,这里有1-2篇关键的论文是你感兴趣并且深入了解的,并以此作为研究基础就行改进和突破,它们最好是好的工作,前沿的工作,有广泛的影响,开源和可复现的,那么你就可以站在它们的肩膀上做出好的成果。

c.不断实验

这是最关键的一步,真正的创新一般都不容易,你会有一个想法,但这个想法往往和现实有很大差距,你可能需要不断试错,改进,但是请相信越困难的事情往往也是收获和成长最大的时候。有时运气和心态也很重要的,包括你的热爱。

d.论文写作,投稿交流

这里包括与合作者,导师等完成论文写作,制定投稿目标,期刊或者会议。投稿目的更多是学术交流,同行专家匿名评审(review),在得到专家指导修改或者建议后,最终认可的学术手稿会批准出版。

如何高效学习打好基础,并逐步聚焦前沿某一领域,实现研究和项目突破,是AI方向出成果的关键

4.补充内容

  • github

包括基本的unix命令,git命令(涉及一点操作系统的知识)

基本的github功能,比如团队协作维护同一个开源项目的命令

  • huggingface

现在很多新模型的预训练模型都在上面,一些基本操作需要掌握

https://huggingface.co/

  • aminer

这个是学术机构清华办的,主要分享和整理优秀AI论文

https://www.aminer.cn/topic

  • paperswithcode

介绍AI主流公认的研究成果(baseline),一般是论文都配套开源复现代码,可用于借鉴和改进当前优秀工作

https://paperswithcode.com/

tips:对于学生而言,如何充分利用时间高效学习和成长,把握短暂的3-4年校园学习时光,是决定你未来发展和高度的关键因素。