2018-05-14 12:55:25 sinat_33718563 阅读数 8790
  • 深度学习基础与TensorFlow实践教程

    本课程主要介绍了深度学习的基础原理和TensorFlow系统基本使用方法。TensorFlow是目前机器学习、深度学习领域优秀的计算系统之一,本课程将结合实例介绍使用TensorFlow开发机器学习应用的详细方法和步骤,着重讲解了用于图像识别的卷积神经网络和用于自然语言处理的循环神经网络的理论知识及其TensorFlow实现方法,并结合实际场景和例子描述了深度学习技术的应用范围与效果。 所有案例均来自讲师团队工作中的亲身实践,所选案例均是深度学习的经典应用,非常具有代表性。

    21448 人正在学习 去看看 AI100讲师

这些应用场景都是商汤科技目前的核心技术实现,商汤科技是一家提供企业级产品的AI技术公司,其专注的领在于计算机视觉和深度学习,目前主要精力投放在移动互联网、安防、金融领域,目前也在智能硬件、医疗、教育等业务线在快速布局。

  • 人脸技术 
    • 人脸检测跟踪
    • 人脸关键点定位
    • 人脸身份认证
    • 人脸属性
    • 人脸聚类
    • 真人检测
    • 人脸美容/美妆
  • 图像识别 
    • 服装属性识别
    • 物体识别
    • 场景识别
    • 车型识别
  • 智能监控 
    • 行人车辆检测
    • 行人属性
    • 人群分析
  • 文字识别 
    • 文字识别-票据类
    • 文字识别-卡证类
    • 车牌识别
  • 图像及视频编辑

人脸技术


人脸检测跟踪 
这里写图片描述


人脸关键点定位 
这里写图片描述


人脸身份认证 
这里写图片描述


人脸属性 
这里写图片描述


人脸聚类 
这里写图片描述


真人检测

这里写图片描述

人脸美容/美妆

这里写图片描述



图像识别


服装属性识别

这里写图片描述

物体识别

这里写图片描述

场景识别

这里写图片描述

车型识别

这里写图片描述



智能监控


行人车辆检测

这里写图片描述

行人属性

这里写图片描述

人群分析

这里写图片描述



文字识别


文字识别-票据类

这里写图片描述

文字识别-卡证类

这里写图片描述

车牌识别

这里写图片描述


  原文出处:

https://blog.csdn.net/lwplwf/article/details/72818919

2017-04-21 12:18:35 WZZ18191171661 阅读数 1583
  • 深度学习基础与TensorFlow实践教程

    本课程主要介绍了深度学习的基础原理和TensorFlow系统基本使用方法。TensorFlow是目前机器学习、深度学习领域优秀的计算系统之一,本课程将结合实例介绍使用TensorFlow开发机器学习应用的详细方法和步骤,着重讲解了用于图像识别的卷积神经网络和用于自然语言处理的循环神经网络的理论知识及其TensorFlow实现方法,并结合实际场景和例子描述了深度学习技术的应用范围与效果。 所有案例均来自讲师团队工作中的亲身实践,所选案例均是深度学习的经典应用,非常具有代表性。

    21448 人正在学习 去看看 AI100讲师

随着“大数据时代”的到来和计算能力的提升,深度学习成为了一种很火的新科技。已经成功的应用到了很多个领域中。包括“计算机视觉”“语音识别”“自然语言处理”等。为了进行高效的开发一个深度学习系统,许多大型科技公司都推出了自己的深度学习框架。而且,最近这段时间接二连三的有新的“深度学习”框架推出。自己感觉有必要做一个总结,来收集一下这些深度学习框架。

但是,在此同时,我有一个问题,真的需要这么多的深度学习框架吗?在科技领域为什么看不到合作呢?众多的深度学习框架,企业和个人如何选择一个适合自己的框架呢?

以下,我将围绕着几个问题展开整篇博客的内容。

1、前言

首先,让我们看一下,当前都有哪些深度学习框架?我会列出相应的链接,方便大家的访问。(我会不断地更新这个列表)

