第十章 Keras人工神经网络简介

文章目录

  • 第十章 Keras人工神经网络简介
  • 前言
  • 一、思维导图
  • 二、主要内容
    • 1、从生物神经元到人工神经元
    • 2、使用Keras实现MLP
    • 3、微调神经网络超参数
  • 三、课后练习
  • 四、总结

前言

通过前面九章的学习,我们完成了本书机器学习部分的所有内容,我们知道了如何选择一个机器学习模型、如何训练一个模型,以及参数的调优、特征的选择。
接下来我们将要学习人工智能另外一个重要的部分——神经网络。本章主要讲述了人工神经网络的起源、发展与应用。着重讲解人工神经网络是如何从最起初的一个感知器开始发展为如今庞大的神经网络体系,并运用基础的多层感知器为我们实现了分类与回归操作。最后讲解了神经网络基础的参数调整。
现在就让我们来一起看一下!


一、思维导图

二、主要内容

1、从生物神经元到人工神经元

  1. 生物神经元
    早在1943年就已经有两位科学家提出了人工神经网络的概念,使用命题逻辑运算模仿神经元。但是在那之后由于各方面的问题神经网络经历了多次的寒冬,如今在大量数据、强大的硬件与资本大力支持的情况下,神经网络再次迎来新一轮的热潮,并且将会持续很长时间。
  2. 神经元的逻辑计算
    与其他的所有生物仿制品一样,人工神经网络也在生物神经网络的基础上做了一些修改,它使用一个或者多个的二进制开关来模拟神经元的激活操作。由多个这样简易的神经元组合起来的网络就足以解决一些复杂的逻辑命题。
  3. 感知器
    感知器是一个最简单的人工神经网络(ANN),他仅有一层逻辑单元(TLU)组成,每个输入与连接权重关联,输入加和之后再由阶跃函数输出结果,并且他的输出都是数字。

    感知器通过新实例的预测误差来修改神经元连接的权重,其灵感也是有生物神经元而来,当一个神经元经常触发另外一个神经元时,两个神经元的连接权重就会增加。
    全连接
    当一层的神经元与上一层的神经元都连接时,这种情况称之为全连接。
  4. 多层感知器与反向传播
    多层感知器
    经过对感知器的研究我们发现,我们在解决一些非线性的复杂问题时,感知器将没有作用。这个时候我们就可以将多个感知器堆叠起来形成多层感知器(MLP),这样就能打破线性的局限。多层感知器是由多层阀值逻辑单元(成为隐藏层)与一个输出层组成。
    前馈神经网络(FNN)
    当所有的信号都是由一个方向流动,及从输入流向输出时,这样的神经网络称之前馈神经网络。
    深度神经网络(DNN)
    当一个多层感知器中包含多个隐藏层时,这样的神经网络称为深度神经网络。
    反向转播
    反向传播是一种用于训练多层感知器的算法,算法主要分为四个步骤:
    1、随机生成整个神经网络的连接权重。
    2、选取一部分训练集,像模型预测一样从输入传到输出,并保留每个连接的计算结果。
    3、从输出层快开始使用链式法则计算每个连接对预测误差的贡献值,直到输入层。
    4、使用刚刚计算出来的误差梯度来调整整个网络的连接权重。
  5. 回归MLP
    多层感知器(MLP)可以用于回归任务,在构建回归多层感知器时,神经网络输入层的神经元数量有特征的数量决定,隐藏层的数量与隐藏层中神经元的数量由实际的问题决定。由于回归的输出并不是一个逻辑值,所以神经网络的输出可以不用激活函数,如果想要对结果的正负或者范围进行约束的话可以使用ReLU或是softplus激活函数。损失函数的选择与机器学习类似,使用均方误差或是与之类似的指标。
  6. 分类MLP
    在使用多层感知器(MLP)处理分类问题时,输入层与隐藏层的数量与回归一样,但是输出层的激活函数就得使用逻辑激活函数。根据分类的类别问题来决定输出层神经元的多少与激活函数的种类。损失函数使用交叉熵。

2、使用Keras实现MLP

这部分内容会在文章最后的github中体现。

3、微调神经网络超参数

  1. 简介
    我们可以像在机器学习中一样使用随机搜索或者是网络搜索的方式来调整神经网络的超参数。但是这种方式将会非常消耗时间并且效率很低。好消息是现在已经有很多的库可以用于神经网络的调参,这些库可以在很短的时间内得到一个很好的解决方案。
  2. 隐藏层数量
    只有一个隐藏层的神经网络已经可以解决一些很复杂的问题,但是对于同一个问题多层的MLP总会比单层的MLP更有效率并且性能更好。总而言之,在面对复杂的问题时你可以通过添加隐藏层的数量来拟合训练集,直到模型过拟合于训练集为止。
  3. 隐藏层的神经元数量
    神经元的数量与隐藏层是一个道理,你可以通过添加神经元的数量来拟合一些复杂的训练集,直到模型过拟合为止。一般情况下添加隐藏层的数量而不是添加神经元的数量会更加容易得到一个优秀的模型。
  4. 学习率、批量大小和其他超参数
    其他的这超参数都是模型训练中不可缺少的,有的会影响模型的性能,有的会影响模型的训练程度。后面的章节中会介绍每一个参数的作用与调参方法。

