吴恩达教你入门神经网络

人工智能目前很火。
人工智能主要是机器学习。
机器学习主要是深度学习。
深度学习必然要接触人工神经网络。

人工神经网络是什么鬼?请看下图。


what the fxxk!
看3秒看不懂,本次学习结束。之后再碰到,就会说神经网络不是正常人类能学会的。

wait!
饭要一口一口的吃
神经网络要一点一点的学。先了解神经网络算法的基本思路,再用最简单的模型走一遍过程。才有可能学会。

机器学习通用思路:

1、算法原理
2、把问题转化为数学模型
3、构建模型
4、训练参数
(图片来源:吴恩达机器学习课程,素材来源,第61课-81课)

1、神经网络原理

从计算机图片识别说起。计算机看到一个图片实际上看到的是一堆像素点,每个像素点是一个数据矩阵或表示像素强度值的网络。

所以一个汽车的图片在计算机眼里就是一堆数据。通过每个像素的特征判断这个图片是否是汽车。一个50*50像素大小的图片,就有2500个变量,乘上参数就有300万个特征,线性算法效率不高。

怎么解决图片识别问题?
前人想到模拟大脑的运作方式。

大脑是什么运作方式?
一个学习算法假设:假如把大脑用来负责看的区域去掉,通过训练,大脑会把听觉区域用来“看”。
同样道理,也可以通过手的感觉来“看”。这个区域可以同时处理视觉、听觉、触觉。
这个实验叫神经重连实验。



盲人用舌头看的例子,用声音定位的例子。


大脑是通过神经元来运作,神经元的运作方式?

神经元构成:一是神经元的细胞体,二是神经元之间有很多通道。
运作原理:信息输入一个神经元,进行一定的处理,再通过轴突输出给下一个神经元。神经元之间通过微电流沟通。


扩展,ted关于神经科学的演讲
https://open.163.com/movie/2013/3/J/6/M92INA100_M92IOJ1J6.html:视频中间部分有三位的神经元演示
http://open.163.com/special/neurosciences/

2、数学模型

了解了大脑的学习模式,神经网络算法就是参照人脑的神经元构造的人工神经网络。
先构建一个神经元。输出h函数,h函数在神经网络里叫激活函数(activation function),指代非线性函数。
增加一个x0叫偏置单元。
参数theta在神经网络里也叫权重(weight)



一组神经单元组成一个神经网络。
最简单的三层神经网络。第一层输入层,第二层隐藏层,第三层输出层。



再看数学上每个神经元怎么计算
先定义a,上标是在第几层,下标是这一层的第几个神经元。
第二层第一个a的计算:上一层的4个输入变量。


向前传播:通过2层神经元的传递算出h。
一般倒数第二层是逻辑回顾模型。

其他神经网络结构,可以不是每层神经元数相同。


3、模型构建

在给出神经网络数学定义后,用神经网络模拟最简单的xor/xnor逻辑判断。
xnor:异非,两个变量相同是0,不同是1


先构造出and ,or ,not x
构造的基本思路参数越大,值越趋近于0,想取值为0,就放一个很大的负权重。
再把这三个简单的函数组合在一起,构造一个神经网络,算出xnor.

将三个简单的函数组合成一个神经网络。红色的是and,蓝色的是not x,
绿色的是or,最终的效果就是输出xnor。

如果想得到更多的分类,就增加神经网络输出结果,最后一层是4个逻辑回归分类器。

小结:通过以上例子,给出神经网络的直观理解,神经网络里面都是一个个简单的函数,通过一层计算输出一系列特征,再通过下一层计算出更复杂的特征,逻辑分类器是最后一层,得出分类。

4、实际训练步骤

这里和视频课程有点不一样。我们先说结论:如何训练一个神经网络?吴恩达总结了7个步骤。
之后再结合每个步骤展开说明具体算法。
0、选择一个神经网络结构
1、随机参数初始化
2、运用向前传播算法计算每个x的对应的输出值y。
3、运用代码计算出代价函数J(theta)
4、运用反向传播算法计算代价函数J(theta)关于theta的偏导数。
5、运用梯度检验把反向传播算法得到的偏导数与数据估计值进行比较。并注意在程序中停用梯度检验算法(因为会降低程序效率)。
6、运用优化算法(比如梯度下降)和反向传播算法结合,求出使代价函数J(theta)值最小的参数theta。

0、选择神经网络结构

选择神经网络结构主要考虑3方面:
输入单元的数量:几维向量
输出单元的数量:注意输出值用向量表示
隐藏层的结构:默认一层隐藏层。隐藏层的单元数量是第一层的2到3倍。



1、随机参数初始化

第一次训练时用什么参数?
所有参数都初始化为0的话,各单元值都相等,无法区分。


使用随机初始化的思想,把参数定义为接近0的随机数。


2、向前传播算法

从输入项,一层一层算出输出项。


3、代价函数

借鉴逻辑回顾算法的代价函数



4、反向传播算法

让代价函数最小化的方法:反向传播算法
我们的目标是计算如下代价函数的最小值。
为了求代价函数,我们需要计算J(theta)和J(theta)的偏导数。有了J(theta)和J(theta)的偏导数,我们就可以用梯度下降算法求出代价函数的最小值。
J(theta)直接带入公式。
所以J(theta)的偏导数怎么求是关键。这里就用到了反向传播算法

反向传播算法的直观认识:求出每一层每一个的节点的误差delta,从最后一层求误差,从最后一层向前一层求误差,误差反方向传播。最后可以通过数学公式,用误差项求出J(theta)的偏导数。


通过反向传播求出J(theta)的偏导数


反向传播算法具体步骤
最后一步给出了J(theta)的偏导数的公式,视频中没有给出数学证明。

反向传播算法的固定步骤:吴恩达用了一节视频,用最简单的4层2节点(不算偏置项)再次演示了反向算法怎么运算。

使用高级算法小技巧:把参数从矩阵展开为向量(相当于三体里的降维打击),一些高级算法(比如fminunc的initialtheta)的输入值为向量,而神经网络的参数为矩阵。要把参数带入高级算法的话要把参数的矩阵展开为向量,在使用高级算法后再把向量返回为矩阵。

具体的语法:展开是theat(:),返回矩阵是reshape


5、梯度检验

反向传播算法经常会产生一些微妙的bug,所以需要梯度检验,检验反向传播算法是否正确。
数值估计方法:
求一点的斜率可以用临近2点的值逼近求出。


octave的代码实现,验证gradapprox是否和反向算法算出的dvec近似相等。


使用梯度检验的注意事项:注意在检验之后关闭梯度检验。因为梯度检验计算很慢,影响算法效率。


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

推荐阅读更多精彩内容

  • 笔记参考:https://zhuanlan.zhihu.com/p/22038289?refer=intellig...
    spectre_hola阅读 4,076评论 0 26
  • 字帖2张 语文:古诗已背1首 预习第5课无课后作业(1-4课在学校已学) 听写了第一单元读读写写 英语:预习第一单...
    张博淞阅读 145评论 0 0
  • 第一章 孤风 七月七。 夜。 戌时。 孤风蹲在湖边;湖水倒映出落魄的孤风。 孤风正在用水洗血,...
    梅札记阅读 505评论 0 0
  • 话说如何控制自己的情绪?前两天刚听了逻辑思维中的罗胖,听他介绍控制情绪的方法,也没怎么在意?不过恰好昨天学生有矛盾...
    娴静雅之阅读 212评论 0 3