吴恩达深度学习课程四:计算机视觉
<p>此分类用于记录吴恩达深度学习课程的学习笔记。</p><p> 课程相关信息链接如下:</p><ol><li>原课程视频链接:[双语字幕]吴恩达深度学习deeplearning.ai</li><li>github课程资料,含课件与笔记:吴恩达深度学习教学资料</li><li>课程配套练习(中英)与答案:吴恩达深度学习课后习题与答案</li></ol><p>本篇为第四课的第一周内容,1.9到1.11的内容,同时也是本周理论部分的最后一篇。</p><p>本周为第四课的第一周内容,这一课所有内容的中心只有一个:<strong>计算机视觉</strong>。应用在深度学习里,就是专门用来进行图学习的模型和技术,是在之前全连接基础上的“特化”,也是相关专业里的一个重要研究大类。</p><p> <strong>这一整节课都存在大量需要反复理解的内容和机器学习、数学基础。</strong> 因此我会尽可能的补足基础,用比喻和实例来演示每个部分,从而帮助理解。</p><p> 本篇的内容关于<strong>池化操作与卷积中的反向传播</strong>,是对本周内容的最后补完,本篇之后,我们就可以对卷积神经网络的基本组件与传播过程有一个较完整的认知。</p><h1>1. 池化层(pooling layer)</h1><p>除去卷积层和全连接层,池化层也是卷积神经网络的一大基石,不要被这个名字吓到,它的原理反而是最简单的。</p><p> 常见的池化分为两种:<strong>最大池化和平均池化。</strong></p><p> 使用方法并不难,我们直接摆出来:</p><ol><li><strong>最大池化:不计算,直接使用窗口最大值作为结果的卷积操作。</strong></li><li><strong>平均池化:用窗口所有像素的平均值作为结果的卷积操作。</strong></li></ol><p>先来看最大池化,我们通过课程里的例子补充一些细节:</p><p> </p><p> 现在我们知道了最大池化怎么用了,问题紧接着就来了,<strong>这个操作是用来干嘛的?</strong> 我们继续:</p><p> </p><p>你可能发现了一个 bug :<strong>那万一重要特征反而是被一堆大像素包围的小像素呢?这样不是反而把最重要的特征扔了吗?</strong></p><p> 平均池化可以缓解这种现象:</p><p> </p><p> 实际上,<strong>池化最大的作用就是在卷积神经网络中减少特征图的空间尺寸来降低计算复杂度,同时保留特征信息。</strong></p><p> 而对于怎么池化更好更合适,还是要在具体任务中不断尝试。</p><p>此外,<strong>对于输出特征图的大小计算,卷积的输出公式在这里仍然适用:</strong></p><p></p><p>\[\text{输出尺寸}=\left\lfloor\frac{n - f + 2p}{s}\right\rfloor + 1, 注:\lfloor向下取整\rfloor \]</p><p></p><p><strong>而对于多通道的池化处理,也和卷积核的逻辑相同,确保和输入图像的通道数相等</strong>。</p><p> 最后强调一点:<strong>你会发现,池化层只有人工设置的超参数,没有任何参与传播的参数,在其之后通常也不单独设置激活函数。</strong></p><p> 下面我们来看一个完整卷积神经网络的传播过程。</p><h1>2. 卷积神经网络的反向传播</h1><p>现在,我们先看一个加入了池化层的完整卷积网络,补充一些细节:</p><p> </p><p>另外一点要强调的是,和全连接网络相通,就是<strong>尽量让激活数(每次应用激活函数的元素数量)保持较平稳的下降趋势。</strong> 避免出现”50000→1“这种断崖式下降。</p><p>现在我们就来看看这个网络的完整传播过程。</p><p> </p><p>很显然,列举出传播过程后,问题紧接着就来了:<strong>当梯度到达卷积层的时候,我们是如何根据不确定数量的像素梯度更新确定数量的卷积核的呢?</strong></p><p> 我们详细展开一下标红部分:</p><p> </p><p>了解了逆展平和池化层传递参数后,就来到了最关键的部分:<strong>卷积核和偏置如何根据有空间结构的梯度更新?</strong> 继续向下。</p><p> </p><p>没错,<strong>因为输出特征图中的每一个像素都是由卷积核与输入图像的区域运算后再加上偏置得到的,那么就代表反向传播计算得到输出中每一个像素的梯度都和 9 个卷积核参数与 1个偏置常量相关。</strong></p><p> 知道了这个,如何更新就已经呼之欲出了:</p><p> </p><p> 不写复杂的公式,用一句话来概括就是:<strong>某个参数的最终梯度 = 它对所有受影响的输出像素的偏导数之和。</strong></p><p> 如果你忘了偏导和梯度的概念,他们第一次出现在这里:梯度下降法</p><p> 这就是卷积层的反向传播过程,继续反向传播也是同样的道理。</p><p>最后,我们总结一下卷积层本身。</p><h1>3.卷积层的特点</h1><p>这一点的内容就更偏向理论了,相比全连接层,卷积层有两个突出的特点,我们称之为<strong>参数共享和稀疏连接。</strong></p><p> 来简单介绍一下,不涉及太多具体应用,就不详细展开了。</p><ol><li><strong>参数共享: 不同于全连接层对每个输入特征有单独的权重,卷积层的输入图像共享卷积核和偏置参数。</strong> 原因是卷积核的适用性,我们可以用边缘检测卷积核检测左上角的竖直边缘,也可以用同样的卷积核检测右下角的竖直边缘。</li><li><strong>稀疏连接: 不同于全连接层的输出和每个输入都有关,卷积层输出特征图中的每个像素只和产生他的几个像素有关。</strong> 原因是图像的局部性,要找猫耳朵,只要看耳朵那一块就行了。</li></ol><h1>4. 总结</h1><table style="border: 1px solid #000;"><tbody><tr><td data-row="1">概念 原理 比喻</td></tr><tr><td data-row="2"> 池化层(最大池化、平均池化)</td><td data-row="2">通过窗口取最大值或平均值,减少特征图空间尺寸,降低计算量,同时保留关键特征;无参与训练的参数。</td><td data-row="2">“把照片压缩成缩略图”:不用每个像素都看清,只保留轮廓和显著信息。</td></tr><tr><td data-row="3">池化层的尺寸计算</td><td data-row="3">与卷积相同使用 \(\left\lfloor \frac{n - f + 2p}{s} \right\rfloor + 1\);通道数保持不变。</td><td data-row="3">“裁剪图片”:窗口大小、步幅决定裁剪后的尺寸。</td></tr><tr><td data-row="4">卷积层反向传播</td><td data-row="4">输出每个像素的梯度都会对应卷积核全部参数;卷积核梯度是所有相关输出像素偏导的总和;偏置梯度是所有输出像素梯度的求和。</td><td data-row="4">“每个菜被客人打了几分,后厨每个厨师要根据这些评分回溯自己哪一步影响了结果。”</td></tr><tr><td data-row="5">参数共享</td><td data-row="5">同一个卷积核扫描整个图像,因此所有位置使用同一组权重;大大减少参数量。</td><td data-row="5">“同一个模具印图案”:不论纸放哪里,模具都是同一个。</td></tr><tr><td data-row="6">稀疏连接</td><td data-row="6">卷积核只与局部区域相乘,一个输出像素只依赖输入的一小块,而非整张图。</td><td data-row="6">“你只需要看猫脸附近就能判断有没有耳朵,而不是看整张照片。”</td></tr></tbody></table><br>来源:程序园用户自行投稿发布,如果侵权,请联系站长删除<br>免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! 不错,里面软件多更新就更好了
页:
[1]