我们压缩了一批深度学习进阶“传送门”给小白

2023-11-04

编译:ShanLIU、Chloe、笪洁琼、Harry 

作者:Seth Weidman

 

阅读这篇文章的必要性:

 

无论是作为行业内的从业者还是一个组织,在开始深度学习应用之前,都需要掌握两件事:


1. 知其然:掌握一个基础概念,知道深度学习的最新发展可以实现什么。


2. 知其所以然:训练一个新模型或在生产环境下运行一个已有模型的技术能力


得益于开源社区的优势,我们获得“知其所以然”能力的途径越来越多。网上有大量优质的教程,讲解如何训练、使用深度学习模型的技术细节,例如借助TensorFlow这样的开源软件库来实现。TensorFlow中的许多数据科学资讯每周都在更新相关信息。


这意味着,当你有了“如何使用深度学习”的初步想法,实施这一计划绝非易事,通常都伴随着标准的“开发”工作:


让你跟随下文提到的链接教程学习,修改模型以实现具体目的,或为特定的数据服务、阅读StackOverflow帖子来排查问题,诸如此类的指南。这类工作并不要求你,例如,雇佣一位拥有博士学位的“顶尖人才”,他可以从头开始编写原始的神经网络架构,而且是一名经验丰富的软件工程师。


这一系列的文章旨在填补第一部分能力的空缺。一方面,此文宏观地覆盖了基础概念,讲述深度学习能胜任哪些事;同时,为那些希望更全面、深入地学习并理解代码从而掌握第二部分的读者们提供资源


我会在下文展开更详细的描述:


1. 基于开源框架、数据集的深度学习,其最新成就有哪些?

2. 促进以上成就的关键框架或其他洞察力是什么?.

3. 可以从哪些优质资源入手,将相似的技术应用在自己的项目上?


这些重大突破有何共同点?

尽管这些突破涉及到很多新的框架和理念,却都是通过机器学习领域很常规的"监督式学习"过程实现的。


具体执行步骤如下


1. 收集大量的、合适的训练数据

2. 设立一个神经网络架构——由算式组成的复杂系统、在脑中简单的建立一个模型-其中有数百万参数被称作"权重"

3.  通过神经网络反复地输入数据;在每次迭代中,对神经网络的预测结果与正确结果进行对比,然后基于对比结果的偏差量、方向,调整神经网络的每一项权重。

上图展示了神经网络的训练过程:这一流程被反复执行无数次。

