3 神经网络

深入理解逻辑回归Logistic Regression后,能更好理解神经网络Neural Network,吴恩达的课程对神经网络的讲解相对清晰,原理性和推导都很好理解。

我一直认为好老师标准不在于拥有多深奥的知识,而在于能否良好的传授,不仅仅是知识,而是学习的思路。独孤九剑还需要好老师传授才能发扬广大~。

网易:http://study.163.com/course/courseMain.htm?courseId=1004570029

coursera原版:https://www.coursera.org/learn/machine-learning

笔记包括:

课程理论学习

延展分析

1. 算法学习

深度神经网络大爆发是在2012年AlexNet之后,所以这门神经网络课程,还是经典的多层感知机MLP,前向人工神经网络和反向传播模式。

人工神经网络算是深度学习中一种,神经网络的分支和演进算法很多种,从著名的卷积神经网络CNN,循环神经网络RNN,再到对抗神经网络GAN等等。多层感知机MLP已经out了,但是我认为深入学习和理解其原理,对于后续学习其他的深度学习算法有帮助。

下文“神经网络”默认指吴恩达老师课程中的多层感知机,全连接模式的人工神经网络。

1.1 概览

神经网络,源自于生物学对人脑的研究。人脑对现实的理解是从简单特征提取神经元(简单细胞)到逐渐复杂的特征提取神经元(复杂细胞)的层级连接结构。


神经元结构

神经元其实3个核心功能,接受外部传来的数据,经过处理后,输出给(别的神经元)。从程序上来说就是输入,输出和处理。


神经网络

只能说是神经网络类似于人类的神经网络,人类的大脑神经元的工作原理还是一个谜,所以现在所谓的神经网络只是形似人类神经网络,实际工作机制就不见得是这样了,未来人类的生物科学更深入后,估计能解这个问题,不过到时估计已经能够有更强悍的算法了。

1.2 与逻辑回归Logistics Regression的关系

逻辑回归是构建一组权重参数θ,使得h(x)=θ'X预测函数尽可能的拟合测试数据(输入层),得到一个较准确的预测值(输出层)。

看下典型的神经网络图:Layer1是输入,Layer4是输出,而Layer2、Layer3是隐层,隐层可以有多个。假设只有Layer3和Layer4的时候,就是一个经典的逻辑回归问题,得到一组权重θ。那Layer1和Layer2之间,红色标注的就是一个逻辑回归,Layer1和Layer2是全连接的(每个都连接),所以就是3组θ。


4层神经网络

所以损失函数(代价函数)也就是逻辑回归的变形,通过多个隐层的设计,能够更好的拟合测试数据。理论上当隐层越多,效果更好(实际上不是)。

激活函数和逻辑回归一样采用了sigmoid函数作为激活函数:

g(z)=1/(1+e^(-z))

除了sigmoid作为激活函数外,还有sigmoid变形tanh,以及ReLU:f(x)=max(0,x)等,后面有机会再展开聊。

1.3 公式推导

这里没有复杂的计算公式推导,只有大致理论上推导,适合小白(需懂逻辑回归)。从逻辑回归的公式:

z=θ'X   %权重和输入的内积

a=g(z)=1/(1+e^(-z))  %激活函数sigmoid,也可使用tanh等

推导过程如下:

神经网络公式推导

记录a(j)为对应j层的神经元,简书写不出来上坐标,只能凑合看了,具体的a(j)层对应的神经元是:

第2层第1个元素(神经元)

z(2)=θ'a(1)

a(1)=X

a(2)=g(z(2))  %加上激活函数后

推导每一层的a(j)值

以往的逻辑回归的θ,基本上是1x(n+1)维,现在由于全连接下,就变成了mx(n+1)维,如上图的θ(1)为第一层Layer1的权重,3x4的矩阵,第j层到下一层j+1的权重记录为θ(j),θ(j)的维度是s(j+1) x (s(j)+1) ,m=s(j+1),n=s(j)+1。

采用前向传播Forward Progagation(简称FP)算法(概念不重要),假设我们任意初始化θ,就可以推导出整个计算过程。

FP其实就是一步步进行逻辑回归计算

先计算中间值z(j+1)=θ'a(j), a(1)=x;之后经过激活函数g(z(j+1))后,就得出a(j+1)的值,最后a(3)就是h(x)=g(z(3))预测值。

代价函数就变成最后一层a(3)=g(z(3))与y值之间的对比差异了,使用逻辑函数的代价函数,如果有多个输出(多分类的方式),就需要加入总的k分类差异:

代价函数

采用梯度下降法,求得J(θ)一阶导:


梯度下降求导

在求这个值的过程中,使用了反向传播BP(back propagation)的方法进行计算。反向传播的原理就是从最后一层开始,计算错误(偏差)值,最后一层的错误值δ(L):就是预测值-实际值的误差。


反向传播错误值


每一层的错误值计算公式

那么最后的J(θ)一阶导就等于(忽略正则化参数):


损失函数一阶导

整个计算过程如下:

反向传播计算方法

核心是计算出梯度下降的值Δ,通过计算错误δ,求得∂J(Θ)​/∂(Θ)​。

(1)初始化各层的梯度下降值Δ为0

(2)随机初始化Θ(含各层)

(3)初始化a(1)=x,通过FP前向传播方式,计算最后一层的输出值a(L)

