「机器学习」学到多深够用?

机器学习现在热得一塌糊涂,码农要是不会点机器学习,都不好意在IT界混了。

机器学习难吗?一大堆公式,好像很难的样子。不过,看人家用起来,也不过就是下载几个软件包,调用几个算法函数。

干脆不理那些看着头晕的怪异符号和希腊字母,直接把那些算法当黑盒用是不是就可以了?

很不幸,这样做往往是不可以的。仅仅把机器学习算法当作黑盒使用的问题在于:黑盒能够解决问题的时候,使用方便,而一旦不能解决问题,或者对质量有所要求,就会感觉无所适从。

作为程序员、工程人员(算法使用者而非研究者),想用机器学习算法解决实际问题,至少要在三个维度上达到一定深度的掌握:算法、数据和验证。

算法

算法是机器学习的核心。一般意义上的“学习‘机器学习’”,也是从算法开始。

仅从使用角度而言,掌握算法,大致可分为如下由浅入深的几步:

  1. 简单使用:了解某个算法基本原理,应用领域,功能和局限。 a) 该算法的应用问题域是什么?(e.g. 分类、回归、聚类……) b) 该算法的应用目标是什么?(e.g. 判别算法、生成算法……) c) 该算法适合应用在怎样的数据集,它能对数据造成怎样的影响?(e.g. 适用少量高维稀疏数据……) d) 能够主动获取该算法的函数库,调用该算法生成模型。
  2. 算法优化:对所采用算法和对应模型的数学公式有所了解。 a) 知道调用函数中各个参数的意义(e.g. 迭代次数,对应到公式中参数的含义……),能够通过调节这些参数达到优化结果的目的。 b) 能够通过加约束条件(e.g. L0, L1, L2 ……)来优化算法。 c) 了解在当前问题域,目标和输入数据确定的情况下,还可以用哪些其他模型可替换现有模型,并进行尝试。 d) 能够将多个弱模型加权组成强模型(e.g. adaboost)。
  3. 运行效率优化:对模型本身的数学推导过程和模型最优化方法有所掌握,对于各种最优化方法的特点、资源占用及消耗情况有所了解。 a) 了解算法在当前数据集上的运行效率(e.g. 需要进行哪些运算,是否易于被分布式等)。 b) 了解在其他语言、平台、框架的工具包中有否同等或近似功能但在当前应用场景下效率更高的算法。 c) 能够针对具体场景,通过转换模型的最优化方法(optimizer)来改进运行效率。
数据

仅仅只有算法,并不能解决问题。算法和数据结合,才能获得有效的模型。

对于数据,需要从:i). 具有业务含义的信息,和ii).用于运算的数字,这两个角度来对其进行理解和掌握。

  1. 特征选取:从业务角度区分输入数据包含的特征,并认识到这些特征对结果的贡献。 a) 对数据本身和其对应的业务领域有所了解。 b) 能够根据需要标注数据。 c) 知道如何从全集中通过划分特征子集、加减特征等方法选取有效特征集。
  2. 向量空间模型(VSM)构建:了解如何将自然语言、图片等人类日常使用的信息转化成算法可以运算的数据。 a) 能够把文字、语音、图像等输入转化成算法所需输入格式(一般为实数空间的矩阵或向量)。 b) 能够根据信息熵等指标选取有效特征。 实例1
  3. 数据处理:运用统计学方法处理输入数据。 a) 能够对数据进行归一化(normalization), 正则化(regularization)等标准化操作。 b) 能够采用bootstrap等采样方法处理有限的训练/测试数据,以达到更好的运算效果。
验证

算法+数据就能够得到模型。但是这个模型的质量如何?这个模型和那个模型比较,哪个更适合解决当前问题?在做了如此这般的优化之后得出了一个新的模型,怎么能够确认它比旧的模型好?