(更多信息:https://www.embedded-vision.com/platinum-members/cadence/embedded-vision-training/documents/pages/neuralnetworksimagerecognition)


这一过程被应用于许多不同领域,最后我们得到的是已经有所习得的神经网络。


在每一领域,我们将涵盖以下部分内容:


1. 训练模型所需的数据

2. 所使用的模型框架

3. 运行结果


一. 图片归类


神经网络可被训练于识别一张图片上所包含的一个或多个物体。


所需的数据


要训练一个图像分类器,你需要有标签分类的图片集,其中每一张图片归属于一系列限定类当中的一个。举个例子,CIFAR 10数据是一种用于训练图像分类器的标准化的数据集

(传送门:https://www.cs.toronto.edu/~kriz/cifar.html)

它将图片数据划分为10类:如下图,从左至右-左侧为类名,右侧一行显示该类下的图片元素,从上至下-飞机、汽车、鸟、猫、鹿、青蛙、马、船、卡车这十大类。

 

关于CIFAR-10 数据中的图片的解释

(更多信息:https://becominghuman.ai/training-mxnet-part-2-cifar-10-c7b0b729c33c%27)

 

深度学习框架


我们将覆盖到的所有神经网络框架都是受"人们是如何学习解决问题"这一想法而驱动的。那么对于图片识别是怎么做的呢?当人类判断一幅图片里有什么的时候,我们首先寻找概要层次的一些特征,例如说分支啊,鼻子,或者轮椅。然而,为了更好的观察这些概要特性,你不得不关注底层的详细特征,比如颜色、线条、其它的形状。实际上,从原始像素一步步关注到更复杂的人类可辨识的特性,比方说眼睛,我们需要先察觉像素的特征,随后去看这些细分特征本身的特性,等等。

在深度学习之前,研究人员会手动尝试去提取这些特性,并用于预测分析。在深度学习刚开始出现不久前,研究者们开始使用一些技术手段(主要是SVMs)

(传送门:https://crypto.stanford.edu/~pgolle/papers/dogcat.pdf)

比方说,试图寻找这些手工筛选出的特征值与"这张图片上到底是一只猫还是狗"这两者之间的复杂的、非线性关系。


卷积神经网络在每一层抽取特征值

(更多信息:https://www.strong.io/blog/deep-neural-networks-go-to-the-movies)


目前,研究人员已经开发出了能够自主学习原始像素特征值的神经网络框架;具体来说,也就是深度卷积神经网络框架。这些网络能够抽取像素的特征,然后识别像素特征的附属特征,诸如此类,最终通过一层常规神经网络层(类似于逻辑回归),来进行最后的预测。


关于一个主流卷积神经网络预测的样本,分析对象是ImageNet数据集的图片


放心~我们会在未来的一篇文章中深入探讨关于卷积神经网络是如何用于图片分类的。现在继续来看刚才的话题。


成果


作为结果,在分配给这些框架的中心任务-图片分类,算法现在可以输出优于人工的结果了。在著名的ImageNet数据集中(最常被作为卷积神经网络框架的标杆),

(传送门:http://www.image-net.org/challenges/LSVRC/)

在图片分类这一任务上,经过训练的神经网络现在可以取得"优先于人类"的表现:


2015年,计算机可以被训练对图片中的目标物体进行分类, 并取得了比人类更好的表现

(更多信息:https://devblogs.nvidia.com/parallelforall/mocha-jl-deep-learning-julia/)


此外,研究人员找到了方法,将那些不能立即适用于当前图片类的图片定位,用一个矩形分隔出来,这一图片极有可能代表着某些特定类的目标物,通过卷积神经网络(CNN)来补给每一个矩形中的图片类数据,最后呈现的结果是每一张图片中的物体根据其所属的类的不同,被包围在一个个独立的矩形框里(这被称为"限位框")。

 

 使用“Mark R-CNN”进行目标检测

(更多信息:https://arxiv.org/pdf/1703.06870.pdf)


这一整个多步骤的流程在技术上称作"目标检测",尽管它在最有挑战性的一步中使用了图像分类。


资源


理论关于CNN为什么奏效的深入阅读,请移步Andrej Karpathy的斯坦福系列教程(传送门:http://cs231n.github.io/convolutional-networks/)

如果要了解一个更偏重数理模型的版本,请在这查阅Chris Olah的卷积系列文章。

(传送门:http://cs231n.github.io/convolutional-networks/)


代码准备开始构建一个图片分类器,请查看这个来自于TensorFlow文档的介绍性的例子

(传送门:https://www.tensorflow.org/tutorials/layers)


二. 文本生成


神经网络可以被训练以生成文本-模拟生成与给定类型相似的文本。

 

所需数据

 

直接输入某一特定类的文本,比方说,莎士比亚的所有作品。

 

深度学习框架


神经网络可以在一个系列的元素里去推断下一个元素是什么。它能参考之前输入的字符的顺序,根据给定的一串已经输出来的字符,来预测哪一个字符会在下一个出现。

用于该问题的这个框架与适用于图片分类器的框架是有差异的。由于框架不同,我们所要求网络学习的事情也不同。以前,我们是在要求它学习一张图片当中有哪些特征是重要特征。在这,我们则期望它注意到字符顺序,来预测未来字符出现的顺序。为了做到这一点,不像是图片分类器,这网络需要一种方式来记录它的"状态"。比方说,它看到的前一串字符是 “c-h-a-r-a-c-t-e”,这个网络应该有能力存储这一瞬时信息,预测到下一个字符应该是r。

 

一个循环神经网络框架(RNN)可以实现如下操作:在迭代过程中,它将每一个神经元的状态反馈回去神经网络给到下一次迭代作为输入,从而帮助该神经网络学习识别对象的排序顺序。

 

其实远不止这些内容,我们稍后再回到这个话题:)

 

循环神经网络(RNN)架构图

(更多信息:https://medium.com/@erikhallstrm/hello-world-rnn-83cd7105b767)


但是,为了真正做好文本生成,除了具备上述能力外,RNN还必须能够决定在序列中向后反馈的长度。有时候,比如在单词中部,RNN只需查看最新几个的字母就可以确定下一个字母,而其他时候可能需要查看多个字母来确定,比如在句子末尾。


有一种特殊的单元类型,“LSTM”(长期短期记忆)单元,这一点上做得特别好。每个单元根据单元内的权重来决定是 “记住”还是“忘记”,权重根据RNN看到的每个新字母随时更新


LSTM单元内部工作原理

(更多信息:https://medium.com/@erikhallstrm/hello-world-rnn-83cd7105b767)


成果


简而言之:我们可以生成文本,它有我们希望得到的文本所有的特质,同时减少拼写错误的单词、避免不像正常英语的错误。Andrej Karpathy的这篇文章提供了一些有趣的例子,从生成莎士比亚戏剧到Paul Graham散文。

(传送门:http://karpathy.github.io/2015/05/21/rnn-effectiveness/)

用同样的网络架构,通过顺序地生成x和y坐标,得到手写体,正如通过一个个字母生成语句一样。请查看这个演示。

(传送门:https://www.cs.toronto.edu/~graves/handwriting.cgi)

(更多信息:https://www.cs.toronto.edu/~graves/handwriting.cgi?text=Handwriting&style=&bias=0.15&samples=3)


神经网络的生成的手写字迹。可以称之为 “手”写吗?


我们会在后续文章中进一步讨论RNN和LSTMs的工作原理。


资源


理论Chris Olah关于LSTMs的文章是经典,(传送门:http://colah.github.io/posts/2015-08-Understanding-LSTMs/)

Andrej Karpathy关于RNN的文章也是经典,(传送门:http://karpathy.github.io/2015/05/21/rnn-effectiveness/)讲解了它们可以实现什么,它们是如何工作的。


代码:这是一个很好的演练,教你如何建立端到端的文本生成模型,包括数据预处理。然后这个GitHub repo是用预训练的RNN-LSTM模型生成手写体。


三.语言翻译


机器翻译 ——翻译语言的能力——是AI研究人员长久以来的梦想。深度学习使这一梦想更接近现实。


所需数据


不同语言同一意思的语句对。例如,“I am a student”和“je suis étudiant”可能出现在一个用于训练英语法语互译的神经网络的数据库里。


深度学习架构


与建立其他深度学习架构一样,研究人员先“假设”计算机可能的理想地学习翻译语言的过程,建立了一个模仿这一过程的架构。通过语言翻译,基本上,一个句子(编码成单词序列)应该被翻译成其本质上的“含义”。这个含义再被翻译成另一种语言的单词序列。


句子从单词“转化”成含义的过程应该是一个擅长处理序列的架构——就是上述的“循环神经网络”架构


编码-解码架构图解

(更多信息:https://github.com/tensorflow/nmt/tree/tf-1.2)


2014年首次发现这一架构在语言翻译上效果不错,此后扩展到很多方向。


成果


这篇Google博客文章显示,这一架构圆满完成了它所要完成的任务,把其他语言翻译技术甩在后面。当然,也因为Google投入了大量的训练数据来完成这项任务!

(传送门:https://research.googleblog.com/2016/09/a-neural-network-for-machine.html)


Google序列到序列模型的表现

(更多信息:https://research.googleblog.com/2016/09/a-neural-network-for-machine.html)


资源


代码和理论:


Google发表了一个关于序列到序列架构的极好的教程。这一教程给出了序列到序列模型的目标和理论知识概述,还指导TensorFlow中的代码实现。教程还涉及“关注”,基本序列到序列架构的扩展,我会在详细讨论序列到序列模型时涉及它。

(传送门:https://github.com/tensorflow/nmt/tree/tf-1.2)


四.生成对抗网络


所需数据


特定类型的图像——比如,大量脸部的图像。


深度学习架构


GANs是一个惊喜而重要的成果——Yann LeCun。


全世界领先的AI研究者之一,说过“在我看来,GANs是过去十年机器学习领域最有趣的想法。”事实证明,我们可以生成看起来像一组训练图像,但实际上并不是这组训练集的图像:比如,看起来像脸部,但实际上不是真实脸部的图像。这是通过同时训练两个神经网络来完成的:一个产生看起来真实的虚假图像,一个检测这些图像是真是假。如果你训练这两个网络“以相同的速度”学习——这是构建GAN的难点 ——生成假图像的网络事实上能够生成看起来相当真实的图像。


说一点细节:我们想用GANs训练的主要网络称为生成器:学习接收一个随机噪声向量,并将其转换成逼真的图像。这个网络有来自卷积神经网络的“逆”结构,因此被贴切地称为“去卷积”架构。另一个鉴别真实和伪造图像的网络是卷积网络,就像用于图像分类的卷积网络一样,被称为“鉴别器”

                                                                                                  

“生成器”的去卷积架构

(更多信息:https://medium.com/@awjuliani/generative-adversarial-networks-explained-with-a-classic-spongebob-squarepants-episode-54deab2fce39)

“鉴别器”的卷积架构

(更多信息:https://medium.com/@awjuliani/generative-adversarial-networks-explained-with-a-classic-spongebob-squarepants-episode-54deab2fce39)


GANs的两个神经网络都是卷积神经网络,因此这两个神经网络都特别擅长图像特征提取。


成果和资源

 

GAN基于名人脸部数据库生成的照片

(更多信息:https://medium.com/@awjuliani/generative-adversarial-networks-explained-with-a-classic-spongebob-squarepants-episode-54deab2fce39)


代码:这个GitHub repo是一个用TensorFlow训练GANs的好教程,还包含一些由GANs生成的惊人图像,比如上面的那个。

(传送门:https://github.com/carpedm20/DCGAN-tensorflow)


理论:Irmak Sirer的这个演讲是一个有趣的对GANs的介绍,同时涉及许多监督学习的概念,会帮助你理解上文的发现。

(传送门:https://github.com/carpedm20/DCGAN-tensorflow)


最后,优秀的Arthur Juliani还有一个有趣的,形象的GANs的详解,还有用TensorFlow实现的代码。

(传送门:https://medium.com/@awjuliani)


总结


本文对深度学习在过去五年取得的巨大突破做了高度总结。以上我们讨论的所有模型都有很多开源实例。这意味着你基本都能下载“预训练”模型,应用于你的数据——比如,你可以下载预训练图像分类器,给它输入自己的数据,用来对新图像分类,或是圈出图像中的物体。因为大部分的工作已经为你做好了,所以使用这项尖端科技的工作并不是“研究深度学习”本身——研究员们已经为你解决了绝大部分——而是做“发展”工作,让其他人建立的模型更好地用于你的问题。

希望你现在对深度学习模型的功能有了更深入的了解,离真正使用它们又更近了一步!


原文链接:https://towardsdatascience.com/the-5-deep-learning-breakthroughs-you-should-know-about-df27674ccdf2




稀牛学院+网易云课堂

隆重推出人工智能系列公开课


业内一线大咖

稀牛王牌助教

带给你最贴心的全套学习指南!

入门 转行 应用

资料 答疑 互动


扫码,直播定制+直播预告+免费资料等你来领哦



志愿者介绍

回复志愿者”加入我们

往期精彩文章

点击图片阅读

你看到哪版电影海报,由算法决定:揭秘Netflix个性化推荐系统

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我们压缩了一批深度学习进阶“传送门”给小白 的相关文章

随机推荐

  • CSS —— line-height详解

    本文导读 行高 指一行文子的高度 具体来说是指两行文子间基线间的距离 在CSS line height被用来控制行与行之间的垂直距离 line height 属性会影响行框的布局 在应用到一个块级元素时 它定义了该元素中基线之间的最小距离而
  • c语言蜂鸣声音音乐代码

    include include
  • 单例(Singleton)设计模式

    单例 Singleton 设计模式 1 概念 某个类只能存在一个对象实例 并且该类只提供一个取得该对象实例的方法 2 实现方式 懒汉式 这种写法线程不安全 package com lmwei p20 import com sun org a
  • SQL 高级查询

    select from score select from Student 统计函数 count总数 max最大 min最小 avg平均 sum求和 count select count from Student max select ma
  • 公有链VS联盟链

    相信有人也听说过区块链分为公有链 私有链和联盟链 那么 它们三者有何区别 业内外人士对于该采用哪种类型的区块链看法不一 并引发了诸多围绕公有链 联盟链与私有链的争论 但是业内普遍认为联盟链与私有链实属一类 目前金融机构多偏向私有链 但也有人
  • 详解vue中diff算法

    详解vue中diff算法 vue中diff算法 作用 1 真实DOM和虚拟DOM 2 diff的比较方式 diff涉及到的函数 总结 vue中diff算法 本质 找出两个对象之间的差异 核心 子节点数组进行比较 首尾两端对比 作用 渲染真实
  • halcon——缺陷检测常用方法总结(模板匹配(定位)+差分)

    引言 机器视觉中缺陷检测分为一下几种 blob分析 特征 模板匹配 定位 差分 光度立体 halcon 缺陷检测常用方法总结 光度立体 唯有自己强大 博客园 cnblogs com 特征训练 测量拟合 频域 空间域结合 halcon 缺陷检
  • 射极跟随器实验报告数据处理_射极跟随器实验报告

    射极跟随器实验报告 由会员分享 可在线阅读 更多相关 射极跟随器实验报告 3页珍藏版 请在人人文库网上搜索 1 实验六 射极跟随器一 实验目的l 掌握射极跟随器的特性及测量方法 2 进一步学习放大器各项参数的测量方法 二 实验原理下图为射极
  • 自定义异常 raise 关键字

    目录 自定义抛出异常关键字 raise 使用raise主动引发异常 raise 关键字的用法 触发异常 自定义异常类 python从小白到总裁完整教程目录 https blog csdn net weixin 67859959 articl
  • 移动端安全通信的利器——端到端加密(E2EE)技术详解

    前言 端到端加密允许数据在从源点到终点的传输过程中始终以密文形式存在 采用端到端加密 又称脱线加密或包加密 时消息在被传输时到达终点之前不进行解密 因为消息在整个传输过程中均受到保护 所以即使有节点被损坏也不会使消息泄露 端到端加密系统与链
  • jsoncpp库使用实例

    jsoncpp与json json是什么 JSON JavaScript Object Notation 是一种轻量级的数据交换格式 它是一种文本格式 它实际上是一种独立于编程语言的数据格式 几乎所有现代编程语言都支持解析和生成JSON数据
  • C++回文子串

    回文子串 给定一个字符串 你的任务是计算这个字符串中有多少个回文子串 回文串是一个正读和反读都一样的字符串 具有不同开始位置或结束位置的回文串 即使是由相同的字符组成 也会被计为是不同的子串 输入 仅包含一个字符串 长度不会超过 1000
  • RSA私钥及公钥生成

    1 生成密钥 cmd 进入jdk的bin目录下 输入如下命令 keytool genkey alias xxxx keyalg RSA keysize 1024 storetype pkcs12 keystore D xxxx p12 会出
  • xml文件的注释展示

    xml文件的注释格式 lt 被注释的内容 gt 注释不能嵌套定义 XML可以从HTML中分离数据 即能够在HTML文件之外将数据存储在XML文档中 这样可以使开发者集中精力使用HTML做好数据的显示和布局 并确保数据改动时不会导致HTML文
  • Latex中的(左边有大括号的)方程组解决方案汇总

    CODE begin equation begin cases eq1 eq2 end cases end equation 对于不需对齐的方程组这样写比较方便 需要对齐的时候间距太大了 有时候需要对齐 这时候我用 CODE begin e
  • 欢迎来到 C# 9.0(Welcome to C# 9.0)

    C 9 0 已于 2020年11月10日 正式发布了 请点击链接转至 C 9 0 正式发布了 C 9 0 on the record 阅读最新版内容 https mp weixin qq com s b7yd5FoR6jDrhx8K 310
  • php 返回header,PHP header返回http头类型大全 header( Content-T

    php 代码库 定义编码 header Content Type text html charset utf 8 Atom header Content type application atom xml CSS header Conten
  • qt5.5.1 linux 64下载,[更新]Qt Enterprise v5.5.1正式发布[附下载]

    原标题 更新 Qt Enterprise v5 5 1正式发布 附下载 Qt最早诞生于1991年 长期以来一直以 linux平台下 最著名的开发平台 身份 在全世界开发者中享有盛誉 Qt Enterprise是目前最先进 最完整的跨平台C
  • 这个Chrome 插件,让你的GPT无比丝滑!

    ChatGPT的官网最近几天报错越来越频繁了 相信大家都发现了 一旦你离开页面时间比较久 再度返回跟它进行对话 就会出现如下报错 虽然这个报错信息以前也出现过 但现在的频率确实过高 对于每天需要使用 ChatGPT 处理大量任务的用户来说
  • 我们压缩了一批深度学习进阶“传送门”给小白

    编译 ShanLIU Chloe 笪洁琼 Harry 作者 Seth Weidman 阅读这篇文章的必要性 无论是作为行业内的从业者还是一个组织 在开始深度学习应用之前 都需要掌握两件事 1 知其然 掌握一个基础概念 知道深度学习的最新发展