不要一上来就学机器学习,要先学会用机器学习模型构建软件
扫描二维码
随时随地手机看文章
如果你决定开始学机器学习,并且按照常规的方式开始学习,那么很可能出现这样的情况:学习线性代数和多变量微积分两周后就选择放弃。
原因在于,大多数机器学习的入门材料不是面向开发者的,而是面向机器学习研究人员开发的,而对于只想使用机器学习来构建产品的开发者来说,这些材料未免太难了。
你是想只想做产品还是想做研究?在20年代末,机器学习或多或少只是一个学术研究问题,在实际产品中使用机器学习的公司并不多。
因此,很多机器学习的入门资料都是从这个学术研究的角度出发,它首先从数学的角度解释了神经网络、机器学习背后的理论知识、反向传播和对抗性网络等等。
即使不是属于大学课程的学习资料也是沿用了这个模式,例如,这句直接摘自Tensor Flow的中的一句话:
很显然,如果你已经掌握了机器学习背后的数学知识或者你对学习机器学习本来充满了兴趣,那么这种学习方法对你来说会是可行的。但是,如果你主要是想在构建产品加入机器学习,那么这可能不是你需要的。
就好比你想学习程序设计,这种方法就像先学习汇编代码,然后学习写代码,事实是几乎没有面向产品的开发者是这样学习的。
当你学习代码时,你很可能是通过使用高级语言写“hello world”来入门的,然后,当项目变得稍微复杂了些,你会按照需求学习越来越多的低级编程。
如果你在构建自动推荐引擎和发表论文,那么你就应该去学习机器学习本身,如果只是想构建产品,那么你需要通过构建软件来学习机器学习。
如何通过构建软件来学习机器学习如果你喜欢通过线上课程来学习,那么最好的资源或许就是fast.ai的Practial Deep Learning For Coders,fast.ai是最有发言权的机器学习倡导者,它推荐使用自上而下、理论实践相结合的学习方法来学习机器学习。
课程链接:
https://course.fast.ai/
当然,这篇文章的目的不是为fast.ai做广告,只是想说fast.ai的创始人Jeremy Howard和Rachel Thomas成功地把几门课程整合在一起,这些课程让开发者构建产品、深入了解项目相关的底层逻辑。
另外,如果你是那种通过深入了解并且自己构建知识体系,以此可以达到最大的学习效果的人,那么学习机器学习就和你学过的编程语言一样。挑选一个听起来让你感兴趣的项目,并深入其中学习就可以了。
这里推荐一种熟悉机器学习的好方法:
确定目标,例如构建文本自动填充器或车牌识别器。
找到一个适合你项目的预训练模型,比如用GPT2和YOLOv3分别适用于前面提到的文本自动填充器和车牌识别器。
如果你觉得太复杂了,你甚至可以使用GPT2-simple这样的库来微调你的模型(根据数据集定制)。
最后,将你的模型部署成一项小型应用。
一旦你有了一个API接口的模型,你就可以像其他查询web服务一样,并且围绕它构建你的应用程序。
通过这种学习方法,可以促使你了解到不同流行的模型构架和机器学习的方法,以及它们的使用场景。同样重要的是,你将学习机器学习基础构架,这对构建真实的产品至关重要。
学会构建产品后可以回头再学习理论如果你是一名工程师,你可能已经学习过实现了某种形式的身份验证,这意味着你很可能用过散列密码。
那么当你设置散列密码时,你是否有自定义散列算法?你花了几周时间去研究密码学?还是说你只是使用内置的加密算法bcrypt。
同样,当你构建你的第一个Web应用程序时,你是否花了几周时间去学习数据库?你是否从头开始编写自己的数据库?还是说使用了你最喜欢的框架所附带的ORM?
这些问题的逻辑同样也适用于机器学习,如果你是那种喜欢构建软件的人,那就从构建软件开始,从工具、预训练模型和机器学习框架中抽象出底层的机器学习理论。如果你依然很好奇或者你的项目需要更高的复杂度,那就深入进去,看看这一切是如何运作的。