深度学习入门指南

深度学习入门指南

大家好,又见面了,我是全栈君。

更多深度文章,请关注:https://yq.aliyun.com/cloud
1.jpeg

简介

机器学习技术为现代社会的许多领域提供了强大的技术支持:从网络搜索到社交网络的内容过滤,再到电子商务网站的产品推荐。机器学习技术正越来越多的出现在消费级产品上,比如照相机和智能手机。 机器学习系统可用于识别图像中的对象,将语音转换成文本,选择搜索结果的相关项,以及匹配新闻、帖子或用户感兴趣的其他东西。 类似的应用越来越多,它们都使用了一种叫做深度学习的技术。

深度学习(也称为深层结构学习、层次学习或深度机器学习)是基于对数据中的高级抽象进行建模的算法,它属于机器学习的分支。最简单的例子,你可以有两组神经元:接收输入信号的神经元和发送输出信号的神经元。当输入层接收到输入时,它将输入的修改版本传递给下一层。在深层网络中,输入和输出层之间有很多层(层并不是由神经元构成,这里只是为了帮助你思考),这些层允许算法使用多个处理层,这些层包含了多个线性和非线性变换。

近来,深度学习技术使得机器学习发生了革命性的变化,并出现了很多伟大的成果。 它们大大改进了语音识别、视觉对象识别、对象检测以及许多其他领域(如药物发现和基因组学)的技术。 “深度学习”这个术语最早由Dechter(1986)引入机器学习,由Aizenberg等人(2000)引入人工神经网络(NN)。 深度学习的进一步普及得益于由Alex Krizhevsky发明的被称为“AlexNet”的卷积网络架构的出现。“AlexNet”在2012年的ImageNet比赛中击败了其他所有的图像处理算法,开创了在图像处理中使用深度学习架构的先河。

深度学习架构

  1. 生成式深度架构,旨在描述用于模式分析或合成目的的观测数据或可见数据的高阶相关特性,以及描述可见数据及其关联类的联合统计分布的特征。在后一种情况下,使用贝叶斯规则可以将这种类型的架构变成辨别式深度架构。
  2. 辨别式深度架构,旨在直接提供模式分类的辨别力,通常通过描述基于可见数据种类的后验分布来描述。
  3. 混合式深度架构,其目的是辨别,但通常辅以通过更好的优化或规则化的生成架构的结果,或者是其辨别标准被用来学习类别1中的任何一个深度生成模型的参数

尽管深度学习架构的分类很复杂,但在实践中经常用到的有深度前馈网络卷积网络循环网络

深度前馈网络

前馈网络,通常被称为前馈神经网络多层感知器(MLP),它是典型的深度学习模式。

前馈网络的目标是逼近某个函数f。例如,对于一个分类器,y=f(x)表示的是将输入x映射到类别y。前馈网络定义了一个映射 y=f(x;θ),并学习能产生最佳逼近函数的参数θ的值。

简单来说,网络可以定义为输入、隐藏和输出节点的组合。数据从输入节点流入,在隐藏节点中进行处理,然后通过输出节点产生输出。信息流经从x评估的函数,通过用于定义f的中间计算,最后到输出y。该网络中没有反馈连接,其中模型的输出反馈到自身,因此模型被称为前馈网络。该模型如图[1]所示。

2.png
图[1]:前馈神经网络

卷积神经网络

3.png
Source

在机器学习中,卷积神经网络(CNN或ConvNet)是一种前馈人工神经网络,其神经元之间的连接模式是受动物视觉皮层组织的启发而发明出来的。

个别皮质神经元对受限区域的刺激响应称为感受野。不同神经元的感受野部分重叠,这使得这些感受野像瓦片一样平铺。

单个神经元对其感受野内的刺激的反应可以用卷积运算近似地数学化。卷积网络的灵感来自于生物学,是多层感知器的变体。它在图像和视频识别、推荐系统和自然语言处理中具有广泛的应用。

