一、为什么需要机器学习

有些任务直接编码较为复杂,我们不能处理所有的细微之处和简单编码,因此,机器学习很有必要。相反,我们向机器学习算法提供大量数据,让算法不断探索数据并构建模型来解决问题。比如:在新的杂乱照明场景内,从新的角度识别三维物体;编写一个计算信用卡交易诈骗概率的程序。

机器学习方法如下:它没有为每个特定的任务编写相应的程序,而是收集大量事例,为给定输入指定正确输出。算法利用这些事例产生程序。该程序与手写程序不同,可能包含数百万的数据量,也适用于新事例以及训练过的数据。若数据改变,程序在新数据上训练且被更新。大量的计算比支付手写程序要便宜的多。

机器学习的应用如下:

  • 模式识别:识别实际场景的面部或表情、语言识别。

  • 识别异常:信用卡交易顺序异常,核电厂传感器读数模式异常。

  • 预测:未来股价或货币汇率,个人观影喜好。

二、什么是神经网络

神经网络是一种通用机器学习模型,是一套特定的算法集,在机器学习领域掀起了一场变革,本身就是普通函数的逼近,可以应用到任何机器学习输入到输出的复杂映射问题。一般来说,神经网络架构可分为3类:

  • 前馈神经网络:是最常见的类型,第一层为输入,最后一层为输出。如果有多个隐藏层,则称为“深度”神经网络。它能够计算出一系列事件间相似转变的变化,每层神经元的活动是下一层的非线性函数。

  • 循环神经网络:各节点之间构成循环图,可以按照箭头的方向回到初始点。循环神经网络具有复杂的动态,难以训练,它模拟连续数据,相当于每个时间片段具有一个隐藏层的深度网络,除了在每个时间片段上使用相同的权重,也有输入。网络可以记住隐藏状态的信息,但是很难用这点来训练网络。

  • 对称连接网络:和循环神经网络一样,但单元间的连接是对称的(即在两个方向的连接权重相同),它比循环神经网络更容易分析,但是功能受限。没有隐藏单元的对称连接的网络被称为“Hopfiels网络”,有隐藏单元的对称连接的网络则被称为“波兹曼机器”。

三、感知机(Perceptron)

作为第一代神经网络,感知机是只有一个神经元的计算模型。首先将原始输入矢量转化为特征矢量,再用手写程序定义特征,然后学习如何对每个特征加权得到一个标量,如果标量值高于某一阈值,则认为输入矢量是目标类的一个积极样例。标准的感知机结构是前馈模型,即输入传送到节点,处理后产生输出结果:从底部输入,顶部输出,如下图所示。但也有其局限性:一旦确定了手写编码特征,在学习上就受到了较大限制。这对感知器来说是毁灭性的,尽管转换类似于翻译,但是模式识别的重点是识别模式。如果这些转换形成了一个组,学习的感知器部分不能学会识别,所以需要使用多个特征单元识别子模式的转换。

没有隐藏单元的网络在输入输出映射建模上也有很大局限性。增加线性单元层也解决不了,因为线性叠加依然是线性的,固定的非线性输出也不能建立这种映射。因此需要建立多层自适应的非线性隐藏单元。

四、卷积神经网络(Convolutional Neural Network)

一直以来,机器学习研究广泛集中在对象检测上,但仍有诸多因素使其难以

识别对象:

  • 对象分割、遮挡问题
  • 照明影响像素强度
  • 物体以各种不同的形式展现
  • 相同功能的对象具有不同的物理形状
  • 视觉不同带来的变化
  • 维度跳跃问题

复制特征方法是当前CNN用于目标检测的主要方法,大规模的复制不同位置上相同的特征检测图,大大减少了要学习的自由参数数量。它使用不同的特征类型,每种类型都有自己的复制检测图,也允许以各种方式表示每个图像块。

CNN可用于手写数字识别到3D对象识别等,但从彩色图像中识别对象比手写数字识别要复杂,它的类别、像素是数字的100倍(1000 vs 100,256*256彩色vs28*28灰度)。

