当前位置:主页 > 机器宇宙 >用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

2020-07-24 访问量:675 分类:机器宇宙 作者:

用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

本文经知乎专栏  论智 (公众号 ID :jqr_AI) 授权转载

当你入门的时候,可能觉得机器学习很複杂……甚至很可怕。另一方面,电子表格却很简单。电子表格并不酷炫,但却能避免分散你的注意力,同时帮助你以直观的方式可视化代码后面发生的事情。

我将循序渐进地通过电子表格(你可以通过下面的链接下载)向你展示卷积神经网络(CNN)是如何应用于计算机视觉任务的。其中包括一些数学,不过电子表格中包含了所有的公式。

下载传送门

如果无法访问 Google 云端,可以在论智公众号(ID: jqr_AI)后台留言 excel 获取替代下载地址。

这一电子表格模型查看一幅图像,分析它的像素,并预测是否是 Elon Musk、Jeff Bezos、Jon Snow……显然这三位是天网的最大威胁。

用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

本文将介绍上图中的 9 个步骤,每个步骤都会使用类比的方法给你的直觉增压。

本文的目标是使用容易操作的电子表格,提供入门机器学习的简单路径,并向充满好奇心的读者展示尖端 AI 技术的奥秘。如果本文对你有帮助,请注册我创建的邮件列表,注册后可以收到更多后续的电子表格,帮助你入门机器学习和创建神经网络。

用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

Facebook 面部识别系统、某国奥威尔式的大规模监控系统、你的汽车(不久的将来)背后的基础都是计算机视觉。

用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

将每种颜色单独放到一个矩阵中,我们得到了 3 个 28×28 矩阵,也就是我们之后用来训练神经网络的输入:

用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

如果你想知道如何将任意图像转换成电子表格,请访问 这个网址

你将学到如何得到一张「Ex 拍」,你的 Excel 迷朋友们会喜欢的……相信我,在电子表格中找到你的马克杯(或者他们的)会让他们捧腹大笑的(小图效果最佳)。

你刚出生的时候知道狗是什幺样的吗?当然不知道。但随着时间的推移,你的父母会给你看书中、动画片中、真实生活中的狗的图像,渐渐地,你可以指着那些 4 条腿、毛茸茸的动物说「狗」。你的大脑中数亿神经元间的连接变得足够强,所以你可以识别狗。

终结者以同样的方式学习识别 Elon。在一个被称为监督训练的过程中,人们给终结者看数千张 Elon Musk、Jeff Bezos、Jon Snow 的图像。刚开始,它只能随便乱猜(1/3 的机率猜对),渐渐地,就像小孩一样,随着它在训练过程中看到越来越多的图像,它猜得越来越準。网络的连接(也就是「权重/偏置」)随着时间的推移而更新,使得它可以基于像素输入预测输出。这是我 上一篇文章 中讨论过的学习过程(梯度下降)。

用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

用两个词概括:平移不变性。