三、课后练习

  1. 为什么通常最好使用逻辑回归分类器而不是经典的感知器(即使用感知器训练算法训练的单层阈值逻辑单元)?如何调整感知器以使其等同于逻辑回归分类器?
    经典的感知器只有在数据集是线性可分的情况下才会收敛并且不能估计分类概率。相反逻辑回归分类器在数据集不是线性可以分的情况下也可以收敛兵器可以输出分类的概率。
    如果你把多层感知器的激活函数换为逻辑激活函数,然后使用梯度下降训练它,那么这个感知器就等同于逻辑回归分类。
  2. 为什么逻辑激活函数是训练第一个MLP的关键要素?
    因为逻辑激活函数的导数永远都是非零的,所以梯度下降是可以连续的。当激活函数是一个阶梯函数时,逐渐下降就不会连续,因为没有斜率。
  3. 列举三种常用的激活函数。你能画出来吗?
    常用的激活函数有:阶跃函数,逻辑函数,双曲正切函数,线性整流函数。
  4. 如果要将电子邮件分类为垃圾邮件或正常邮件,你需要在输出层中有多少个神经元?你应该在输出层中使用什么激活函数?相反如果你想解决MNIST,则在输出层中需要多少个神经元,应该使用哪种激活函数?如第2章所述,如何使你的网络预测房价?
    如果将电子邮件分类为正常邮件与垃圾邮件那么你的输出层有一个神经元,在估算概率时通常会在输出层使用逻辑激活函数。如果想要解决MNIST问题,那么输出层需要十个神经元应该使用softmax函数替换逻辑激活函数。如果想要预测房价,那么只需要一个输出神经元,输出层也不需要任何的激活函数。
  5. 什么是反向传播,它如何工作?反向传播和反向模式的autodiff有什么区别?
    反向传播是一种用于训练人工神经网络的技术。它首先计算关于每个模型参数的成本函数的梯度,然后使用这些梯度执行梯度下降。这种反向传播模式一般会执行很多次,并且需要多个训练批次,知道模型参数收敛到最小化成本函数的值为止。反向模式会先正向执行一次,计算每个节点的值,然后再反向计算一次,一次性计算所有梯度。反向传播是指多次使用反向模式来训练人工神经网络的全部过程,而反向模式只是一种技术。
  6. 你能否列出可以在基本MLP中进行调整的所有超参数?如果MLP过拟合训练数据,你如何调整这些超参数来解决问题?
    在基本的MLP中可以调整的超参数有:隐藏层的数量,隐藏层中神经元的数量,隐藏层与输出层的激活函数。如果MLP过拟合于训练集了,会尝试减少隐藏层的数量或者是减少隐藏层中的神经元数量。

四、总结

这是机器学习第十章的全部内容,主要就是初步介绍了什么是神经网络,神经网络的发展已经神经网络的简单应用。总结下来就是:

  1. 神经网络的概念在1943年就已经有人提出,简单的神经网络建立在生物神经网络的基础上发来开来,在经历了多次的寒冬之后再如今天时地利人和的情况下再次迎来热潮。
  2. 感知器是一个最简单的神经网络,已经给足以解决一些复杂的逻辑问题。但是在面临一些更加复杂的非线性问题是,只能通过添加感知器的层数来突破局限,也就形成了多层感知器(MLP)。
  3. 多层感知器的训练使用反向传播技术,来计算神经网络中神经元与神经元的权重。
  4. 神经网络中有很多超参数可以调节,并且目前已经提供了很多的库可以用于调整神经网络的超参数,在很短的时间内可以得到很好的模型。

对文章有任何疑惑或者想要和博主一起学机器学习一起进步的朋友们可以添加 群号:666980220。需要机器学习实战电子版或是思维导图的也可以联系我。祝你好运!

项目地址: github

