摘要: 想要学习神经网络?不了解这些东西怎么能行。

介绍
随着神经网络的发展,很多过去曾被认为是难以完成的任务现在已经可以完成了例如图像识别、语音识别,在数据集中发现更深的关系等已经变得更加容易了。所以我们应该衷心感谢这一领域的杰出研究人员,他们的发现帮助我们发挥了神经网络的真正力量。

如果你真的有兴趣将机器学习作为一门学科,深入了解深度学习网络对你来说是至关重要。大多数ML算法在给定具有多个变量的数据集时往往会失去准确性,而深度学习模型在这种情况下会产生奇迹。因此,了解它的工作原理非常重要!

在本文中,我将解释深度学习中使用的核心概念,即什么样的技巧可以提高模型的准确性。除此之外,我还会分享各种建模技巧,并深入了解神经网络的历史。

目录

  • 神经网络的历史
  • 单层感知器
  • 多层感知器
  • 初始化参数
  • 激活函数
  • 反向传播算法
  • 梯度下降
  • 成本函数
  • 学习率
  • 动量
  • Softmax
  • 多层感知器(MLP)总结

神经网络的历史

神经网络是当今深度学习领域技术突破的基石。神经网络可以看作是大规模并行的处理单元,能够存储知识并应用这些知识进行预测。

1950年,神经心理学家卡尔拉什利的论文发表,他将大脑描述为分布式系统。神经网络的设计模仿大脑,网络通过从学习过程中获取知识。然后,使用称为突触权重的干预连接强度来存储所获得的知识。在学习过程中,网络的突触权重被有序地修改以达到期望的目标。

神经网络与人脑进行对比的另一个原因是,它们像非线性并行信息处理系统一样运行,这些系统可快速执行模式识别和感知等计算操作。因此,这些网络在语音、音频和图像识别等领域表现非常好,就是因为其中输入信号本质上是非线性的。

在Hebb1949年出版的“行为组织”一书中,第一次提出了大脑连接性随着任务变化而不断变化的观点。这条规则意味着两个神经元之间的连接同时处于活动状态。这很快成为开发学习和自适应系统计算模型的灵感来源。

人工神经网络有能力从所提供的数据中学习,这被称为自适应学习,而神经网络创建自己的组织或信息表示的能力被称为自组织。

15年后,Rosenblatt于1958 年开发出了感知器(perceptron),成为了神经元的下一个模型。感知器是最简单的神经网络,能将数据线性地分为两类。后来,他随机地将这些感知器互相连接,并使用了一种试错方法来改变权重以进行学习。

1969年,在数学家Marvin Minsky 和Seymour Parpert发表了一篇对感知器的数学分析后,这个方向的研究在接下来的 15 年里陷入了停滞。他们的研究发现感知器无法表征很多重要的问题,比如异或函数(XOR)。其实,那时的计算机还没有足够的处理能力来有效地处理大型神经网络。

1986年,Rumelhart,Hinton和Williams宣布了反向传播算法的发展,它们可以解决XOR等问题,于是又开启了神经网络时代。在同一年,出版了由Rumelhart和McClelland编辑的《Parallel Distributed Processing: Explorations in the Microstructures of Cognition(并行分布式处理:认知的微结构中的探索)》。这本书一直使得反向传播的影响力越来越大,目前,反向传播已经成为多层感知器训练中最流行的学习算法。

单层感知器(SLP)

最简单的感知器类型具有连接输入和输出的单层权重。这样,它可以被认为是最简单的前馈网络。在前馈网络中,信息总是向一个方向移动; 它永远不会倒退。

上图就是一个单层感知器,可以更容易地将概念接地和解释多层感知器中的概念。单层感知器表示了网络中一个层和其它层之间的连接的 m 权重,该权重可被看作是一组突触或连接链。此参数表明每个特征(Xj)的重要性。以下是输入的特征乘以它们各自的突触连接的加法器函数:

该偏差bk 作为对加法器函数的输出的仿射变换,Uk给出Vk诱导的局部域:

多层感知器(MLP)

多层感知器(也称为前馈神经网络)是由每一层完全连接到下一层的程序列组成。

一个多层感知器(MLP)具有一个或多个隐藏层以及输入层和输出层,每层包含几个神经元,这些神经元通过重量链路彼此互连。输入图层中的神经元数量将是数据集中属性的数量,输出图层中的神经元将是数据集中给出的类别数量。

图2显示了一个多层感知器,为了使体系结构更加深入,我们需要引入多个隐藏层。

参数初始化

初始化参数,权重和偏差在确定最终模型中起着重要作用。

