吴恩达《机器学习》学习笔记九——神经网络相关(1)

  • 一、 非线性假设的问题
  • 二、 神经网络相关知识
    • 1.神经网络的大致历史
    • 2.神经网络的表示
    • 3.前向传播:向量化表示
  • 三、 例子与直觉理解
    • 1.问题描述:异或XOR、同或XNOR
    • 2.单个神经元如何计算逻辑函数:以AND、OR为例
    • 3.多层神经网络计算复杂函数
  • 四、 神经网络实现多分类

课程链接:https://www.bilibili.com/video/BV164411b7dx?from=search&seid=5329376196520099118

前面的几次笔记,较详细地学习了机器学习里有监督学习的两个最具代表性的模型,分别是解决回归问题的线性回归以及解决分类问题的逻辑回归这两个模型最初的形态都是线性的,但是由于问题的复杂性,它们又可以推广到非线性的形态,即多一些高次幂项特征。这次笔记就由此非线性假设函数引入,学习神经网络的相关知识。如今人工智能能够得到如此的发展,神经网络可以说是功不可没。

一、 非线性假设的问题

首先课程中提出的问题是,既然已经有了线性回归和逻辑回归来分别解决回归和分类问题,即使是较为复杂的问题,也可以推广假设函数到非线性形式来解决,那么为什么还要学习神经网络呢?

那么我们就来看一看非线性假设存在的问题:

如上图所示,是一个非线性的分类问题,数据样本有两个特征x1和x2,那么要分类这样的数据集,假设函数就需要设置成如图中所示,以此来达到非线性决策边界的目标。这样做唯一的代价就是通过特征映射将原来两个特征变成了多项非线性特征,看起来没有太大问题

我们可以回顾一下笔记七中特征映射的代码,最高次幂设置成了6次,特征的数量从原来的2个变成了28个,当时的计算量看似也不大,也能得到较好的结果。

但是问题就在于,很多情况,特征的数量远远不止2个,上百上千上万甚至百万的都很常见,如果都通过这样特征映射将线性变成非线性假设去解决非线性问题,那么特征映射后的特征数量将飞速变大

举一个有100个特征的例子:

它的一次幂特征项是100个,而二次幂特征项就已经有5000个:

再看三次幂项,有170000个:

就不往更高次幂算了,只会更加庞大,而很多问题需要用到高次幂的项。

所以,当初始特征数量很大时,将其映射到高阶特征项,特征空间将会急剧膨胀,可能会带来严重的过拟合问题,以及沉重的计算和存储负担。所以用这种特征映射的方法来建立非线性模型,并不是一种好方法。

课程中还提供了CV领域图像分类的一个例子:

假设一张图像数据包含2500个特征(每个像素算一个),用逻辑回归的这种非线性假设的方法,仅仅算二次幂的特征数量都已经有三百万个,而50*50的图像已经算是很小的图片,所以这种方法过于简单粗暴,特征数一大,就会非常吃力。

而神经网络很好的克服了这个问题,即使初始特征空间庞大,也能很好的求解。

二、 神经网络相关知识

1.神经网络的大致历史


神经网络起初是一种模仿人脑运行机制的算法。曾在80年代以及90年代早期比较流行,但是因为一些原因,在90年代末又沉寂了下去。而近些年,神经网络在各大领域上的应用,又使得它流行起来,主要是因为计算性能的飞速发展,使得计算机可以支持神经网络计算的庞大数据量。目前,许多领域最新技术都会应用到神经网络的知识。

2.神经网络的表示

人脑的自然神经网络的运行原理,如下图所示:

如图所示为一个神经元结构,主要包括三个部分:

树突:信号的输入部分,其他神经元的信号经过树突来接收;
细胞体:许多外来信号经过树突传入后由细胞体处理,并产生一个输出信号,即反应;
轴突:信号的输出端。神经元可以看成是一个计算单元,对众多外来信号进行处理后,产生一个输出。

