文章目录

  • 神经网络编程基础
    • 2.1 二分分类
    • 2.2 logistic 回归(logistic Regression)
    • 2.3 logistic 回归损失函数
      • 损失函数 (Loss (Error)Funtion)
      • 成本函数 (Cost Function)
    • 2.4 梯度下降法
    • 2.5 使用计算图求导数
    • 2.6 logistic 回归中的梯度下降法
      • 单个样本的logistic回归梯度下降
      • m个样本的logistic回归梯度下降
    • 2.7 向量化
      • 利用向量化代替其中一个 for
      • 利用向量化将 m 个训练样本一步计算
      • 进一步利用向量化
    • 2.8 损失函数的附加解释

神经网络编程基础

2.1 二分分类

输入一张猫图,网络可以给出判断,是猫(1),不是猫(0)。
E.g. 输入的一张 6464 的RGB三通道的图,即大小为 6464*3 的 X 向量
输出 y = 0 or 1


2.2 logistic 回归(logistic Regression)

如果我们直接利用线性回归 y = wx + b 得到一个估计值 y ,这并不好。
因为我们想的得到的是一个概率,概率取值范围为 0~1,于是利用了sigmoid函数。
y = sigmoid(wx + b)

在网络模型的编程过程中,我们通常将 w 和 b 分开

2.3 logistic 回归损失函数

为了训练模型中的 w 和 b ,需要设置一个成本函数 J(w, b) 使得 J 的函数值尽可能小

损失函数 (Loss (Error)Funtion)

损失函数衡量了在单个样本上的表现

常用的损失函数如下

由于会多次出现斜率为 0 的地方,不利于梯度下降的进行,所以需要寻找一种可以替代它又方便梯度下降的函数


那你想问了,为什么这个函数就可以作为损失函数呢?
原因如下,

成本函数 (Cost Function)

成本函数衡量了在全体训练样本上的表现

2.4 梯度下降法

得到的成本函数是一个凸函数可以求出全局最优解

如上图,通过梯度下降的方法,沿着梯度最大的地方(以最快的速度)达到或者接近全局最优解。

通过以下过程的重复迭代,w 将逐渐向中间靠拢

对 w 和 对 b 同理计算

2.5 使用计算图求导数

在python编程过程中,常用如下方式表示 J 或 L 的导数

正、反向传播过程如是

如上,一个流程图,从左到右的计算是计算成本函数 J,可能需要优化函数
从右到左是求导计算

2.6 logistic 回归中的梯度下降法


a 是预测输出值
y 是样本的基本真值标签值

单个样本的logistic回归梯度下降

单个样本实例的一个更新步骤

m个样本的logistic回归梯度下降

只有两个特征(即x1,x2)梯度下降的迭代公式如下

当输入的特征值变多之后,为了方便计算,需要使用 for 循环,而有一种巧妙的方法,可以利用向量化的方式将 for 循环隐式的表达,再优美一点便可以通过向量化后利用矩阵乘法简化计算,这些将在后面讲解。

2.7 向量化

向量化是代码中消除显式 for 循环的一种方式
经实验验证,向量化要比 for 快 100 倍以上。

利用向量化代替其中一个 for


for 只能对各个元素逐个计算,而利用 python 中的 numpy 中的函数可以将输入的特征 x 向量化,利用矩阵运算简化计算,消除显式的 for 。下图左边是 for 的运算过程,右边是 numpy 提供的一些函数。

下图是梯度算法 for 循环实现的 python 语言

利用 numpy 中所带的函数可以直接对所有 X(i)进行运算的特性,将 dw 计算的部分利用向量化代替,结果如下

利用向量化将 m 个训练样本一步计算

进一步利用向量化

下图语句分别是

  1. 对矩阵进行列求和, 若 axis = 1 则为行求和
  2. 利用原矩阵乘 100 后再分别与其列和做比值(相当于求百分比的操作)
    reshape可以帮助我们得到正确大小的矩阵,复杂度为O(1),应该常用。

    上面的矩阵除法是怎么实现的呢?
    原来 python 对于常数或者小矩阵,会将其自动展开为可计算的大小

    一般对于加减乘除,python 都会将其展开,然后逐个元素计算。

