吴恩达深度学习笔记:神经网络的编程基础2.1-2.3

目录

  • 第一门课:神经网络和深度学习 (Neural Networks and Deep Learning)
    • 第二周:神经网络的编程基础 (Basics of Neural Network programming)
      • 2.1 二分类(Binary Classification)
      • 2.2 逻辑回归(Logistic Regression)

第一门课:神经网络和深度学习 (Neural Networks and Deep Learning)

第二周:神经网络的编程基础 (Basics of Neural Network programming)

2.1 二分类(Binary Classification)

这周我们将学习神经网络的基础知识,其中需要注意的是,当实现一个神经网络的时候,我们需要知道一些非常重要的技术和技巧。例如有一个包含𝑚个样本的训练集,你很可能习惯于用一个 for 循环来遍历训练集中的每个样本,但是当实现一个神经网络的时候,我们通常不直接使用 for 循环来遍历整个训练集,所以在这周的课程中你将学会如何处理训练集。

另外在神经网络的计算中,通常先有一个叫做前向暂停(forward pause)或叫做前向传播(foward propagation)的步骤,接着有一个叫做反向暂停(backward pause) 或叫做反向传播(backward propagation)的步骤。所以这周我也会向你介绍为什么神经网络的训练过程可以分为前向传播和反向传播两个独立的部分。

在课程中我将使用逻辑回归(logistic regression)来传达这些想法,以使大家能够更加容易地理解这些概念。即使你之前了解过逻辑回归,我认为这里还是有些新的、有趣的东西等着你去发现和了解,所以现在开始进入正题。

逻辑回归是一个用于二分类(binary classification)的算法。首先我们从一个问题开始说起,这里有一个二分类问题的例子,假如你有一张图片作为输入,比如这只猫,如果识别这张图片为猫,则输出标签 1 作为结果;如果识别出不是猫,那么输出标签 0 作为结果。现在我们可以用字母𝑦来表示输出的结果标签,如下图所示:

在这里插入图片描述

我们来看看一张图片在计算机中是如何表示的,为了保存一张图片,需要保存三个矩阵,它们分别对应图片中的红、绿、蓝三种颜色通道,如果你的图片大小为 64x64 像素,那么你就有三个规模为 64x64 的矩阵,分别对应图片中红、绿、蓝三种像素的强度值。为了便于表示,这里我画了三个很小的矩阵,注意它们的规模为 5x4 而不是 64x64,如下图所示:

在这里插入图片描述
为了把这些像素值放到一个特征向量中,我们需要把这些像素值提取出来,然后放入一个特征向量𝑥。为了把这些像素值转换为特征向量 𝑥,我们需要像下面这样定义一个特征向量 𝑥 来表示这张图片,我们把所有的像素都取出来,例如 255、231 等等,直到取完所有的红色像素,接着最后是 255、134、…、255、134 等等,直到得到一个特征向量,把图片中所有的红、绿、蓝像素值都列出来。如果图片的大小为 64x64 像素,那么向量 𝑥 的总维度,将是 64 乘以 64 乘以 3,这是三个像素矩阵中像素的总量。在这个例子中结果为 12,288。现在我们用𝑛𝑥 = 12,288,来表示输入特征向量的维度,有时候为了简洁,我会直接用小写的𝑛来表示输入特征向量𝑥的维度。所以在二分类问题中,我们的目标就是习得一个分类器,它以图片的特征向量作为输入,然后预测输出结果𝑦为 1 还是 0,也就是预测图片中是否有猫:

