客户端码农学习ML —— 整体了解

ML(Machine Learning 机器学习)

简介:

AlphaGo人机大战吸引了众多人的关注,也引来的一波AI热,不光很多公司进行了大量投入,连政府也相当重视,作为客户端码农自然要与时俱进下,经过一段时间学习与试验,稍有了解,写篇文章总结下。

首先要搞清楚当下3个热门词语: 人工智能(AI)、机器学习(ML)和深度学习(DL)的区别和联系。理解三者之间关系最简便方法就是将它们看作一组同心圆:最大的部分是人工智能,然后是后来兴旺的机器学习,最后是促使当下人工智能大爆发的深度学习。

3个概念关系

本文从以下几个方面概览下AI的各方面:

首先要了解可以做哪些应用、整个训练流程有个大概印象,知道学习分类、学习框架,练习模型训练中用到的开发语言、科学计算库、图形库等,此时只是把ML的细节原理当成了黑箱子,稍微深入点的了解绕不过机器学习的算法和数学。

应用:

图像识别 这是比较常见的一种应用,可以用来做OCR、人脸定位、人脸识别、物体追踪等,识别王者荣耀英雄(https://zhuanlan.zhihu.com/p/28731349)

NLP (自然语言处理)

语音识别

游戏 比如AI自己玩魂斗罗、最近比较火的微信小游戏跳一跳(https://zhuanlan.zhihu.com/p/32636329)

风格转移 模仿大师的画作风格将其它的画进行转换

手势识别

超分辨率重建

去噪、去马赛克

训练流程

了解了AI能做到的事情,再来看看怎么训练AI使之学习到如何做到这些,模仿人类小孩的学习,想让他认识猫,先得指着一只猫告诉他这是猫,多看几只不同的猫,小孩就知道区分一堆动物中哪些是猫了,但他此时还是只知道识别猫,旁边一只不像猫的告诉他这是狗,看几只狗就又会识别狗了。常见的监督式AI学习过程与之类似,总结下来就是:

1
2
3
4
5
6
7
8
9
10
数据收集(如何低成本获取大量高质量数据、训练素材、数据集比训练模型更重要)
数据分析
数据清洗
数据采样
特征提取
最小累积误差计算(梯度下降法)
训练模型
验证模型
测试模型
使用及改进

学习分类:

监督学习

上面提的识别猫、狗的例子就是监督学习,收集打了正确标签的样本数据,通过学习框架编写代码读取数据集进行训练,一般来说数据越多模型可越准确。

无监督学习

计算机在没有结果标签的数据学习后,能获取有用数据的学习过程

半监督学习

介于上述两者之间

学习框架

Tensorflow

Caffe

Pytorch

Theano

开发语言及支持库

Python是AI开发的首选语言、没有之一,大量成熟的库。

大量支持库:

1
2
3
4
5
6
Numpy(基础N维数组库)
SciPy(科学计算库)
Pandas(数据分析处理库)
Matplotlib(数据可视化库)
Pil(图像处理库)
scikit-learn(机器学习库)

实现机器学习的技术

深度学习

强化学习

迁移学习

机器学习的算法

回归算法

支持向量机SVM

各种神经网络:如RNN、CNN等

决策树

聚类算法

贝叶斯网络

数学

对于大多数是工作多年的码农,尤其是客户端码农,数学早已还给了老师,但要想稍微深入了解机器学习,必须掌握一些数学知识,否则还只是API调用侠。

微积分、线性代数是必选项,尤其是线性代数无论是AI还是游戏开发都是必选项,其次最好能了解概率论相关。

下图做了一个详细的汇总:

AI (人工智能)汇总图

参考:

https://www.zhijin.vc/article/news_detail/356

https://www.bysocket.com/?p=1823

https://www.zhihu.com/question/51039416

https://www.zhihu.com/question/36324957

 

本文首发于钱凯凯的博客 : http://qianhk.com/2018/02/客户端码农学习ML-整体了解/