基础神经网络

基本结构

可以理解为根据特征走出一条最佳路线,从左到右为数据计算流程

●第一层为输入层,输入数据

●最后一层为输出层,输出结果(可以有多个输出如多分类场景)

●中间为隐含层 2、3个隐含层以上可称为深度学习/深度神经网络

●数据预测从输入到输出称为前向传播 FP

●数据训练更新参数的过程为反向传播 BP

基础神经网络图

世间万物均可通过变换得到,因此每一层通过线性函数z=wx+b、非线性函数a=g(z)不断变换,得到真相

●b可以平移数据,称为偏置项,一般不在神经网络图中体现

●w可以旋转、缩放、升降维数据(如部分w=0可使特征无效)的能力,称为权重

●z为神经元状态函数

●a可以弯曲数据,称为激活函数,作为下一层的输入值

注:z_3^{(2)}代表第2层神经的第3个神经元、w_{12}^{(3)}代表第3层神经的第1个神经元与上一层第2个神经元的权重,不同知识中序号的表达可能不太一致,不需要过于在意

激活函数

没有激活函数的神经网络等效于纯线性函数,和最简单的线性回归没有区别。常用的激活函数包括:

ReLU

ReLU f(x)=max(0, x),其正数部分导数始终为1。异常值容易导致神经元死亡:如极端值使此次权重更新至-100,后续正常数据∈[0,10000]训练时永远为负数,则该神经元永远输出为0

●避免过拟合,存在单元稀疏性

●梯度计算快捷,负数不再计算

●作为隐藏层激活函数

Leaky ReLU是其缓解方法,f(x)=max(0.01x, x),0.01是参数可调整

Sigmoid、Softmax一般作为输出层的激活函数

基础概念

超参数 模型设计时需确定的参数,非数据训练时调节出来的一般参数

学习率 α

正则化参数 λ

神经网络层数 L ,包含输入层、输出层、隐藏层

每个隐含层中神经元个数 j

学习回合数 epoch  

训练样本规模 batchsize,Iterations为每次Epoch样本训练数量,batchsize÷epoch=Iterations

其他还包括代价函数的选择、权重初始化方式、神经元激活函数选择、输出神经元编码方式

链式法则

每层函数导数相乘、相加为复合函数导数\frac{de}{da} =\frac{de}{dc} \frac{dc}{da} \frac{de}{db}=\frac{de}{dc} \frac{dc}{db}+ \frac{de}{dd}  \frac{dd}{db}

●Dropout 为每层神经设置神经元死亡概率(一般为0.5)

数据量较大时效果较好,训练时神经元死亡会造成输出为0(屏蔽某些特征,让参数调优更加公平),避免过拟合

数据预测时关闭Dropout,避免结果不稳定导致预测错误

●神经元 处理数据的一个神经单元

稀疏性:人脑理解事物最多只会动用5%的神经元,动用过少重要特征易被忽略,动用过多思考成本过大

神经死亡:由于异常值导致学习参数剧烈变化,所有样本通过该单元的激活函数始终为0,相当于该神经元无效

神经饱和:神经元相关参数更新时,导数趋近为0导致即梯度下降时参数调整幅度过小

●深度网络VS浅层长条网络

7层效果好于1层16K

浅层长条网络隐藏层数少,但同样的预测效果相比深度神经要求成倍的参数数量

●零均值

将数据处理为0分布、1标准差的分布后,梯度下降求解速度将加快。同时避免数据全为正或负时使用某些激活函数导致梯度只在同一方向调整的可能

f(x)=ax_1+bx_2+c、x_1∈[0,100]、x_2∈[0,1]▽θ_i∝x_i为例

梯度优化方向为当前梯度切线的垂直方向,若两特征意义相当,则θ_1将大于θ_2100倍

梯度下降时θ_2会很快趋近最优,而θ_1还在赶路

●Early Stopping

每次训练回合结束后计算模型准确度。连续X次训练未超过最佳准确度即模型无需继续训练,可提前停止

●权重初始化:Xavier、HE

神经网络的核心依然是更新参数,以权重w为例其重点是使用梯度下降计算每次w的更新值。更新的核心是该权重上一层输入值m乘后一层神经元对它的梯度值n,这2项与激活函数输出值、导数高度相关

如激活函数Tanh下不适当初始化会造成所有m*n趋近于0或±1:

①权重均值0,方差0.01分布:数值多逼近0,则激活函数输出接近0,多层链式传递时参数几乎不更新

②权重均值0,方差1分布:数值多在±1两侧,则激活函数输出接近1,此时导数趋近0,导致同①的问题