1.Tensorflow – https://www.tensorflow.org/
github – https://github.com/tensorflow/tensorflow

2.Caffe – http://caffe.berkeleyvision.org/
github – https://github.com/BVLC/caffe

3.Theano – http://deeplearning.net/software/theano/install.html
github – https://github.com/Theano/Theano

4.keras – https://keras.io/
github – https://github.com/fchollet/keras

5.Torch – http://torch.ch/
github – https://github.com/torch/torch7

6.Lasagne – http://lasagne.readthedocs.io/en/latest/
github – https://github.com/Lasagne/Lasagne

7.MXNet – http://mxnet.io/
github – https://github.com/dmlc/mxnet

8.DIGITS – https://developer.nvidia.com/digits
github – https://github.com/NVIDIA/DIGITS

9.CNTK – https://cntk.codeplex.com/
github – https://github.com/Microsoft/CNTK

10.PaddlePaddle – http://www.paddlepaddle.org/
github – https://github.com/PaddlePaddle/Paddle

11.Deeplearning4j – https://github.com/deeplearning4j/
deeplearning4j

12.tensorlayer – http://tensorlayer.readthedocs.io/en/latest/
github – https://github.com/zsdonghao/tensorlayer

13.TFLearn – http://tflearn.org/tutorials/
githu – https://github.com/tflearn/tflearn

14.caffe2 – https://caffe2.ai/
github – https://github.com/caffe2/caffe2

15.pytorch – http://pytorch.org/
github – https://github.com/pytorch/pytorch

16.Leaf – http://autumnai.com/leaf/book/
github – https://github.com/autumnai/leaf

17.Chainer – http://chainer.org/
github – https://github.com/pfnet/chainer

18.DSSTNE
github – https://github.com/amznlabs/amazon-dsstne

19.Neon
github – https://github.com/NervanaSystems/neon

2、性能分析

接下来,让我们简单的比较一下它们的性能,能存在总会有理由的,它们都有自己的特点。
以下的表格是一个有关于各个深度学习框架的一个对比:

这里写图片描述

注:
1.从这个表格我们可以看出,当前比较受欢迎的深度学习框架包括:tensorflow、caffe、keras、CNTK、MXNet、Torch、Theano。工业界中常用的包括:tensorflow、caffe、CNTK、MXNet、Torch。学术界常用的包括:keras、theano。

2.这个表格中的部分数据来自于互联网,可能存在着一定的误差吗,但是总的来说具有一定的参考价值。

3、问题探讨

通过上面的表格,我们会发现有很多的深度学习框架。那么,我们该如何选择一个适合自己的深度学习框架呢?你需要根据你自己的实际需要选择合适的框架。需要考虑的主要因素包括:开发语言、硬件平台、操作系统等