2012年的ILSVRC-2012竞赛中的ImageNet提供一个包含120万张高分辨率训练图像的数据集。测试图像没有标注,参赛者需要识别图像中对象的类型。获胜者Alex Krizhevsky开发了一个深度卷积神经网络,除了一些最大池化层,架构还有7个隐藏层,前面都是卷积层,最后2层是全局连接。激活函数在每个隐藏层都是线性单元,比逻辑单元速度更快,还使用竞争性规范标准抑制隐藏活动,有助于强度变化。硬件上,在两个Nvidia GTX 580 GPU(超过1000个快速内核)上使用一个高效卷积网络实现,非常适合矩阵乘法,具有很高的内存带宽。

五、循环神经网络( Recurrent Neural Network)

循环神经网络(RNN)有两个强大的属性可以计算任何计算机计算出来的东西:

  • 允许存储大量有效信息的分布式隐藏状态
  • 用复杂的方式允许更新隐藏状态的非线性动态。RNN强大的计算能力和梯度消失(或爆炸)使其很难训练。通过多层反向传播时,若权重很小,则梯度呈指数缩小;若权重很大,则梯度呈指数增长。典型的前馈神经网络的一些隐藏层可以应对指数效应,另一方面,在长序列RNN中,梯度容易消失(或爆照),即使有好的初始权重,也很难检测出当前依赖于多个时间输入的目标输出因此很难处理远程依赖性。

学习RNN的方法如下:

长短期记忆:用具有长期记忆值的小模块制作RNN

Hessian Free Optimization:使用优化器处理梯度消失问题。

回声状态网络:初始化输入→隐藏和隐藏→隐藏和输出→隐藏链接,使隐藏状态有一个巨大的弱耦合振荡器储备,可以选择性的由输入驱动。

用动量初始化:和回声状态网络一样,再用动量学习所有连接。

六、长短期记忆网络(Long/Short Term Memory Network)

Hochreiter & Schmidhuber(1997年)构建了长短期记忆网络,解决了获取RNN长时间记忆问题,使用乘法逻辑线性单元设计存储单元,只要保持“写入”门打开,信息就会写入并保持在单元中,也可以打开“读取”门从中获取数据。

RNN可以阅读行书,笔尖的输入坐标为(x,y,p),p代表笔是向上还是向下,输出则为一个字符序列,使用一系列小图像作为输入而不是笔坐标。Graves & Schmidhuber(2009年)称带有LSTMRNN是阅读行书的最佳系统。

七、霍普菲尔德网络(Hopfield Networks)

非线性循环网络有很多种表现方式,较难分析:能达到稳定、震荡或馄饨状态这三种表现形式。Hopfield网络是由有循环连接的二进制阈值单元组成。1982年,约翰·霍普菲尔德发现,如果连接对称,则存在一个全局能量函数,整个网络的每个二进制“结构”都有能量,而二进制阈值决策规则使网络为能量函数设置一个最小值。使用这种计算类型最简单的方法是将记忆作为神经网络的能量最小值。使用能量最小值表示记忆给出了一个内容可寻内存,可通过了解局部内容来访问整个项目。

每记忆一次配置,都希望能产生一个能量最小值。但若有两个最小值就会限制Hopfield网络容量。伊丽莎白·加德纳发现有一个更好的存储规则,它使用了所有的权重。而不是试图一次存储多个矢量,她通过训练集进行多次循环,并用感知器收敛程序训练每个单元,使该矢量的所有其它单元具有正确的状态。

八、玻尔兹曼机(Boltzmann Machine Network)

玻尔兹曼机是一种随机循环神经网络,可以被看作是Hopfield网络的随机生成产物,是最先学习内部representations的神经网络之一。该算法旨在最大限度地提高机器在训练集中分配给二进制矢量的概率的乘积,相当于最大化其分配给训练矢量的对数概率之和,方法如下:

  • 网络没有外部输入时,使网络在不同时间分布稳定
  • 每次对可见矢量采样

