客户端码农学习ML —— 整体了解
ML(Machine Learning 机器学习)
简介:
AlphaGo人机大战吸引了众多人的关注,也引来的一波AI热,不光很多公司进行了大量投入,连政府也相当重视,作为客户端码农自然要与时俱进下,经过一段时间学习与试验,稍有了解,写篇文章总结下。
首先要搞清楚当下3个热门词语: 人工智能(AI)、机器学习(ML)和深度学习(DL)的区别和联系。理解三者之间关系最简便方法就是将它们看作一组同心圆:最大的部分是人工智能,然后是后来兴旺的机器学习,最后是促使当下人工智能大爆发的深度学习。
本文从以下几个方面概览下AI的各方面:
首先要了解可以做哪些应用、整个训练流程有个大概印象,知道学习分类、学习框架,练习模型训练中用到的开发语言、科学计算库、图形库等,此时只是把ML的细节原理当成了黑箱子,稍微深入点的了解绕不过机器学习的算法和数学。
应用:
图像识别 这是比较常见的一种应用,可以用来做OCR、人脸定位、人脸识别、物体追踪等,识别王者荣耀英雄(https://zhuanlan.zhihu.com/p/28731349)
NLP (自然语言处理)
语音识别
游戏 比如AI自己玩魂斗罗、最近比较火的微信小游戏跳一跳(https://zhuanlan.zhihu.com/p/32636329)
风格转移 模仿大师的画作风格将其它的画进行转换
手势识别
超分辨率重建
去噪、去马赛克
训练流程
了解了AI能做到的事情,再来看看怎么训练AI使之学习到如何做到这些,模仿人类小孩的学习,想让他认识猫,先得指着一只猫告诉他这是猫,多看几只不同的猫,小孩就知道区分一堆动物中哪些是猫了,但他此时还是只知道识别猫,旁边一只不像猫的告诉他这是狗,看几只狗就又会识别狗了。常见的监督式AI学习过程与之类似,总结下来就是:
1 | 数据收集(如何低成本获取大量高质量数据、训练素材、数据集比训练模型更重要) |
学习分类:
监督学习
上面提的识别猫、狗的例子就是监督学习,收集打了正确标签的样本数据,通过学习框架编写代码读取数据集进行训练,一般来说数据越多模型可越准确。
无监督学习
计算机在没有结果标签的数据学习后,能获取有用数据的学习过程
半监督学习
介于上述两者之间
学习框架
Tensorflow
Caffe
Pytorch
Theano
开发语言及支持库
Python是AI开发的首选语言、没有之一,大量成熟的库。
大量支持库:
1 | Numpy(基础N维数组库) |
实现机器学习的技术
深度学习
强化学习
迁移学习
机器学习的算法
回归算法
支持向量机SVM
各种神经网络:如RNN、CNN等
决策树
聚类算法
贝叶斯网络
数学
对于大多数是工作多年的码农,尤其是客户端码农,数学早已还给了老师,但要想稍微深入了解机器学习,必须掌握一些数学知识,否则还只是API调用侠。
微积分、线性代数是必选项,尤其是线性代数无论是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