本文主要参考 scikit-learn机器学习 常用算法原理及编程实践
源码连接http://www.hzcourse.com/web/refbook/detail/7641/226
本文包括 介绍机器学习应用,机器学习的分类,机器学习开发的典型步骤
1介绍机器学习应用
得益于摩尔定律,计算机硬件(CPU、GPU)为很多通过大量数据学习的算法提供很好的条件,这类算法称为机器学习算法。
传统算法:数据 + 人工设计的算法 = 输出结果
机器学习:首先,数据 + 机器学习算法 + 结果 = 算法模型
然后,数据 + 算法模型 = 输出结果
或者,数据 + 机器学习模型 = 输出结果 (无监督)
所谓的人工智能,最火热的三个大方向:图像处理,自然语言处理(NLP),语音处理 。基于语音序列数据、图像像素数据和文本序列化数据,使用较为复杂的学习算法与所需求的输出,求的一些靠人为很难设计的算法 来得到一些不可思议的效果。在机器学习中,有一类基于神经网络的算法集合,称为深度学习算法,是目前应用最火的算法,当然还有强化学习,对抗神经网络等,但这系列文章不做过多介绍。
图像处理:图像分类、图像检测、图像分割、图像搜索、图像恢复、图像生成(GAN)、图像翻译(CNN+RNN)、风格迁移等。具体应用在工业零件目标检测(可能传统方法多一些),无人驾驶中获取道路信息(往往配合着物理传感器),人脸识别等等。
自然语言处理、语音识别暂不多做介绍。
2机器学习的分类
主要分为两大类:有监督学习和无监督学习
有监督学习可以根据数据的类型(连续型数据、离散性数据)分为回归学习或分类学习。
无监督学习主要有聚类算法等
3机器学习应用开发的典型步骤
1)数据采集和标记
数据驱动的科学当然最关键的是数据了,目前算法大多都开源,但数据不是每个人都有。很多公司真的是积累了很多很多的数据了。可能自从网上有会员机制开始的吧。
根据你的项目需求,采集相关的数据(人脸、车牌等),并做标记(很多为人工标记,也有一些自动标记的算法)。
2)数据清洗(预处理)
数据清洗主要包括去掉重复的数据及噪声数据,让数据具备结构化特征,以方便作为机器学习算法的输入。
3)特征选择
我们数据处理好了,但是不能直接的扔进算法中。要选择几类特征做为输入,比如说房价预测选择地域、交通、学校、商城等,图像选择HAAR、HOG、LBP等。
或者可以通过模型自动选则特征,比如PCA算法。(图像可以通过卷积神经网络自动提取特征,文本也可以通过循环神经网络自动提取特征。。。不过是属于深度学习范畴了)
4)模型选择
接下里选择一下把数据扔进哪一个模型中呢?当然这个需要考虑很多了,比如数据的规模,训练的时间,模型准确率,模型检测速度等。模型学习多了,最后也就有个对比知道怎么选了,主要是经验和总结的问题。
5)模型训练和测试
模型训练前,很多很多的参数、超参数需要自己定义,也有很多加速训练的机制等。定义好了不仅可以加快网络的训练,还能提高准确率。参数超参数主要包括:
- 数据输入的(超)参数:(定义输入数据大小维度,数据分批,交叉验证等)
- 算法设计的(超)参数:(初始话权重,隐藏层数,结构单元数,正则化参数等)
- 训练网络的(超)参数:(学习率,学习率衰减,minibatch中定义批次、伦次等)
使用交叉验证的方法,选择更好的模型。
6)模型性能评估和优化
评估标准:训练时长,模型拟合,准确率(P、R)
7)模型使用
训练好的模型可以把参数保存起来,使用时直接加载。
639

被折叠的 条评论
为什么被折叠?



