深度学习的应用场景
1、图像应用:
1.1 大规模(大数据量)图片识别(聚类/分类),如人脸识别,车牌识别,OCR等。人脸识别算法:① faceID ② faceNet
1.2 以图搜图,图像分割
1.3 目标检测,如自动驾驶的行人检测,安防系统的异常人群检测。目标检测算法:① faster RCNN ② SSD ③ YOLO(YOLO3)
2、语音识别,语音合成
2.1 语音识别:① deep speech2 ② DFSMN
2.2 语音合成:① 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),这种翻转会导致接下来的感知器可能发生复杂的完全没法控制的变化,这样会导致我们的网络很难得到最终的逼近结果。
针对感知器网络这种很难学习的问题,引入S型神经元来代替感知器。因此:感知器模型 + 非线性连续激活函数来使得网络赋予非线性因素的方法就诞生了。
从感知器模型中,我们可以将单个神经元的计算过程看成下列两个步骤:
- 先计算权重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函数等
激活函数之 Sigmoid、tanh、ReLU、ReLU变形和Maxout_fenglepeng的博客-CSDN博客
神经网络
神经网络结构
神经网络主要由三个组成部分,第一个是架构(architecture)或称为拓扑结构(topology),描述神经元的层次与连接神经元的结构。第二个组成部分是神经网络使用的激励/激活函数。第三个组成部分是找出最优权重值的学习算法。
神经网络主要分为两种类型,前馈神经网络(Feedforward Neural Networks)是最常用的神经网络类型,一般定义为有向无环图,信号只能沿着最终输出的那个方向传播。另外一个是反馈神经网络(Feedback Neural Networks),也称为递归神经网络(Recurent Neural Networks),也就是网络中环。
神经网络之浅层神经网络
添加少量隐层的神经网络就叫做浅层神经网络;也叫作传统神经网络,一般为2隐层的神经网络(超过两隐层的话,效果会差很多)
神经网络之深度神经网络(Deep Neural Networks, DNN)
增多中间层(隐层)的神经网络就叫做深度神经网络(DNN);可以认为深度学习是神经网络的一个发展
神经网络之非线性可分
对线性分类器的与和或的组合可以完成非线性可分的问题;即通过多层的神经网络中加入激活函数的方式可以解决非线性可分的问题。
神经网络之过拟合
理论上来讲,单隐层的神经网络可以逼近任何连续函数(只要隐层的神经元个数足够的多<一个神经元将数据集分为两类>)
虽然从数学表达上来讲,效果一样,但是在网络工程效果中,多隐层的神经网络效果要比单隐层的神经网络效果好
对于一些分类的问题来讲,三层的神经网络效果优于两层的神经网络,但是如果把层次不断增加(4,5,6,7....),对于最终的效果不会产生太大的变化
提升隐层层数或者神经元个数,神经网络的“容量”会变大,那么空间表达能力会变强,(模型的预测能力),从而有可能导致过拟合的问题
对于视频/图片识别等问题,传统的神经网络(全连接神经网络)不太适合
神经网络之DNN问题
一般来讲,可以通过增加神经元和网络层次来提升神经网络的学习能力,使其得到的模型更加能够符合数据的分布场景;但是实际应用场景中,神经网络的层次一般情况不会太大,因为太深的层次有可能产生一些求解的问题。
在DNN的求解中有可能存在两个问题:梯度消失和梯度爆炸;我们在求解梯度的时候会使用到链式求导法则,实际上就是一系列的连乘,如果每一层都小于1的话,则梯度越往前乘越小,导致梯度消失,而如果连乘的数字在每层都是大于1的,则梯度越往前乘越大,导致梯度爆炸.