在这里插入图片描述
接下来我们说明一些在余下课程中,需要用到的一些符号。
符号定义 :
𝑥:表示一个𝑛𝑥维数据,为输入数据,维度为(𝑛𝑥, 1);
𝑦:表示输出结果,取值为(0,1);
(𝑥(𝑖), 𝑦(𝑖)):表示第𝑖组数据,可能是训练数据,也可能是测试数据,此处默认为训练数据;
𝑋 = [𝑥(1), 𝑥(2), . . . , 𝑥(𝑚)]:表示所有的训练数据集的输入值,放在一个 𝑛𝑥 × 𝑚的矩阵中,其中𝑚表示样本数目;
𝑌 = [𝑦(1), 𝑦(2), . . . , 𝑦(𝑚)]:对应表示所有训练数据集的输出值,维度为1 × 𝑚。

用一对(𝑥, 𝑦)来表示一个单独的样本,𝑥代表𝑛𝑥维的特征向量,𝑦 表示标签(输出结果)只能为 0 或 1。 而训练集将由𝑚个训练样本组成,其中(𝑥(1), 𝑦(1))表示第一个样本的输入和输出,(𝑥(2), 𝑦(2))表示第二个样本的输入和输出,直到最后一个样本(𝑥(𝑚), 𝑦(𝑚)),然后所有的这些一起表示整个训练集。有时候为了强调这是训练样本的个数,会写作𝑀𝑡𝑟𝑎𝑖𝑛,当涉及到测试集的时候,我们会使用𝑀𝑡𝑒𝑠𝑡来表示测试集的样本数。

最后为了能把训练集表示得更紧凑一点,我们会定义一个矩阵用大写𝑋的表示,它由输入向量𝑥(1)、𝑥(2)等组成,如下图放在矩阵的列中,所以现在我们把𝑥(1)作为第一列放在矩阵中,𝑥(2)作为第二列,𝑥(𝑚)放到第𝑚列,然后我们就得到了训练集矩阵𝑋。所以这个矩阵有𝑚列,𝑚是训练集的样本数量,然后这个矩阵的高度记为𝑛𝑥,注意有时候可能因为其他某些原因,矩阵𝑋会由训练样本按照行堆叠起来而不是列,如下图所示:𝑥(1)的转置直到𝑥(𝑚)的转置,但是在实现神经网络的时候,使用左边的这种形式,会让整个实现的过程变得更加简单:
在这里插入图片描述

现在来简单温习一下:𝑋是一个规模为𝑛𝑥乘以𝑚的矩阵,当你用 Python 实现的时候,你会看到 X.shape,这是一条 Python 命令,用于显示矩阵的规模,即 X.shape 等于(𝑛𝑥, 𝑚),𝑋是一个规模为𝑛𝑥乘以𝑚的矩阵。所以综上所述,这就是如何将训练样本(输入向量𝑋的集合)表示为一个矩阵。

那么输出标签𝑦呢?同样的道理,为了能更加容易地实现一个神经网络,将标签𝑦放在列中将会使得后续计算非常方便,所以我们定义大写的𝑌等于𝑦(1), 𝑦(𝑚), . . . , 𝑦(𝑚),所以在这里是一个规模为 1 乘以𝑚的矩阵,同样地使用 Python 将表示为 Y.shape 等于(1, 𝑚),表示这是一个规模为 1 乘以𝑚的矩阵。

在这里插入图片描述
当你在后面的课程中实现神经网络的时候,你会发现,一个好的符号约定能够将不同训练样本的数据很好地组织起来。而我所说的数据不仅包括 𝑥 或者 𝑦 还包括之后你会看到的其他的量。将不同的训练样本的数据提取出来,然后就像刚刚我们对 𝑥 或者 𝑦 所做的那样,将他们堆叠在矩阵的列中,形成我们之后会在逻辑回归和神经网络上要用到的符号表示。如果有时候你忘了这些符号的意思,比如什么是 𝑚,或者什么是 𝑛,或者忘了其他一些东西,我们也会在课程的网站上放上符号说明,然后你可以快速地查阅每个具体的符号代表什么意思,好了,我们接着到下一个视频,在下个视频中,我们将以逻辑回归作为开始。 备注:附录里也写了符号说明。

2.2 逻辑回归(Logistic Regression)