> a. 开发语言
> 通过上面的表格我们可以总结出深度学习支持的开发语言包括:
>Python/C++/R/Julia/Scala/Go/Javascript/Perl/Matlab
>/Lua/Cuda/JAVA/Rust等。但是最常用的两种开发语言是:Python和C++。主要的原因如下所示:
> 
> 1) python非常简单,很容易上手,但是运行的效率比较低,因此常用来快速的搭建深度学习中的网络模型。
> 2)C++的语法众多,需要自己分配并处理内容,开发代码冗长,但是运行效率很高,因此常用来作为深度学习中的终端引擎来使用。
> 如果你自己不熟悉Python或者C++,你可以使用的框架就非常的有限;
> 如果你熟悉Python或者C++,你几乎可以使用任何一种深度学习框架;
> 如果你是一名JAVA爱好者,你更可能会选择利用Deeplearning来进行开发。
> 
> 因此,开发语言是一个限制你使用深度学习框架的一个关键因素。你需要根据你自己的实际情况选择。
> 
> b. 硬件平台
> 通过上面这个表格,我们可以总结出当前的深度学习框架支持的硬件平台包括:CPU、GPU、Andriod、IOS、FPGA、ARM等多种平台。
> 如果你的电脑不支持GPU,你就只能选择其他的平台;
> 如果你自己擅长GPU,你可以使用的框架就很多;
> 如果你的项目制定的硬件是FPGA,你能使用的框架就会受到限制。
> 
> 因此,这也是一个限制你使用框架的关键因素。你需要根据自己的需要以及项目的需要去进行选择。
> 
> c. 操作系统
> 当前,这些框架支持的系统主要包括:Linux、Mac、Windows。几乎包括了所有的操作系统。但是对应不同的框架所支持的操作系统有很多不同。
> 如果你熟悉Linux系统,那么你几乎可以使用任何一个框架。
> 如果你想在Windows下使用这些框架,那么你就会受到很大的限制。同时会出现很多莫名其妙的问题。
> 
> 因此,你需要选择一个合适的操作系统,这可能会影响你的开发进程和使用的框架的数目。
> 
> d. 分布式系统
> 分布式系统可以将一个很大的任务分割开来,在不同的主机上进行运行,这可以大大的提高训练的速率,加快整个开发的过程。这对于大模型的训练具有至关重要的作用。当前对分布式系统有很好的支持的框架包括:tensorflow、CNTK、MXNet、Torch、Caffe。都有强大的后台。
> 如果你训练的数据量很少,你可以选择使用单片CPU或者单片GPU;
> 如果你训练的数据量较大,你可以选择使用多块CPU或者多块GPU;
> 如果你训练的数据量很大,你就需要使用到云服务器或者一个分布式系统集群。
>
> 因此,这也是一个影响你选择框架的一个因素。
> 总之,你需要综合考虑多个因素选择一个合适的深度学习框架。

  1. 这里我想要提出一个问题!!
> 我的问题是:为什么不能将这些框架整合起来,做一个大的框架,支持所有的系统,支持所有的语言,支持所有的平台,最重要的是只要一个?
> 这里的框架水平不一,但是它们的存在是由理由的。它们或多或少的都有自己的优势,何必单干呢。深度学习已经是一个趋势,应该建立一个国际组织,负责制定一个标准,收集他们的长处,做一个高性能的框架,这样不是更高效嘛。使用者也不再需要纠结使用哪一种框架。开发商也不需要进行独自的开发,维护。同时可以让更多的爱好者来共同维护它。这可能需要时间吧!希望这个愿望可以实现!

注意事项
[1] 该博客是本人原创博客,如果您对该博客感兴趣,想要转载该博客,请与我联系(qq邮箱:1575262785@qq.com),我会在第一时间回复大家,谢谢大家的关注。
[2] 由于个人能力有限,该博客可能存在很多的问题,希望大家能够提出改进意见。
[3] 如果您在阅读本博客时遇到不理解的地方,希望您可以联系我,我会及时的回复您,和您交流想法和意见,谢谢。
**[4] 本人业余时间承接各种本科毕设设计和各种小项目,包括图像处理(数据挖掘、机器学习、深度学习等)、matlab仿真、python算法及仿真等,有需要的请加QQ:1575262785详聊!!!**
2018-11-18 19:49:04 weixin_41796432 阅读数 72
  • 深度学习基础与TensorFlow实践教程

    本课程主要介绍了深度学习的基础原理和TensorFlow系统基本使用方法。TensorFlow是目前机器学习、深度学习领域优秀的计算系统之一,本课程将结合实例介绍使用TensorFlow开发机器学习应用的详细方法和步骤,着重讲解了用于图像识别的卷积神经网络和用于自然语言处理的循环神经网络的理论知识及其TensorFlow实现方法,并结合实际场景和例子描述了深度学习技术的应用范围与效果。 所有案例均来自讲师团队工作中的亲身实践,所选案例均是深度学习的经典应用,非常具有代表性。

    21448 人正在学习 去看看 AI100讲师

