没有合适的资源?快使用搜索试试~ 我知道了~
从零开始:教你如何训练神经网络
4星 · 超过85%的资源 需积分: 10 22 下载量 79 浏览量
2017-12-20
15:36:33
上传
评论
收藏 195KB PDF 举报
温馨提示
试读
16页
从神经网络简单的数学定义开始,沿着损失函数、激活函数和反向传播等方法进一步描述基本的优化算法。
资源推荐
资源详情
资源评论
从零开始:教你如何训练神经络
选TowardsDataScience
作者:Vitaly Bushaev
机之编译
作者从神经络简单的数学定义开始,沿着损失函数、激活函数和反向传播等法进步描述基本的优
化算法。在解这些基础后,本详细描述动法等当前分流的学习算法。此外,本系将在后
介绍 Adam 和遗传算法等其它重要的神经络训练法。
I. 简介简介
本是作者关于如何「训练」神经络的部分经验与解,处神经络的基础概念外,这篇章还描
述梯度下降(GD)及其部分变体。此外,该系章将在在后部分介绍当前较流的学习算
法,如:
动随机梯度下降法(SGD)
RMSprop 算法
Adam 算法(适应矩估计)
遗传算法
作者在第部分以常简单的神经络介绍开始,简单到仅仅够让解我们所谈论的概念。作者会解
释么是损失函数,以及「训练」神经络或者任何其他的机学习模型到底意味着么。作者的解释并
是个关于神经络全深度的介绍,事实上,作者希望我们读者已经对这些相关的概念早已然于
。如果读者想好地解神经络具体是如何运的,读者可以阅读《深度学习》等相关书籍,或参阅
末提供的相关学习资源表。
本作者以前在 kaggle 上进的猫狗鉴别竞赛(https://www.kaggle.com/c/dogs-vs-cats)为来解
释所有的东。在这个赛中我们临的任务是,给定张图,判断图中的动物是猫还是狗。
II. 定义神经络定义神经络
神经络(ANN)的产受到脑作机制的启发。尽管这种模拟是很严格的,但是 ANN 确实和
2017-12-11 机之
它们物意义上的创造者有个相似之处。它们由定数的神经元组成。所那么,我们来看下个单
独的神经元吧。
单个神经元
我们接下来要谈论的神经元是个与 Frank Rosenblatt 在 1957 提出的最简单的被称作「感知机,
perception」的神经元稍微有所同的版本。我所做的所有修改都是为简化,因为我在这篇章中会
涉及神经络的深解释。我仅仅试着给读者给出个关于神经络如何作的直觉认识。
么是神经元呢?它是个数学函数,并以定的数值作为输(随你想要多少作为输),我在上
图画出的神经元有两个输。我们将每个输记为 x_k,这 k 是输的索引。对于每个输 x_k,神经
元会给它分配另个数 w_k,由这些参数 w_k 组成的向叫做权重向。正是这些权值才使得每个神经元
都是独的。在测试的过程中,权值是会变化的,但是在训练的过程中,我们要去改变这些权值以
「调节」我们的络。我会在后的章中讨论这个内容。正如前提到的,个神经元就是个数学函
数。但是它是哪种函数呢?它是权值和输的种线性组合,还有基于这种组合的某种线性函数。我会
继续做进步解释。让我们来看下先的线性组合部分。
输和权值的线性组合。
上的公式就是我提到的线性组合。我们要将输和对应的权值相乘,然后对所有的结果求和。结果就会
个数字。最后部分—就是给这个数字应某种线性函数。今天最常的线性函数即种被称作
ReLU(rectified linear unit) 的分段线性函数,其公式如下:
线性整流单元的表达式。
如果我们的数字于 0,我们就会使这个数字,如果它于 0,我们就会 0 去代替它。这个被在线
性神经元上的线性函数被称作激活函数。我们必须使某种线性函数的原因在后会变得很明显。总
结下,神经元使固定数的输和(标),并输出个标的激活值。前画出的神经元可以概括
成个公式,如下所示:
将我要写的内容稍微提前下,如果我们以猫狗鉴别的任务为,我们会把图作为神经元的输。也许
你会疑问:当神经元被定义为函数的时候,如何向它传递图。你应该记住,我们将图存储在计算机中
的式是将它拿个数组代表的,数组中的每个数字代表个像素的亮度。所以,将图传递到神经元
的式就是将 2 维(或者 3 维的彩图)数组展开,得到个维数组,然后将这些数字传递到神经
元。幸的是,这会导致我们的神经络会依赖于输图的,我们只能处由神经络定义的某个
固定的图。现代神经络已经发现解决这个问题的法,但是我们在这还是在这个限制下设计
神经络。
现在我们定义下神经络。神经络也是个数学函数,它就是很多相互连接的神经元,这的连接指
的是个神经元的输出被为另个神经元的输。下图是个简单的神经络,希望这张图能够将这
个定义解释得加清楚。
个简单的神经络。
上图定义的神经络具有 5 个神经元。正如你所看到的,这个神经络由 3 个全连接层堆叠成,即每
层的每个神经元都连接到下层的每个神经元。你的神经络有多少层、每层有多少个神经元、神
经元之间是怎么链接的,这这些因素共同定义个神经络的架构。第层叫做输层,包含两个神经
元。这层的神经元并是我之前所说的神经元,从某种意义,它并执任何计算。它们在这仅
仅代表神经络的输。神经络对线性的需求源于以下两个事实:1)我们的神经元是连在起的;
2)基于线性函数的函数还是线性的。所以,如果对每个神经元应个线性函数,神经络也会是
个线性函数已,那么它并单个神经元强。最后点需要强调的是:我们通常是想让个神经络
的输出在 0 到 1 之间,所以我们会将它按照概率对待。如,在猫狗鉴别的中,我们可以把接近
于 0 的输出视为猫,将接近于 1 的输出视为狗。为完成这个标,我们会在最后个神经元上应个
同的激活函数。我们会使 sigmoid 激活函数。关于这个激活函数,你前只需要知道它地返回值是
个介于 0 到 1 的数字,这正好是我们想要的。解释完这些之后,我们可以定义个和上图对应的神经络
。
定义个神经络的函数。
w
的上标代表神经元的索引,下标代表输的索引。
最后,我们得到某种函数,它以个数作为输,输出另个介于 0 到 1 之间的数。实际上,这个函数
怎样表达并重要,重要的是我们通过些权重将个线性函数参数化,我们可以通过改变这些权重
来改变这个线性函数。
III. 损失函数损失函数
在开始讨论神经络的训练之前,最后个需要定义的就是损失函数。损失函数是个可以告诉我们,
神经络在某个特定的任务上表现有多好的函数。做这件事的最直觉的办法就是,对每个训练样本,都
沿着神经络传递得到个数字,然后将这个数字与我们想要得到的实际数字做差再求平,这样计算出
来的就是预测值与真实值之间的距离,训练神经络就是希望将这个距离或损失函数减。
上式中的 y 代表我们想要从神经络得到的数字,y hat 指的个样本通过神经络得到的实际结果,i 是
我们的训练样本的索引。我们还是以猫狗鉴别为。我们有个数据集,由猫和狗的图组成,如果图
是狗,对应的标签是 1,如果图是猫,对应的标签是 0。这个标签就是对应的 y,在向神经络传递张
图的时候我们想通过神经络的得到的结果。为计算损失函数,我们必须遍历数据集中的每张图
,为每个样本计算 y,然后按照上的定义计算损失函数。如果损失函数较,那么说明我们的神
经络性能并是很好,我们想要损失函数尽可能的。为深地解损失函数和神经络之间的联
系,我们可以重写这个公式,将 y 换成络的实际函数。
IV. 训练训练
在开始训练神经络的时候,要对权值进随机初始化。显然,初始化的参数并会得到很好的结果。在
训练的过程中,我们想以个很糟糕的神经络开始,得到个具有准确率的络。此外,我们还希望
剩余15页未读,继续阅读
资源评论
- silly-k2019-01-04下载回来先看
ldbfrank1
- 粉丝: 1
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功