在这个视频中,我们会重温逻辑回归学习算法,该算法适用于二分类问题,本节将主要介绍逻辑回归的 Hypothesis Function(假设函数)。

对于二元分类问题来讲,给定一个输入特征向量𝑋,它可能对应一张图片,你想识别这张图片识别看它是否是一只猫或者不是一只猫的图片,你想要一个算法能够输出预测,你只能称之为𝑦^ ,也就是你对实际值 𝑦 的估计。更正式地来说,你想让 𝑦^ 表示 𝑦 等于 1 的一种可能性或者是机会,前提条件是给定了输入特征𝑋。换句话来说,如果𝑋是我们在上个视频看到的图片,你想让 𝑦^ 来告诉你这是一只猫的图片的机率有多大。在之前的视频中所说的,𝑋是一个𝑛𝑥维的向量(相当于有𝑛𝑥个特征的特征向量)。我们用𝑤来表示逻辑回归的参数,这也是一个𝑛𝑥维向量(因为𝑤实际上是特征权重,维度与特征向量相同),参数里面还有𝑏,这是一个实数(表示偏差)。所以给出输入𝑥以及参数𝑤和𝑏之后,我们怎样产生输出预测值𝑦^ ,一件你可以尝试却不可行的事是让 𝑦^ = w T x + b w^T x + b wTx+b

在这里插入图片描述

这时候我们得到的是一个关于输入𝑥的线性函数,实际上这是你在做线性回归时所用到的,但是这对于二元分类问题来讲不是一个非常好的算法,因为你想让𝑦^ 表示实际值𝑦等于 1的机率的话,𝑦^ 应该在 0 到 1 之间。这是一个需要解决的问题,因为 w T x + b w^Tx + b wTx+b可能比 1 要大得多,或者甚至为一个负值。对于你想要的在 0 和 1 之间的概率来说它是没有意义的,因此在逻辑回归中,我们的输出应该是𝑦^等于由上面得到的线性函数式子作为自变量的 sigmoid函数中,公式如上图最下面所示,将线性函数转换为非线性函数。

下图是 sigmoid 函数的图像,如果我把水平轴作为𝑧轴,那么关于𝑧的 sigmoid 函数是这样的,它是平滑地从 0 走向 1,让我在这里标记纵轴,这是 0,曲线与纵轴相交的截距是 0.5,这就是关于𝑧的 sigmoid 函数的图像。我们通常都使用𝑧来表示 w T x + b w^Tx + b wTx+b的值。
在这里插入图片描述
关于 sigmoid 函数的公式是这样的,𝜎(𝑧) = 1 1 + e − z \frac{1}{1+e^{−z}} 1+ez1,在这里𝑧是一个实数,这里要说明一些要注意的事情,如果𝑧非常大那么 e − z e^{−z} ez将会接近于 0,关于𝑧的 sigmoid 函数将会近似等于 1 除以 1 加上某个非常接近于 0 的项,因为𝑒 的指数如果是个绝对值很大的负数的话,这项将会接近于 0,所以如果𝑧很大的话那么关于𝑧的 sigmoid 函数会非常接近 1。相反地,如果𝑧非常小或者说是一个绝对值很大的负数,那么关于 e − z e^{−z} ez这项会变成一个很大的数,你可以认为这是 1 除以 1 加上一个非常非常大的数,所以这个就接近于 0。实际上你看到当𝑧变成一个绝对值很大的负数,关于𝑧的 sigmoid 函数就会非常接近于 0,因此当你实现逻辑回归时,你的工作就是去让机器学习参数𝑤以及𝑏这样才使得𝑦^成为对𝑦 = 1这一情况的概率的一个很好的估计。

