神经网络基础篇:详解二分类(Binary Classification)
二分类
- 注:当实现一个神经网络的时候,通常不直接使用for循环来遍历整个训练集(编程tips)
举例逻辑回归
逻辑回归是一个用于二分类(binary classification)的算法。首先从一个问题开始说起,这里有一个二分类问题的例子,假如有一张图片作为输入,比如这只猫,如果识别这张图片为猫,则输出标签1作为结果;如果识别出不是猫,那么输出标签0作为结果。现在可以用字母\(y\)来表示输出的结果标签,如下图所示:
来看看一张图片在计算机中是如何表示的,为了保存一张图片,需要保存三个矩阵,它们分别对应图片中的红、绿、蓝三种颜色通道,如果的图片大小为64x64像素,那么就有三个规模为64x64的矩阵,分别对应图片中红、绿、蓝三种像素的强度值。为了便于表示,这里我画了三个很小的矩阵,注意它们的规模为5x4 而不是64x64,如下图所示:
为了把这些像素值放到一个特征向量中,需要把这些像素值提取出来,然后放入一个特征向量\(x\)。为了把这些像素值转换为特征向量\(x\),需要像下面这样定义一个特征向量\(x\)来表示这张图片,把所有的像素都取出来,例如255、231等等,直到取完所有的红色像素,接着最后是255、134、…、255、134等等,直到得到一个特征向量,把图片中所有的红、绿、蓝像素值都列出来。如果图片的大小为64x64像素,那么向量\(x\)的总维度,将是64乘以64乘以3,这是三个像素矩阵中像素的总量。在这个例子中结果为12,288。现在用\(n_x = 12,288\),来表示输入特征向量的维度,有时候为了简洁,我会直接用小写的\(n\)来表示输入特征向量\(x\)的维度。所以在二分类问题中,的目标就是习得一个分类器,它以图片的特征向量作为输入,然后预测输出结果\(y\)为1还是0,也就是预测图片中是否有猫:
接下来说明一些需要用到的一些符号:
\(x\):表示一个\(n_x\)维数据,为输入数据,维度为\((n_x,1)\);
\(y\):表示输出结果,取值为\((0,1)\);
\((x^{(i)},y^{(i)})\):表示第\(i\)组数据,可能是训练数据,也可能是测试数据,此处默认为训练数据;
\(X=[x^{(1)},x^{(2)},...,x^{(m)}]\):表示所有的训练数据集的输入值,放在一个 \(n_x×m\)的矩阵中,其中\(m\)表示样本数目;
\(Y=[y^{(1)},y^{(2)},...,y^{(m)}]\):对应表示所有训练数据集的输出值,维度为\(1×m\)。
用一对\((x,y)\)来表示一个单独的样本,\(x\)代表\(n_x\)维的特征向量,\(y\) 表示标签(输出结果)只能为0或1。
而训练集将由\(m\)个训练样本组成,其中\((x^{(1)},y^{(1)})\)表示第一个样本的输入和输出,\((x^{(2)},y^{(2)})\)表示第二个样本的输入和输出,直到最后一个样本\((x^{(m)},y^{(m)})\),然后所有的这些一起表示整个训练集。有时候为了强调这是训练样本的个数,会写作\(M_{train}\),当涉及到测试集的时候,会使用\(M_{test}\)来表示测试集的样本数,所以这是测试集的样本数:
最后为了能把训练集表示得更紧凑一点,会定义一个矩阵用大写\(X\)的表示,它由输入向量\(x^{(1)}\)、\(x^{(2)}\)等组成,如下图放在矩阵的列中,所以现在把\(x^{(1)}\)作为第一列放在矩阵中,\(x^{(2)}\)作为第二列,\(x^{(m)}\)放到第\(m\)列,然后就得到了训练集矩阵\(X\)。所以这个矩阵有\(m\)列,\(m\)是训练集的样本数量,然后这个矩阵的高度记为\(n_x\),注意有时候可能因为其他某些原因,矩阵\(X\)会由训练样本按照行堆叠起来而不是列,如下图所示:\(x^{(1)}\)的转置直到\(x^{(m)}\)的转置,但是在实现神经网络的时候,使用左边的这种形式,会让整个实现的过程变得更加简单:
现在来简单温习一下:\(X\)是一个规模为\(n_x\)乘以\(m\)的矩阵,当用Python实现的时候,会看到X.shape
,这是一条Python命令,用于显示矩阵的规模,即X.shape
等于\((n_x,m)\),\(X\)是一个规模为\(n_x\)乘以\(m\)的矩阵。所以综上所述,这就是如何将训练样本(输入向量\(X\)的集合)表示为一个矩阵。
那么输出标签\(y\)呢?同样的道理,为了能更加容易地实现一个神经网络,将标签\(y\)放在列中将会使得后续计算非常方便,所以定义大写的\(Y\)等于\({{y}^{\left( 1 \right)}},{{y}^{\left( m \right)}},...,{{y}^{\left( m \right)}}\),所以在这里是一个规模为1乘以\(m\)的矩阵,同样地使用Python将表示为Y.shape
等于\((1,m)\),表示这是一个规模为1乘以\(m\)的矩阵。
神经网络基础篇:详解二分类(Binary Classification)的更多相关文章
- JavaScript基础篇详解
全部的数据类型: 基本数据类型: undefined Number Boolean null String 复杂数据类型: object ①Undefined: >>>声明但未初始化 ...
- PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载 中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...
- 走向DBA[MSSQL篇] 详解游标
原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. ...
- PopUpWindow使用详解(二)——进阶及答疑
相关文章:1.<PopUpWindow使用详解(一)——基本使用>2.<PopUpWindow使用详解(二)——进阶及答疑> 上篇为大家基本讲述了有关PopupWindow ...
- HTTPS详解二:SSL / TLS 工作原理和详细握手过程
HTTPS 详解一:附带最精美详尽的 HTTPS 原理图 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 在上篇文章HTTPS详解一中,我已经为大家介绍了 HTTPS 的详细原理和通信流 ...
- Python基础知识详解 从入门到精通(七)类与对象
本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详 ...
- 【原创 深度学习与TensorFlow 动手实践系列 - 3】第三课:卷积神经网络 - 基础篇
[原创 深度学习与TensorFlow 动手实践系列 - 3]第三课:卷积神经网络 - 基础篇 提纲: 1. 链式反向梯度传到 2. 卷积神经网络 - 卷积层 3. 卷积神经网络 - 功能层 4. 实 ...
- 网络基础 cookie详解
cookie详解 by:授客 QQ:1033553122 cookie干嘛用的? 参见文章http 会话(session)详解: 网络基础 http 会话(session)详解 cookie分类 ...
- Scala进阶之路-Scala函数篇详解
Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...
- Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)
[Android布局学习系列] 1.Android 布局学习之——Layout(布局)详解一 2.Android 布局学习之——Layout(布局)详解二(常见布局和布局参数) 3.And ...
随机推荐
- 【createWrapper】根据条件类创建查询wrapper
前几天写一个有几十个字段的查询wrapper,写得我心烦意乱.然后就琢磨了一下能不能只传一个条件类对像就能创建对应的wrapper.去看了下mybatis-plus的文档没看到合适的api,有一个创建 ...
- 唱衰这么多年,PHP 仍然还是你大爷!
PHP 是个庞然大物. 尽管有人不断宣称 PHP "即将消亡". 但无法改变的事实是:互联网依然大量依赖 PHP.本文将通过大量的数据和事实告诉你为何 PHP 仍然在统治着互联网, ...
- Swagger系列:SpringBoot3.x中使用Knife4j
目录 一.简介 二.版本说明 三.使用 四.效果图 一.简介 官网:https://doc.xiaominfo.com/ Knife4j是一个集Swagger2 和 OpenAPI3 为一体的增强解决 ...
- 16.2 ARP 主机探测技术
ARP (Address Resolution Protocol,地址解析协议),是一种用于将 IP 地址转换为物理地址(MAC地址)的协议.它在 TCP/IP 协议栈中处于链路层,为了在局域网中能够 ...
- 带着问题去分析:Spring Bean 生命周期
1: Bean在Spring容器中是如何存储和定义的 Bean在Spring中的定义是_org.springframework.beans.factory.config.BeanDefinition_ ...
- Linux CMake编译kwindowsystem错误汇总
1.APPSTREAMCLI-NOTFOUND 安装appstream apt-get install appstream 2.FISH_EXECUTABLE 安装fish apt-get insta ...
- Kafka 在分布式系统中的 7 大应用场景
Kafka 介绍 Kafka 是一个开源的分布式流式平台,它可以处理大量的实时数据,并提供高吞吐量,低延迟,高可靠性和高可扩展性.Kafka 的核心组件包括生产者(Producer),消费者(Cons ...
- CF1295D Same GCDs
前置知识: 辗转相除法 欧拉函数 首先,根据辗转相除法求 \(\gcd\) 的公式,可得 \(\gcd(a+x,m)=\gcd((a+x)\mod m,m)\). 则题目可以转化为:求有多少 \(x\ ...
- ensp小实验——浮动路由
依靠优先级来保证多路径的连通性. #AR1中<Huawei>u t m<Huawei>sys[Huawei]sys r1[r1]int g0/0/1 [r1-GigabitEt ...
- GeminiDB新特性:让Redis广告频控爱不释手的exHASH
本文分享自华为云社区<GeminiDB新特性:让Redis广告频控爱不释手的exHASH>,作者:GeminiDB-Redis博客 . exHash类型是一种支持Field过期的新型数据类 ...