关于机器学习

最近一年来,在多个技术社区中看到大家讨论机器学习,似乎已经炙手可热了,作为一个程序员,还是需要学习了解一番。
相关的理论还没有进行深入的研究,实践经验也就更加谈不上,这里只是从“概念”层面上来学习(也算是一点小预研吧)。

数据挖掘 Data Mining

就是指分析数据,然后从中得出一些结论。

在计算机领域的应用,就是根据一些规律或者理论(其他学科),利用计算机技术,对数据进行辅助分析和归类,最后对结果进行描述(一般是数据可视化)。

关联学科

  • 数据挖掘中,计算机技术只起到一个辅助作用,所以业务知识(其他学科)才是关键。
  • 随着人工智能的理论和产品逐渐成熟,我们还可以对这些数据进行更加深入的挖掘,甚至可以做出一些预测。
    所以数据挖掘一般也和目前比较热门的机器学习技术结合在一起。
  • 因为获取足够多数据才能进行数据挖掘,所以数据挖掘通常和大数据相关技术(比如分布式系统)结合在一起。

机器学习 Machine Learning

机器学习是实现人工智能的技术核心,目前有了一些成熟的应用。

利用一些算法,实现计算机的“自主学习”,即根据以往数据得出经验,再根据这些经验进行预测。
我们利用这些设计可以实现一些“模糊”的结果,比如计算匹配度之类的。

从一定角度上来说,实现人工智能的底层还是要数据挖掘,这个概念是绕不开的,只能根据属于过去的数据,得到属于未来的推论。

深度学习 Deep Learning

属于机器学习的一种,不过应用了一些神经网络方面的知识,可能更加接近人类的思考习惯吧。
目前最成熟的就是大规模图片识别中应用的卷积神经网络技术了。
虽然有几个深度学习的新框架,但是似乎都还离形成成熟产品有很远的距离。

据说,现在最大的挑战就是,需要采用超大规模的数据对计算机进行训练才能提升计算机的智能性。
应该只有那些超级大公司才有这个实战条件,比如苹果公司的 Sari 机器人。

思考

1、概念的迷惑

最早研究数据挖掘时,热门的技术是“识别模式”,其实也就是对机器辅助归类技术的深入研究。
识别模式可以理解成对验证码的识别,通过总结数字和字母的显示规律,最后识别成字符串。

在更加高级(智能)的机器学习技术成熟之后,“识别模式”就没落了。

现在是机器学习、深度学习,说不定什么时候又出现一个什么量子学习、DNA 学习...

给我的感觉就是,这些概念都在变化中,所以不能纠结这些名称的不同含义,或者那些对应的技术框架之间的优劣,他们总来来说不过就是利用计算机技术作为人脑的辅助,帮助我们进行数据分析(甚至以后可能替我们做一些决策)而已。

计算机辅助技术/人工智能还在进一步的发展中,今后可能出现更加成熟的技术,最后一统江湖,再等到下一波新的理论和实现成熟之后又推翻重建。

PS:以后操作系统可能都会基于人工智能来创建,比如 Linux 内核,可能就会加入人工智能模块。

2、怎么应用

机器学习在我们中小型 Web 站点构建、或者其他日常开发工作中可能会有什么应用呢?只谈可以实现的,感觉太遥远的就不扯了。

如果我有一个训练的足够智能的机器人:

  • 博客中的文章,是否不需要手动打 TAG 了(打 TAG 真的蛮烦,也不够高效)
  • 甚至可以对博文内容自动生成一些真正有价值的摘要
  • 相关内容、可能该兴趣的内容推荐
    说不定 Web 的交互模式都会有一个大的革新,反正应该不是现在这样,点击链接然后浏览页面
  • 搜索引擎中可以将更加符合用户需求的结果排在前面
  • 在线客服(聊天机器人)学会理解对方问题,并对一些问题进行应答
  • 开下脑洞:是否可以让电脑学会一些编程知识,这样的话,IDE 可以更加智能,提升一下我们的开发效率