找回密码
 立即注册
搜索

答读者问:如何入门人工智能

关于人工智能,如何才能快速入门,该去如何学习?



1、我没有成功经验,只有失败经验

首先说,我写博客的主要目是输出倒逼输入。我既然写了,就得为了能写出东西而去学习,最起码我得先知道是怎么回事,然后才能用自己的语言描述出来。我是一个懒人,但是又想上进,就想出这么一个被强迫的办法。并不是我已经功成名就、知识多的往外涌了,才开坛论道,传道授业。
因为我没有成功,所以没有成功经验。
但是,机器学习我已经研究6年了。我从2018-04-11在QQ空间写了第一篇《汇报:白话人工智能》,那时就开始总结自己的学习成果,那时是给自己看,现在是给大家看。



但是,到目前为止,兜兜转转,我依然没有什么建树,也没有成个名、成个腕儿,更没有获得个诺贝尔奖啥的。
虽然默默无闻,但是我这六年不是白白浪费的,我是没日没夜地浪费的,起码我知道浪费在哪里,这些失败经验,我可以告诉大家。
2、杀猪捅屁股,各有各的招

给大家看一张网上流传的机器学习入门路线。



这张图密密麻麻地写满了你去学习-机器学习-的-学习路线,大约有上百项。
第一项最基础的就是“矩阵、线性代数”。其他还有DataFrames、Extract、Transform、RegEx、pdfs……
我的基础很差,学历也不高。但是机器学习对基础学科的要求很高,起码也得是硕士才可以入门去搞,所以我知道自己的弱项。
我就想按这个路线学习,立志要踏踏实实一步一个脚印,即便是向西天取经一样难,我也要坚持,虽然没有上三年的研究生,但是我要用六年的时间去自学相关的知识。
于是,我就先开始学习矩阵。很多的免费公开课上有矩阵相关的课程,我开始一节不落地学习。



断断续续学了2个月,我在想,这么枯燥的课程有什么用,哪里能用到?
于是,我烦躁了,我开始直接看人工智能项目的代码。
我先看了《TensorFlow实战Google深度学习框架》这本书,翻开一看,妈呀还是矩阵:



看不懂,很受挫,反思还是基础没打好,我就又返回去学习矩阵。
又学了一段时间,我跑到楼下同卖驴肉火烧的大哥(数学系本科)切磋了一下,感觉自己在餐饮行业的矩阵界已经无敌了。
翻开书继续看,越过矩阵后,它又开始讲概率,尤其涉及到各种公式的时候,又看不懂了。



我又去学概率,奔着打牢基础的目的,又学了1个月的概率分布。
我在想,如果按照这种节奏学下去,我再30年也未必能摸上人工智能的手。
3、别多想,干就完了

我开始找项目,从实战出发,以运行代码为主,运行代码看效果,提高兴趣。这时,第二本书《21个项目玩转深度学习:基于TensorFlow的实践详解》被我找到了。我开始搭环境运行上面的例子。












有时候,根本不知道代码是什么意思,没关系,你就想,要全看懂得20年后了,现在先跑起来,感受它的神奇之处。如果想要了解理论知识,就去找对应的理论讲解。
其实奔着这个目的,反而没有心理压力了。原来因为看不懂而上火,现在看不懂是正常的。
但是,道路依旧很坎坷。想成功运行起来一个项目,太难了,各种环境问题,各种配置问题,有时候需要一周甚至一个月的时间,才能起来项目。但是,当你运行起来的时候,你会有种错觉:这些代码就是你写的,这个项目就是你的作品!
或许,那不是错觉,从某种维度上,那就是你的劳动成果。就如同你自己亲手组装了一台电脑,你不用在意CPU是不是你亲手制作的。
在解决问题的过程中,你会学到很多知识。这些知识,不是体系的,不像29集矩阵课程那样完整,它是散落的,只和这一次项目有关。
跑完了这些例子,虽然你还是不知道实现这些功能的细节。但是,你对深度学习会有一个层次上的了解。比如,讲到GAN,你知道是对抗生成网络,就是自己和自己干起来,自己造假,然后自己辨伪,你跑过一个例子,就是自动生成动漫头像的,你也知道想要搞定这些,先得需要一些动漫头像作为训练集。
跑完这些例子,你就知道了深度学习有哪些领域,有处理自然语言的,有处理图片的,有处理音视频的。当你看到自动打游戏,你会说这是通过“强化学习”来实现的,里面有什么经验池,走对了有奖励啥的。
为什么你突然会了解这些?因为你花了一周多的时间跑了一个例子啊,那个例子就是讲“强化学习”的,所以你才这么刻骨铭心。
到此,深度学习在我们心中相当于有了一个轮廓,虽然不知道它的面容,但是知道他是一个人。