而机器学习中的神经网络模型是指人工神经网络,就是模仿自然神经网络构造了功能相似的计算单元,如下图所示:
x1,x2,x3分别是计算单元的输入,黄色的圆圈是计算中心,h(x)是输出的计算结果。这边具体输出什么形式的函数被称之为激活函数,此处激活函数是sigmoid函数的形式。以sigmoid函数这个例子为例,黄色圆圈首先计算的是z =θ ^ T x,然后用sigmoid激活函数进行的计算是g(z) = 1/(1 + e^(-z)),最后的输出也就是g(z)。黄色圆圈包含了计算z和g(z)的两部分,其中的计算涉及到一些参数,那么优化神经网络模型的过程,就是优化这些参数的过程,这些参数也叫权重(weights)

以上是单个的神经元,那么与人脑类似,多个神经元可以组合成神经网络,其结构如下图所示:

第一列被称为输入层,它都是输入的数据,最后一层被称为输出层,而中间的被称为隐藏层,不论是一层还是多层,统称为隐藏层。隐藏层中包含了要优化的参数。

我们看一下它具体是怎么工作的,如下图所示:

首先定义a_i ^ (j)是第 j 层第 i 个计算单元的激活器;θ ^ (j)是从第 j 层映射到第 j+1 层的权重矩阵,如果第 j 层有 s_j 个计算单元,第 j+1 层有 s_(j+1) 个计算单元,那么θ^(j)的维度是 s_(j+1) × (s_j+1) 。这边的1是指偏置项x0。

然后看图中的一些计算过程,每一层都要按照激活函数来计算结果,直到计算到最后一层的输出,如果层数较多,那么也要一层层的嵌套计算下去。

3.前向传播:向量化表示


为了实现向量化表示,将第一个式子里的

表示为z_1 ^ (2),与此相似,第二、三个式子里的部分也分别表示为z_2 ^ (2) 、z_3 ^ (2)。而且,我们将输入x与参数进行向量化:

那么,z ^ (2) 、a ^ (2)都将进行向量化,这里z ^ (2) 、a ^ (2)都是三维向量:

这边的x向量也可以看作是a ^ (1)向量,以上是输入层到隐藏层的计算过程,下面再看一下由隐藏层推到输出层的计算,其实与之前的计算非常类似:


上面的这种由输入层一层层往输出层计算输出的过程,称之为前向传播,从向量化的形式来看,是一次次嵌套计算的过程。

这种前向传播的方法,也可以帮助我们了解神经网络的作用,以及它为什么能够学习非线性假设函数。将上面提到的神经网络的输入层遮住,如下图所示:

剩下的结构其实就是一个逻辑回归的模型,假设函数如图中所示,只是逻辑回归单元得到的输入不是真正数据的输入,而是隐藏层的计算结果,而这些隐藏层的计算结果,是通过前面层学习得到的函数输入值,具体来讲,就是它们是从第一层映射到第二层的函数中学习到的结果,这个函数由前面的参数θ^((1))决定。

总结一下,神经网络中没有直接使用输入x来训练逻辑回归,而是自己先训练逻辑回归的输入a,这个过程中因为θ^(1)选择的不同参数,有时可以学习到一些复杂、有趣的特征,这样就可以得到一个更好的假设函数,比直接使用原始输入数据得到的假设函数更好

再看一个层数更多的例子,第二层先学习了一些原始数据的特征,第三层再学习第二层的特征,第四层则可以根据前两层抽象过的特征进行拟合,得到的假设函数更加复杂。第一层还叫输入层,最后一层还叫输出层,中间层都叫隐藏层。

三、 例子与直觉理解

通过一个例子来详细地介绍神经网络是如何计算复杂非线性函数的输入的,帮助理解为什么神经网络可以用来学习复杂的非线性假设模型。

1.问题描述:异或XOR、同或XNOR

