网上关于机器学习的文章,视频不计其数,本来写这么一篇东西,我自己也觉得有点多余,但是我还真没找到一个能帮助像我这样零基础的人,快速接触和上手机器学习的文章。这篇文章不能让你深入学习和掌握机器学习的相关知识,但是一定能让你快速了解什么是机器学习,以及你到底要不要深入学习,你需要提前学哪些东西来makes you ready。
机器学习是什么
其实这个恐怕任何一个从业人员都已经了解了,我也不过多介绍了,用我自己的话来说就是:让机器学会用接近人类思考的方式来学习新的技能,从而帮助人类从一些简单的智能工作上解脱出来。比如车牌号识别、手写识别、语音识别、图片OCR等等。
机器学习的过程
机器学习的流程可以概括为几大部分,分别是:设置数据集、划分训练集和测试集、构建计算网络、训练模型、测试模型以及其他一些环节。设置数据集就是获取测试数据,你不能用爬虫随便爬几千个图片来训练,必须将图片先转化为规范的数据集合,比如大小相同等。其他的语音识别等,也需要先做类似的工作。幸运的是,你可以注册一个kaggle的账号,来获取一些已经采集好的标准数据集。第二步是划分集合,一多半用来训练,一小半用来测试,具体的比例你可以自行测试调优。训练集用来训练模型,测试集用来评估训练结果。为了防止模型过于匹配某些训练数据(术语叫做过拟合),训练时往往是不停的随机抽取样本建立批次来进行训练的,而不是分批次逐个批次训练做到全覆盖。后面的几个环节,我就不细说了,网上最多的就是这个。在keras框架中,这三个环节也就是几行代码的事。
tensorflow、keras、Matlab和神经网络CNN都是什么
这个是我初学的时候最困扰我的问题之一。Matlab是一种开发工具,类似于python语言,通信专业的孩子都懂的,经常用来绘制数学图像。tensorflow是一套机器学习框架,你可以详细的设计和定制你的学习模型和流程,当然你需要大量的专业知识和技能才能做到。keras是最适合我这种入门小白学习的,但是抽象的级别过高,你还是先了解下tensorflow再用比较好。它把很多tensorflow的功能(也可以使用theano和其他计算框架)都进行了更高层面的组合,让你用很少的代码就能实现很多功能。神经网络CNN是主要用于图像领域的计算框架,是一种计算模型,类似于基于Java或者PHP语言所使用的后端架构。实现的方式多种多样,这种架构比较适合图像识别(也可以用于语音识别等)。
基础知识的准备
matplotlib库是你必备的,这个是数学工具库,主要用来绘制数学函数和图像,非常的强大,很接近于Matlab的功能。这个网上也有专门的教程,建议先简单学习一下。
然后是numpy库,这个库是科学计算领域常用的库,专门用来做数字方面的工作,也是建议先学习一下。机器学习在某些时候,很接近于线性回归,而这个库很适合用来创建大量的数字集合。
再之后是OpenCV库,这个是专门用来做图像处理的库(我学的是python版本,原版貌似是c++开发的),包括摄像头采集,图像变换,图像分析分类等等,功能非常的强悍,可以说是计算机视觉领域必备的库。网上也有专门的大量教程,也建议先学习一下,了解基础用法。其中摄像头人脸检测(就是在图像中识别出有没有人脸),甚至已经内置了处理模型,能直接调用api检测出来。
下一步要做什么
想要开发出一个识别人脸或者动物的模型其实很简单,但是但是但是!想要知道这个模型是如何设计的,以及设计一个属于自己的模型去解决特定问题,这个是很难的。也就是说,写代码很简单,关键是熟练使用各种数学模型组成计算框架。斯坦福大学在网易云课堂上面有一个公开课,里面全都是各种数学模型和公式,目前我还无法驾驭,数学学渣感觉压力很大。如果你想深入研究并解决你自己遇到的特定问题,那么你需要熟练使用各种数学模型,还要知道如何评估自己的模型的准确率。星辰大海等着你去征服,少年。
最后的最后,我学这个时间确实很短,一定会有很多遗漏和错误之处,如果大家发现了,请一定指出并最好附上文档链接,大家共同学习。
评论
查看更多