首页 > 其他分享 >神经网络基础篇:详解二分类(Binary Classification)

神经网络基础篇:详解二分类(Binary Classification)

时间:2023-10-19 13:01:58浏览次数:36  
标签:表示 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,特征向量,矩阵,像素,神经网络,输入,图片
From: https://www.cnblogs.com/oten/p/17774456.html

相关文章

  • 《动手学深度学习 Pytorch版》 9.4 双向循环神经网络
    之前的序列学习中假设的目标是在给定观测的情况下对下一个输出进行建模,然而也存在需要后文预测前文的情况。9.4.1隐马尔可夫模型中的动态规划数学推导太复杂了,略。9.4.2双向模型双向循环神经网络(bidirectionalRNNs)添加了反向传递信息的隐藏层,以便更灵活地处理此类信息。9......
  • 6.卷积神经网络
    卷积层的作用一在说卷积层之前,我想先说一下为什么会有卷积层;前面几个博客提到的神经网络都是用矩阵乘法来建立输入和输出之间的关系,如果有n个输入和m个输出,那么就需要n*m个参数;如果n和m很大并且有多个全连接层的话需要的参数数量是庞大的;卷积层就是通过三个特性来解......
  • 神经网络入门篇:为什么深度学习会兴起?
    为什么深度学习会兴起?这篇我们来讲故事,关于为什么深度学习会兴起的故事~深度学习和神经网络之前的基础技术理念已经存在大概几十年了,为什么它们现在才突然流行起来呢?因为多亏数字化社会的来临,现在的数据量都非常巨大,我们花了很多时间活动在这些数字的领域,比如在电脑网站上、......
  • Python神经网络编程pdf电子版 Tariq Rashid
    Python神经网络编程pdf电子版TariqRashid作者:[英]TariqRashid原作名:MakeYourOwnNeuralNetwork出版年:2018-4ISBN:9787115474810连接提取码:c75z本书对初学者极为友好,并且篇幅短小精悍,概念讲解明晰易懂,很适合作为神经网络入门第一书。书中作为例子实现的神经网......
  • 神经网络入门篇:神经网络到底是什么东西
    神经网络到底是什么东西我们常常用深度学习这个术语来指训练神经网络的过程。有时它指的是特别大规模的神经网络训练。那么神经网络究竟是什么呢?举例说明-通俗易懂第一个例子从一个房价预测的例子开始讲起。假设你有一个数据集,它包含了六栋房子的信息。所以,你知道房屋的面......
  • Educational Codeforces Round 154 (Rated for Div. 2) B. Two Binary Strings
    给定两个长度相等的\(01\)字符串\(a\)和\(b\)。每个字符串都是以\(0\)开始以\(1\)结束。在一步操作中,你可以选择任意一个字符串:选择任意两个位置\(l,r\)满足\(s_l=s_r\),然后让\(\foralli\in[l,r],s_i=s_l\)。询问经过若干次操作后能否使得\(a=b......
  • 【Kaggle】Spam/Ham Email Classification
    基本思想需求是对垃圾邮件进行分类。思路1:使用LSTM、GRU等自带的时序模型进行分类。思路2:使用spacy这个NLP库,里面的textcat可直接用来文本分类实际上,思路2比思路1更优。由于是入门题,就只使用思路1了。思路2代码参考:https://blog.csdn.net/qq_21201267/article/details/109109......
  • 各神经网络模型全称
    博客地址:https://www.cnblogs.com/zylyehuo/人工神经网络--ANN--ArtificialNeuralNetworks卷积神经网络--CNN--RecurrentNeConvolutionalNeuralNetworks递归(循环)神经网络--RNN--RecurrentNeuralNetworks长短期记忆递归网络--LSTM(特殊的RNN)--LongSho......
  • 了解 MySQL 数据库的三大日志(redo log、undo log、binary log)
    前言MySQL中有以下几种日志,包括:redolog(重做日志)undolog(回滚日志)binarylog(二进制日志)errorlog(错误日志)slowquerylog(慢查询日志)generallog(一般查询日志)relaylog(中继日志)事务的特性:原子性(Atomicity):事务是最小的执行单位,不允许分割。事务的原子......
  • CF1204D2 Kirk and a Binary String (hard version) 题解
    CF1204D2KirkandaBinaryString(hardversion)题解分析先来分析\(01\)串的最长不下降子序列。全是\(0\)显然是不下降的,如果中间出现一个\(1\),为了维护不下降的性质,后面就只能全是\(1\)。一句话概括一下,\(0\)后面能跟\(0,1\),\(1\)后面只能跟\(1\)。现在来分析这......