下面是一个非线性的分类例子:同或,这个问题的数据分布如下图所示,特征x1和x2都只能取0/1,当x1和x2同为0或同为1时类别为1,反之为0,这个问题不能用线性的模型来解决,需要非线性的决策边界来划分,也就是需要非线性的假设函数。

2.单个神经元如何计算逻辑函数:以AND、OR为例


输入特征x1和x2的取值只能是0/1,寻找一个假设函数,使得经过神经元后的预测结果和真值表的结果匹配。图中给定了模型的结构,单个神经元其实也可以看作是逻辑回归,参数如图中所示为-30,20,20,则假设函数或者说神经元的输出为h(x)=g(-30+20x_1+20x_2)。将x1和x2的可能取值组合一一代入,得到预测结果为0,0,0,1,与真值表的结果完全符合。

下面看另一个线性的例子:

OR的计算原理和过程类似上面的AND模型,不再赘述。

从这两个例子可以看到,神经网络中的单个神经元是如何用来计算逻辑函数的,比如上面的AND和OR。下面将介绍,一个拥有多层神经元的神经网络是如何被用来计算更复杂的函数的比如XOR或XNOR

3.多层神经网络计算复杂函数

首先有三个单个神经元的模型,如下图所示:

它们分别能解决三个不同的逻辑计算。

为了能解决更复杂的问题,将它们组合到一起,变成一个三层的神经网络,如下图所示:

红色、蓝色和绿色的神经元分别对应上面的三个功能,看右边的真值表变化,这样组合的一个三层神经网络就完成了非线性的同或XNOR问题。

还能这样理解,输入都放在输入层,然后在中间放一个隐藏层,用来计算一些关于输入的略微复杂的功能,然后再增加一层,用于计算一个更复杂的非线性函数。这就是为什么神经网络可以计算这种复杂的函数


在一层层往后计算的过程中,能够计算的函数也会越来越复杂。

四、 神经网络实现多分类

多输出单元:一对多:

这是一个图片分类的例子,需要将图片分成行人、汽车、摩托车和货车四类。相应地,建立了一个具有四个输出单元的神经网络,所以输出是一个四维向量,这四个神经元的作用分别为,判断图中是否为行人、图中是否为汽车、图中是否为摩托车、图中是否为货车。如果为行人,输出向量为[1 0 0 0],如果为汽车,则为[0 1 0 0],以此类推。只是这里数据集中的标签y也要表示成一个四维向量才能与预测结果h(x)匹配。