第一天(深度学习介绍)

  • 深度学习与机器学习的区别
    • 特征处理
      • 机器学习:人工处理设计特征
      • 深度学习:不需要人工处理,只要经过网络输出即可,所以深度学习使用于图像,自然语言处理等等语言方面。
  • 深度学习应用场景
    • 图像识别
      • 物体识别
      • 场景识别
      • 车型识别
      • 人脸检测跟踪
      • 人脸关键点定位
      • 人脸身份认证
    • 自然语言处理技术
      • 机器翻译
      • 文本识别
      • 聊天对话
    • 语音技术
      • 语音识别
    • 机器学习效果不行的场景,特征需要复杂处理的的地方
  • 深度学习代表算法-神经网络
    • 输入层
    • 隐藏层
    • 输出层
    • 类似人的神经元的结构
    • 特点
      • 每个连接都有一个权重,同一层神经元之间没有连接
      • 神经元当中都有激活函数
      • 最后输出的结果对应的层也叫全连接层

为什么深度学习效果比较好

  • 数据量越来越大,机器学习已经到达并近期,深度学习的优势也越来越明显。

三个条件助推这深度学习的发展

  • 数据
    • 大量的数据助推深度学习,少量的数据使用深度学习有些大材小用
  • 计算
    • 训练网络需要GPU、TPU
  • 算法
    • 一些创新,如ReLU激活函数
2019-07-28 15:10:57 qq_16555103 阅读数 87
  • 深度学习基础与TensorFlow实践教程

    本课程主要介绍了深度学习的基础原理和TensorFlow系统基本使用方法。TensorFlow是目前机器学习、深度学习领域优秀的计算系统之一,本课程将结合实例介绍使用TensorFlow开发机器学习应用的详细方法和步骤,着重讲解了用于图像识别的卷积神经网络和用于自然语言处理的循环神经网络的理论知识及其TensorFlow实现方法,并结合实际场景和例子描述了深度学习技术的应用范围与效果。 所有案例均来自讲师团队工作中的亲身实践,所选案例均是深度学习的经典应用,非常具有代表性。

    21448 人正在学习 去看看 AI100讲师

一、深度学习的应用场景

1、深度学习的应用场景

1、图像应用:
    1.1 大规模(大数据量)图片识别(聚类/分类),如人脸识别,车牌识别,OCR等
            人脸识别:① faceID ② faceNet
    1.2 以图搜图,图像分割
    1.3 目标检测,如自动驾驶的行人检测,安防系统的异常人群检测
            目标检测:① faster RCNN ② SSD ③ YOLO(YOLO3)
2、语音识别
     语音识别,语音合成
            语音识别:① deep speech2 ② DFSMN
            语音合成:① tactorn2 ② 
3、自然语言处理 NLP:
    3.1 自动分词,句法分析/语义分析、语义角色标注SRL,语法纠错,关键词提取,文本分类/聚类,文本自动摘要,信息检索(ES,Solr)
                   信息抽取,网络爬虫,情感分析,命名实体识别,问答系统 
        3.11 自动分词:
             算法:
             工具:
                jiagu jieba hanlp
        3.12 句法分析/语义分析、语义角色标注SRL:
            (1)句法分析:
                算法:
                工具:
                    hanlp
            (2)语义分析、语义角色标注SRL:
                算法:
                工具:
                    ltp
        3.13 语法纠错:
        3.14 关键词抽取:
        3.15 关键词分类:
        3.16 文本分类、文本聚类:
            (1)文本分类:
            (2)文本聚类:
        3.17 文本自动摘要:
        3.18 信息检索:
        3.19 信息抽取:
        3.20 情感分析:
        3.21 命名实体识别:
             算法:
             工具:
                hanlp
        3.21 问答系统:
            pass(后续文章)
    3.2 知识图谱,机器翻译,人机对话,机器写作 
    3.3 推荐系统,高考机器人
4、数据挖掘,风控系统,推荐系统,广告系统等    --------- 机器学习多于深度学习

二、神经网络的起源

1、神经网络来源之人的思考