边境的悍匪—机器学习实战:第十章 Keras人工神经网络简介相关推荐

  1. 机器学习实战10-Artificial Neural Networks人工神经网络简介(mnist数据集)

    目录 一.感知器 1.1.单层感知器 1.2.多层感知器MLP与反向传播 二.用 TensorFlow 高级 API 训练 MLP DNNClassifier(深度神经网络分类器) 2.1.初始化: ...

  2. 机器学习实战:基于Scikit-Learn.Keras和TensorFlow(原书第2版) 奥雷利安·杰龙——环境搭建anaconda

    这个学期开了一门课,机器学习 然后实验部分用的是这本教材:机器学习实战:基于Scikit-Learn.Keras和TensorFlow 奥雷利安·杰龙,第几版的就不知道了. 用最新的机器学习库,一定会 ...

  3. 机器学习基础(一)——人工神经网络与简单的感知器

    机器学习基础(一)--人工神经网络与简单的感知器 (2012-07-04 19:57:20) 转载▼ 标签: 杂谈 分类: machineのlearning 从最开始做数据挖掘而接触人工智能的知识开始 ...

  4. 机器学习:支持向量机SVM和人工神经网络ANN的比较

    在统计学习理论中发展起来的支持向量机(Support Vector Machines, SVM)方法是一种新的通用学习方法,表现出理论和实践上的优势.SVM在非线性分类.函数逼近.模式识别等应用中有非 ...

  5. 《机器学习》第四章 人工神经网络 深度学习启蒙篇

    神经网络是一门重要的机器学习技术.它是目前最为火热的研究方向--深度学习的基础.学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术. 本文以一种简单的,循序的方 ...

  6. 《机器学习实战:基于Scikit-Learn、Keras和TensorFlow(第2版)》学习笔记

    文章目录 书籍信息 技术和工具 Scikit-Learn TensorFlow Keras Jupyter notebook 资源 书籍配套资料 流行的开放数据存储库 元门户站点(它们会列出开放的数据 ...

  7. 23神经网络 :唐宇迪《python数据分析与机器学习实战》学习笔记

    唐宇迪<python数据分析与机器学习实战>学习笔记 23神经网络 1.初识神经网络 百度深度学习研究院的图,当数据规模较小时差异较小,但当数据规模较大时深度学习算法的效率明显增加,目前大 ...

  8. 机器学习实战笔记——第十章

    目录 一.神经网络基础 1.1 反向传播训练算法 1.2 回归MLP 1.3 分类MLP 二.利用 tf.keras 搭建神经网络 2.1 加载数据 2.2 顺序API创建分类模型 2.2.1 tf. ...

  9. 实战篇:如何用Keras建立神经网络(附全部代码)

    摘要: 机器学习实战篇:用简单的代码打造属于自己的神经网络模型- Keras是目前最受欢迎的深度学习库之一,对人工智能的商业化做出了巨大贡献.它使用起来非常简单,它使你能够通过几行代码就可以构建强大的 ...

  10. 机器学习实战13-卷积神经网络

    机器学习实战13-设备和服务器上的分布式 TensorFlow就先不学习了,详情可参见: 十二.设备和服务器上的分布式 TensorFlow 卷积神经网络(CNN)是从大脑视觉皮层的研究中出现的,自 ...

最新文章

  1. 几种常见的模式识别算法
  2. 记一次被DDoS敲诈的历程
  3. Android之相对布局
  4. [css] 举例说明微信端兼容问题有哪些?
  5. python 桌面提醒_使用Python获取桌面通知
  6. 写给创业者的四句金玉良言
  7. tomcat的acceptCount、maxThreads、connectionTimeout参数调整
  8. [转载] Python Web开发最难懂的WSGI协议,到底包含哪些内容? WSGI服务器种类和性能对比
  9. miui11稳定版获取完整root_小米9Pro官方MIUI11开发版推送升级,基于安卓P底层制作-获取ROOT...
  10. 优酷KUX1080转码工具如何将KUX视频转换成MP4格式
  11. oracle sql 拆分字符串,oracle 拆分字符串
  12. 通信协议:CAN总线
  13. 我慌了!我妈从床底掏出了我珍藏多年的小本本-----JAVA_Lambda表达式(笔记)
  14. 展望未来综合型人工智能教育应用
  15. Windows注册表的基本知识及应用
  16. 2021浙江大学软件学院软件工程方向推免复试
  17. PHP/MySQL教程
  18. java模拟post发送文件
  19. 将秒数转为时分秒的格式
  20. 能ping通ip却不能ping通域名

热门文章

  1. 以数据为中心的云计算——阿里云OS浅谈
  2. 720vr全景网站平台系统 vr全景图制作系统
  3. 大数据分析,主要运用了哪些关键技术?
  4. DataV构建大屏(全屏)数据展示页面
  5. Linux FTP服务器虚拟用户登录
  6. DNS污染的解决方法
  7. linux系统上安装微信(Ubuntu/Debian 微信安装)
  8. Let us learn English confidently
  9. 拳皇 - 人物动作素材图 61种
  10. 机器学习-初级进阶(Thompson 抽样算法 )