00:14
接下来呢,我们来讲这个卷积神经网络。因为讲这个东西对大家来说才是这么说,真正呃,工作里面,或者说真正对你那个技术是有一个提升的,就你框架会的再多,你可能也只是工作人员是吧,也不是找那种核心技术那群例时间网络呢,这个地方呢,讲起来呢,话题非常长,但是我会挑比较重要的,然后能让大家一下就明白的东西去讲啊。但是即使能让大家,我希望让大家一下就明白,但是他这个里边这个东西,就我最开始介绍的时候也是花了一段时间,因为他没那么简单。那最开始的时候呢,就是科学家做了很多实验,人的这个视觉到底是怎么形成的,大家也知道啊,就是你看到一个笔记本电脑,你看到一个手机,或者你看到外边蓝天的时候,你不会一个像素一个像素,或者一块一块去看,对吧,你也不会产生任何逻辑思维。
01:11
你绝对不会说这个云彩和云彩之间有一种什么样的逻辑,然后我认为它是蓝天白云,对吧?不会这样的,包括笔记本,你看到这个笔记本的这个外形的时候,你会一下子就把这个边缘,这个还有背景和它的键盘全看到,而不会说它上面有一个屏幕,下边有一个键盘,所以它是笔记本,对吧。那这个这个机制是怎么实现的呢?现在研究呢,基本上已经发现了,这个机制就等价于卷积神经网络。人在人的大脑里,最开始当然不是对人做研究的,最开始做小动物做研究的,就给这个动物看不同的东西,看这种呃,有纹理的,看横的,看纵的。专利。
02:01
然后呢,看红色的,看绿色的,不同各样的各种各样的颜色的图片。比如说给一只猫看是吧,然后你去探测它的大脑哪一个地方比较兴奋。呃,其实最开始科学家以为是眼底会很兴奋,但是非常出人意料的是,大脑的后部很兴奋。就大脑的后面很兴奋。这是一件非常奇怪的事情啊,你的视觉,你的眼睛是在最前面的,对吧?为什么会大脑最后很兴奋呢?他们就研究了大脑的这个结构,就发现当你看到不同的形状的时候,它兴奋的这个区域是不一样的。所以呢,这个人类的视觉和这感知器官的这样一个这个感知的一个智能是由一个深度网络去控制的,这个深度网络里边呢,有很多的局部的卷积核。
03:01
这个卷积盒呢?一个卷积盒只负责提取其中一部分的图像的特点。可能说稍微难理解一下啊,比如现在有一个还是说有一个汽车。汽车下面有几个轮子对吧,上面有个玻璃,有个窗户什么的。你的眼睛看到这个车的时候呢,大脑不同的区域兴奋是不一样的,有的地方特别关注轮子这种圆形的东西,有的地方特别关注玻璃这种很亮的这种地方,而有的地方关注着车身的纹理,有的地方关注于车身的外形。他们经过不同的这个叠加,这个权重之和,最后判断它是不是一个车,这在大脑里边是传导瞬间完成的,没有经过逻辑思考。所以科学家发现这个事情以后呢,就模仿这个东西,就做出来了一种网络,叫卷积神经网络。神经网络一个很基本的一个样子,就是全连接嘛,对吧,全部都连接,上面这层和下面这层全部都连接,在大脑里边神经元也是全部都连接,但实际上不是这样的,我们大脑里边神经元是不可能全部都连接的,对吧?肯定是局部连接,而在视觉里边研究发现呢,最好的连接方式是局部连接前面,你看后面这个点,就这个神经元只对前面这个部分负责,这个神经元只对这个部分负责,这个神经元只对这个部分负责,就他们每一个人,每一个人员有一部分自己感受的一个区域。
04:33
明白是吧,就每个成员只有一个自己感受的区域,不会对所有的负责。并且这里还有一个关键的一个点哈,就是我们之前说过,这个地方是有一个矩阵的,对不对,传导是一个矩阵的,他们之间共享这个矩阵,这个矩阵权重是共享。还给大家举前前面那个例子,如果这个地方我们刚才说过啊,这是一个矩阵对吧,这个变化是一个矩阵对吧,从第一层变到后面这一层,就是成一个矩阵嘛,对吧?如果这个是1000个神经元,下边是100神经元,我们乘多少个矩阵,这矩阵是不是一一千乘100的,但是呢,视觉里不是这样的,视觉里成的这个矩阵呢,可能只是三乘一的。
05:16
因为只有这个区域里边跟上面这个有关系,明白吧,而且他们之间还是共享的。你看假设这是1000个,这是100个是吧,那是1000乘100,但是从这里边看,我们只能看到三条线,对,所以这是一个三乘一的矩阵法,对三乘一的矩阵对不对,而且本身我们应该有很多很多三乘一的矩阵,非常非常多,但是呢,经过研究发现。用一个三乘一的矩阵效果很好,为什么呢?相当于它从你的数据集里边把模式提取出来。就有的时候不是参数越越多越好啊,还是我昨天说的问题,我们现在做做一个决策数分类,现在这个ID每一个ID就可以分成一个人,然后我把所有人都按ID分开了,这个东西分化行动会好吗?肯定不好,对吧,反而按眼睛这一个那个标签这一个特征去分类,就分的很好,对吧。
06:17
所以说这里面我们用的这个共享的这个权重是一个矩阵,一个矩阵这上面滑。在上面划来划去,然后去做这个下一层的这个计算,当然呢,一个矩阵是不够用的,所以呢,我们又做了很多矩阵,有可能128个或者256个矩阵,为什么呢?因为经科学研究啊,一个矩阵只能感受到一种信息,有的矩阵能感受到斜的信息。有的矩阵啊,就这这个参数矩阵,对写的东西特别感兴趣。对吧,有的矩阵对横的东西纹理特别感兴趣,而有的矩阵呢,对黑色特别感兴趣,有的矩阵对白色特别感兴趣。
07:01
他们对东西感兴趣的这个点是不一样的,所以当你来一个图像的时候,他们会经过一个庞大的一个概率计算,最终投票得到底是属于什么分类,所以他会把这个图像里的所有东西都看看,看到,比如说比如说他是不是有纹理啊,比如他是不是白色,是不是光滑呀,是吧,是不是各种各样有孔啊,什么都可以看得到。这样的话,当我看到一个汽车的时候,就不再是像人类提取特征工程那么困难了,它自己就有提取特征工程能力,它可以看到轮子,可以看到玻璃,可以看到车窗,什么都可以看到明白。我们讲简单讲一下卷积是什么,非常简单,这是一个二维矩阵,对吧?二维矩阵什么是卷积呢?卷积里边第一个关键词叫卷积核。叫卷积核、卷积盒,也就是一种模式识别器。就像你眼睛里面,或者像那个神经里面有一层模式识别器。
08:04
明白吧,这个卷地盒,呃,大家一会儿能看到一些图像啊,可能就能看到,看后面没有。嗯。啊,后面应该是没有了。比如说现在这个呃,卷积盒,如果你用全零的话,那么跟这个对应位置相乘之后,受得到的结果全是零,对吧?这个模式识别器的意思就是说什么无视所有的像素点对吧?如果这个卷积盒全是一的话,乘完之后的像素不变对吧?它的这个呃,我们就假设它是不变的话,它的意思是什么呢?我对所有点一视同仁对吧?对所有点一视同仁吧,我我这个卷积盒,比如三乘三的矩阵里边全是一,然后乘上这个,这个原始的图像乘完之后,那每一个元素都不变嘛,对吧。我们我们来我们再来说一下这个这个卷积和的这个乘法操作啊,左边这个矩阵呢,我们截取一个瞬间啊接一下好就拿这个来说吧。
09:06
卷积是怎么做的呢?这两个绝对是并排的,都一样,乘哪个都行,就是零乘上负一,零乘上负一,一乘上零,零乘负一,一乘一,一乘零对应位置相乘。不是矩阵乘法,是对应位置相乘。是不是非常简单对吧?非常简单,乘完之后加和不是有个数吗?这个数就放在对应的新图的位置上,比如说负六就放在这个负六的位置上。那有人会问,这个负六是怎么放出来的呢?就是依次堆出来的,咱们看一下那个,你看这个比较长,咱们看一下第一次,第一次乘长。哎,能看到哈,第一次乘完之后得到一就放在这个位置上对不对。然后之后呢,这个卷积核相当于向右滑动了,它第二次要要对这个区域再做乘法。
10:08
就他每次划一列,这一列划完之后再划一行,明白吧。所以他对这个再去划,那这个第二个就肯定就放这个位置嘛,对吧,然后再划第三个就放这个位置对不对。对吧,然后大家就会问为什么没画完呢?那后面还有,因为这个里边它这个卷积核一次的那个不长,它不是一,如果是一这边就会还多好几个元素,它一次往前跳了两个,发现没有。包括行和列,都是一次跳两个。对吧,但是我正常很多的时候是跳一个,如果是跳一个的时候呢,这边这个矩阵的大小,假设左边是五乘五的话。如果卷积核一次跳一个的话,右边得到的新矩阵肯定是四乘四啊,不抱歉,应该说错了,不是四,是三乘三是吧,比如说比如说你卷地核是三乘三的,第一次只能是这样,对不对?第二次是这样的对不对,第三次是什么呢?是这样的,然后就过不去了,右边就没有了,所以说是三乘三的,对,这可能我刚才算错了。
11:13
这就是卷积,非常简单。那么关键问题还在于,这就是说就是一个卷积核,这个卷积核呢,怎么初始化呢,我们一般都用什么随机初手啊,或者是高斯出手啊,就随便给一个值。大家就会就会想,那你随便给一个值,它怎么能做模式提取呢?这里边别忘了有一个什么求导对吧。我现在假设有128个卷积盒。就128个这样的方程矩阵,三乘三的矩阵,都是这个图片上去扫扫出来的结果,我给它分类成一个狗,其实它是个猫,对吧?分错了,分错了就有一个损失对吧?说明你的128全错了对吧?它就迫使你的128个卷积盒向正确的方向去学。
12:03
明白吗?反正反正你甭管他怎么学的,这个这个学学法肯定是非常非常复杂啊,你甭管他怎么学的,反正他是能学到。最后啊,卷积盒一定会注意到很细微的细节,比如说狗的耳朵和猫的耳朵是不一样的。胡子是不一样的,鼻子是不一样的,肯定有那么一些滴盒会注意到这个地方不一样,为什么呢?比如你给他1000张狗的图像和1000张猫的图像。呃,这个时候大自然这个环境,包括这个甚至是皮毛这个环境,这个颜色已经可以忽略不计了,对吧,他们很可能从总体上来讲就是鼻子不同,或者说尾巴不一样,对吧?卷积盒如果注意不到它的话,它就会持续的分错。他就必须得被更新,所以到最后收敛的时候,稳定的时候,卷积核一定能注意到,有一种鼻子是狗的,有一种鼻子是猫的,这个鼻子的权重会非常大。
13:08
明白这个意思是吧,其实还有很多很多,呃,很形象的例子啊,但我没有举那么多例子,比如说网上经常会有的,像那个,打比方说特特朗普这个人脸识别啊,然后有一个人长得特别像特朗普,我们人可能都分不清。然后就把这个,就把特朗普的这个模型,可能去识别这个人的这个识别人的这个地方,结果就分成它不是特朗普,然后我们去看这个卷积核的这个到底哪些卷积核是起到了对这个结果起到了很关键的权重,是吧,我们发现。有一个卷积盒,就是提取眉毛上扬的那个特征的卷积盒。权重特别高。然后经过人类仔细观察,果然眉毛是往上挑的,而不像特朗普的眉毛是个平的。明白吧,就那轮就能做到这个,就能做到这个东西。
14:03
就听起来是很神奇,其实并不难哈,只要他学不到这个特征,他就会把这个人当成特朗普是吧?他通过任何方式他也他也学不到,就是因为嘴,假设咱们说嘴、鼻子眼睛全一样,他通过任何方式他也不可能把这个结果分对,只有让他学到眉毛这个特征。对吧,所以这就迫使他一定要把那个眉毛这个形态给学到,所以就有一组卷积盒,就进化成了专门学眉毛这个特征的卷积盒,所以当你拿到一个新人过来的时候,他发现眉毛不对。他就能很很快的把你分清楚,到底你是不是阿?明白是吧,所以大家可以可以看到啊,就是我们特征工程其实已经不需要做了,就把图像图像扔进去就可以了,对吧。其实呢,图像模型里有非常多,但是先给大家讲的话呢,大家肯定是觉得可能是理解不了,嗯,在这里边我再给大家简单,我们这个大模型我就不讲了啊,简单给大家讲一个东西,就是说图像一般不是RGB3元色嘛,所以它不是一个层面,它是三层,让大家想那张图如果是一个二二十画的一个图像,就黑白图像,那非常简单,就是一张图它现在是三层,明白吧,所以呢,一个卷积盒呢,不是一个平面,也是一个三层。
15:27
一个卷机盒就像一个汉堡一样。是三层的,而且这三层值是不一样的。明白吧,有些三层的值不是一样的,不是说因为什么呢,RGB3个颜色的表现,对图像的分类呢,是有不同样的权重。对吧,是有不同的权重的。你RGB用用一个权重,用一个矩阵去乘的话,是本身是有问题的,因为RGB通过不同的分布组合起来才是一个一个小洞啊,或者一个什么物体,对吧,你先认为他们三个应该共用一个选中,那肯定是不对的是吧,所以一个卷积盒本身是一个汉堡型的。
16:06
它每一层都跟图像对,对应的那个层乘相乘,乘积。明白乘积乘积乘完之后,你这个output这个这个这个图片这个这个层不也是三层的吗?对吧。对,因为你卷积盒是三层的,图像也是三层的,然后对应层互相乘的,对应层互相乘,乘完之后肯定也得到三三个层的图像,对不对,这三个层的图像你可以把它叠起来,就直接加和加起来。为什么可以加呢?因为RGB加在一块得到了我们现实的图像,所以你信图也可以加。明白了吧,OK了,那如果有128个卷积盒,就128汉堡的话,我们就会得到什么呢?128个所谓的feature。128个bit map,当然每一个bit map都是由三个图叠起来加起来的,对吧,对吧,因为一个一个卷积盒得到了一个三成的吧,然后合起来变成一张图,所谓的非车ma的特征图是你128个肯定得到128个飞车ma嘛,对不对?下一层的绝接神经网络,下一层你就认为有128个层就行了,RBB是三个层是吧?下一层你认为有128个层就OK了。
17:24
对吧,这也稍微多说了一下。嗯嗯,这里边还要讲几个小的一个技术啊,小技术点。刚才我们讲了卷积,卷积以后我们一般会做一个磁化。为什么要做实化呢?大家知道啊,那个像素和像素之间相邻的像素都非常像是吧,非常像,其实本身有没有它没有意义,对吧,我们想因为因为如果你不落实话,你这个假设你这个图图像一般都很大,对不对,你这个图一直很大,你做完卷积还是很大,所卷积还是很大,这个参数数量特别庞大,但是通过实化,什么叫实化呢?就是一个矩阵,假如四乘四的。
18:04
我对每一个小方格做一个平均,获取最大变成一个二乘二的。就是这样一个操作,做完这个操作以后呢,你整体的参数数量就可以减半。对不对。就是实话,这个这个技术很简单,但是非常好用,还有一个比较有有呃,比较神奇的一个技术叫dropout,就更玄的一个技术啊,招方的做的是什么事呢?就是挑一些参数,这刚才我们不说了吗?只要你后边那个只有路前面这参数都会被更新,对不对,他现在调节参数就不更新。就挑一些路径,就就是你这个值,就是反向传导的时候就过不去,随机丢就是0.5或者0.6这样的一个概率,随机丢可以见到丢的概率非常大。但是这个丢呢,并不是说这条路不通永远不通了,你这条路不通永远不通就没有必要带着了,是吧?它是每一次训练的时候都随机丢一批,每次下一次再换一批丢。
19:06
这个账号的这个技术呢,能让整体的准确率提升2%~3%个点左右,效果是非常明显的。呃,有的研究分析呢,是照化的减轻了这个过敏核的一个作用。大家明白是吧,减轻过底盒,因为因为相当于什么呢?就是我对很多事都成一眼闭眼了,我分化性能肯定更好。对吧,我我如果对很多事情都管的特别特别细的话,我自己也将陷入这个事情,就本身这个事情的细节当中,以后的一种新的事情我可能应付不了,对吧,这比较好理解对吧。那么这几个技术呢,就形形成了我们现在这个卷积神经网络,一堆这个网络,嗯,网络结构呢,我得给大家分析一个最分析,咱们分析一个最简单的。就拿这个图来说,这是一二年夺冠的,这个来ne,呃,一会儿咱们会实现一个小的一个简单的神经网络,就是那个手写数字分类的,大家可以看到你在你的记忆上,不管写什么数字,基本都能给你分,对啊,那你就可以试一试。
20:11
这个网络啊,实际上一二年夺冠的网络其实非常简单,前面是一个这个地方是三,为什么是三呢?因为它是RBB,对不对,RDB,然后呢,RBB就是三个层嘛,所以上面就开始做卷积了,就拿一个11乘11的卷积盒去做卷积。当然11乘11很大,不划算啊,就三乘三是最好的,但是当时是这么做的,那就无所谓了,原理上是一样的,做卷积,卷积之后就得到了下一层的一个图对不对?下一层叠加起来的图对不对?它这里面有两个图是什么原因呢?因为当时他用两个GPU弄的,其实就是一张图啊。后面就开始做一次poing poing是什么?也就刚才我们讲的那个实化,对吧,把这个图变成一半,那个图小了很多对不对?然后再做一次卷积,再做一次顶,再做一次卷积,再做一次顶,卷积顶卷积顶,直到最后,到最后不能卷了,也不是不能卷,再再往下卷好像是没什么意义了,当然这个层数也是超参数,他自己设置的,我们也不知道为什么,他就卷了五层,他也可以选十层,对吧,有可能网络不好训练对吧?选十层参参数可能多吧,卷到最后的时候,因为他要做的事情是一个分类图片分类问题,对不对。
21:25
图片分类最后得落,你这个神经网络是没有办法做分类的,你得落实到一个分类模型上去。对吧。怎么做这分类模型呢?假设现在我图像就这个地方,最后做了各种各样的整集,我的图像变成了任何一组数字都都OK啊,我不管这是一组一组图片,我把这个图片全拼在一块,我可以认为这个拼在一起的是一个长的向量,对不对?很长的向量,对吧?因为我的图片不断变小,它可能是1024的,也可能是2048的,对吧,那也可能是512,这无所谓,不管它是多大的,我给它乘一个矩阵,假设是1024的话,我就乘一个1024。
22:08
十这样一个矩阵啊,行行是我这么说,行是124列是十。乘完之后不就变成十个数了吗?对不对,十个数里边我看哪个数大。因为我这个图像进来的时候是带标签的,比如说123456789是是十个数是吧,零到七是十个数,我是带着标签的,我扔了一扔了,扔进了一个图像,我告诉你现在它是零对吧,你最后分类的时候呢,你分出来第五个数字最大,这肯定是错的嘛,这就是一个损失,我的目标是让零这个分数最大。明白吧,但它如果它判别就是你通过成这矩阵判别出来的是五最大的话,它就有个损失了,它就得必须得向原封不动的向回开始更新梯度,把所有的参数全更新一遍,让你这个数据在这个上面预测是零才行。
23:09
是不是原理很简单是吧?可以理解是吧。其实很简单,就是你只要把信息传过去了,你中间怎么做的根本无所谓。就就那么简单,就是很悬。对,你看你这个地方乘个1024乘十的矩阵,可要是我们以前的思想一定会说你乘这个矩阵是干什么用的呢?其实这个矩阵什么用都没有,就是把1024这个向量变成十个数字。变错了,大家一起更新权重,一起求导就完事了,反正肯定能求出来,只要乱的求导最后肯定是对的,对吧。对,呃,所以其实我就是刚毕业工作的时候啊,那时候深深度神经网络还没有现在那么火,但是当时我看一些材料的时候,我也是就没有想到,就是说如此简单的一个技术,然后做人工智能,现在可以这么火,但是同时又困扰前人那么长时间。
24:08
本身觉得很不可思议,因为上高中学求导的时候,大家可能觉得求导这就没什么了是吧?哎,求导求其时是吧,就完事了,你会想到这个东西可以移动用了是吧?你会想到这个东西加上一些简单的一些数字乘法就可以做人脸识别,那可以做准确率这么高对吧?大家都想象不到。然后呢,我接下来呢,给大家后面有有很多这个网络啊,因为考虑大家那个接受的那个能力来说呢,第一次还是不适合讲这么深的,嗯,深的网络,因为这里面用了很多高级的技巧,包括right也是啊,讲的话呢,大家肯定就是不懂的,嗯,所以我们现在先做一个练习,这个练习会让你们看到自己能训练一个手写数字识别的这样一个图像分类的一个神经网络,并且它这个准确率可以达到比较高啊。
25:04
What?
我来说两句