<div class="blogpost-body" id="cnblogs_post_body">
<div class="editor-reader-full-shown" id="editor-reader-full">
<div class="reader-full-topInfo-shown" id="reader-full-topInfo">
<code>@hanbingtao</code>
<code><span class="article-updated-date">2017-08-28 19:53</span></code>
<code>字数 <span class="article-characters">28345</span></code>
<code>阅读 <span class="article-read">85171</span></code>
</div>
<div class="wmd-preview wmd-preview-full-reader" id="wmd-preview">
<div class="md-section-divider">
</div>
<div class="md-section-divider">
</div>
<h1 id="零基础入门深度学习4-卷积神经网络">零基础入门深度学习(4) - 卷积神经网络</h1>
<p><code>机器学习</code> <code>深度学习入门</code></p>
<hr>
<p><img alt="" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-2cd79e41d0727a68e7d39461875cf5b0.jpg"></p>
<blockquote class="white-blockquote">
<p>无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就out了?现在救命稻草来了,《零基础入门深度学习》系列文章旨在讲帮助爱编程的你从零基础达到入门级水平。零基础意味着你不需要太多的数学知识,只要会写程序就行了,没错,这是专门为程序员写的文章。虽然文中会有很多公式你也许看不懂,但同时也会有更多的代码,程序员的你一定能看懂的(我周围是一群狂热的Clean Code程序员,所以我写的代码也不会很差)。</p>
</blockquote>
<div class="md-section-divider">
</div>
<h2 id="文章列表">文章列表</h2>
<p><a href="https://www.zybuluo.com/hanbingtao/note/433855">零基础入门深度学习(1) - 感知器</a> <br><a href="https://www.zybuluo.com/hanbingtao/note/448086">零基础入门深度学习(2) - 线性单元和梯度下降</a> <br><a href="https://www.zybuluo.com/hanbingtao/note/476663">零基础入门深度学习(3) - 神经网络和反向传播算法</a> <br><a href="https://www.zybuluo.com/hanbingtao/note/485480">零基础入门深度学习(4) - 卷积神经网络</a> <br><a href="https://zybuluo.com/hanbingtao/note/541458">零基础入门深度学习(5) - 循环神经网络</a> <br><a href="https://zybuluo.com/hanbingtao/note/581764">零基础入门深度学习(6) - 长短时记忆网络(LSTM)</a> <br><a href="https://zybuluo.com/hanbingtao/note/626300">零基础入门深度学习(7) - 递归神经网络</a></p>
<div class="md-section-divider">
</div>
<h2 id="往期回顾">往期回顾</h2>
<p>在前面的文章中,我们介绍了全连接神经网络,以及它的训练和使用。我们用它来识别了手写数字,然而,这种结构的网络对于图像识别任务来说并不是很合适。本文将要介绍一种更适合图像、语音识别任务的神经网络结构——卷积神经网络(Convolutional Neural Network, CNN)。说卷积神经网络是最重要的一种神经网络也不为过,它在最近几年大放异彩,几乎所有图像、语音识别领域的重要突破都是卷积神经网络取得的,比如谷歌的GoogleNet、微软的ResNet等,打败李世石的AlphaGo也用到了这种网络。本文将详细介绍卷积神经网络以及它的训练算法,以及动手实现一个简单的卷积神经网络。</p>
<div class="md-section-divider">
</div>
<h2 id="一个新的激活函数relu">一个新的激活函数——Relu</h2>
<p>最近几年卷积神经网络中,激活函数往往不选择sigmoid或tanh函数,而是选择relu函数。Relu函数的定义是:</p>
<div class="md-section-divider">
</div>
<p> </p>
<div class="MathJax_SVG_Display">
</div>
<p> </p>
<p>Relu函数图像如下图所示:</p>
<p><img alt="" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-d4ae6c2aae057afadd00be3a82efa13a.png" title=""></p>
<p>Relu函数作为激活函数,有下面几大优势:</p>
<ul><li>速度快 和sigmoid函数需要计算指数和倒数相比,relu函数其实就是一个max(0,x),计算代价小很多。</li><li>减轻梯度消失问题 回忆一下计算梯度的公式<span class="MathJax_Preview"><span class="MathJax_SVG" id="MathJax-Element-2-Frame">。其中,<span class="MathJax_Preview"><span class="MathJax_SVG" id="MathJax-Element-3-Frame">是sigmoid函数的导数。在使用反向传播算法进行梯度计算时,每经过一层sigmoid神经元,梯度就要乘上一个<span class="MathJax_Preview"><span class="MathJax_SVG" id="MathJax-Element-4-Frame">。从下图可以看出,<span class="MathJax_Preview"><span class="MathJax_SVG" id="MathJax-Element-5-Frame">函数最大值是1/4。因此,乘一个<span class="MathJax_Preview"><span class="MathJax_SVG" id="MathJax-Element-6-Frame">会导致梯度越来越小,这对于深层网络的训练是个 |
|