文章目录

  • 引言
  • 一、二分类问题
  • 二、逻辑回归
  • 三、逻辑回归损失函数
  • 四、梯度下降法
  • 五、Computation graph—计算图
  • 六、逻辑回归梯度下降法
  • 七、多个样本的梯度下降
  • 八、总结

引言

本节课,我们将开始介绍神经网络的基础:逻辑回归(Logistic Regression)。通过对逻辑回归模型结构的分析,为我们后面学习神经网络模型打下基础。

一、二分类问题

我们知道逻辑回归模型一般用来解决二分类(Binary Classification)问题。二分类就是输出y只有{0,1}两个离散值(也有{-1,1}的情况)。我们以一个图像识别问题为例,判断图片中是否有猫存在,0代表noncat,1代表cat。主要是通过这个例子简要介绍神经网络模型中一些标准化的、有效率的处理方法和notations(记号)。


如上图所示,这是一个典型的二分类问题。一般来说,彩色图片包含RGB三个通道。例如该cat图片的尺寸为(64,64,3)。在神经网络模型中,我们首先要将图片输入x(维度是(64,64,3))转化为一维的特征向量(feature vector)。方法是每个通道一行一行取,再连接起来。由于64x64x3=12288,则转化后的输入特征向量维度为(12288,1)。此特征向量x是列向量,维度一般记为nx。

如果训练样本共有m张图片,那么整个训练样本X组成了矩阵,维度是(nx,m)。注意,这里矩阵X的行nx代表了每个样本x(i)特征个数,列m代表了样本个数。这里,Andrew解释了X的维度之所以是(nx,m)而不是(m,nx)的原因是为了之后矩阵运算的方便。算是Andrew给我们的一个小小的经验吧。而所有训练样本的输出Y也组成了一维的行向量,写成矩阵的形式后,它的维度就是(1,m)。

二、逻辑回归



从Sigmoid函数曲线可以看出,当z值很大时,函数值趋向于1;当z值很小时,函数值趋向于0。且当z=0时,函数值为0.5。还有一点值得注意的是,Sigmoid函数的一阶导数可以用其自身表示:

σ′(z)=σ(z)(1−σ(z))
这样,通过Sigmoid函数,就能够将逻辑回归的输出限定在[0,1]之间了。

三、逻辑回归损失函数

逻辑回归中,w和b都是未知参数,需要反复训练优化得到。因此,我们需要定义一个cost function,包含了参数w和b。通过优化cost function,当cost function取值最小时,得到对应的w和b。

四、梯度下降法

我们已经掌握了Cost function的表达式,接下来将使用梯度下降(Gradient Descent)算法来计算出合适的w和b值,从而最小化m个训练样本的Cost function,即J(w,b)。

由于J(w,b)是convex function,梯度下降算法是先随机选择一组参数w和b值,然后每次迭代的过程中分别沿着w和b的梯度(偏导数)的反方向前进一小步,不断修正w和b。每次迭代更新w和b后,都能让J(w,b)更接近全局最小值。梯度下降的过程如下图所示。

五、Computation graph—计算图

整个神经网络的训练过程实际上包含了两个过程:正向传播(Forward Propagation)和反向传播(Back Propagation)。正向传播是从输入到输出,由神经网络计算得到预测输出的过程;反向传播是从输出到输入,对参数w和b计算梯度的过程。
下面,我们用计算图(Computation graph)的形式来理解这两个过程。

举个简单的例子,假如Cost function为J(a,b,c)=3(a+bc),包含a,b,c三个变量。我们用u表示bc,v表示a+u,则J=3v。它的计算图可以写成如下图所示:

计算图中,这种从左到右,从输入到输出的过程就对应着神经网络或者逻辑回归中输入与权重经过运算计算得到Cost function的正向过程。

上面介绍的是计算图的正向传播(Forward Propagation),下面我们来介绍其反向传播(Back Propagation),即计算输出对输入的偏导数。

六、逻辑回归梯度下降法

现在,我们将对逻辑回归进行梯度计算。对单个样本而言,逻辑回归Loss function表达式如下:

首先,该逻辑回归的正向传播过程非常简单。根据上述公式,例如输入样本x有两个特征(x1,x2),相应的权重w维度也是2,即(w1,w2)。则z=w1x1+w2x2+b,最后的Loss function如下所示:


七、多个样本的梯度下降

上一部分讲的是对单个样本求偏导和梯度下降。如果有m个样本,其Cost function表达式如下:

Cost function关于w和b的偏导数可以写成和平均的形式:


这样,每次迭代中w和b的梯度有m个训练样本计算平均值得到。其算法流程图如下所示:

