深度学习之概述

深度学习的应用场景

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 问答系统:
    3.2 知识图谱,机器翻译,人机对话,机器写作 
    3.3 推荐系统,高考机器人
4、数据挖掘,风控系统,推荐系统,广告系统等    --------- 机器学习多于深度学习

神经网络的起源

神经网络来源之人的思考

大脑是由处理信息的神经元细胞和连接神经元的细胞进行信息传递的突触构成的。 树突(Dendrites)从一个神经元接受电信号,信号在细胞核(Cell Body)处理后, 然后通过轴突(Axon)将处理的信号传递给下一个神经元。

一个神经元可以看作是将一个或多个输入处理成一 个输出的计算单元。通过多个神经元的传递,最终大脑会得到这个信息, 并可以对这个信息给出一个合适的反馈。

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

感知器是一种模拟人的神经元的一种算法模型,是一种研究单个训练样本的二元分类器,是SVM和人工神经网络(ANN, Artificial Neural Networks)的基础。

感知器可以看作是根据权重来做出决定的一个设备/单元,只要我们可以给定一 个比较适合的权重以及阈值,那么感知器应该是能够对数据进行判断的/分类预 测的。

假定你现在在考虑是否换工作,也许你会考虑一下三个方面的因素: 

  •     新工作的待遇会提高吗?   权重w1
  •     你家庭经济压力大吗?     权重w2
  •     新工作稳定吗?          权重w3

结果:w1*x1 + w2*x2 + w3*x3  比较    阈值

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

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

感知器神经元直观理解之逻辑与 

感知器网络理解以及S型神经元

其实只要将网络中的权重或者偏置项稍微的做一点小的改动,都会导致最终的输 出发生一定的变化。但是在感知器神经网络中,单个感知器上的权重或者偏置项 发现一点小的变化,最终的输出要不不变,要不完全翻转(因为只有两种取值-1 和 1),这种翻转会导致接下来的感知器可能发生复杂的完全没法控制的变化,这样 会导致我们的网络很难得到最终的逼近结果。

因此:感知器模型 + 非线性连续激活函数 来使得网络 赋予非线性因素的方法就诞生了。

从感知器模型中,我们可以将单个神经元的计算过程看成下列两个步骤:

  • 先计算权重w和输入值x以及偏置项b之间的线性结果值z:z=wx+b
  • 然后对结果值z进行一个数据的sign函数(变种)转换,得到一个离散的0/1值:y=int((sign(z)+1)/2)

在S型神经元中,和感知器神经元的区别在于:对于结果值z的转换,采用的不是sign函数进行转换,是采用平滑类型的函数进行转
换,让输出的结果值y最终是一个连续的,S型神经元转指使用的是sigmoid函数。

激活函数

激活函数的主要作用是提供网络的非线性建模能力。如果没有激活函数,那么该网络仅能够表达线性映射,此时即便有再多的隐藏层,其整个网络跟单层神经网络也是等价的。因此也可以认为,只有加入了激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。 激活函数的主要特性是:可微性、单调性、输出值的范围;

常见的激活函数:Sign函数、Sigmoid函数、Tanh函数、ReLU函数、P-ReLU函数、Leaky-ReLU函数、ELU函数、Maxout函数等

神经网络结构

神经网络

神经网络主要由三个组成部分,第一个是架构(architecture)或称为拓扑结构(topology),描述神经元的层次与连接神经元的结构。第二个组成部分是神经网络使用的激励/激活函数。第三个组成部分是找出最优权重值的学习算法

神经网络主要分为两种类型,前馈神经网络(Feedforward Neural Networks)是最常用的神经网络类型,一般定义为有向无环图,信号只能沿着最终输出的那个方向传播。另外一个是反馈神经网络(Feedback Neural Networks),也称为递归神经网络(Recurent Neural Networks),也就是网络中环。

神经网络之浅层神经网络

添加少量隐层的神经网络就叫做浅层神经网络;也叫作传统神经网络,一般为2隐层的神经网络(超过两隐层的话,效果会差很多)

神经网络之深度神经网络

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

神经网络之非线性可分

对线性分类器的与和或的组合可以完成非线性可分的问题;即通过多层的神经网络中加入激活函数的方式可以解决非线性可分的问题。

神经网络之过拟合

理论上来讲,单隐层的神经网络可以逼近任何连续函数(只要隐层的神经元个数足够的多<一个神经元将数据集分为两类>)

虽然从数学表达上来讲,效果一样,但是在网络工程效果中,多隐层的神经网络效果要比单隐层的神经网络效果好

对于一些分类的问题来讲,三层的神经网络效果优于两层的神经网络,但是如果把层次不断增加(4,5,6,7....),对于最终的效果不会产生太大的变化

提升隐层层数或者神经元个数,神经网络的“容量”会变大,那么空间表达能力会变强,(模型的预测能力),从而有可能导致过拟合的问题

对于视频/图片识别等问题,传统的神经网络(全连接神经网络)不太适合