昨天的文章很多人反馈说太水了,真正的干货没有,水文一篇。
AI的知识面实在太广了,想要一篇几百字的文章就能入门其实很难,而且很多知识其实都需要数学基础,要是跟大家说上一天怎么计算函数的导函数,估计能劝退一大波人。
所以“AI学习大纲”这个的重点在于里面每个Step提到的概念,关键字。
像 卷积网络,激励函数,SoftMax,矩阵运算。
如果你是一个自学能力非常强的人,基本靠着这些关键字按图索骥就可以学会AI。
当然如果想看点干货,那么就得从MNIST开始。
先熟悉几个名词,几个新概念,这些是学习AI的基础入门知识。
为了方便还可以有视频可以看,这个视频前两节是免费的,想熟悉一些基本知识的可以参考。
http://www.ai-course.cn/course/13
MNIST是由六万多张图片组成的一个数据集。图片都是24*24像素的 0~9 的单个手写数字。 除了数字图片之外,还有跟图片对应的标签,表示这张图片上的数字是多少。
这些图片比较特殊,都只有单通道,所有的像素只有1和0两个数字其中一个构成,所以他们其实是一堆黑白图片。
AI的入门教程都是用MNIST来做学习,因为MNIST足够简单,也能满足整个AI开发的所有需要。
Tensorflow 其实是一个框架,就跟Android,Cocoa,Spring一样,它的底层是用C++写的推理框架,上层则提供了 python 接口用来开发。
像Tensorflow这样的框架还有很多,Pytorch, Keras, Caffee,在AI领域都是常用的框架。Tensorflow 因为推出的时间久,稳定性和兼容性各方面都比较优秀,所以最常使用。
关键在于我们移动端开发它也支持,Tensorflow推出了 Tensorflow-Lite,专门为移动端AI开发。可以在Github上找到Tensorflow项目的 lite 目录,就是现在Android上用的AI推理框架。
我们设计的第一个AI其实非常简单,它只能达到89%的准确率,因为仅仅使用一些非常基础的单层网络结构进行识别。
首先我们从MNIST里拿一个图片,然后对它进行全连接运算,然后跟这个图片的标签比较,拿到比较的误差结果后去调整全连接层的参数。不断迭代这个流程直到全连接层能够达到89%的识别精度。
上面的Wn,m + Bn 就是全连接层。
一个24x24的图片,在MNIST的存储方式其实并不是jpg或者png,它是一串二进制数据,结构是 1 x 784,就是把24x24给拉成了一维数组。
MNIST的标签则是 1 x 10的数组,每一位也只有1或者0两个值,用来标识这个图片的数字是什么。
下面要开始彪数学了。
全连接层是一个矩阵运算层,它需要把 1x784 映射到 1x10 的预测结果上。这是一个矩阵乘法。
在矩阵乘法里 [1x784] * [m x n] = [1 x 10],那么m和n分别需要是多少? m和n的值就是全连接层的维度取值。
维度确定了,还需要确定全连接层里的每个W值的具体大小。这个确定的过程就是一个反向传播算法的过程。
想学AI必须要搞明白反向传播算法是怎么回事,跟反向传播相关的还有损失函数。 在CSDN上有不少关于这两个知识点的资料,为了方便学习也可以看上面连接里的视频,视频里还提供了代码样例可以参考。