1、大脑是由处理信息的神经元细胞和连接神经元的细胞进行信息传递的突触构成的。 树突(Dendrites)从一个神经元接受电信号,
    信号在细胞核(Cell Body)处理后, 然后通过轴突(Axon)将处理的信号传递给下一个神经元。
2、神经网络来源之人的思考
     一个神经元可以看作是将一个或多个输入处理成一 个输出的计算单元。
     通过多个神经元的传递,最终大脑会得到这个信息, 并可以对这个信息给出一个合适的反馈。

2、感知器模型   ----- 深度学习神经元的前身

                   https://blog.csdn.net/qq_16555103/article/details/89002382   ---------- 详情见SVM算法感知器

0、感知器是深度学习神经元的前身,即 感知器 中sign() 换为其他 激活函数 >>>> 深度神经网络神经元
1、感知器可以看作是根据权重来做出决定的一个设备/单元,只要我们可以给定一 个比较适合的权重以及阈值,那么感知器应该是
    能够对数据进行判断的/分类预 测的。
2、假定你现在在考虑是否换工作,也许你会考虑一下三个方面的因素: 
    新工作的待遇会提高吗?   权重w1
    你家庭经济压力大吗?     权重w2
    新工作稳定吗?          权重w3
        结果:
            w1*x1 + w2*x2 + w3*x3  比较    阈值
    感知器计算过程:
         从感知器模型中,我们可以将单个神经元的计算过程看成下列两个步骤:  
            ① 先计算权重w和输入值x以及偏置项b之间的线性结果 决策函数值z:z=wx+b 
            ② 然后对结果值z进行一个数据的sign函数(变种)转换,得到一个离散的0/1值: y=int((sign(z)
            +1)/2) 或 sign(z)

 

3、感知器模型与深度学习网络的关系:
    深度学习网络是由感知器模型组合推演而来的
4、多个感知器组合与深度学习网络的区别?
    ① 多个感知器组合虽然一定程度上可以解决非线性分类问题,但是由于单个感知器输出结果只有(-1,+1),即
        离散值,因而感知器组合模型本质上还是一个线性模型。深度学习网络对于每一个神经元都加入的非线性因素(激活函
        数),因此深度学习网络可以解决非线性问题。
    ③ 只要感知器网络中的权重或者偏置项稍微的做一点小的改动,都会导致最终的输 出发生一定的变化。但是在感知器神经网络
        中,单个感知器上的权重或者偏置项 发现一点小的变化,最终的输出要不不变。

            例如:
              感知器模型:>= 0 label为 +1 , <0 label为 -1;
              当决策函数值z:从-10000 ...>> -1 >> +1,则感知器模型先不进行模型参数更新(因为预测值-10000 与 -1 是
                  一样的,都是-1 ),而当x = +1 时,模型预测值直接发生反转【因为预测值只有两种取值-1 和 1】,显然
                  这是不合理的。

  (1)多层感知器(人工神经网络ANN)

1、将多个感知器进行组合,我们就可以得到一个多层感知器的网络结构,网络中的每一个节点我们叫做神经元。

 (2)感知器神经元组合 解决 非线性可分

  •            单个感知器非线性可分数据

  •           组合感知器(并没有加入激活函数) 非线性数据划分
注意:下面组合感知器 因为没有加入非线性因素的激活函数,因此分类模型是线性的模型

  •             组合感知器网络的缺点
1、感知器组合模型的缺点:
    其实只要将网络中的权重或者偏置项稍微的做一点小的改动,都会导致最终的输 出发生一定的变化。但是在感知器神经网络中,
        单个感知器上的权重或者偏置项 发现一点小的变化,最终的输出要不不变,要不完全翻转(因为只有两种取值-1 和 1),这
        种翻转会导致接下来的感知器可能发生复杂的完全没法控制的变化,这样 会导致我们的网络很难得到最终的逼近结果。
    因此:感知器模型 + 非线性连续激活函数 来使得网络 赋予非线性因素的方法就诞生了。
