陈东泽(Eurychen)| 东泽煮粥 - 所见所闻所学所想,煮成一锅粥
Recent content on 陈东泽(Eurychen)| 东泽煮粥 - 所见所闻所学所想,煮成一锅粥
马上订阅 陈东泽(Eurychen)| 东泽煮粥 - 所见所闻所学所想,煮成一锅粥 RSS 更新: https://eurychen.me/index.xml
读懂一个 demo,入门机器学习

我们总有一种感觉,机器学习门槛高、难入门。这是因为这里有太多晦涩的概念「神经网络」、「评估指标」、「优化算法」等让初学者老是有种盲人摸象的感觉。甚至连理解一个 Tensorflow 官方 Demo 都感觉吃力,因此不少开发者就有过「机器学习从入门到放弃」的经历。 本文站在全局视角,通过分析一个 TensorFlow 官方的 Demo 来达到俯瞰一个「机器学习」系统的效果,从而让读者看清这个头大象的全貌,帮助初学者入门「机器学习」。
如何理解机器学习系统
「机器学习」的目标就是利用已有答案来寻找规则,从而做出预测。 这与「传统系统」的区别在于:
- 「传统系统」的目标是获得答案
- 「机器学习」的目标是利用已有答案获得规则

正是因为「机器学习」的目标是获得规则,人们便可以拿它来做各种预测:股票走势、彩票号码、服饰推荐、甚至预测员工何时离职。 图片识别本质上也是找到规则。比如要识别一张图片物体是否有一只猫咪,那么胡须、耳朵、绒毛等都可以作为猫咪的特征值,而定义特征值就是在定义成为一只猫的组成规则。
详解一个机器学习 Demo
学习一项技能最好方法就是去使用它。这部分我们来看一个 TensorFlow Demo。TensorFlow 是 Google 推出的深度学习框架,基本信息我就不多做介绍了。 我要介绍的是如何读懂这个 Demo。你可能会问,一个 Demo 有那么难懂么? 对于「机器学习」的初学者来说,如若不懂「神经网络」、「损失函数」、「评估指标」等概念,还真是挺难读懂一个 Demo 的。
看下这个 Demo,代码不多,我全部贴出来了。

看到这部分代码的全貌,什么感觉? 我第一次读到的感觉是:「语法都能看懂,但就是不知道你这是要干啥!」 如果你也有这样的感觉,那么我建议你认真把这篇文章读完。 这个 Demo 实际上是要训练一个可以识别手写数字的模型(Model), 要识别的手写数字长这样:

你也许一下子会有很多问号。手写数字? 图片在哪?怎么识别? 别急,下面我来为大家详解这个 Demo。
数据准备
人工智能领域中的数据是什么?我们从 TensorFlow 这个框架的名字中就能看出来 – Tensor(张量)形成的 Flow(流)。 在「人工智能」领域,绝大部分数据都是以 Tensor 的形式存在,而 Tensor 可以直接理解成多维数组。

举个例子: 要把一张图片输入到人工智能模型中。 我们第一反应是要先把图片数字化,用 Base64 来表示这张图、或者用二进制等等。但是对于人工智能系统,最佳方式是把图片转换成 Tensor。 我们试试用 Tensor 来表示一张 像素 3*3 、背景为白色、对角线为黑色的图片:

运行代码之后,我们就得到了那张对角线是黑色的 33 图片。
这就是用一个四阶 Tensor 表示一张图片,Tensor 形状为 (1, 3, 3) 。
同理如果要表示 6000 张 2828 的图片,那么 Tensor 的形状就是 (6000, 28, 28)。
现在我们阅读第一部分的代码:

「MNIST」(Mixed National Institute of Standards and Technology database) 是美国国家标准与技术研究院收集整理的大型手写数字数据库,包含 60,000 个示例的训练集以及 10,000 个示例的测试集,里面的图片长这样。

这些图片都是通过空间的矩阵的方式存储的:

这样我们就明白这段代码的意思了,是从 mnist 中获取用于训练的的数据集集( x_trian,y_train ),以及用于测试的数据集( x_test,y_test )。
- x_trian 形状为 (6000, 28, 28) ,表示 6000 张 28*28的图片。
- _trian 形状为 (6000,),表示 x_train 对应的数字答案。
模型(model)是什么
得到了数据集之后,是不是可以开始训模型了?别急,我们要搞清楚模型是什么,Tensorflow 文档是这样定义模型:
在机器学习中,模型( Model )是一个具有可学习参数的函数,它将输入映射到输出。最优参数是通过在数据上训练模型获得的。一个训练有素的模型将提供从输入到所需输出的精确映射。
我来帮你们翻译一下这个定义:模型是个函数,这里面内置了很多参数,这些参数的值会直接影响模型的输出结果。有意思的是这些参数都是可学习的,它们可以根据训练数据的来进行调整来达到一组最优值,使得模型的输出效果最理想。
- 那么模型里参数又是什么?
- Demo 当中模型传入的 4 个Layer...
剩余内容已隐藏
我们总有一种感觉,机器学习门槛高、难入门。这是因为这里有太多晦涩的概念「神经网络」、「评估指标」、「优化算法」等让初学者老是有种盲人摸象的感觉。甚至连理解一个 Tensorflow 官方 Demo 都感觉吃力,因此不少开发者就有过「机器学习从入门到放弃」的经历。
本文站在全局视角,通过分析一个 TensorFlow 官方的 Demo 来达到俯瞰一个「机器学习」系统的效果,从而让读者看清这个头大象的全貌,帮助初学者入门「机器学习」。