4、嘛也不行,事情还得从长计议

至此,你以为你无敌了。
其实,你嘛也不是:你运行的只是别人写好的代码,只能实现固定的功能。
我问你,你成功运行过一个自动生成莎士比亚歌剧的例子,如果让你做一个自动生成曾国藩家书,你行吗?
你骄傲地认为就是替换数据集就可以,因为你试过将莎士比亚的数据替换成富兰克林的数据,是没有问题的。
但是一换曾国藩的数据就完蛋了。原因就是英文和中文的分词方法是有区别的,但是他们的原理却是与语言无关的。你只需要改动某一个地方就可以,但就是不知道该改哪里。
当你想改造的时候,你发现,前面能跑通例子的成就感,是个错觉,你根本就控制不了它。
那好,那就去试着了解它的原理,只有懂了原理,才知道该在哪里开刀和缝合。
这就又回到了那个学习基础学科的起点。你又看到这些讨厌却又无法绕开的公式,像下面这样:



虽然面临的还是同一个问题,看似又回到了起点,但其实差别很大。就像你工作十年后,再让你去高考,虽然有些题还是不会做,但是你却知道了高考意味着什么,大学该去怎么有重点的学习和社交。
这时候,真得静下心来研究了,研究不要分心,不要扩展,就弄明白这一个点就行,因为精力有限。
这可能是比较艰难的时刻了,挺不过去就放弃了,挺过去了后面还会有更难的。
能到这一步,深度学习在我们心中相当于有器官了,我们能清楚地知道耳朵、眼睛在哪里,是什么形状。



5、不只是你迷茫,大家都有疑问




当你看到上面这些东西,终于能明白是什么意思的时候,你忽然发现,框架版本升级了,到了2.0不用再关心这些了。心情有点不愉悦。
1.0时,还需要关心原理的东西,还需要去设计矩阵结构,到了2.0完全不需要了。
此时,旧版的1.0你还没有完全搞明白,新版的2.0就到来了。
要不要学?

  • 坚持1.0:但是2.0真的很高效,你用1.0开发2个月还各种异常问题,别人用2.0三天就可以完成而且还稳定。
  • 尝试2.0:没有理论根基,变成了一个无脑的API调用者,不了解原理总感觉是处在鄙视链的最末一环。
  • 学完1.0再学2.0:那时再出来个3.0该怎么办?
6、官方的脚步,大多是趋势

我是从TensorFlow 1.x的张量、图、会话开始学习的,以我笨拙的资质,其晦涩程度如同看那些公式。
但是当TensorFlow 2.x发布后,尤其针对初学者的高阶API,尤其是官方主推的keras,让编程变得极其简单,仅需几十行代码即可完成一个神经网络的训练和使用。
我纠结过一阵子,最后还是选择了新版本,也希望大家都使用新版本。
原因有如下几点,这几点也是官方力推新版的理由:

  • 新版本简单易懂,入门容易。越简单,群众基础就会越大,生态会越强。如果全球就几个老头能掌握,那么它离灭绝就不远了,不管是技术还是老头。
  • 新版本经过包装,产能高效。你学习它,就是为了解决问题和创造价值的。既然新版可以更快更稳地产出效果,那么就该使用它。
  • 所谓原理鄙视,其实是代沟。你使用3.0版本会觉得4.0版本是无脑调用。其实,3.0刚出来时,也被2.0鄙视过。就像80年代的汽车驾驶员鄙视现在的司机不会修车一样,其实修车的工作不是消失了,只不过是换别人来做了。
7、给大家的建议

总结一下:

  • 如果你的基础学科(编程、数学)很差,又想早点入门,并且目标不是当一个人工智能科学家,只想拿它当工具来解决问题。那么,我建议你直接找实战小项目,先运行起来再说,培养兴趣,积累经验。就像高中毕业就去打工,先体验挣钱的感觉。等到别人7年后硕士毕业开始去打工了,你再返回去上课。
  • 积极面对新技术、新语言、新版本,如果它能让更多的人用更少的投入去产生更多的价值,那它就是值得学习的,就是未来的方向。不要在意门槛高低,从肯德基的汉堡制作,到面粉生产,再到小麦种植,每个层级都有人做,而且都可以做的很好。
  • 可以通过分轮的方式去学习。不要着急弄清楚一切,允许自己有不懂的地方。就像画画,第一轮先画一个轮廓,第二轮区分一下布局,第三轮细化,第四轮润色,古人云:书读百遍其义自见。



目前我依然是一个初学者,看着英文文档学习,只是一个搬运工,没有能力当大家的老师,只能在我博客涉及内容的范围内,给大家做一些详解。因为只要我写出来的,必定是我已经理解透彻的。
我是这样学习AI的,当然也不出彩,仅给大家提供一个参考。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册