2、感知器缺陷总结:
        ① 感知器网络会出现模型参数不更新的无用迭代过程
        ② 模型更新会出现突变反转,会导致网络震荡无法逼近真实值。
        因此,每个神经元需要加入非线性因素的激活函数

3、S型神经元代替感知器  的神经网络

1、s型神经元诞生的原因
    对感知器网络(线性的)的这种很难学习的问题,引入S型神经元来代替感知器,从而解 决这个问题
2、在S型神经元中,和感知器神经元的区别在于: 
     对于结果值z的转换,采用的不是sign函数进行转换,是采用平滑类型的函数进行转 换,让输出的结果值y最终是一个连续
        的,S型神经元转指使用的是sigmoid函数。

 

三、神经网络的基本结构

1、激活函数

1、激活函数的主要作用:
    ① 提供网络的非线性建模能力。如果没有激活函数,那么该 网络仅能够表达线性映射,此时即便有再多的隐藏层,其整个网
            络跟单层神经网 络也是等价的。因此也可以认为,只有加入了激活函数之后,深度神经网络才具 备了分
            层的非线性映射学习能力。 
        激活函数的主要特性是:可微性、单调性、输 出值的范围;
    ② 某些激活函数一定程度上解决了梯度消失和梯度爆炸问题,例:Relu(5、6、20)
2、常见的激活函数:Sign函数、Sigmoid函数、Tanh函数、ReLU函数、P-ReLU 函数、Leaky-ReLU函数、ELU函数、Maxout函数等

          https://blog.csdn.net/wangqianqianya/article/details/82961276    ---------  Sigmoid、tanh、ReLU、LeakyReLU、

                                                                                                                              pReLU、ELU、maxout

 (1)各种激活函数存在的问题与解决的问题

1、sign()
    存在问题:
         ① 感知器网络会出现模型参数不更新的无用迭代过程
         ② 模型更新会出现突变反转,会导致网络震荡无法逼近真实值。
         ③ 模型是线性的
2、sigmoid 
    解决问题:
        解决的sign激活函数的缺陷
    存在问题:
        ① 存在饱和区与兴奋区,饱和区梯度小,bp过程更新参数慢(以为梯度下降:θ = θ - α * 梯度链的值)
        ② 存在zigzag,不容易达到最优
        ③ 存在 exp 函数,计算量大
        ④ 存在 梯度消失 与 梯度爆炸 问题

      zigzag 现象:

                                             

3、tanh 与 sigmoid 区别
    优势:Tanh函数是0均值的更加有利于提高训练效率,由于Sigmoid输出是在0-1之间,总是正数,在训练过程中参数的梯度值为
          同一符号,这样更新的时候容易出现zigzag现象,不容易到达最优值。具体推导详见知乎: 
          https://www.zhihu.com/question/50396271?from=profile_question_card
    缺点:
        仍存在 存在 梯度消失 与 梯度爆炸问题
        存在 exp 函数,计算量较大
4、relu 
    ① 没有 exp 函数,收敛速度较快,存在 dead神经元区(过滤噪声特征),增加了泛化能力。
    ② 梯度截断 与 右边激活函数的梯度 恒为1,共同 缓解梯度爆炸的问题
    ③ 梯度右边激活函数的梯度 恒为1,解决了 梯度消失的问题

             https://blog.csdn.net/edogawachia/article/details/80043673   

                            --------  神经网络激活函数汇总(Sigmoid、tanh、ReLU、LeakyReLU、pReLU、ELU、maxout) 

 

2、 神经网络的基本结构与类型

 神经网络主要由三个组成部分:
    第一个是架构(architecture)或称为拓扑结构 (topology),描述神经元的层次与连接神经元的结构。        
    第二个组成部分是神 经网络使用的激励/激活函数。
    第三个组成部分是找出最优权重值的学习算法(BP)。
