Andrew Ng深度学习课程笔记阅读记录(1):神经网络和深度学习

  1. 深度学习要想获得较好的性能体现,有两个条件:一是要训练一个足够大的神经网络以发挥数据量巨大的特点,二是需要很多的数据。小数据规模的训练集上,性能效果取决于特征工程的能力。

2.损失函数是在单个训练样本上定义的,衡量的是算法在单个训练样本中表现如何;为了衡量算法在全部训练样本上表现如何,需要定义的是代价函数,代价函数是对m个样本的损失函数求和再除以m

3.计算图:正向可以方便的计算代价函数J,反向可以方便的求导。

4.逻辑回归的推导:


前向

反向求导

m个样本的梯度下降:带有求和的全局代价函数,实际上是1到m项各个损失的平均。所以它表明全局代价函数对w1的微分,对w1的微分也同样是各项损失对w1微分的平均。



在这个过程中应该要写两个for循环,外层for循环遍历所有的样本,内层for循环遍历所有的特征。使用向量化技术可以摆脱这些for循环。

5.向量化编程与非向量化编程时间对比:

import numpy as np
import time

a = np.random.rand(1000000)
b = np.random.rand(1000000)
tic_vec = time.time()

c = np.dot(a,b)
toc_vec = time.time()
print(c)
print("向量化耗费时间:"+str(1000*(toc_vec-tic_vec))+"ms")

c = 0
tic = time.time()
for i in range(1000000):
    c += a[i]*b[i]
print(c)
toc=time.time()
print("非向量化耗费时间:"+str(1000*(toc-tic))+"ms")

6.上一个m个样本梯度下降的算法可以这样写:


7.numpy广播机制
如果两个数组的后缘维度的轴长度相等或其中一方的轴长度为1,则认为它们是广播兼容的。广播会在缺失维度和轴长度为1的维度上进行。
后缘维度,即A.shape[-1],矩阵维度元组中的最后一个位置的值。


8.我们计算神经网络的层数时,只算隐藏层和输出层,不算输入层。

9.关于隐藏层的权重维度W,我们设置为隐藏层的节点数/单元数输入特征数量,关于偏置向量b,维度是隐藏层的节点数要分类的数量。
检查维度:

image.png

向量化后:
b向量化后的维度不变,但是python的广播机制会把它第二维变为m。
image.png

10.激活函数及其导数 https://blog.csdn.net/u011684265/article/details/78039280
tanh函数在任何场合都优于sigmoid函数,但是tanh的值域位于-1和+1之间,所以二分类时,想让输出的y(预测值)在0,1之间,选取sigmoid函数。它们两个都会出现梯度消失和梯度爆炸现象。
Relu:(修正线性单元(Rectified linear unit)
经验选择:
二分类问题,输出层选sigmoid,其余选Relu
Tanh:优秀,几乎可以用于所有场合
Relu: 如果不确定用哪个激活函数,就用Relu或Leaky Relu

11.为什么要用非线性激活函数?
事实证明如果你在隐藏层用线性激活函数,在输出层用 sigmoid 函数,那么这个模型的复杂度和没有任何隐藏层的标准 Logistic 回归是一样的。只有一个时候可以用线性激活函数,那就是机器学习二等回归问题

12.神经网络中的随机初始化
对于逻辑回归来说把权重初始化为0是可以的,但是对于神经网络,如果把权重或者参数都初始化为0,那么梯度下降就不会起作用了,这会导致隐藏单元计算同样的函数,即导致隐藏单元对称。
因此初始化W的时候用np.random.rand(2,2)再乘以一个很小的数,生成一个比较小的高斯分布的随机数。b的话可以初始为0。如果W很大,且选取的激活函数为tanh/sigmoid函数,会造成停留在tanh/sigoid函数的平坦的地方,梯度很小,学习很慢。

13.Coding中的小知识
在神经网络中,不要使用shape为(n,)这种秩为1的数组,用np.reshape让它变成(n,1)的向量,当不确定你设置的这个向量的维度是,用一下断言,如:assert(a.shpe ==(5,1))

#正则化
import numpy as np
x = np.array([
    [0, 3, 4],
    [1, 6, 4]])
x_norm = np.linalg.norm(x, axis=1, keepdims=True)
# Divide x by its norm.
x = x / x_norm
print(x)

#L1范数
loss = np.sum(np.abs(y - yhat))

#L2范数
loss = np.dot((y - yhat),(y - yhat).T)

14.向量化深层网络中的前向传播


image.png

向量化就是把所有训练集的数据水平堆叠起来。右边的部分,在经过这些隐藏层进行前向传播时是要使用for循环的,这个地方的for循环是不可省略的。

15.我们可以把神经网络的前几层视为能学习一些低层次的简单特征,到后几层,就能把简单的特征结合起来去探测更复杂的东西。

16.参数与超参数
例如learning rate,iterations(梯度下降法循环的次数), L(隐藏层的数目),隐藏层单元的数目,激活函数的选择,都控制了最后的参数W和b,它们就是超参数。

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

推荐阅读更多精彩内容