人工智能——智能视觉模型(一)

人类最重要的一项能力是能够从过去的事情中总结经验,并形成知识。人类繁衍进化过程中,不断学习历史,总结经验,累积知识,为人类文明打下了坚实的知识基础。今天我们将介绍一个非常重要的机器学习模型,他可以像人类一样从我们提供的图片中学习知识。人类视觉系统的神奇之处在于能通过眼睛理解所看到的一切,并且几乎所有的工作都是在不知不觉中完成。

对于人类来讲,识别图片中的数字似乎是毫不费力,但事实上人类在能够识别这些数字之前已经进行了大量的训练,首先我们学会了认识数字,然后学习书写,与此同时在大量实践中不断认识各种各样的书写字体。在人类识别图片时,首先通过视觉系统捕获图片信息,然后通过大脑进行计算得出正确的结论。在我们大脑左右两个半球,有一个主要的视觉皮层,即V1,它包含1.4亿个神经元以及数以百亿的神经元连接。而且人类不只是有V1,还有一系列的视觉皮层——V2,V3,V4和V5,它们能够执行更加复杂的图像处理。与人类视觉系统相比机器模型的优势也非常明显:

1.处理图片的数量更大

2.处理图片的速度更快

3.可以识别图片中更加细微的差异

4.可以处理肉眼无法识别的内容

机器模型识别图片的困难在于如何排除干扰因素,准确识别图片上不同字体的数字,甚至有些手写字体是非常潦草的。这里我突然想起我女儿在学习数字时经常背的一首儿歌:1像铅笔能写字,2像小鸭水中游,3像耳朵很听话,4像红旗迎风飘,5像称钧秤白菜,6像口哨能吹响,7像镰刀割青草,8像葫芦能装水,9像饭勺能盛饭,10像油条和鸡蛋。如果我们尝试让电脑像这样去学习数字,那意味着必须首先要让电脑学会识别铅笔、小鸭子,而对于实物来讲,每一种都具有多种属性,形状、材质、用途等等,显然这条路径根本行不通。那么,机器模型是如何学习识别图片中的数字呢?接下来我们就来介绍一种比较基础的机器学习模型,让初学者对机器学习有一个入门的储备。

我们这里选用一种比较简单的数学模型构建我们的机器学习系统——Softmax Regression。Softmax Regression是逻辑回归的推广,逻辑回归是用来处理二分类问题,而Softmax Regression用来处理多分类问题。下边我们简单介绍一下回归相关的知识。

1.逻辑回归

用来分析二分类问题,有两个重要公式,Sigmoid跃阶函数,Loss Function损失函数。逻辑回归主要计算两种情况出现的概率,所以叫二分类。

这个函数很有意思,分母衡为大于等于1的数,所以公式运算结果可以向[0,1]逼近。

这个函数用来衡量在一个离散样本集合中,在学习过程中当运算值向真实值无限逼近时产生的差距,亦即损失。

2.Softmax回归

Softmax要解决的是k种情况出现的概率问题。其概率推演公式:

损失函数,

我相信绝大多数人看了上边的公式是崩溃的,如果有数学基础我建议选本大学教材线性代数、概率统计学学,没有数学基础,但有志于人工智能行当的同学也不用灰心,接下来我们采用更加平易近人的方式讲讲Softmax。

在深入探讨Softmax之前,我们需要先了解一下MNIST样本集的情况。MNIST数据集来自美国国家标准与技术研究所,是National Institute of Standards and Technology的简称,数据由来自250个不同人手写的数字构成,其中50%是高中学生, 50%来自人口普查局(the Census Bureau)的工作人员。MNIST由两部分数据构成,一部分是用来训练模型的数据集(mnist.train)60000行,另外一步是用来测试的数据集(mnist.test)10000行。每一个MNIST数据单元有两部分组成:一张包含手写数字的图片和一个对应的标签。数据集下载地址[http://yann.lecun.com/exdb/mnist/]。

为什么不是一张一张的图片?在这些数据中存了哪些信息?

第一个问题很好回答,人在记忆一个场景或一张照片的时候,也不是直接把照片存在大脑里,而是把图像进行了信息化处理,同样的道理,图片对于模型来讲无法直接参与运算,所以在输入到模型里之前,我们需要对图片进行数字化处理。那么,怎么数字化呢?这也正是我们第二个要探寻的问题。首先,我们先来看一张图片。

这是一张28X28的图片,也就是说这张图片由28X28 = 784个像素点构成。在每一个像素点都会有一个数值与其对应,这个值就是灰度,介于~255之间。如果样本是彩色图片,处理起来会稍有不同。人眼所见所有颜色都由红、绿、蓝三原色构成,所以彩色像素点表示为RGB(r,g,b),R、G、B分别标识Red、Green、Blue。假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度:

1.浮点算法:Gray=R*0.3+G*0.59+B*0.11

2.整数方法:Gray=(R*30+G*59+B*11)/100

3.移位方法:Gray =(R*28+G*151+B*77)>>8;

4.平均值法:Gray=(R+G+B)/3;

5.仅取绿色:Gray=G;

好了,现在我们已经知道mnist.train.images、mnist.train.labels中是什么数据了。在MNIST训练数据集中,mnist.train.images是一个形状为[60000, 784]的张量,第一个维度数字用来索引图片,第二个维度数字用来索引每张图片中的像素点。在此张量里的每一个元素,都表示某张图片里的某个像素的强度值,值介于和1之间。mnist.train.labels是介于到9的数字,用来描述给定图片里表示的数字。为了用于这个教程,我们使标签数据是"one-hot vectors"。一个one-hot向量除了某一位的数字是1以外其余各维度数字都是。所以在此教程中,数字n将表示成一个只有在第n维度(从开始)数字为1的10维向量。比如,标签将表示成([1,0,0,0,0,0,0,0,0,0,0])。因此,mnist.train.labels是一个[60000, 10]的数字矩阵。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180727G0R7UB00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券