LeNet是第一个卷积神经网络,它推动了深度学习领域的发展。自1988年以来,Yann LeCun的这项开创性工作多次成功迭代后成为了LeNet5。当时的LeNet架构主要用于字符识别,如阅读邮政编码、数字等等。

4.png
图[2]:一个简单的卷积神经网络模型

ConvNet有四个主要组件,如图2所示:

  1. 卷积层
  2. 激活函数
  3. 池化层
  4. 完全连接层

卷积层

卷积层基于术语“卷积”,它是对两个变量执行数学运算(f*g),以产生第三个变量。 它与互相关类似。 卷积层的输入是一幅 m x m x r 的图像,其中m是图像的高度和宽度,r是通道数,例如,对于RGB图像,r = 3 。 卷积层有大小为n x n x q的k个过滤器(或内核),其中n小于图像的维度,并且q小于等于通道数r,并且每个内核都可以不同。

激活函数

要实现复杂的映射函数,需要有非线性的激活函数,这样引入非常重要的非线性属性,使之能够近似于任何函数。激活函数对于压缩来自神经元的无界线性加权和也是非常重要的。这对于避免在处理层次上积累高值非常重要。有很多经常被用到的激活函数,比如Sigmoid、tanh和ReLU。

池化层

池化是一个基于样本的离散化过程。它的目标是对输入表示(图像、隐藏层输出矩阵等等)进行降采样,减少其维度,并允许对包含在子区域中的特征进行假设。

这样做的部分原因是为了提供一种抽象的表示形式来避免过度拟合。同样,它通过减少要学习的参数个数来降低计算成本,并为内部表示提供基本的转化恒定性。

比较突出的池化技术有:最大池化最小池化平均池化

5.png
图[3]:2*2过滤器的最大池化示例

完全连接层

术语“完全连接”意味着上一层中的每个神经元都连接到下一层的每个神经元。完全连接层是传统的多层感知器,它使用softmax激活函数或输出层中的任何其他类似函数。

循环神经网络

在传统的神经网络中,我们假设所有的输入(和输出)是相互独立的。但是对于许多的任务来说,这是一个很糟糕的假设。如果你想预测一个句子中的下一个单词,你最好知道哪些前面的单词是什么。 RNN之所以称为循环,因为它们对序列的每个元素执行相同的任务,而输出依赖于先前的计算。还有一种理解RNN的方法,我们可以认为它有“记忆”的,它会捕获到截至目前计算出来的所有信息。

RNN中有循环,这使得在读入输入时能够跨神经元传递信息。在图[4]中,x_t是某种输入,A是RNN的一部分,h_t是输出。RNN有一些特殊的类型,比如LSTM、双向RNN,GRU等等。

6.png
图[4]:RNN模型

RNN可用于NLP、机器翻译、语言建模、计算机视觉、视频分析、图像生成、图像字幕等,这是因为在RNN中可以放置任意数量的输入和输出,并让它们一一对应、多对多对应。它架构存在多种形式,如图[5]所示。

7.png
图[5]:RNN描述了对矢量序列的操作

应用

在深度学习领域已经有了很多的研究,并且有很多特别的问题都使用深度学习模型得到了解决。这里有一些深度学习方面的优秀应用:

黑白图像彩色化

深度学习可用于参照照片中的对象及其上下文来对图像进行着色,就像人类进行着色一样。这个应用需使用非常大的卷积神经网络和监督层,通过添加颜色来重现图像。

机器翻译

文本翻译可以在没有对序列进行任何预处理的情况下进行,它允许算法学习单词之间的依赖关系及其与另一种语言之间的映射。大型LSTM循环神经网络的堆叠网络可用于机器翻译。

照片中物体的分类及检测

该任务是将照片中的对象归类到已知的对象组中去。在样例评测中,通过使用非常大的卷积神经网络能够获得非常好的结果。 Alex Krizhevsky等人在ImageNet分类中取得的突破性成果,被称为AlexNet。

