进入机器学习世界没有正确的方法。 我们都以略有不同的方式学习,我们对机器学习有不同的用途或目标。 但一个共同的目标是通过机器学习快速提高生产力。 如果这是你的目标,那么这篇文章将重点介绍程序员在快速成为有效的机器学习从业者的过程中常犯的五个错误。
机器学习只是另一种可用于为复杂问题创建解决方案的技术。 机器学习(主要是深度学习)和相关技术近年来变化迅速,因此它们经常出现在学术出版物和研究生教科书中,这使得它似乎遥不可及,但事实并非如此。
为了在机器学习中发挥作用,从技术到过程,从精度到“足够好”,思维方式的转变是必要的,但对于程序员感兴趣的其他复杂方法也是如此。
一次解决一个问题,并利用机器学习和统计环境以及算法库来学习如何将一种技术应用于解决问题要容易得多。 这使您可以相对快速地抽查和调整各种算法,并调整一两个看起来很有前途的算法,而不是花费大量时间解释包含算法描述的模糊研究**。
实现算法可以被认为是一个单独的项目,稍后要完成,例如,对于学习练习或需要投入运行的原型系统。 一次学习一件事,无论你是否是程序员,我都建议从基于 GUI 的机器学习框架开始。
应用机器学习的过程包括问题定义、数据准备和结果呈现等任务。 这些过程,以及算法的测试和调整,可以而且应该自动化。
自动化是构建、测试和部署现代软件开发的重要组成部分。 在编写数据准备、算法测试和调优以及结果准备方面有很大的优势,可以获得严谨性和改进速度的好处。 记住并重用在专业软件开发中学到的经验教训。
自动化的失败可能是由于许多程序员从书籍和课程中学习机器学习,而这些书籍和课程不太关注该领域应用程序的性质。 事实上,将自动化引入应用机器学习对程序员来说是一个巨大的机会。
如果你不认为自己是天才,那么有无数人可能已经在你之前实现了你正在编写的算法,或者已经解决了与你正在解决的问题类似的问题,充分利用了从以前的问题中吸取的经验教训。
解决和应用机器学习问题需要丰富的知识。 如果要实现算法:
有必要重写吗?你能在重用现有开源算法的库或工具中找到它吗?
你必须解释算法的规范描述吗?在其他书籍或博客文章中是否有任何关于该算法的描述,您可以查看和学习?
你不需要数学来开始,但数学是机器学习的重要组成部分。 原因是它提供了描述问题和系统行为的最有效和最明确的方式。
忽略算法的数学处理可能会导致问题,例如对方法的理解有限或对算法的解释有限。 例如,许多机器学习算法的核心是增量更新的优化。 了解正在求解的优化(凸函数)的性质,使您能够使用利用这些知识的高效优化算法。
算法数学处理的内化速度很慢,需要掌握。 特别是如果您从头开始实现高级算法(包括内部优化算法),请花时间从数学角度学习算法,但数学方法不适合初学者。
优质作者名单