1.3 深度学习的知识点汇总
如下列举内容所示,深度学习所涉及的知识点非常广泛,有基础理论、深度学习网络结构、测试基准数据集、开发框架、优化算法,以及机器学习中类似的问题——分类问题、回归问题、过拟合和欠拟合等。
深度学习知识点汇总
▼ 应用问题
计算机视觉、语音识别、自然语言处理等。
▼ 机器学习问题
分类、回归、特征提取等。
▼ 数据集
ImageNet、Coco、MNIST等。
▼ 工具
TensorFlow、CNTK、MXNet等。
▼ 理论
优化算法、BP、BPTT、线性代数等。
▼ 基础架构
训练平台、在线推断平台、云平台深度学习服务、GPU、FPGA等。
1.3.1 深度学习的预备技术
1.编程语言
深度学习框架的底层实现语言大多是C++ / C这样可以达到高运行效率的语言。操作语言更简单易用,按照发展趋势,Python将是未来深度学习的操作平台语言。同时很多框架都可以通过脚本的方式配置网络并且训练模型。
2.编程框架
▼ 以TensorFlow、Caffe、CNTK、Torch、MXNet为主的深度学习功能性平台。这类平台提供了非常完备的基本模块,可以让开发人员快速创建深度神经网络模型并且开始进行训练,可以解决现今深度学习中的大多数问题,通常提供命令式、声明式的编程接口,或者提供可以通过配置文件配置的深度神经网络。但是这些模块很少将底层运算功能直接暴露给用户。
▼ 以Keras为主的深度学习抽象化平台。Keras本身并不具有底层运算协调的能力,Keras依托于TensorFlow或者Theano进行底层运算,而Keras自身提供了神经网络模块的抽象化和训练中的流程优化。
▼ 以NNVM为代表的深度学习编译器。NNVM是一个神经网络比较高级的中间表示模块,深度学习领域的编译器,它包含了图的表示以及与执行无关的各种优化。
▼ 以Visual Studio Tools for AI为代表的集成化AI开发工具,可以在一个IDE下进行深度学习全流程以及多种框架的开发。
3.数学基础
要想学好深度学习需要有一定的数学基础,读者可以参考相应的书籍进行前置数学基础的学习与补充。深度学习主要涉及的数学知识点是高等数学、线性代数和概率论。高等代数中是导数、极值等知识点对应的求损失函数的最优值。线性代数中的向量和矩阵运算对应于深度学习中的数据和特征表示,以及基本的运算。概率论中的概率与条件概率、分布等知识点对应通过概率图对问题进行建模。
1.3.2 深度学习的技术构成
1.深度学习中的特征表达
深度学习将AI工程师从繁重的特征工程中解脱出来,得益于一些自动化能学习模型中的特征。常见的一些特征表达网络结构有强化学习、CNN、Encoder、LSTM等。End to End模型将原有的细化模块通过端到端的深度学习解决方案,减少了特征工程与数据预处理的繁重工作。
2.深度学习模型
深度学习网络结构灵活,但其大多是由很多基本的网络结构组成而来的,分别是多层感知机(MLP, Multi-Layer Perceptron)、卷积神经网络(CNN, Convolutional Neural Network)以及循环神经网络(RNN, Recurrent Neural Network)。
MLP的结构特点是输入层与输出层之间存在一个或多个隐层。输入层用于获取外部输入信号,只有隐层和输出层的神经元为计算节点。每层都对上一层的输入进行加权处理,然后通过激活函数进行非线性变换,参数通过反向传播进行训练。
CNN最初应用于图像数据,根据图像数据特点进行近似与优化。除了通用的网络结构,CNN还包含了几个特有的网络组件,例如,卷积层、池化层、全连接层等。神经网络参数通过反向传播算法进行训练。
RNN应用于时序数据,例如文本和语音数据,RNN针对时序数据特点进行相应的网络结构设计。RNN由多个Cell按照时序串联而成,每个Cell都可以通过LSTM、GRU等进行实现。
3.深度学习应用
深度学习应用比较广泛,已经取得了比较好的应用效果的场景有图像识别、人脸识别、图像检测、OCR、语音识别、强化学习、自然语言处理等。
4.深度学习模型求解
深度学习模型求解中通常会涉及一些常用的算法,这些算法分别是遇到特定问题场景后对原有优化算法进行近似与优化,整体架构类似梯度下降,但对步长与梯度进行不同方式的优化产生了不同的变种。常用的优化算法有SGD、Adam、RMSprop等算法。
5.深度学习模型泛化
过拟合现象在深度学习训练过程中是比较容易出现的现象,为了解决过拟合的问题,通常可以通过Dropout、正则化、Data Augmentation、Batch Normalization等方式进行解决。
1.3.3 深度学习向其他行业与技术领域的延伸
深度学习最初在互联网行业得到了大范围的应用与技术提升,随后逐步扩展深入到各行各业。接下来我们将通过深度学习技术在医疗、制造业和安防等领域的发展对其进行了解。
1.医疗
医疗领域可以获取的数据非常多样,常见的有基因数据、影像数据、疾病诊断文本数据等,深度学习逐步在以下几个领域进行了延伸。
▼ 基因数据
通过基因数据可以对人类的健康和性格信息等进行解码。传统基因测序流程复杂,深度学习逐渐在基因分析领域崭露头角。
▼ 影像数据
英伟达也将人工智能应用到发现新药物方面。英伟达凭借其技术,利用中心100亿份医学影像,进行深度学习训练开发,用于疾病的检测、诊断、治疗等场景。
▼ 诊断文本数据
将自然语言处理技术应用到文本分析和诊断中,达到辅助医生进行诊疗的目的。
在医疗AI领域,各个巨头也在逐步布局。IBM Watson将人工智能应用到以肿瘤为重心,包括慢性病管理、精准医疗、体外检测等九大医疗领域。谷歌旗下的DeepMind将用人工智能研发医院支持系统,例如床位和需求管理软件、财务控制产品,以及面向初级医生的消息服务和任务管理工具。百度人工智能推出了百度医疗大脑。toC方面,百度医疗大脑可以模拟医生问诊流程,与用户进行多轮交流,依据用户的症状,反复验证之后给出相应的建议;toB方面,则为医院提供患者就诊过程中的症状描述,提醒医生更多的可能性,辅助基层医生完成问诊。阿里云发布了ET医疗大脑,可以在患者虚拟助理、医学影像、精准医疗、药效挖掘、新药研发、健康管理等领域承担医生助手的角色。
2.制造业
深度学习的多种技术都可以应用在制造业中。例如工程岩体的分类,目前主要是有经验的工程师通过仔细判断来进行分类,效率比较低,并且因为人为原因会有不同的判断偏差,图像识别技术可以进行辅助判断。对于汽车零部件厂商或汽车保险行业,目前深度学习技术应用于检查生产出的零件磨损种类与等级情况,从而实现无人化检测。在工业生产车间,深度学习技术可以大幅改善工业机器人的作业性能,提升制造流程的自动化和无人化。
3.安防
在现实生活中,安防系统已经开始使用越来越多的摄像头以及安检仪。这些都为深度学习在安防场景下的潜在应用做好了铺垫。
深度学习可以应用在安检仪、人脸识别核身、车牌检测、目标检测等多种应用场景中。
深度学习在进行图像检测和识别时,无须人为设定具体的特征,只需要准备好足够多的图进行训练即可,通过逐层的迭代就可以获得较好的结果。从目前的应用情况来看,只要加入新数据,并且有充足的时间和计算资源,随着深度学习网络层次的增加,识别率就会得到相应的提升,比传统方法的表现更好。