2012年,SalakhutdinovHinton为玻尔兹曼机写了有效的小批量学习程序。2014年将模型更新,称之为受限玻尔兹曼机,详情请查看原文。

九、深度信念网络(Deep Belief Network)

反向传播,是人工神经网络计算处理一批数据后每个神经元的误差分布的标准方法,但是也存在一些问题。首先要标注训练数据,但几乎所有数据都没有标注;其次,学习时间不足,这意味着隐藏层数较多的网络较慢;第三,可能会使局部陷入最不利局面。因此,对于深度网络来说这远远不够。

无监督学习方法克服了反向传播的限制,使用梯度方法调整权重有助于保持架构的效率和简单性,还可以将它用于对感官输入结构建模。特别的是,它调整权重,将产生感官输入的生成模型概率最大化。信念网络是由随机变量组成的有向非循环图,可推断未观测变量的状态,还可以调整变量间的交互,使网络更可能产生训练数据。

早期图形模型是专家定义图像结构和条件概率,这些图形是稀疏连接的,他们专注于做正确的推论,而不是学习。但对于神经网络来说,学习是重点,其目的不在于可解释性或稀疏连接性使推断变得更容易。

十、深度自动编码器(Deep Auto-encoders)

该架构提供了两种映射方式,好像是一个做非线性降维非常好的方法,它在训练事例的数量上是线性的(或更好的),而最终编码模型相当紧凑和快速。然而,使用反向传播优化深度自动编码器很困难,若初始权重较小,反向传播梯度会消失。我们使用无监督逐层预训练或像回声状态网络一样认真的初始化权重。

对于预训练任务有三种不同类型的浅自动编码器:

  • RBM作为自动编码器
  • 去噪自动编码器
  • 压缩自动编码器。对于没有大量标注的数据集,预训练有助于后续的判别式学习。即便是深度神经网络,对于大量的标注数据集,无监督训练对权重初始化并不是必要的,预训练是初始化深度网络权重的第一个好方法,现在也有其它方法。但如果扩大网络,需要再次做预训练

总结:传统的编程方法是我们告诉计算机做什么,将大问题分解成很多小而精确的且计算机可以轻松执行的任务。神经网络则不需要告诉计算机如何解决问题,而是从观测到的数据中学习,找到解决问题的办法。