(4)计算各层错误值δ(L),δ(L−1),δ(L−2),…,δ(2),通过算法:

 δ(l)=((Θ(l))δ(l+1)) .∗ a(l) .∗ (1−a(l))

(5)得到每一层的Θ梯度下降值

Di,j(l)​:=1/m​*(Δi,j(l)​+λΘi,j(l)​) If j≠0

Di,j(l):=1/m*Δi,j(l) if j=0

2. 延展分析

多层神经网络MLP是非常经典的神经网络算法,在推导公式过程中需要使用线性代数、向量微积分等理论推导。吴恩达老师的这个教材里面没有解释,在他的另外课程《深度学习工程师》-01神经网络和深度学习中- 《3.10 (选修)直观理解反向传播》中有详细的介绍。其实就是反向使用链式求导的方式。

课程地址:

原版:https://www.deeplearning.ai/

网易:http://mooc.study.163.com/smartSpec/detail/1001319001.htm

2.1 公式推导解析

下面通过链式求导的方式解析公式,如果激活函数g(z)是sigmoid的话有一下特性:

dg(z)/dz=a(1-a)

从最后一层a(l)看,我们要不断的计算Θ下降值,(忽略正则项)

dJ/dΘ(l)=dJ/da(l) x da(l)/dz(l) x dz(l)/Θ(l)

dJ/dz(l)=dJ/da(l) x da(l)/dz(l);  % 代入J=-((y)log(a(l))+(1-y)log(1-a(l)), da(l)/dz(l)=dg(z)/dz=a(1-a)

dJ/dz(l)=(-y/a+ (1-y)/(1-a)) a(1-a)=a-y

dz(l)/Θ(l)= a(l-1)'   a(l-1)转置

dJ/dΘ(l)=(a-y) a(l-1)'  %如此反复推导得到dJ/dΘ(l-1),dJ/dΘ(l-2)...

有一位网友ooon做的剖析也很全面:

https://www.cnblogs.com/ooon/p/5577241.html


2.2 激活函数

有关激活函数问题:sigmoid和tanh,ReLU,Leak ReLU等,早期使用sigmoid比较多,也是课程所推荐的。最新课程,大部分使用了ReLU算法,只有最后一层输出逻辑回归2元预测时采用sigmoid,中间隐层大多使用ReLU算法。


sigmoid和tanh函数图

1. Sigmoid能够把输入的连续实值“压缩”到0和1之间,非线性函数,使用时间很长,但存在缺点:当输入非常大或者非常小的时候,这些神经元的梯度是接近于0的,从图中可以看出梯度的趋势。所以,如果初始值很大的话,梯度接近0,信息会丢失,会导致网络变的很难学习。

2. 采用sigmoid算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大(tanh也是),而采用Relu激活函数,整个过程的计算量节省很多。

3. ReLU=max(0,z),还有在此基础上改进的Leaky ReLU=max(0.01z,z)。


ReLU系列激活函数

经过激活函数ReLU处理的数据效果如下:


ReLU的数据处理效果

ReLU从单侧抑制了数据,从图左可以看出,输入信号时,输出都是0, 的情况下,输出等于输入。并且具有相对宽阔的兴奋边界,避免sigmoid的数值大梯度趋零问题。而且由于其简单性,在随机梯度下降SGD下,计算性能很高。

所以新课程中吴恩达老师推荐默认情况下使用ReLU激活函数,最后输出可以使用别的函数替换,如sigmoid或者tanh。

相比sigmoid/tanh,ReLU 缺点:训练的时候很容易就”die”。也就是说上文中learning rate 很大(上文中λ值),那么很有可能网络神经元会”dead”。 如果设置合适的较小learning rate,问题发生的可能性降低,吴恩达老师特意提出使用较小学习率,ReLU其他变种是为了避免die的问题。大部分情况下使用ReLU就够用了。

3. 小结

相比传统的经典机器学习算法,神经网络是我最为耗费心力学习的重要算法,对于数学已还给体育老师的我,不得不重新捡起高等数学、微积分、线性代数等数学课程。看来数学不好,搞人工智能是不现实的。

记得有人说过:吃不了学习的苦,就要吃生活的苦~ 共勉!

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

推荐阅读更多精彩内容

  • 此文基于周莫烦大神@莫烦的视频,文章以及自己的一些心得。 1.3.1 性能衡量 Evaluation Traini...
    阿阿阿阿毛阅读 1,018评论 0 5
  • 神经网络 原理 《机器学习》周志华 5.1 神经元模型 神经网络中最0基本的成分是神经元(neuron)模型。 M...
    hxiaom阅读 1,027评论 0 0
  • 改进神经网络的学习方法(下) 权重初始化 创建了神经网络后,我们需要进行权重和偏差的初始化。到现在,我们一直是根据...
    nightwish夜愿阅读 1,757评论 0 0
  • “法海你不懂爱,雷峰塔你掉下来”,这是龚老师的又一首神曲。 一直以来,人们都认为法海是封建理教的化身,雷峰塔就是束...
    神龙居士阅读 157评论 0 0
  • 抖音近两年一直都传的很火热,各个社交平台都能看到用户分享的“抖音”小视频,而最近关注的多个互联网公众号也在推...
    最可爱的麻小瓜阅读 456评论 0 0