自动手写生成

给定一个手写示例语料库,然后为给定的单词或短语生成新的笔迹。在笔迹样本被创建时,笔迹将作为一系列的坐标提供给笔。通过这个语料库,算法会学习笔的运动与字母之间的关系,然后生成新的示例。

自动打游戏

在这个应用中,模型将学习如何仅基于屏幕上的像素点来玩电脑游戏。这在深度增强模型领域中是一个非常难的任务,因为这个,DeepMind(现在是Google的一部分)赢得了很高的声誉。

生成模型聊天机器人

使用基于序列的模型来创建聊天机器人,该机器人在很多真实的对话数据集上进行训练,并学会生成自己的答案。要了解更多的详细信息,请访问这个链接

总结

从本文可以得到这样的结论:深度学习模型可以用于各种任务,因为它能够模拟人脑。截止目前,专家们已经在这方面做了大量的研究,而且在不久将还有许多研究工作要做。尽管目前还存在信任问题,但在不久的将来,这个问题将会变得更加明朗。

文章原标题《A Beginners Guide to Deep Learning》,作者:Kumar Shridhar,译者:夏天,审校:主题曲。

文章为简译,更为详细的内容,请查看原文

本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/108097.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • javascript原生态ajax_ajax22

    javascript原生态ajax_ajax22(对低版本的ie不作兼容处理了,太过时,不知道谁还用) 本次演示采用原生javascript+php实现ajax的 post 和 get功能; 对php不了解的同学不用担心,就两三行代码,而且我会详细说明; 好了,下面开始: 第一步:如果想要运行起来,那么还是需要开启服务器的,这里推荐使用wampserver,        下载相应的

  • 时间戳转换为Date

    时间戳转换为Date本章主要讲解的是,因为数据库储存时间是以int(11)的形式去储存,后期获取之后转化成DATE形式老是与正确时间对不上。1、获取当前时间的时间戳//除以1000为了获取精确到秒的时间戳,不除以1000得到毫秒的时间戳Stringtimestamp=String.valueOf(newDate().getTime()/1000);returnInteger.va…

  • js字符串转date类型_java字符串转double

    js字符串转date类型_java字符串转double//字符串转日期时间格式getDate(strDate){vardate=eval(‘newDate(‘+strDate.replace(/\d+(?=-[^-]+$)/,function(a){returnparseInt(a,10)-1;}).match(/\d+/g)+’)’);returndate;},

  • Pycharm2020.1安装中文语言插件教程,不需要汉化

    Pycharm2020.1安装中文语言插件教程,不需要汉化方法一(在搜索不到插件):1.安装好Pycharm并打开Pycharm2.打开File,找到Settings并打开3.打开Settings中的Pulgins,选择Marketplace,搜索chinese出现下图这个就可以在线安装,不出现离线安装(方法二)方法二(推荐):1.查看Pycharm版本help–about2.打开中文插件的下载地址(https://plugins.j…

  • mobilenet改进_常用的轻量化网络

    mobilenet改进_常用的轻量化网络摘要最近出了一篇旷视科技的孙剑团队出了一篇关于利用ChannelShuffle实现的卷积网络优化——ShuffleNet。我关注了一下,原理相当简单。它只是为了解决分组卷积时,不同featuremaps分组之间的channels信息交互问题,而提出ChannelShuffle操作为不同分组提供channels信息的通信的渠道。然而,当我读到ShuffleNetUnit和Network…

  • Decorator 单一职责模式[通俗易懂]

    Decorator 单一职责模式[通俗易懂]单一职责模式动机模式定义案例结构要点总结笔记动机在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多的子类的膨胀如何使“对象功能的扩展”能够根据需要来动态实现?同时避免”扩展功能的增多“带来的子类膨胀问题?从而使得任何任何”功能扩展变化“所导致的影响将为最低?模式定义动态(组合)地给一个对象增加一些额外的职责。就增加功能而言Decorator模式比生成子类

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号