第五章(1.4)深度学习——神经网络架构和原理相关推荐

  1. 利用python深度学习神经网络预测五年内糖尿病的发生(全代码)

    各位朋友大家好,今天我们做一个深度学习神经网络的项目,预测五年内糖尿病的发生.神经网络但凡入门数据科学的人都知道,我觉得叫神经网络是从仿生学角度的命名,从数据科学角度我更喜欢称它为多层感知机(mult ...

  2. 五本必读的深度学习圣经书籍,入门 AI 从 深度学习 开始

    原标题:`五本必读的深度学习圣经书籍,入门 AI 从「深度学习」开始` (以下以 Daniel Jeffries 第一人称撰写) 多年来,由于实验室研究和现实应用效果之间的鸿沟,少有人持续研究人工智能 ...

  3. 《Python深度学习》读书笔记:第1章 什么是深度学习

    目录 第1章 什么是深度学习 1.1 人工智能.机器学习与深度学习 1.1.1 人工智能 1.1.2 机器学习 1.1.3 从数据中学习表示 1.1.4 深度学习之"深度" 1.1 ...

  4. 机器学习原来这么有趣!第四章:用深度学习识别人脸

    第一章:全世界最简单的机器学习入门指南 https://blog.csdn.net/wskzgz/article/details/89917343 第二章:用机器学习制作超级马里奥的关卡 https: ...

  5. 翻译Deep Learning and the Game of Go(2)第1章:面向深度学习

    第1章:面向深度学习 本章内容包括: 机器学习及其与传统编程的区别 机器学习无法解决的问题 机器学习与人工智能的关系 机器学习系统的结构 机器学习学科 只要存在计算机,程序员就对人工智能(AI)感兴趣 ...

  6. 深度学习 神经网络(5)逻辑回归二分类-Pytorch实现乳腺癌预测

    深度学习 神经网络 逻辑回归二分类-乳腺癌预测 一.前言 二.代码实现 2.1 引入依赖库 2.2 加载并查看数据集 2.3 数据处理 2.4 数据分割 2.5 迭代训练 2.6 数据验证 一.前言 ...

  7. MLP神经网络,GRNN神经网络,SVM神经网络以及深度学习神经网络对比识别人体健康非健康数据

    目录 一.理论基础 二.案例背景 1.问题描述 2.思路流程 三.部分MATLAB程序 四.仿真结论分析 五.参考文献 一.理论基础 MLP多层感知器神经网络(Multi-layer perceptr ...

  8. 何恺明团队新作!深度学习网络架构新视角:通过相关图表达理解神经网络

    标题&作者团队 导语:恺明大神出品,必属精品.Facebook的研究员从一个新奇的角度对神经网络的表示与设计进行探索,提出了一种新颖的相关图表示方式.它有助于对现有网络架构进行更深层次的分析与 ...

  9. DL:深度学习(神经网络)的简介、基础知识(神经元/感知机、训练策略、预测原理)、算法分类、经典案例应用之详细攻略

    DL:深度学习(神经网络)的简介.基础知识(神经元/感知机.训练策略.预测原理).算法分类.经典案例应用之详细攻略 目录 深度学习(神经网络)的简介 1.深度学习浪潮兴起的三大因素 深度学习(神经网络 ...

最新文章

  1. 上帝给你关闭一道门,就会为你打开一扇窗,反推。
  2. idea控制台怎么调出来_酸汤饺子最近火了,可是酸汤是怎么调出来的?引起了网友的好奇...
  3. 自动化配置和部署工具--puppet(1)--什么是puppet
  4. Ubuntu 16.04安装Java JDK
  5. java注释 param_java注释文档(下)
  6. VS远程开发(远程调试)编译报错:对‘xxx’未定义的引用(设置库依赖顺序)(已解决)pthread(项目-->属性-->链接器-->输入-->库依赖项)
  7. 想咸鱼翻身不粘锅?加油
  8. 用计算机如何修改wif密码,wifi修改密码,教您电脑怎么修改wifi密码
  9. flex textInput 限制输入
  10. ViewPager异常,对ViewPager源码分析
  11. iOS开发使用TouchID验证登录踩过的一些坑(同时更新FaceID使用方法)
  12. java ipv6抓包_基于ipv6数据抓包分析
  13. 云桌面终端_云桌面是否真的有被夸大,看完你就知道了
  14. 谷歌浏览器一直显示弹框登陆代理解决方法
  15. NAND和NOR Flash的区别
  16. matlab提取刚度矩阵,ANSYS刚度矩阵的提取与解析
  17. 数据库的四个文本类型的差异
  18. 微信语音amr文件转mp3
  19. 复合隐写/图片混合/图片格式头修改-西伯利亚大尾巴狼
  20. 【单片机笔记】集USB充电、USB供电和电池供电的电源设计

热门文章

  1. 关于syslog4j写syslogd服务器的参考代码
  2. Redis入门总结(一):redis配置文件,五种数据结构,线程模型和持久化方式
  3. zookeeper启动报错:already running as process
  4. Commitizen安装注意事项 git cz git: ‘cz‘ is not a git command
  5. 什么是5G前传、中传、回传?
  6. MyBatis_Learning_3.5.7
  7. java书写开头,JAVA代码书写规范汇总详解
  8. 用了python之后笔记本卡了_用chrome运行的Jupyter笔记本在服务器res上卡住了
  9. 基于java web和echarts的数据可视化项目
  10. 李群SE(3)即欧式变换Euclidean transformation(刚性变换Rigid Transformation)