第二章-神经网络基础(logistic 回归函数、向量化)

2.1 二分分类

  • 计算机保存一张图片,要保存三个独立矩阵,分别对应红、绿、蓝三个颜色通道
    举例:图为一张猫图,像素为 64x64, 就有三个 64x64 的矩阵


    course2-1.jpg
  • 用特征向量 x 来表示图片
    则图片的维度n = nx = 64 * 64 * 3 = 12 288
  • 在二分类问题中,目标是训练出一个分类器(x 作为输入,预测输出的结果标签为 y)


    course2-2.jpg
  • 上图表现的是x是nx维的特征向量
  • 训练集由m个训练样本构成
  • X矩阵式m列 高为nx (训练样本作为列向量堆叠)(约定格式)
    注: 也有(训练样本作为行向量堆叠)的矩阵形式,但在神经网络中一般用约定格式

2.2 logistic 回归模型

course2-3.jpg
  • 线性回归中可用
  • y = w^t * x + b
  • 缺点: y 应该介于0和1之间
  • 可用sigmoid(z)函数,也就是上图中的G(z)
  • 对于参数 w 和 b :
  • b 对应一个拦截器

2.3 logistic 回归损失函数(成本函数)

  • 损失函数L(^y,y): 在单个训练样本中定义的,衡量了在单个训练样本上的表现
  • 成本函数(代价函数) J(w,b):衡量了在==全部训练样本==上的表现(在logistic函数中寻找合适的 w 和 b 让 y-hat 尽可能的小)


    course2-4.jpg

2.4 阶梯下降法

course2-5.jpg
  • 成本函数 J (w,b)是一个凸函数(选择该函数的原因)
    阶梯下降法的做法是: 从初始点开始,朝最陡的下坡方向走一步

2.5 向量化

  • 注:当你想写循环时,可以先检查numpy中是否有类似的内置函数
  • ==向量化速度比循环快300倍==(真是个神奇的东西)
import time

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

tic = time.time()
c = np.dot(a,b)
toc = time.time()

print(c)
print("Vectorized version(向量化):" + str(1000*(toc-tic))+"ms")

c = 0
tic = time.time()
for i in range(1000000):
    c += a[i]*b[i]
toc = time.time()

print(c)
print("For loop(循环):" + str(1000*(toc-tic))+ "ms")
# 输出
249961.060873
Vectorized version(向量化):2.0003318786621094ms
249961.060873
For loop(循环):779.0098190307617ms
  • np.dot(W,X)
    eg: 计算Z = W^T+ b,向量化可以直接计算w^T(表示W的转置)
Z = np.dot(W.T,X)+b

2.6 高度向量化的、非常高效的逻辑回归的梯度下降算法

course2-6.jpg
Z = wTX + b = np. dot(w. T, X)
A = σ(Z)
dZ = A -Y
dw = 1/m ∗ X ∗ dz^T
db = 1/m * np. sum(dZ)
w = w - α * dw
b = b - α * db
  • 我们利用前五个公式完成了前向和后向传播,也实现了对所有训练样本进行预测和求
  • 利用后两个公式,梯度下降更新参数。
  • 我们的目的是不使用for循环,所以我们就通过一次迭代实现一次梯度下降,但如果你希望多次迭代进行梯度下降,那么仍然需要for循环,放在最外层。不过我们还是觉得一次迭代就进行一次梯度下降,避免使用任何循环比较
    舒服一些。

2.7 python中的广播机制( Broadcasting in Python)

import numpy as np
A = np.array([[56.0, 0.0, 4.4, 68.0],
              [1.2, 104.0, 52.0, 8.0],
              [1.8, 135.0, 99.0, 0.9]])
print(A)
[[  56.     0.     4.4   68. ]
 [   1.2  104.    52.     8. ]
 [   1.8  135.    99.     0.9]]
  • axis=0 意思是、在竖直方向上求和
  • axis=1 是在水平方向上求和
cal = A.sum(axis=0)
print(cal)
[  59.   239.   155.4   76.9]
percentage = 100*A/cal.reshape(1,4)
print(percentage)
[[ 94.91525424   0.           2.83140283  88.42652796]
 [  2.03389831  43.51464435  33.46203346  10.40312094]
 [  3.05084746  56.48535565  63.70656371   1.17035111]]
  1. axis 用来指明将要进行的运算是沿着
    哪个轴执行,在 numpy 中, 0 轴是垂直的,也就是列,而 1 轴是水平的,也就是行
  2. A/cal.reshape(1,4)指令则调用了 numpy 中的广播机制
  • 这里使用3X4的矩阵
    A 除以1X4 的矩阵 cal。技术上来讲,其实并不需要再将矩阵 cal reshape(重塑)成1X4 ,因
    为矩阵 cal 本身已经是1X4 了。但是当我们写代码时不确定矩阵维度的时候,通常会对矩阵
    进行重塑来确保得到我们想要的列向量或行向量。
  • 重塑操作 reshape是一个常量时间的操作,
    时间复杂度是 O(1),它的调用代价极低。
  1. numpy 广播机制
  • 如果两个数组的后缘维度的轴长度相符或其中一方的轴长度为 1,则认为它们是广播兼容的。
  • 广播机制与执行的运算种类无关
  • 广播会在缺失维度和轴长度为 1 的维度上进行。
    后缘维度的轴长度: A.shape[-1] 即矩阵维度元组中的最后一个位置的值


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