前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >吴恩达-神经网络和深度学习(第二周神经网络基础)

吴恩达-神经网络和深度学习(第二周神经网络基础)

作者头像
双愚
发布2018-05-28 14:46:05
7060
发布2018-05-28 14:46:05
举报

学习如何用神经网络的思维模式提出机器学习问题、如何使用向量化加速你的模型。

  • 先介绍一些名词
    • training set (训练集)
    • feature vector(特征向量)
    • classifier(分类器)
    • calculus(微积分)
    • 循环(loop)
    • 数据集(datasets)
    • vectorization (向量化)
    • matrix(矩阵)
    • vector(向量)
  • 本周用到的一些符号【Notation】
    • (x,y)表示一个单独的样本
    • x是xn维的特征向量
    • 标签y值为0/1
    • 训练集由m个训练样本构成
    • (x^(1), y^(1))表示样本一输入和输出,
    • {x^(1), y^(1),…..x^(n), y^(n).}整个训练集
    • 测试集的 样本数。训练集的样本数
    • 矩阵也可表示训练集输入x,输出标签y
    • 注意:训练样本作为行向量堆叠
    • 输出y是1xm矩阵

如下图:

Notation
Notation

二分分类【Binary Classification】

  • 神经网络的计算过程中,通常有一个正向过程【forward pass】(或者正向传播步骤),接着有一个反向过程【backward pass】(或者反向传播步骤)
  • logistic回归是一个用于二分分类的算法
  • 计算机保存图片,要保存三个独立矩阵(Red红 blue绿 Green蓝) 如果有64X64的一张图片,则输入向量的维度n=64X64X3=12288
  • 在二分分类问题中,目标是训练出一个分类器,他以图片的特征向量x作为输入,,预测输出的结果y(只有两个值)

logistic回归

这是一个学习算法,用在监督学习中, 如下图:

logistic
logistic

logistic回归损失函数

损失函数【error function】在单个训练样本中定义的,他衡量了在单个训练样本上的表现 成本函数【cost function 】在全体训练集样本下的表现–>对损失函数求和 对以上函数要找到合适的参数w和b 成本函数用于衡量参数w和b的效果

如下图:

mark
mark
mark
mark

梯度下降法【Gradient Descent】

  • 训练或学习训练集上的参数w和b
梯度下降法
梯度下降法
求最小值
求最小值

导数

等于= be equal to

  • pluse
  • minus X times / divide

计算图

可以说,一个神经网络的计算都是按照前向或者反向传播过程来实现的, 首先计算出神经网络的输出 首先计算出神经网络的输出,紧接着一个反向传播操作,后者我们用来计算出对应的梯度或者导数,流程图解释了为什么这样实现 流程图,是用蓝色箭头画出来的的,从左到右的计算

流程图
流程图

计算图的导数计算

从右到左计算导数

mark
mark

logistic回归中的梯度下降法(用偏导数实现)

导数流程图来计算梯度用偏导数有点大材小用,但对理解比较好

mark
mark

m个样本的梯度下降

运用到整个样本集中

for循环
for循环

向量化

循环很低效率,用向量化来加速运算(np.function) z=np.dot(w, x) + b

mark
mark

可能有人说:可扩展深度学习实现是在GPU(图像处理单元)上做的,而我们做的再jupyter notebook上(CPU) 但GPU和CPU都有并行化的指令,SIMD单指令流多数据流,这点对GPU和CPU上面是成立的,只是GPU更擅长SIMD运算

  • for循环能不用就不用,如果可以使用内置函数或者其他方法计算循环,会比for循环更快
mark
mark
mark
mark

进一步向量化logistic回归

mark
mark

向量化logistic回归的梯度输出

mark
mark

这就得到高度向量化的,高效的logistic回归梯度下降法

python中的广播(使python和Numpy部分代码更高效)

广播(broadcasting)对列向量,行向量都有效 例子:

mark
mark
mark
mark

实现神经网络算法时主要用到的广播形式

mark
mark

关于python/numpy向量的说明

千万不要用秩为1的数组 随意插入assert()声明,要仔细检查矩阵和数组的维度 不要害怕调用reshape,来确保你的矩阵和向量

mark
mark

可以排除,简化甚至消灭代码中各种奇怪的bug

学习链接 4. Logistic代码实战

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二分分类【Binary Classification】
  • logistic回归
  • logistic回归损失函数
  • 梯度下降法【Gradient Descent】
  • 导数
  • 计算图
  • 计算图的导数计算
  • logistic回归中的梯度下降法(用偏导数实现)
  • m个样本的梯度下降
  • 向量化
  • 进一步向量化logistic回归
  • 向量化logistic回归的梯度输出
  • python中的广播(使python和Numpy部分代码更高效)
  • 关于python/numpy向量的说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档