为了解答这些问题,就需要掌握度量模型质量的方法。

  1. 了解bias,overfitting等基本概念,及针对这些情况的基本改进方法。
  2. 了解各种模型度量指标(e.g. Accuracy, Precision,Recall, F1Score……)的计算方法和含义,及其对模型质量的影响。
  3. 能够构建训练集、测试集,并进行交叉验证。
  4. 能够运用多种不同的验证方法(e.g. 2-Fold cross-validation,K-Fold cross-validation, Leave-One-Out cross-validation……)来适应不同的数据集。
注意

上面所说的全部都是针对基于统计的机器学习算法而言的(典型算法包括:线性回归,逻辑回归,朴素贝叶斯法、决策树、支持向量机、隐马尔可夫模型、条件随机场等等)。

当前比机器学习更热的深度学习(Deep Learning),玩法很不相同。

CNN, DNN, RNN, LSTM等一众神经网络,淡化甚至省略了特征筛选的部分,对标注数据量和运算能力的要求却极大。

在数据量不足的情况下,深度学习效果甚至还不如一般的统计学习方法。而如果运算能力不足,则可能导致不可容忍的训练时间。

而且相对于统计学习方法而言,深度学习的理论性相对不够成熟,试验的成分很高,许多方法还在探索之中。

因此,现阶段,人工智能领域的普通工程开发者(程序员),更有可能应用到的是没那么酷的基于统计的机器学习算法,而非深度学习。

原文发布于微信公众号 - 悦思悦读(yuesiyuedu)

原文发表时间:2017-02-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

学界 | CMU、NYU与FAIR共同提出GLoMo:迁移学习新范式

深度学习的最新进展很大程度上依赖于诸如卷积网络(CNN)[ 18 ] 和循环网络(RNN)[ 14 ] 之类的架构及注意力机制 [ 1 ]。这些架构虽然具有较高...

1300
来自专栏PPV课数据科学社区

文本数据的机器学习自动分类方法(上)

【编者按】:随着互联网技术的迅速发展与普及,如何对浩如烟海的数据进行分类、组织和管理,已经成为一个具有重要用途的研究课题。而在这些数据中,文本数据又是数量最大的...

5306
来自专栏AI科技大本营的专栏

一文带你了解深度神经网络架构发展史

作者 | Eugenio Culurciello 译者 |叶俊贤 深度神经网络和深度学习算法因为在科研工作与工程任务中都取得了显著的效果从而大受欢迎。而其中取...

37512
来自专栏数据派THU

10大深度学习架构:计算机视觉优秀从业者必备(附代码实现)

? 来源:机器之心 作者:FAIZAN SHAIKH 本文长度为3000字,建议阅读5分钟 本文包括深度学习领域的最新进展、keras 库中的代码实现以及论文...

3349
来自专栏AI科技评论

深度神经网络发展历程全回顾:如何加速DNN运算?

深度神经网络(DNN)目前是许多现代AI应用的基础。自从DNN在语音识别和图像识别任务中展现出突破性的成果,使用DNN的应用数量呈爆炸式增加。这些DNN方法被大...

4136
来自专栏YoungGy

构建聊天机器人:检索、seq2seq、RL、SeqGAN

本文将简要介绍聊天机器人的四种构建方法:检索、seq2seq、Reinforcement Learning、seqGAN。 ? 聊天机器人的现状 聊天机器人从应...

4679
来自专栏SIGAI学习与实践平台

化秋毫为波澜:运动放大算法(深度学习版)

运动放大(Motion Magnification),将视频中对应位置的运动进行放大,简单理解的话,就是找到时间段内的运动矢量,进行放大,然后权值叠加回去。

2872
来自专栏磐创AI技术团队的专栏

论文 | 半监督学习下的高维图构建

1622
来自专栏CreateAMind

慢特征分析

慢特征分析 (slow feature analysis, SFA) 是使用来自时间信号的信息来学习不

1481
来自专栏机器学习之旅

Kaggle&TianChi分类问题相关纯算法理论剖析导读Bias-Variance-TradeofGBDT 理论剖析GBDT 实战剖析

17/12/30-update :很多朋友私密我想要代码,甚至利用金钱诱惑我,好吧,我沦陷了。因为原始代码涉及到公司的特征工程及一些利益trick,所以我构造了...

983

扫码关注云+社区

领取腾讯云代金券