2.8 损失函数的附加解释

由前两种特殊情况引出损失函数的一般形式

成本函数利用最大似然估计求解

(2)神经网络编程基础相关推荐

  1. DeepLearning.AI笔记:二、神经网络编程基础

    文章目录 神经网络编程基础 2.1 二分类(Binary Classification) 2.2逻辑回归(Logistic Regression) 2.3逻辑回归的代价函数(Cost Function ...

  2. 达叔系列——神经网络编程基础

    以下内容为听了达叔课程的笔记与疑惑之处,暂且都记下.如有不妥之处,尽情指出. (1)二分类问题 目标:习得一个分类器,它以图片的特征向量作为输入,然后预测出结果 y 为 1 还是 0 .比如,我们需要 ...

  3. python 神经网络编程 视频_python基础教程之达叔系列——神经网络编程基础|python基础教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ (1)二分类问题 目标:习得一个分类器,它以图片的特征向量作为输入,然后预测出结果 y 为 1 还是 0 ...

  4. 机器学习入门——Python神经网络编程②

    python神经网络编程②-基于MNIST数据集 本人通过异步图书<python神经网络编程>这部书来学习,所以此博客内容大概为这本书的概括. 这时Python神经网络编程的第二讲,第一讲 ...

  5. 深度学习笔记第一门课第二周:神经网络的编程基础(上)

    本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...

  6. 神经网络的编程基础(转自吴恩达)

    第二周:神经网络的编程基础(Basics of Neural Network programming) 文章目录 第二周:神经网络的编程基础(Basics of Neural Network prog ...

  7. 第一节课-第二周:神经网络的编程基础(Basics of Neural Network programming)

    二.神经网络的编程基础(Basics of Neural Network programming) 2.1 二分类(Binary Classification) 2.2 逻辑回归(Logistic R ...

  8. 《吴恩达深度学习》学习笔记002_神经网络的编程基础(Basics of Neural Network programming)

    http://www.ai-start.com/dl2017/html/lesson1-week2.html 神经网络的编程基础(Basics of Neural Network programmin ...

  9. 深度学习入门笔记(五):神经网络的编程基础

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

最新文章

  1. 取存储过程output的取
  2. day3 python 函数
  3. Shell中的分支语句
  4. OpenCV HDF和建立群组Group
  5. 什么时候考虑使用神经网络
  6. Task.Factory.StartNewTResult 和 Task.RunTResult 到底有什么区别?
  7. 莫烦Matplotlib可视化第五章动画代码学习
  8. vs未能找到程序集platform.winmd_PP体育直播大连人VS恒大:新老8冠王首尾对决竟有十大看点...
  9. 诗与远方:无题(九)
  10. 微软 Edge 浏览器加入对 ARM64 的原生支持
  11. 描述C,C++编译和链接过程
  12. android httpget 参数,如何在Android中向HTTP GET请求添加参数?
  13. Java项目——个人博客系统
  14. Java9 基于异步响应式流的发布-订阅框架
  15. war包还原成项目_将War包还原成java web项目
  16. Eclipse中文版汉化教程(详细图解)
  17. linux记账软件下载,速手记账app安卓版下载-速手记账软件官方版v1.1.7-Linux公社
  18. 帝国cms !--list.var1--,!--list.var2--的终极用法
  19. quilt 工具增加 patch 方法
  20. 【团队管理系列】团队管理方面的量化数据

热门文章

  1. jeecg富文本编辑器增加字体(仿宋)
  2. 移动端最强适配(rem适配之px2rem) 移动端结合Vuex实现简单loading加载效果
  3. Faiss教程:索引(2)
  4. FindAllAnagramsinaString
  5. (剑指Offer)面试题61:按之字形顺序打印二叉树
  6. 基于C++与VS2012的HDF5文件处理(二)
  7. 2014-02-26_javascript_event
  8. poco vs Boost
  9. r语言 bsda包_使用R语言creditmodel包进行Vintage分析或留存率分析
  10. Python表白代码:“ 星光月夜烟花 皆归你,我也归你”