一个好的随机初始化策略可以避免陷入局部最小值问题。局部最小值问题是当网络陷入误差曲面时,即使有足够的上升空间,学习时也不会在训练时下降。

初始化策略应根据所使用的激活功能进行选择。

激活函数

激活函数是根据诱导的局部域v来定义神经元的输出为:

其中φ()是激活函数。以下是常用的激活函数:

1.阈值函数

上图表明神经元是否完全活跃。但是,这个函数是不可微分的,这在使用反向传播算法时非常重要。

2.sigmoid函数
sigmoid函数是一个以0和1为界的逻辑函数,就像阈值函数一样,但是这个激活函数是连续的和可微的。

其中α是上述函数的斜率参数。此外,它本质上是非线性的,有助于提高性能,确保权重和偏差的微小变化引起神经元输出的微小变化。

3.双曲正切函数
φ(v)= tanh(v),该功能使激活功能的范围从-1到+1。

4.整流线性激活函数(ReLU)
ReLUs是许多逻辑单元之和的平滑近似,并产生稀疏活动向量。以下是函数的等式:

5.Maxout函数
2013年,Goodfellow发现使用新激活Maxout函数是dropout的最佳伴侣。

Maxout单元通过退出来促进优化并提高退出的快速近似模型平均技术的准确性。单个最大单位可以解释为对任意凸函数进行分段线性逼近。

Maxout网络不仅学习隐藏单元之间的关系,而且学习每个隐藏单元的激活功能。以下是它如何工作的图形描述:

图4显示了Maxout网络,每个隐藏单元有5个可见单位,3个隐藏单位。

反向传播算法

反向传播算法可以用来训练前馈神经网络或多层感知器。这是一种通过改变网络中的权重和偏差来最小化成本函数的方法。为了学习和做出更好的预测,会执行一些训练周期,在这些周期中,由成本函数确定的误差通过梯度下降反向传播,直到达到足够小的误差。

梯度下降

1.mini-batch梯度下降
比方说,在100个大小的mini-batch中,向学习算法显示了100个训练示例,并且相应地更新了权重。在所有mini-batch都按顺序呈现之后,计算每个时期的平均准确性水平和训练成本水平。

2.随机梯度下降
随机梯度下降用于实时在线处理,其中参数在仅呈现一个训练示例的情况下被更新,因此在每个时期对整个训练数据集取平均准确度水平和训练成本。

3.full batch梯度下降
在这种方法中,所有的训练样例都显示给学习算法,并且权重被更新。

成本函数

成本函数有很多种,以下是一些例子:

1.均方误差函数;

2.交叉熵函数;

3.负对数似然损失(NLL)函数。

学习率

学习速率控制从一次迭代到另一次迭代的权重变化。一般来说,较小的学习率被认为是稳定的,但会导致较慢的学习。另一方面,较高的学习率可能会不稳定导致振荡和数值误差,但会加快学习速度。

动量(Momentum)

动量为避免局部最小值提供了惯性,这个想法是简单地将以前的权重更新的一部分添加到当前的权重更新中,这有助于避免陷入局部最小值。

SOFTMAX

Softmax是一种神经传递函数,它是在输出层中实现的逻辑函数的一般形式,这些概率的综合为1且限定于1。

多层感知器(MLP)总结

对于分类任务,softmax函数可以包含在输出层中,它将给出每个发生类的概率。激活函数用于通过使用输入、权重和偏差来计算每个层中每个神经元的预测输出。

反向传播是通过修改它们之间的突触连接权重来训练多层神经网络,以基于需要连续和可微的纠错学习函数来提高模型性能。以下参数已在实验中评估过:

隐藏层的数量。
隐藏层中的神经元数量。
学习速度和动量。
激活功能的类型。

本文由@阿里云云栖社区组织翻译。

文章原标题《demystifying-generative-adversarial-networks》,

译者:虎说八道,审校:袁虎。

阅读原文
本文为云栖社区原创内容,未经允许不得转载。