在继续进行下一步之前,介绍一种符号惯例,可以让参数𝑤和参数𝑏分开。在符号上要注意的一点是当我们对神经网络进行编程时经常会让参数𝑤和参数𝑏分开,在这里参数𝑏对应的是一种偏置。在之前的机器学习课程里,你可能已经见过处理这个问题时的其他符号表示。比如在某些例子里,你定义一个额外的特征称之为 x 0 x_0 x0,并且使它等于 1,那么现在𝑋就是一个𝑛𝑥加 1 维的变量,然后你定义𝑦^ = 𝜎( θ T x θ^Tx θTx)的 sigmoid 函数。在这个备选的符号惯例里,你有一个参数向量 θ 0 , θ 1 , θ 2 , . . . , θ n x θ0, θ1, θ2, . . . , θ_{nx} θ0,θ1,θ2,...,θnx,这样θ0就充当了𝑏,这是一个实数,而剩下的θ1 直到 θ n x θ_{nx} θnx充当了𝑤,结果就是当你实现你的神经网络时,有一个比较简单的方法是保持𝑏和𝑤分开。但是在这节课里我们不会使用任何这类符号惯例,所以不用去担心。 现在你已经知道逻辑回归模型是什么样子了,下一步要做的是训练参数𝑤和参数𝑏,你需要定义一个代价函数,让我们在下节课里对其进行解释。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/439021.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c++ 11 新特性 不同数据类型之间转换函数之reinterpret_cast

一.不同数据类型之间转换函数reinterpret_cast介绍 reinterpret_cast是C中的一种类型转换操作符,用于执行低级别的位模式转换。具体来说,reinterpret_cast可以实现以下功能: 指针和整数之间的转换:这种转换通常用于在指针中存储额…

如何学习、上手点云算法(三):用VsCode、Visual Studio来debug基于PCL、Open3D的代码

写在前面 本文内容 以PCL 1.14.0,Open3D0.14.1为例,对基于PCL、Open3D开发的代码进行源码debug; 如何学习、上手点云算法系列: 如何学习、上手点云算法(一):点云基础 如何学习、上手点云算法(二):点云处理相…

【数据结构】二、线性表:6.顺序表和链表的对比不同(从数据结构三要素讨论:逻辑结构、物理结构(存储结构)、数据运算(基本操作))

文章目录 6.对比:顺序表&链表6.1逻辑结构6.2物理结构(存储结构)6.2.1顺序表6.2.2链表 6.3数据运算(基本操作)6.3.1初始化6.3.2销毁表6.3.3插入、删除6.3.4查找 6.对比:顺序表&链表 6.1逻辑结构 顺…

基于pytest的证券清算系统功能测试工具开发

需求 1.造测试数据:根据测试需要,自动化构造各业务场景的中登清算数据与清算所需起来数据 2.测试清算系统功能: 自动化测试方案 工具设计 工具框架图 工具流程图 实现技术 python, pytest, allure, 多进程,mysql, 前端 效果 测…

Web开发介绍,制作小网站流程和需要的技术【详解】

1.什么是web开发 Web:全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站。 所以Web开发说白了,就是开发网站的,例如网站:淘宝,京东等等 2. 网站的工作流程 1.首先我们需…

【Godot4自学手册】第二十一节掉落金币和收集

这一节我们主要学习敌人死亡后随机掉落金币,主人公可以进行拾取功能。 一、新建金币场景 新建场景,节点选择CharacterBody2D,命名为Coins,将场景保存到Scenes目录下。 1.新建节点 为根节点依次添加CollisionShape2D节点&#…

阿里云服务器使用教程_2024建站教程_10分钟网站搭建流程

使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流…

Dubbo基础入门二

8、Dubbo协议 服务调用 8.1 服务端 启动过程深入分析 我们查看一下服务启动的过程 ProtocolFilterWrapper.export 好我们进入DubboProtocol.export 创建服务 分析我们的Handler 我们接着返回刚才位置 下面的super方法里面会创建服务,ChannelHandlers.wrap会对hand…

2024年3月8日蚂蚁新村今日答案:以下哪一项传统武术项目入选了人类非物质文化遗产代表作名录?太极拳还是咏春拳

