机器学习(未完待续)

本文介绍了机器学习的基本概念、学科基础及其在数据挖掘、计算机视觉等领域的广泛应用。探讨了当前机器学习的热门趋势,如深度学习,并分析了其局限性。同时概述了业界动态,包括Google的TensorFlow、Facebook的Torch以及百度的Warp-CTC等开源项目,展示机器学习在各大型企业中的应用。最后,讨论了机器学习模型的训练挑战以及现有的开源工具和框架。

目标:仔细研究认知技术,看是否可应用到工作项目中

介绍

概念

  • 机器学习是专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能的一门学科
  • 人工智能的核心,是使计算机具有智能的根本途径

学科基础

是一门多领域交叉学科,涉及概率论、统计学、逼近论凸分析算法复杂度理论等多门学科

应用领域

数据挖掘计算机视觉自然语言处理生物特征识别搜索引擎医学诊断、检测信用卡欺诈证券市场分析、DNA序列测序、语音手写识别、战略游戏机器人

趋势

当下非常热门,各大互联网、IT巨头均推出了相关的项目,各类研报也是一致看好,譬如
- 德勤重磅报告-2016:认知技术成为80%世界百强企业标配
2016年对商业和公共领域领导者们来说最先进的几种认知技术包括 语音识别-计算机视觉-机器学习-自然语言处理-优化-计划与安排-机器人-规则基系统,其中,机器学习,自然语言处理和语音识别对企业软件市场最为重要

局限

  • 神经网络(浅度)提出好几十年了,为什么最近才火呢?其中一个原因就是之前它的效果并不比非深度学习算法好,比如支持向量机(SVM),Boosting,逻辑回归(LR)等
  • 深度学习也不是万能的,至少现在的一个问题是它需要更强的计算能力才能训练出一个比较好的模型。它还不能像人类那样通过很少的训练样本就能学习很好的效果,当然模型越复杂(网络层数越多),效果越好,但训练所花费的时间也成倍越长
  • 目前来看,深度学习只是在Speech和Image这种比较“浅层”的智能问题上效果是比较明显的,而对于语言理解和推理这些问题效果就不那么好了
  • 在一个完整的工业级的识别系统里, 除了深度学习算法外,还有很多工作是专业领域相关的算法,以及海量数据收集和工程系统架构的搭建,这就大大增加了构建完整系统的难度和复杂度
  • 机器学习模型的训练目前还没更有效的简便方法,在训练过程中,layer的数量、每个layer的node数、卷积层与全连接层的组合模式、卷积kernel的大小、max-pooling层的位置、输出层的log-transform、输入层的数据模式,甚至训练的方法等等,大都需要专家经验去手工调优,所以举例真正的全自动化学习、进化还差距很远
  • 了解下来,现有的开源项目做的事情基本上就是将经典的机器学习模型、算法程序化,提供分布式的计算框架(机器学习训练相当耗费计算资源)或者做一套利用机器学习方案解决问题的流程范式

现状