关于神经网络,这里有你想要了解的一切!相关推荐

  1. 我的世界服务器搭建原理,我的世界自动化农场的建造与原理 这里有你想知道的...

    原标题:我的世界自动化农场的建造与原理 这里有你想知道的 我的世界中圈养动物.种植庄稼都可以被统称为"farm",而打理农场.收集农作物无疑是一件费时费力的事情,"懒惰& ...

  2. 关于证书,这里有你想知道的一切

    关于证书,这里有你想知道的一切 概览 术语 下列的某些术语其实在Java的权限控制框架中也经常见到: 实体(entity) entity可以是任何东西,即使是虚拟的,例如: 每个人类个体是一个enti ...

  3. 关于Facebook Messenger CRM,这里有你想要知道的一切

    关于Facebook Messenger CRM,这里有你想要知道的一切! 想把Facebook Messenger与你的CRM整合起来吗?这篇博文是为你准备的! 我们将介绍有关获得Facebook ...

  4. 手机收不到信号显示无服务器,路由器太远手机接收不到信号怎么办?这里有你想要的答案!...

    原标题:路由器太远手机接收不到信号怎么办?这里有你想要的答案! "极客谈科技",全新视角.全新思路,伴你遨游神奇的科技世界. 解决路由器太远信号不强,手机上网无法连接或者网络较差的 ...

  5. 关于IP,这里有你想知道的一切!

    关于IP,这里有你想知道的一切! 原创: 同盾反欺诈研究院 先知安全技术社区 2017-07-13 今日,就来跟大家聊聊关于IP地址方方面面的研究,其实可以归到三个问题上: 1.这个IP在哪儿? 2. ...

  6. 关于含光 800,这里有你想要的一切答案!

    整理 | 刘静 责编 | 郭芮 今天的杭州云栖大会上,达摩院院长张建锋现场重磅展示了一款全球最强的AI芯片--含光800.这颗自研芯片的问世,可以说给国产芯片史上留下了浓墨重彩的一笔. 张建锋说:&q ...

  7. 程序猿,这里有你想学的10门机器学习课程 | 资源

    Hung栗 编译自 Hackernoon  量子位 出品 | 公众号 QbitAI 一个程序猿,如果想在机器学习或者数据科学上补充一下能量,有哪些资源可以用? 来自印度的Javin Paul就是一只这 ...

  8. 九宫格图片怎么操作?这里有你想要的方法

    不知道平时小伙伴们在发朋友圈的时候有没有注意过很多人的朋友圈都会将很多图片拼起来,凑成九宫格图片来发送.这是因为朋友圈的限制,无法一次发完,每次最大上传只有9长照片.所以就有很多朋友一次拼齐9个图片在 ...

  9. 漫画脸特效是什么软件?这里有你想知道的答案

    小伙伴们平时在社交平台上,有看到一些人的头像是漫画脸吗?会不会很羡慕他们的这些头像呢?其实这些漫画脸头像,大部分都不是画出来的,而是使用特效滤镜制作出来的.目前市面上有很多工具都能做到这个操作,那你们 ...

最新文章

  1. 无意中发现了一位清华大佬的代码模版
  2. 开源电子工作套件 Arduino Start Kit 登场
  3. 51CTO手機軟件有病毒? 有網絡安全的高手嗎?
  4. 后端开发开发mac装机和开发环境指南(新手版)
  5. RXJava by Example--转
  6. 天天用Synchronized,底层原理是个啥?
  7. 【年终总结】2020年有三AI做了什么,2021年我们要做什么?
  8. 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))
  9. Python 递归函数 - Python零基础入门教程
  10. 睡眠者效应(Sleeper Effect):当下被拒绝,但其实已经
  11. java设置手指点击_java设置鼠标在jpanel时变为手指形状
  12. 构建samba文件共享服务器
  13. 感觉最近有多个机器人给吾博客评论
  14. Python 源码混淆与加密
  15. 3dmax塌陷在哪里?怎么用?
  16. 非平衡电桥电阻计算_详解用非平衡电桥如何测量电阻
  17. 用代码写个烟花之基础版
  18. 基于Java的vtt转txt程序
  19. java使用poi对excel文件的加密解密
  20. python判断对错题_Python爬虫自动化获取华图和粉笔网站的错题(推荐)

热门文章

  1. Ubuntu16.04安装系统之后软件无法安装
  2. 编写可靠Linux shell脚本的建议
  3. Eclipse中,Open Type(Ctrl+Shift+T)失效后做法。
  4. mybatis generator自动生成sqlmap代码的不完善之处以及解决方法
  5. spring boot之http,页面状态跳转与异常处理实战
  6. Python爬虫编程常见问题解决方法
  7. 问题解决:pip无法使用,经升级后可以使用
  8. MySQL把一个大表拆分多个表后,如何解决跨表查询效率问题
  9. 【java】javac命令在win10不可用,提示javac不是内部或外部命令,也不是可运行的程序【解决方法】
  10. 解决ActiveX Control异常:“没有注册类(异常来自 HRESULT:0x80040154(REGDB_E_CLASSNOTREG))“