权重初始化优化思路就是希望任意层的状态值依然是0均值相同方差的正态分布,避免输入至Tanh的数据趋近于0或远离±2导致学习速度过慢。Xavier设计者在假设样本、权重均服从0均值、特定方差的数据分布下,论证了权重只需服从跟输入、输出节点数量有关的均匀分布,并在5层神经网络下实验了Tanh激活值可以获得较好的数据分布。由于Xavier的假定前提:所有层的输出方差均一样,这样可直接对所有权重做服从特定分布的初始化。HE是适用于Relu的权重初始化(HE假设ReLU训练时有一半神经元被关闭,则方差影响减半,要保证每层方差不变,则权重方差要乘以一倍来补偿)

反向传播-参数更新

输入层相当于参数直接输入,因此参数更新是针对连接隐藏层、输出层的权重与偏置项

以SOFTMAX为例,损失函数L=-∑y_ilna_i。以草图为例进行解释:

Softmax利用输出层中每个神经元状态值对结果进行计算。因此对某神经元状态函数求导时需考虑其他神经元。这里,将上述y的下标定义改变,代表当前样本属于第i类。令j为输出层第j个神经元,每个神经元负责一个类别:

i=j实线部分:\frac{da}{dz_i}=\frac{d}{dz_i}\frac{e^{z_i}}{∑e^{z_k}} =\frac{e^{z_i}}{∑e^{z_k}} -\frac{e^{z_i}e^{z_i}}{∑e^{z_k}∑e^{z_k}} =\frac{e^{z_i}}{∑e^{z_k}}(1-\frac{e^{z_i}}{∑e^{z_k}})=a_i(1-a_i)

i≠j虚线部分:\frac{da}{dz_i}=\frac{d}{dz_i}\frac{e^{z_i}}{∑e^{z_k}} =-\frac{e^{z_i}}{∑e^{z_k}}\frac{e^{z_j}}{∑e^{z_k}}=-a_ia_j

\frac{dlnx}{dx} =-\frac{1}{x},因此\frac{dL}{dz_i}=\frac{dL}{a_j} \frac{da_j}{dz_i} =-(-\sum_{j≠i}\frac {y_i}{a_j}\frac{da_j}{dz_i}-\frac{y_i}{a_i}\frac{da_i}{dz_i} )

=-\sum_{j≠i}\frac{y_i}{a_i} ·a_ia_j+\frac{y_i}{a_i}·a_i(1-a_i)=-\sum_{j≠i}y_ia_j+y_i-y_ia_i=-∑y_ia_i+y_i

因为真实分类问题中只会有一项为1如样本x_i的输出向量(0,0,1)。则上述式子可简化:

\frac{dL}{dz_i}=y_i-a_i,此时若要对w_{41}求导,则\frac{dL}{dw_{41}} =\frac{dL}{dz_1}\frac{dz_1}{dw_{41}} =(y_1-a_1)a_3z_1为线性函数、y_1代表该样本在第1类的真实预测值:0或1

隐藏层的反向传播由上已初见端倪,利用损失函数对权重的导数+梯度下降完成。我们对w_{31}求导可得:

\frac{dL}{dw_{31}}=(\frac{dL}{dz_1} \frac{dz_1}{da_3}+\frac{dL}{dz_2} \frac{dz_2}{da_3} )\frac{da_3}{dz_3} \frac{dz_3}{dw_{31}} =m

一次完整梯度下降对所有神经元求得对应更改参数m后,则对权重进行一次修改:w=w-αm,偏置项同理

注:括号中的值为残差,它是下一层所有与该神经元有连接的节点的导数\frac{dL}{dz_i} 乘以连接权重\frac{dz_i}{da_j}= w_{ij}之和。这样对于深度网络我们不需要每进行一层参数求导,就重头计算一次导数。只需要每向前走一层,保留当前神经元的残差即可:

δ^{l+1}_j=\frac{dL}{dz_j} 代表l+1层神经元j的残差,相当于反向求导至该神经元的状态函数部分

非输出层中,对于l层神经元i的残差:

δ^l_i=(\sum_{j}^{l+1}w^{(l+1)}_{ji}δ^{l+1}_j)·f’(z^{(l)}_i) 代表l+1层所有连接该神经元的节点残差总和乘对状态函数的导数

以上例w_{31}为主,状态函数的导数就是括号后的\frac{da_3}{dz_3},假设激活函数为ReLU且输出值大于0,则\frac{da_3}{dz_3} =1,对于w_{31}的更新值m可通过残差快速求解,而不必从输出层再跋山涉水:

w^{(l)}_{ij}=w^{(l)}_{ij}-α·a^{(l-1)}_j·δ^l_ib^{(l)}_i=b^{(l)}_i-α·δ^l_i

偏置项b再线性函数中y=ax+b求导为1,故不需要前一项的输出值。另外不同文章中对w^{(l)}_{ij}的l层定义不一样,有些是对l层连接l+1层的权重、有些是l-1层对l层的连接权重,会导致最终公式中上标l的表示有出入,不过核心思想同上文所述

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,817评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,329评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,354评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,498评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,600评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,829评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,979评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,722评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,189评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,519评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,654评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,940评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,762评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,993评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,382评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,543评论 2 349

推荐阅读更多精彩内容