业界动态

  • Facebook

    • Facebook最近宣布对与其自主设计的Open Rack服务器相兼容的硬件设计进行开源
    • Facebook已经开源了它的深度学习模块——Torch,Torch是以一种机器学习的开源环境,如今向Torch提供AI工具,结合使用Torch和Big Sur的开源设计将有利于初创公司开展业务,相信将会加速整个行业的进展脚步
  • 百度 Warp-CTC

  • Google

    • 开源了其机器学习库TensorFlow

      关于TensorFlow实现
      TensorFlow一大亮点是支持异构设备分布式计算,它能够在各个平台上自动运行模型,从电话、单个CPU / GPU到成百上千GPU卡组成的分布式系统。支持CNN、RNN和LSTM算法,这都是目前在Image,Speech和NLP最流行的深度神经网络模型。
      在论文里的例子来看,这个架构有点像Spark或者Dryad等图计算模型。就像写Map-reduce代码一样,我们从高层的角度来定义我们的业务逻辑,然后这个架构帮我们调度和分配计算资源(甚至容错,比如某个计算节点挂了或者太慢)。目前开源的实现分布式Deep learning的GraphLab就是GAS的架构,我们必须按照它的抽象来编写Deep Learing代码(或者其它分布式代码,如果PageRank),而Deeplearning4j直接使用了Spark。Google的TensorFlow应该是一种抽象方式,可惜现在开源的部分并没有这些内容。有点像Google开源了一个单机版的Hadoop,可以用这种抽象(Map-reduce)来简化大数据编程,但是实际应用肯定就大大受限制了。

    • AlphaGo围棋程序在没有任何让子的情况下,以5:0完胜欧洲冠军、职业围棋二段选手樊麾 。在围棋人工智能领域,实现了一次史无前例的突破。

      关于AlphaGo实现:
      AlphaGo的核心是两种不同的深度神经网络:“策略网络”和“值网络”。它们的任务在于合作“挑选”出那些比较有前途的棋步,抛弃明显的差棋,从而将计算量控制在计算机可以完成的范围里,本质上和人类棋手所做的一样。
      其中,“值网络”负责减少搜索的深度——人工智能会一边推算一边判断局面,局面明显劣势的时候,就直接抛弃某些路线,不用一条道算到黑;而“策略网络”负责减少搜索的宽度——面对眼前的一盘棋,有些棋步是明显不该走的,比如不该随便送子给别人吃。将这些信息放入一个概率函数,人工智能就不用给每一步以同样的重视程度,而可以重点分析那些有戏的棋着。
      AlphaGo利用这两个工具来分析局面,判断每种下子策略的优劣,就像人类棋手会判断当前局面以及推断未来的局面一样。这样AlphaGo在分析了比如未来20步的情况下,就能判断在哪里下子赢的概率会高。
      研究者们用许多专业棋局训练人工智能,这种方法称为监督学习,然后让人工智能和自己对弈,这种方法称为强化学习,每次对弈都能让人工智能棋力精进。然后他就能战胜冠军啦!
      人类在下棋时有一个劣势,在长时间比赛后,他们会犯错,但机器不会。而且人类或许一年能玩1000局,但机器一天就能玩100万局。所以AlphaGo只要经过了足够的训练,就能击败所有的人类选手

  • Microsoft
    微软开源分布式机器学习工具包DMTK(Distributed Machine Learning Toolkit)
    微软 2.5 亿美元收购 AI 公司 Swiftkey,该公司的产品是基于 AI 的有预测能力的输入法,在 IOS 和安卓平台都有上线,装机量超 3 亿。

  • IBM
    IBM开源机器学习系统SystemML,基于Java语言编写,可支持描述性分析、分类、聚类、回归、矩阵分解及生存分析等算法, 可支持单机和分布式部署,支持的框架包括Hadoop和Spark

开源项目

Google TensorFlow

An open source software library for numerical computation using data flow graphs.

Microsoft MDLT

Distributed Machine Learning Toolkit

Badidu warp-ctc

A fast parallel implementation of CTC( Connectionist Temporal Classification ), on both CPU and GPU

Torch

provides a Matlab-like environment for state-of-the-art machine learning algorithms in lua (from Ronan Collobert, Clement Farabet and Koray Kavukcuoglu) 参见快速教程

  • core features:

    • a powerful N-dimensional array
    • lots of routines for indexing, slicing, transposing, …
    • amazing interface to C, via LuaJIT
    • linear algebra routines
    • neural network, and energy-based models
    • numeric optimization routines
    • Fast and efficient GPU support
    • Embeddable, with ports to iOS, Android and FPGA backends
  • List of Packages by Category

Core Math* Visualization*Utility libraries
Data formats I/OSensor I/ODatabases
Machine LearningComputer VisionNLP
Parallel ProcessingCUDA(Compute Unified Device Architecture)OpenCL
ImagesVideosAudio
AsynchronousNetworkingSecurity
Alternative REPLsInterfaces to third-party libsReinforcement Learning
Miscellaneous

Others

  • scikit-learn - Numpy / Scipy / Cython implementations for classic machine learning algorithms and provide simple an efficient solutions to learning problems
  • GoLearn - machine learning library for Go

附录

参考文章

Deep Learning software links
人工智能和机器学习领域有哪些有趣的开源项目?
11 open source tools to make the most of machine learning
The Best Machine Learning Libraries in Python
Spark 2015年回顾:四个大版本更迭、数以百计的改进 ( 新增了数据科学API,包括DataFrames,机器学习流水线(Machine Learning Pipelines)及R语言支持 )
python tools for machine learning
TensorFlow、DMTK与SystemML孰优孰劣
揭秘TensorFlow:Google开源到底开的是什么?
工业4.0时代的物联网架构实践之道
助你玩转机器学习技术的十三套框架
机器视觉与深度神经网络—洗去浮华,一窥珠玑
深度学习在图像识别中的研究进展与展望

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值