J=0; dw1=0; dw2=0; db=0;
for i = 1 to mz(i) = wx(i)+b;a(i) = sigmoid(z(i));J += -[y(i)log(a(i))+(1-y(i))log(1-a(i));dz(i) = a(i)-y(i);dw1 += x1(i)dz(i);dw2 += x2(i)dz(i);db += dz(i);
J /= m;
dw1 /= m;
dw2 /= m;
db /= m;

经过每次迭代后,根据梯度下降算法,w和b都进行更新:

这样经过n次迭代后,整个梯度下降算法就完成了。

值得一提的是,在上述的梯度下降算法中,我们是利用for循环对每个样本进行dw1,dw2和db的累加计算最后再求平均数的。
在深度学习中,样本数量m通常很大,使用for循环会让神经网络程序运行得很慢。所以,我们应该尽量避免使用for循环操作,而使用矩阵运算,能够大大提高程序运行速度。

八、总结

本节课的内容比较简单,主要介绍了神经网络的基础——逻辑回归。首先,我们介绍了二分类问题,以图片为例,将多维输入x转化为feature vector,输出y只有{0,1}两个离散值。接着,我们介绍了逻辑回归及其对应的Cost function形式。然后,我们介绍了梯度下降算法,并使用计算图的方式来讲述神经网络的正向传播和反向传播两个过程。最后,我们在逻辑回归中使用梯度下降算法,总结出最优化参数w和b的算法流程。

转载自该处

《神经网络与深度学习》课程笔记(2)-- 神经网络基础之逻辑回归相关推荐

  1. 吴恩达深度学习课程笔记(初步认识神经网络)

    吴恩达深度学习课程笔记1 课程主要内容 1.神经网络与深度学习介绍 2.Improving Deep Neural Networks:超参数调整,正则化,优化方法 3.结构化机器学习工程:比如如何分割 ...

  2. 吴恩达深度学习课程笔记(四):卷积神经网络2 实例探究

    吴恩达深度学习课程笔记(四):卷积神经网络2 实例探究 吴恩达深度学习课程笔记(四):卷积神经网络2 实例探究 2.1 为什么要进行实例探究 2.2 经典网络 LeNet-5 AlexNet VGG- ...

  3. 吴恩达-神经网络和深度学习课程-学习心得(一)

    前言: 陆陆续续学完了吴恩达老师在网易云课堂上开设的深度学习工程师微专业的部分内容(01.神经网络与深度学习,04.卷积神经网络,02.改善深层神经网络),在进一步应用实践之前,对之前的学习的内容做个 ...

  4. Deeplearning.ai深度学习课程笔记-在线版

    注意:请点击阅读原文 课程概述 课程视频离线版本可以到github:https://github.com/fengdu78/deeplearning_ai_books 查找下载. 课程地址:https ...

  5. 吴恩达老师的机器学习和深度学习课程笔记打印版

    注意:下载笔记.视频.代码:请点击"阅读原文" 我和同学将吴恩达老师机器学习和深度学习课程笔记做成了打印版,放在github上,下载后可以打印. 公布了深度学习笔记的word和ma ...

  6. 【深度学习】李宏毅2021/2022春深度学习课程笔记 - Deep Learning Task Tips

    文章目录 一.深度学习步骤回顾 二.常规指导 三.训练过程中Loss很大 3.1 原因1:模型过于简单 3.2 原因2:优化得不好 3.3 原因1 or 原因2 ? 四.训练过程Loss小.测试过程L ...

  7. deeplearing.ai 深度学习课程笔记

    deeplearing.ai 深度学习课程笔记 一.神经网络与机器学习 直观理解神经网络.随着神经网络层的加深,所提取的特征(函数)不断组合,最终得到更宏观.更复杂的所需要的特征.简单的例子比如房屋价 ...

  8. 【深度学习】李宏毅2021/2022春深度学习课程笔记 - Convolutional Neural NetWork(CNN)

    文章目录 一.图片分类问题 二.观察图片分类问题的特性 2.1 观察1 2.2 简化1:卷积 2.3 观察2 2.4 简化2:共享参数 - 卷积核 2.5 观察3 2.6 简化3:池化 2.6.1 M ...

  9. 【人工智能】AI技术人才成长路线图;深度学习课程笔记

    人工智能浪潮来袭,开发者应该怎么办?不久前,在"AI生态赋能2018论坛"上,CSDN副总裁孟岩重磅发布了AI技术职业升级指南--<AI技术人才成长路线图>(V1.0) ...

  10. 01.神经网络和深度学习 W3.浅层神经网络

    文章目录 1. 神经网络概览 2. 神经网络的表示 3. 神经网络的输出 4. 多样本向量化 5. 激活函数 6. 为什么需要 非线性激活函数 7. 激活函数的导数 8. 随机初始化 作业 参考: 吴 ...

最新文章

  1. 不看不知道 Vista回收站暗藏的大秘密
  2. cygwin用命令安装软件_软件安装、命令行、Github
  3. CNN如何识别一幅图像中的物体
  4. 深入浅出JProfiler
  5. 编译调试 .NET Core 5.0 Preview 并分析 Span 的实现原理
  6. 一个前端岗位电话面试所带来的问题的思考
  7. 移植linux内核-映像文件,移植Linux内核-映像文件
  8. 如何将本地项目上传到gitee
  9. iOS 音频视频图像合成那点事
  10. 华为招聘公关总监:接触近10位路透资深记者 年薪高达20万美元
  11. maven异常001---报错The folder is already a source folder.的解决办法
  12. 昂达v891w可以用u盘linux,想用啥用啥!昂达V891w双系统版平板评测
  13. js实现分页并请求ajax,js实现ajax分页完整实例
  14. android视图编辑器,任何未出现在android studio编辑器中的视图
  15. 矩阵转置---c语言实现
  16. xp系统打印机服务器报错,win10系统连接xp系统共享打印机报错0x000004的具体方法...
  17. 一步解决桌面文件需要管理员权限才能删除问题
  18. 领导说我对任务的理解是错的
  19. Data-driven methods for solving algebra word problems论文阅读
  20. c语言跳马思路,跳马问题 - 日拱一卒的个人空间 - OSCHINA - 中文开源技术交流社区...

热门文章

  1. Delphi XE2有什么新功能
  2. Winform中使用进度条的一个例子
  3. 802.11相关术语及其设计(二)
  4. Linux window查询网络端口
  5. Java之导入Excel 后端篇
  6. opencv _rect
  7. java.lang.instrument 中的premain 实现类的个性化加载(附源代码)
  8. 设计模式那点事读书笔记(2)----抽象工厂模式
  9. poj 3295 Tautology (构造)
  10. 分享一个导出数据到 Excel 的类库