神经网络主要分为两种类型:
    前馈神经网络(Feedforward Neural Networks) 是最常用的神经网络类型,一般定义为有向无环图,信号只能沿着最终输出
        的那个方向传播。
    另外一个是反馈神经网络(Feedback Neural Networks),也称为 递归神经网络(Recurent Neural Networks),也就
        是网络中环。
        反馈神经网络有时序制约,因此反馈神经网络比前馈神经网络迭代速度慢。

 3、神经网络之浅层神经网络 RBM

添加少量隐层的神经网络就叫做浅层神经网络(无激活函数、无分布式、无dropout、只有一个隐层),也叫作传统神经网络;超
    过两隐层的话,效果会差很多

 

 4、神经网络之深层神经网络 DNN

增多中间层(隐层)的神经网络就叫做深度神经网络(DNN);可以认为深度学习是 神经网络的一个发展

 

5、DNN解决非线性可分 

 

 6、神经网络之过拟合

1、理论上来讲,单隐层的神经网络可以逼近任何连续函数(只要隐层的神经元 个数足够的多<一个神经元将数据集分为两类>) 虽然从
    数学表达上来讲,效果一样
2、网络工程效果中,多隐层的神经 网络效果要比单隐层的神经网络效果好(前提:加入激活函数才会有这种效果,因此感知器网络
    ANN多层效果会变差) 
3、对于一些分类的问题来讲,三层的神经网络效果优于两层的神经网络,但是 如果把层次不断增加(4,5,6,7....),对于
    最终的效果不会产生太大的变化。
        tip:现在有些神经网络已经解决层数逐渐增大,神经网络效果不断变化甚至变差;例如:resnet网络。
4、提升隐层层数或者神经元个数,神经网络的“容量”会变大,那么空间表达 能力会变强,(模型的预测能力),从而有可能导致过拟合
    的问题 
    隐层与神经元数目过多的问题:
        ① 神经网络空间表达能力过强,训练学习噪声,模型预测过拟合
        ② 参数过多,迭代时间过长,模型太复杂
5、对于视频/图片识别等问题,传统的神经网络(全连接神经网络)不太适合

 

四、BP神经网络(链式求导)

BGD、SGD、MBGD、ADam、ADamgrad ...... 牛顿法与拟牛顿法、共轭梯度法     ------- BP优化参数的方法

1、神经网络的一种求解W的算法,分为信号“正向传播(FP)”求损失,“反向 传播(BP)”回传误差;根据误差值修改每层的权重,继续迭代 。
    BP算法也叫做δ算法
2、Δw = Y - Y_pre 是深度学习更新回归问题的 单层梯度,下面有证明
1.	正向过程经过的所有计算链条,反向的时候都要通过求导链条反向回溯
2.	前一层的求导链,由于涵盖了后层的链条,后层的计算结果被直接利用
3.	隐层越多,离输入层近的W_i,求导链分支越多,越容易出现梯度消失或梯度爆炸。
4.	Bp过程只在训练的时候执行,预测的过程中不执行;
5.	Bp必须在所有的正向过程都运行完后才执行;
6.	BP执行过程比正向(或预测)执行时间长,训练一次的时间比预测一次的时间长;原因:①反向分支链多 ②反向BP有求导法则
7.	隐层节点的值h在bp更新过程中会用到,但是不会更新,更新的只有w和b;
8.	激活函数一般用在隐层使用较多的是tanh/relu;输出层如果使用激活函数,一般使用sigmoid或softmax,有时候不使用激
    活函数,有些情况输出层使用激活函数会使得模型很难训练;

 

            

1、回归问题 理解正向过程FP与反向过程 BP

注意:深度神经网络在做回归问题的时候,如果最后的输出层用了激活函数,预测值就会被压缩到一个区间范围之内,这就会出现预测
    值与真实值差距过大的情况,就会导致模型训练困难;分类问题不做考虑。
    有以下两种解决手段:
        ① 回归问题最后的输出层不加激活函数
        ② 回归问题在模型训练以前将真实值归一化到一个合理的区间内,训练完模型后用来预测数据得到预测值,在反推出真实
          的预测值即可
    下文解答是输入层加入激活函数的解释过程。

  • 第一步:前项传播 FP 求 预测 Y_pre (也是模型预测时的预测过程)

  • 第二步 BP过程的准备阶段,构建Loss函数,模型预测不会执行该步骤
