首先我们要明白 人工智能 机器学习 深度学习的关系。
其中 人工智能 > 机器学习 > 深度学习
代码语言:javascript复制 什么是机器学习?
从字面意思来理解的话,就是使得“机器”具有学习的能力,从而能够自主工作,解放人类生产力。
那么官方解释:专门研究计算机怎么模拟或实现人类的学习行为,以或得新知识或技能。
代码语言:javascript复制 机器学习的一般过程
从上图我们可以得知所谓的机器学习就是:让机器从大量数据或者历史经验中,学习某种习性-----找到一个适合的函数,然后对新的场景中的数据进行预测。
代码语言:javascript复制 机器学习发展历史
代码语言:javascript复制 机器学习应用场景
1.搜索引擎
2.信息推荐
3.图片识别
4.用户分析
5.机器翻译,摘要生成
6.自动驾驶
机器学习方法
1.有监督学习(supervised learning):从给定的有标注的训练数据集中学习出一个函数(模型参数),然后用这个函数去预测新的数据得到结果。
- 常见任务有:分类 和 回归
- 分类问题输出的是物体所属的类别,回归问题输出的是物体的值。
2.无监督学习(unsupervised learning):没有标注的训练数据集,根据样本之间的统计规律对样本数据进行分析。
- 常见任务有:聚类
- 所谓聚类,“物以类聚”。就是按照特征分类
3.半监督学习:结合(少量)标注训练数据和(大量的)未标注数据来进行数据的分类学习。
- 这里不常见,不过由于数据标注是一个繁琐,枯燥又要求一定的技术水平。所以实现智能标注是未来的一大趋势。
- 近期百度EasyDL平台实现了智能标注,原理:先标注少量数据训练一个较为优良的模型,然后利用这个模型去标注未标注的数据集。(套娃操作)
4.强化学习:外部环境对输出只给出评价信息而非正确答案,学习机通过强化受奖励的动作来改善自身的性能。
- 还记得高中生物课本中:狗狗闻到肉会流口水,铃声一响,喂狗狗吃肉…如此一段时间下来,铃声一响,狗狗就流口水。(好像是这样子的)
5.多任务学习:把多个相关的任务放在一起同时学习。
- 现实世界中很多问题不能分解为一个一个独立的子问题,并且这样子忽略了问题之间所包含的丰富的关联信息。多任务学习就是为了解决这个问题而诞生的。
机器如何学习?
1.数据预处理
- 数据清洗,数据采样,数据拆分
2.特征工程
- 特征编码,特征选择,特征降维
3.数据建模
- 归回问题,分类问题,聚类问题
4.结果评估
- 查准率,查全率,F1值,PR曲线
简单解释下某些名词
所谓 数据清洗 ,相信搞过项目的都不陌生。这里我简单解释一下,就是在采集到数据集后,我们需要对数据集进行处理,去掉不好的数据集。
什么是不好的数据集?
- 模糊的数据,大量重复的数据(去重)等等。
数据采样的数量要求
- 数据集各类别分类平均。这里假设你想做一个简单的猫狗识别,那么猫的数据集你有1000 ,狗的数据集你只有1。这显然是不合理的!
如何进行数据拆分
- 拥有一点机器学习知识的人都知道,我们在机器学习中需要把数据划分为3份。
- 训练数据集:用来训练,提取特征,得到模型。
- 验证数据集:辅助构造模型,构造模型过程中评估模型,提供无偏估计,进而调整模型参数。
- 测试数据集:用来评估训练好的最终模型的性能。
- 常用的拆分方法:
- 留出法:通常选取 70%数据作为训练集,30%数据作为测试集。
- K-折交叉验证法:将数据集划分为k个大小相似的互斥子集。保证每个子集数据分布较为一致。如此,就可以获取k组训练-测试集,从而进行k次训练和测试,k通常取值为10.
特征编码
- 众所周知,图片在计算机看来不过数字。那么在一幅图片进行特征编码即为根据不同的特征赋予其一定的值。(与RGB有关)
特征选择
- 还是假设我们做猫狗识别,那么猫猫跟狗狗的图片是具有大量的属性特征的!我们有必要把所有的特征都用上去嘛?答案是否定的,我们只需要提取关键主干特征,即影响因子大的特征,忽略一些无关紧要的属性特征。如此一来不仅仅可以降低运算复杂度。还可以一定程度上提高模型精度。
特征降维
- 特征选择完成后,会出现特征矩阵过大,导致计算量大,训练时间长,因此降低特征矩阵维度 也是必不可少的。
- 主成分分析(PCA):将原始特征空间映射到彼此正交的特征向量空间,在非满秩的情况下使用SVD分解来构建特征向量。
- 线性判别分析(LDA):给出一个标注了类别的数据集,投影到了一条直线之后,能够使得点尽量的按类别区分开。
回归问题
- 回归分析用于预测输入变量(自变量)和输出变量(因变量)之间的关系。直观来说回归问题等价于函数拟合,选择一条函数曲线使其很好地拟合已知数据且很好地预测未知数据。
线性回归
- 线性回归算法假设特征和结果满足线性关系。这就意味着可以将输入项分别乘以一些常量,再将结果加起来得到输出。
分类问题
- 分类问题是监督学习的一个核心问题,他从数据中学习一个分类决策函数或分类模型(分类器)。对新的输入进行输出预测,输出变量取有限个离散值。
- 例如文本类分类:二分类问题:区分垃圾邮件,正常邮件
- 多分类问题:文本分为 科技,军事,娱乐。
- 核心算法:决策树,贝叶斯,SVM。
聚类问题
- 聚类问题是无监督学习的问题。聚类算法感知样本间的相似度,进行类别归纳,对新的输入进行输出预测,输出变量取有限个离散值。
46