吴恩达《机器学习》学习笔记九——神经网络相关(1)相关推荐

  1. 吴恩达机器学习学习笔记第七章:逻辑回归

    分类Classification分为正类和负类 (规定谁是正谁是负无所谓) 吴恩达老师举例几个例子:判断邮箱是否是垃圾邮箱 一个在线交易是否是诈骗 一个肿瘤是良性的还是恶性 如果我们用之前学习的lin ...

  2. 吴恩达深度学习笔记——卷积神经网络(Convolutional Neural Networks)

    深度学习笔记导航 前言 传送门 卷积神经网络(Convolutional Neural Networks) 卷积神经网络基础(Foundations of Convolutional Neural N ...

  3. 吴恩达机器学习--学习笔记

    1. Introduction 1.1 Welcome 如今机器学习被大规模应用于: 数据挖掘(网站点击,医学记录,生物学,工程) 一些无法通过编程实现的功能(自动驾驶,手写识别,NLP,CV) se ...

  4. 吴恩达机器学习学习笔记第二章:单变量线性回归

    模型描述: 训练集(training set):是监督学习中独有的概念,由我们人喂给电脑的既有既有特征x又有结果y的数据.下图x是房子面积 ,y是房屋对应的价格 符号记法解释: (x^(1),y^(1 ...

  5. 吴恩达深度学习笔记——卷积神经网络(CNN)

    目录 一.计算机视觉(Computer vision) 二.边缘检测示例(Edge detection example) 三.更多的边缘检测内容(More edge detection) 四.Padd ...

  6. 吴恩达“机器学习”——学习笔记六

    最优边界分类器(最大间隔分类器)(续学习笔记五) 在线性分类器中,我们要找到一个边界线,使得几何间隔最大,即: ||w||在几何间隔中是无关紧要的,这里取1,使得几何间距和函数间距一致. 但是这个并不 ...

  7. 吴恩达机器学习学习笔记第九章:神经网络学习

    课时①非线性假设 通过说Linear Regression和logistic Regression的不足来引入神经网络: 安卓告诉我们神经网络并不是什么新玩意儿,老早就有了,但是他经过了一段低迷期直到 ...

  8. 吴恩达机器学习学习笔记第一章:绪论初识机器学习

    一.   什么是机器学习(Machine Learning)?   首先学习的对象是电脑 学习指的其实就是算法 机器学习就是基于数据基于算法从数据中去提炼对事物的认知和规律 掌握了这些特征和规律后就可 ...

  9. 吴恩达深度学习笔记(21)-神经网络的权重初始化为什么要随机初始化?

    随机初始化(Random+Initialization) 当你训练神经网络时,权重随机初始化是很重要的. 对于逻辑回归,把权重初始化为0当然也是可以的. 但是对于一个神经网络,如果你把权重或者参数都初 ...

  10. 吴恩达机器学习 学习笔记 之 一 监督学习和无监督学习

    一. 1-1 welcome 1-2 什么是机器学习--Machine Learning 机器学习尚无明确定义,现有的定义有: (1)Field of study that gives compute ...

最新文章

  1. 调侃吴恩达,Diss特斯拉,吐槽OpenAI…《AI寒冬将至》作者点评2019“AI小丑秀”...
  2. 事务管理最佳实践全面解析
  3. [转]中国CIO的空前机会和空前责任
  4. 编程用的记事本软件_数控常用编程软件那么多,你用哪一种?
  5. [python](爬虫)如何使用正确的姿势欣赏知乎的“长得好看是怎样一种体验呢?”问答中的相片...
  6. pde lec 3 part 1
  7. idea卡顿的解决方法_lt;绝地求生/PUBG/解决卡顿方法(停机9小时)维护gt;9月16日(星期三) 08点30分amp;崩溃...
  8. jenkins 插件目录_10 个 Jenkins 实战经验,助你轻松上手持续集成
  9. 【Xamarin开发 Android 系列 2】VS2015跨平台开发的几种方式
  10. linux去掉日志中的skipping,Linux日志文件总管 logrotate
  11. 深度 | 从各种注意力机制窥探深度学习在NLP中的神威
  12. 2021年汽车电子之传感器行业研究报告
  13. MacOS上禁用自动启动Adobe Creative Cloud
  14. linux中ftp禁止匿名,linux下禁止root和匿名用户登录ftp
  15. js中 new,self和this的用法解释
  16. 【使用python和flask建个人博客】如何在jinja2中进行简单的四则运算和把一个浮点数显示成整数?
  17. Android mc怎么和win10联机,我的世界实现跨平台联机 Win10玩家可与手机互联
  18. 两个向量组的秩相等说明什么_若两个向量组等价,它们的秩是否相等?
  19. 视数字人民币为假想敌——数字美元的来龙去脉
  20. FileZilla 使用教程

热门文章

  1. ad批量走线_AD PCB直角布线批量改为圆角,怎么批量修改呢?
  2. python3.6是用来干嘛的_学 Python 都用来干嘛的?
  3. 用多模态信息做 prompt,解锁 GPT 新玩法
  4. 论文浅尝 | 通过知识到文本的转换进行知识增强的常识问答
  5. 论文浅尝 | 主题驱动的分子图表示对比学习
  6. 论文浅尝 | 神经协同推理
  7. 论文浅尝 | 面向单关系事实问题的中文问答模型
  8. 连接MySql出现异常解决:java.sql.SQLException: The server time zone value is unrecognized or represents。
  9. Zabbix的简单使用
  10. MySql分页存储过程