不知所云?让我们解构一下:

    平移 = 将某物从一个地方移动到另一个地方不变性 = 没有改变

    在计算机视觉中,这意味着,不管对象移动到图像中的何处(平移),不会改变对象是什幺(不变性)。

    用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

    这需要训练卷积神经网络识别 Elon 的特徵,不管 Elon 在图像中的位置在哪里(平移),也不管 Elon 在图像中的大小(缩放不变性)。

    在普通神经网络中,我们本来会将每个像素作为模型的一个输入(而不是 3 个矩阵),但这忽略了相近的像素具有特别的意义和结构这一事实。在 CNN 中,我们查看像素组,这允许模型学习形状、线条等局部模式。比方说,如果 CNN 看到许多白像素包围一个黑圆圈,它会识别出眼睛这一模式。

    为了达到平移不变性,CNN 需要依靠它的特徵侦探夏洛克·卷积·福尔摩斯的服务。

    类比: 图像就像由像素组成的电子表格。

    用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

    夏洛克住在终结者的头脑中。他每次使用放大镜仔细检查一小片图像,寻找图像的重要特徵(「线索」)。在收集到简单的线条和形状之类的线索后,他将它们堆叠起来,开始看到眼睛或鼻子之类的面部特徵。

    每个卷积层储存基于另一层构建的一组特徵映射。最后,夏洛克组合所有线索,这样他就可以破案了(识别目标)。

    用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

    网络的每个卷积层都包含一组特徵映射,这些映射能够以下图所示的层次化的方式识别越来越複杂的模式/形状。

    CNN 基于数字的模式识别找到任意图像的最重要特徵。随着 CNN 以更多的网络层不断堆叠这些模式,它可以创建非常複杂的特徵映射。

    用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

    真实生活中的 CNN 和夏洛克做一样的事情:

    CNN 的奇妙之处在于可以自行学习这些特徵……工程师不用编写寻找一双眼睛、一个鼻子、一张嘴的集合这样的代码。

    以这种方式工作的工程师更像架构师,他们告诉夏洛克:「我给你两叠(卷积层)空白特徵映射(线索),你的工作是分析图像,找出最重要的线索。第一叠有 16 个特徵映射(线索),第 2 叠有 64 个特徵映射……现在发挥你的侦探技能,解决这个案件!」

    类比: 每个特徵映射就像案件中的一条线索。

    用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

    为了查明案件中的「线索」(即计算特徵映射),夏洛克需要依靠他的侦探工具箱中的一些工具,我们会逐一介绍:

      过滤器 —— 夏洛克的放大镜 卷积数学 —— 过滤器权重 x 输入图像像素步进 —— 沿着输入图像移动过滤器 ➡️ ➡️补齐 —— 保护线索的犯罪现场隔离胶带

      毫无疑问,夏洛克非常敏锐,具备出色的观察技能,但是,如果没有那些特製的放大镜(过滤器),夏洛克没法完成他的工作。他使用不同的放大镜帮助填充每张空白特徵映射的细节。所以,如果他有 16 个特徵映射……他会有 16 块放大镜。

      用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

      每块放大镜由多层玻璃组成,而每层玻璃由不同的权重组成。玻璃的层数,也就是过滤器深度,总是等于输入层的深度。

      刚开始,夏洛克看到的输入图像有 3 层——红、绿、蓝。所以,放大镜也有 3 层。

      随着我们进一步创建 CNN,层的深度会增加,相应地,放大镜也会变厚。

      为了创建 1 个特徵映射(一条线索),夏洛克从取出一个放大镜,并置于输入图像的左上角开始。红层玻璃只能看到红输入图像,绿层玻璃只能看到绿图,而蓝层玻璃只能看到蓝图。

      现在是数学部分。

      特徵映射中的每个像素是线索的一部分。为了计算每个像素,夏洛克需要进行一些基本的乘法和加法。

      在下面的例子中,我们使用 5x5x3 的输入图像和 3x3x3 的过滤器,每个像素需要进行以下计算:

        3x3x3 过滤器每层的卷积乘法 = 27将 27 个数字加起来再加上 1 个数字——偏置

        让我们仔细看下数学。一个像素需要 27 次乘法(3 层,每层 9 次乘法),下面的截图显示了 27 次乘法中的 9 次:

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        至于偏置,你可以把它想像成放大镜的把手。像权重一样,它是模型的另一个参数,在训练过程中自动调整,以提高模型的精确度,并更新特徵映射细节。

        过滤器权重——在上面的例子中,我为了简化数学,将权重的值设为 -1、0、1;然而,一般而言,你需要用较小的值随机初始化权重……比如 0.01 到 0.1 之间的值,基于钟形曲线或正态分布取样。想要了解更多权重初始化的知识,可以看这篇 入门 。

        计算特徵映射的第 1 个像素之后,夏洛克将把放大镜往哪移呢?

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        答案取决于步进参数。作为架构师/工程师,我们需要告诉夏洛克,他应该将他的放大镜向右移动(步进)多少像素。实践中最常见的步长值为 2 或 3,但出于简单性,这里我们将步长设为 1. 这意味着夏洛克将放大镜向右移动 1 像素,然后进行和之前一样的卷积运算。

        当他的放大镜到达输入图像的最右边时,他将放大镜移到最左,然后往下移动 1 像素。

        步长为何大于 1?

        优点:更少运算,内存中储存的运算结果更少,从而使模型更快。

        缺点:由于跳过像素有错过模式的潜在可能性,损失了关于图像的数据。

        2 或 3 步长通常是合理的,因为紧跟着一个像素的像素通常具有相似的值,而隔着 2-3 个像素的像素,更可能具有不同的值,这样的值对特徵映射/模式而言可能很重要。

        为了破案,夏洛克刚开始接触案件的时候需要大量线索。在我们上面的例子中,我们的输入为一张 5x5x3 的图像,或者 75 像素信息(75 = 5 x 5 x3),在第一个卷积层后,我们得到了一张 3x3x2 的图像,或者 18 像素(18 = 3 x 3 x 2)。这意味着我们损失了证据,这让夏洛克的搭档约翰·华生非常反感。

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        在 CNN 的刚开始几层,夏洛克倾向于查看大量细微模式(更多线索)。在靠后的卷积层中,随着夏洛克堆叠细微的线索,查看较大的模式,「降採样」也就是降低像素的总量(更少线索)没什幺问题。

        那幺,在 CNN 刚开始的时候,我们如何预防这样的信息损失呢?

        一、补齐——通过补齐图像保护犯罪现场

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        在上面的例子中,我们在撞上右边缘前,只能移动过滤器 3 次……从上往下同样如此。这意味着我们所得输出的高/宽为 3×3,从左往右,损失了 2 像素,而从上往下又损失了 2 像素。
        为了预防这种信息损失,常见的做法是用零「补齐」原始图像(称为全零补齐(zero padding 或 same padding))……有点类似用犯罪现场隔离胶带确保没人破坏证据。

        补齐之后,如果夏洛克再次使用相同的放大镜,他的两个特徵映射的大小会是 5×5 而不是 3×3.

        这意味着我们最终得到了 50 像素的信息(5x5x2=50)。

        50 像素比 18 要好。不过别忘了……我们刚开始有 75 像素,所以我们仍然错过了一些线索。

        所以我们还能做什幺让夏洛克和约翰·华生满意?

        二、更多过滤器——至少在我们的卷积层中加上一个特徵映射,给夏洛克更多线索

        模型对特徵映射(线索)的数量并没有限制……这是我们可以控制的超参数。

        如果我们至少将特徵映射从 2 增加到 3(5x5x2 到 5x5x3),那幺总输出像素(75)就和输入像素(75)相等了。如果我们将映射增加到 10,那幺我们会有更多信息供夏洛克探究(5x5x10 = 250)。

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        总结一下,刚开始几层的信息像素总数一般高于输入图像,因为我们想要给夏洛克儘可能多的细微模式/线索。在网络的最后几层,我们常常进行降採样,信息像素变少,这是因为这些层识别图像中较大的模式。

        类比: 过滤器就像放大镜,而补齐就像犯罪现场隔离胶带。

        给夏洛克足够的案件信息很重要,但现在到了进行真正的侦探工作的时候了——非线性模式识别!比如耳廓和鼻洞。

        到目前为止,夏洛克进行了大量数学运算以构建特徵映射,但所有运算都是线性的(在每个输入像素上进行一些乘法和加法操作),因此,他只能识别像素的线性模式。

        为了给 CNN 引入非线性,我们将使用一种称为修正线性单元(Rectified Linear Unit)的激活函数,简称 ReLU。在我们初次进行卷积运算得出特徵映射后,每个值都通过这一函数,看看是否点亮/激活。

        如果输入值是负数,那幺输出将为零。如果输入值是正数,那幺输出将和输入一样。 ReLU 就像一个开关,让特徵映射的每个值通过 ReLU 之后,就创建了非线性模式识别。

        回到我们原本的 CNN 例子,我们在卷积之后马上应用 ReLU:

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        儘管有许多非线性激活函数可以为神经网络引入非线性(Sigmoid、Tanh、Leaky  ReLU 等),ReLU 是 CNN 中目前最流行的激活函数,因为 ReLU 在算力上很高效,能加快训练。你可以参阅 Andrej Karpathy 的 overview on non-linear activation functions 了解每种函数的优劣(译者注:也可以参考 理解神经网络的激活函数 ,同样比较了不同激活函数的优劣)。

        类比: ReLU 就像开关。

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        现在夏洛克有一些特徵映射(线索)要查看,如何确定哪些信息是关键的,哪些信息是无关的细节?最大池化。

        夏洛克认为人类的大脑就像一个空阁楼。傻瓜会在里面存放各种各样的家具和物品,让有用的信息在一堆杂物中不知所蹤。而智者仅仅储存最重要的信息,从而在需要的时候可以快速做出决定。从这个意义上说,最大池化是夏洛克版的大脑阁楼。为了更快地做出决定,他只保留最重要的信息。

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        现在夏洛克有一些特徵映射(线索)要查看,如何确定哪些信息是关键的,哪些信息是无关的细节?最大池化。

        夏洛克认为人类的大脑就像一个空阁楼。傻瓜会在里面存放各种各样的家具和物品,让有用的信息在一堆杂物中不知所蹤。而智者仅仅储存最重要的信息,从而在需要的时候可以快速做出决定。从这个意义上说,最大池化是夏洛克版的大脑阁楼。为了更快地做出决定,他只保留最重要的信息。

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        最大池化之后,我们完成了 1 回合卷积/ ReLU /最大池化。

        典型的 CNN 在分类器之前会有若干回合卷积/ ReLU /池化。在每一回合中,我们将在增加深度的同时挤压高/宽,这样我们不会在此过程中遗失证据。

        第一步至第五步,我们专注于收集证据,现在是时候让夏洛克查看所有线索,侦破案件了

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        现在我们已经有了证据,让我们开始挖掘证据的意义……

        类比: 最大池化就像夏洛克的阁楼理论,保留关键信息,抛弃驳杂无用的信息。

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        在训练週期的末尾,夏洛克得到了堆积如山的线索,需要找到一下子查看所有线索的方式。每条线索不过是一个 2 维矩阵,但我们有堆叠在一起的数以千计的矩阵。

        作为一名私家侦探,夏洛克很擅长应付这样的混沌,但他需要将证据呈上法庭,整理证据以供陪审团查看。

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        他通过一种简单的转换技术(称为扁平化)做到了这一点:

          将每个由像素组成的 2 维矩阵转换为一列像素将原本的二维矩阵(现在的一列像素)一个接一个地排列起来

        在人类的眼睛看来,变换是这样的:

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        而在计算机看来,是这样的:

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        现在夏洛克已经整理好证据了,是时候说服陪审团证据清楚地指向一个嫌疑人。

        类比:扁平化就像把证据呈上法庭。

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        在全连接层中,我们将方方面面的证据连接起来。某种意义上,我们完成案件的拼图,向评审团表明证据和每个嫌疑人之间的联繫:用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        在计算机看来,全连接层是这样的:

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        在扁平层的每份证据和 3 个输出之前是一组权重和偏置。类似网络中的其他权重,这些值会在刚开始训练 CNN 的时候随机初始化,而随着时间的推移,CNN 将「学习」如何调整这些权重/偏置以得到更精确的预测。

        现在,到了夏洛克揭晓谜底的时间了!

        类比:全连接层就像说服陪审团下决定。

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        在 CNN 的图像分类器阶段,模型的预测为得分最高的输出。模型的目标是让正确的输出得分最高,而让错误的输出得分较低。

        评分分为两部分:

          Logit 分数——原始得分Softmax ——每个输出的概率(0-1 之间)。所有输出得分之和等于 1.

        每个输出的 Logit 得分是一个基本的线性函数:

        Logit 得分 = (证据 x 权重) + 偏置

        每片证据乘以连接证据至输出的权重。所有乘积相加,最后加上偏置项,得分最高的为模型的猜测。

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        所以,为什幺不到此为止?直观地说,有两个原因:

          夏洛克的置信度 ——我们想要知道夏洛克对结果有多自信,这样,当夏洛克的置信度很高同时他是正确的时候,我们会奖励他,而在夏洛克的置信度很高同时他是错误的时候,我们会惩罚他。我们在下一部分计算损失(“夏洛克的精确度”)时会具体讨论奖励/惩罚。夏洛克的置信度加权概率 ——我们想要能够方便地解释这些 0 到 1 之间的概率,并且我们想要预测得分和实际输出(0 或 1)处于同一尺度。实际正确的结果(Elon)的概率为 1,其他错误的结果(Jeff 和 Jon)的概率为 0. 将正确输出转为一,错误输出转为零的过程称为 独热编码 。

        夏洛克的目标是让他对正确输出的预测儘可能接近 1.

        2.1 夏洛克的置信度

        为了得出夏洛克的置信度,我们以 e(等于 2.71828…)为底数,以 logit 得分为指数。这样,一个较高的得分将变为非常高的置信度,而一个较低的得分将变为非常低的置信度。

        这番指数运算同时也确保了我们不会有任何负分(logit 得分「可能」是负数)。

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        2.2 夏洛克置信度加权概率

        为了得出置信度加权概率,我们将每个输出置信度除以所有置信度得分之和,这就确保了所有概率之和为 1.

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        softmax 分类器很直观。夏洛克认为有 97%(置信度加权)的几率终结者查看的图像是 Elon Musk。

        模型的最后一步是计算损失。损失告诉我们侦探夏洛克到底有多棒(或者到底有多糟)。

        类比:Logit + Softmax 就像查看一排嫌疑人,并指出罪犯。

        用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

        所有神经网络都有一个损失函数,用来比较预测和实际值。在 CNN 训练的过程中,随着网络权重/偏置的调整,预测改进了(夏洛克的侦探技能变得更厉害了)。

        CNN 最常用的损失函数是交叉熵。用 Google 搜索交叉熵出现的一些解释都涉及大量希腊字母,很容易让人困惑。儘管这些描述各不相同,在机器学习的语境下它们都意味着一样东西,我们下面将介绍最常见的 3 种解释,便于你理解。

        在描述每种公式变体之前,先概括一下它们的共同点:

          比较正确分类的概率(Elon,1.00)和 CNN 的预测(Elon 的 softmax 得分,0.97)。当夏洛克对正确分类的预测接近 1 时(低损失),奖励他当夏洛克对正确分类的预测接近 0 时(高损失),惩罚他

          用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

          距离捕捉了以下直觉:如果对正确标籤的预测接近 1,那幺损失接近 0. 如果对正确标籤的预测接近 0,那幺将受到严厉的惩罚。目标是最小化正确分类的预测(Elon,0.97)和正确分类的实际概率(1.00)的距离。

          赏罚「对数」公式背后的直觉将在 2 号解释中讨论。

          用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

          在 CNN 中,「对数」实际上指「自然对数(ln)」,它是 softmax 中以自然对数为底的指数的逆运算。

          对夏洛克远离 1.00 的预测而言,相比直接从实际概率(1.00)中减去预测概率(0.97)来计算损失,对数运算将惩罚以指数级别加重了。

          最小化负对数似然和最大化对数似然均导向 softmax 预测趋向 1.0,损失趋向 0.0 的结果。

          用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

          KL(Kullback-Leibler)散度衡量预测概率(softmax 得分)和实际概率的差异。

          KL 散度的公式包括两部分:

            实际概率的不确定性。使用预测概率损失的信息量。

          在监督学习分类问题的模型训练中,实际概率的不确定性总是等于 0. 我们百分之百确定训练图像的分类无误。此时,最小化预测概率分布和实际概率分布之间的 KL 散度等价于最小化交叉熵。

          用 Excel 就可以做出 CNN 的 AI 影像辨识!手把

          类比:交叉熵损失就像评估夏洛克的侦探技能。

          在夏洛克·卷积·福尔摩斯这位特别的侦探的帮助下,终结者有了一对能够搜索并摧毁自由世界的保护者 Elon Musk 的眼睛(对不住了,Elon!)。

          虽然我们仅仅训练了终结者识别 Elon、Jeff、Jon……天网有无穷多的资源,可以随意训练图像,因此天网可以利用我们创建的模型训练终结者识别任何人类和物体。

          如果你喜欢本文,并想收到更多通过 Excel 进行机器学习的内容,可以访问 excelwithml.com 免费订阅邮件列表。

          你也可以在 Twitter 上关注 ExcelwithML。

          Excel 还可以这样用

          15 岁神童很会用 Excel! 不但拿冠军还拿 20 万奖金

          9 个达人才懂的 Excel 快捷键,早点下班就靠这几招!

          上万笔资料 key-in 一次搞定:必学的报表输入秘诀以及 Excel 自动化案例 授权转载,并同意 TechOrange 编写导读与修订标题,原文标题为 〈 使用 Excel 实现卷积网络 〉)

           

类似文章,猜你喜欢