回归问题:通常用 MSE
分类问题:通常用 交叉熵损失函数(softmax的损失函数,https://blog.csdn.net/qq_16555103/article/details/97423338)
  • 第三步: BP过程,传递误差LOSS,更新模型参数
链式结构求导结构,一般从接近输出层的参数开始迭代,后面参数迭代可以用前面参数计算的结果,详情见下文:

 2、一个三层网络的输入 —— 输出的LOSS函数的计算方式

(1)求需要更新的参数的总的损失函数LOSS

(2)用SGD进行更新该参数

 2、BP算法的实例

(1)题目(求解w1....w12 更新梯度的过程)

(2)求解过程

求复合函数链式导数,为了用梯度下降或者其他优化器
  •      正向传播求损失

  •            反向BP传误差
    •             求w7的过程

 

    •             求w1的过程

  •                 迭代多次后

3、 DNN 小批量batch_size 执行过程

注意:我们构造的DNN网络是根据一个样本的特征输入构建的,当同时有多个样本输入神经网络,DNN执行方式如下:

 

 五、RBF神经网络

1、SVM中用到的rbf的高斯核函数
2、他是局部的,深度学习的全局的

六、DNN的两个问题:梯度消失与梯度爆炸

1、一般来讲,可以通过增加神经元和网络层次来提升神经网络的学习能力,使 其得到的模型更加能够符合数据的分布场景;但是实际应
    用场景中,神经网 络的层次一般情况不会太大,因为太深的层次有可能产生一些求解的问题 
2、在DNN的求解中有可能存在两个问题:梯度消失和梯度爆炸
    我们在求解梯 度的时候会使用到链式求导法则,实际上就是一系列的连乘,如果每一层都 小于1的话,则梯度越往前乘越小,导致
        梯度消失,而如果连乘的数字在每层 都是大于1的,则梯度越往前乘越大,导致梯度爆炸.
梯度消失梯度爆炸的解决手段:
    - 预训练加微调
    - 梯度剪切、权重正则(针对梯度爆炸)
    - 使用不同的激活函数
    - 使用batchnorm
    - 使用残差结构
    - 使用LSTM网络

            参考 : https://blog.csdn.net/qq_25737169/article/details/78847691    ----  详解梯度消失、爆炸原因及其解决方法

 

 

 

2018-07-04 16:02:15 lmseo5hy 阅读数 492
  • 深度学习基础与TensorFlow实践教程

    本课程主要介绍了深度学习的基础原理和TensorFlow系统基本使用方法。TensorFlow是目前机器学习、深度学习领域优秀的计算系统之一,本课程将结合实例介绍使用TensorFlow开发机器学习应用的详细方法和步骤,着重讲解了用于图像识别的卷积神经网络和用于自然语言处理的循环神经网络的理论知识及其TensorFlow实现方法,并结合实际场景和例子描述了深度学习技术的应用范围与效果。 所有案例均来自讲师团队工作中的亲身实践,所选案例均是深度学习的经典应用,非常具有代表性。

    21448 人正在学习 去看看 AI100讲师

深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。晦涩难懂的概念,略微有些难以理解,但是在其高冷的背后,却有深远的应用场景和未来。

深度学习是实现机器学习的一种方式或一条路径。其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据。比如其按特定的物理距离连接;而深度学习使用独立的层、连接,还有数据传播方向,比如最近大火的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能,让机器认知过程逐层进行,逐步抽象,从而大幅度提升识别的准确性和效率。

神经网络是机器学习的一个分支,而深度学习又是神经网络的一个大分支,深度学习的基本结构是深度神经网络。


深度学习简介

阅读数 15

没有更多推荐了,返回首页