蚂蚁新村是一个虚拟社区。在这个虚拟社区中,用户可以参与各种活动,比如生产能量豆、做慈善捐赠等。同时,蚂蚁新村也提供了一些知识问答环节,用户在参与的过程中可以增进知识。这些问答内容往往涉及广泛的主题,如文化、…

idea Gradle 控制台中文乱码

如下图所示,idea 中的 Gradle 控制台中文乱码: 解决方法,如下图所示: 注意:如果你的 idea 使用 crack 等方式破解了,那么你可能需要在文件 crack-2023\jetbra\vmoptions\idea.vmoptions 中进行配置&#xf…

git分布式管理-头歌实验标签

一、创建标签 任务描述 现在你已经成了项目负责人,由你负责发布版本,你需要在发布一个版本之前,给该版本对应的代码打上标签,以便于管理和标识。 本关任务:为最近一次提交打上标签。 相关知识 在开发过程中&#xff0c…

Android14之禁止vbmeta.img签名校验(一百九十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

七彩虹八渐变 外贸建站公司wordpress模板

进出口水果wordpress外贸模板 漂亮水果wordpress外贸模板,做水果进出品生意的外贸公司自建站官网模板。 https://www.jianzhanpress.com/?p3516 玩具wordpress外贸模板 简洁玩具wordpress外贸模板,适合做跨境电商外贸公司使用的wordpres外贸s网站主题…

追寻工作与生活的和谐之道

在现代社会,人们往往被快节奏的工作和生活所困扰,如何在这两者之间找到平衡点,成为许多人关注的焦点。本文将为您介绍一些实用的方法和建议,帮助您实现工作与生活的和谐共处。 一、合理规划时间,提高工作效率 时间是实…

day37 贪心算法part6

738. 单调递增的数字 中等 提示 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 不知道怎么讲思路……以9287举例&#xff0c;…

CorelDRAW2024中文版正式发布!老户升级可享大额折扣!CDR2024下载安装 CorelDRAW2024更新内容有哪些

CorelDRAW 全称“CorelDRAW Graphics Suite“&#xff0c;也就是众所周知的”CDR“&#xff0c;是一款智能高效的平面设计软件&#xff0c;广泛应用于排版印刷、矢量图形编辑及网页设计等领域&#xff0c;30多年来无数优秀的设计师通过CorelDRAW大胆展现真我&#xff0c;交付了…

学习408之数据结构--链表-单链表的增删查改的实现-如何解决顺序表增容后空间浪费问题?

顺序表的问题及思考问题&#xff1a; 中间/头部的插入删除&#xff0c;时间复杂度为O(N)增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间。会有不小的消耗。增容一般是呈2倍的增长&#xff0c;势必会有一定的空间浪费。例如当前容量为100&#xff0c;满了以后增…

#QT(智能家居界面-布局)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a; 水平布局&#xff0c;垂直布局&#xff0c;栅格布局&#xff08;弹簧&#xff09; 界面自动调整 3.记录 注意弹簧不是拖拽拉长&#xff0c;而是使用栅格布局 运行发现窗口放大缩小可以自动调整 如果想要重新布局&#xff0c;需…

ubuntu20.04安装ros并配置相关环境以及驱动AUBO i5机械臂

ubuntu20.04安装ros并配置相关环境以及驱动AUBO i5机械臂 安装ros安装rosdep(小鱼的rosdepc,又快又好用)环境配置下载并编译aubo roslib库环境变量配置aubo gazeboaubo rviz驱动真实机械臂 安装ros 搜索鱼香ros网站https://fishros.com/&#xff0c;根据一键安装ros里提供的指…

某讯滑块动态明文数组构造

声明&#xff1a; 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;若有侵权&#xff0c;请添加&#xff08;wx&#xff1a;wyqlxl99&#xff09;联系删除 …