【运营小卖部】如何入门深度学习、机器学习?

学习深度学习的一个很好的路线就是跟着历史的进程学习一番。

除了一些基础的机器学习知识,在学习和理解Deep Learning之前,需要先对于Neural Network和AutoEncoder这两个模型有所了解,特别是后者,AutoEncoder的隐藏层与输入层的关系、使用AutoEncoder来pre-training一个多层网络,以及AE的现状:用来做pre-training的人已经少了(但并不是无效或者效果不好)。

下一步就是要理解『简单的增加神经网络深度』会遇到什么问题。比如梯度弥散和梯度爆炸,比如严重的过拟合,比如计算时间开销。
继续下去,要知道这些问题的原因与解决办法,这一步就映射到神经网络向深度学习的发展过程,比如​pre-training​(甚至包括大约在10年左右,pre-training技术的变化)、dropout、ReLU等的出现、各种优化算法比如Adam、RMSProp等以及我们现在有能力(计算能力、相对于以前的大数据量)处理深层网络。
到这里,初步理解通常意义的Deep Learning模型就是深度神经网络。

但是接下来的才是关键。

对于不同的应用方向,有不同的具体的DNN的模型,比如CNN之于图像,RNN之于NLP。

这里以CNN为例子。CNN的特殊的一些地方在于:卷积、池化、子采样、白化、权值共享等等非常多的技术。每一个都是一个概念/方法。这是CNN所特有的。如何理解这些技术呢?
动手实现一个LeNet然后跑一下Minst数据集的手写识别(或者自己搞点图像数据),学以致用,会帮助建立好的直觉,甚至可能不懂的地方也慢慢理解了。

不过一个比较有趣的概念是 卷积。
卷积这个东西有很多种理解方式:比如信号处理的理解、数学/物理上的理解等。

『举个例子,这些技术都围绕一个重要的观点:减少网络参数(包括卷积也是有这个功能的)。其实每一个技术,都有自己更具体的意义,但是有共性的地方』。

  • 对于使用CNN,要知道现在最常用的方法:AlexNet、GoogleNet、ResNet等的pre-training+具体问题的fine-tuning这种手段:一定要读一下一些相关paper。
  • 至于RNN,个人的经验是建议大家看一看Neural Network Language Model相关的工作。

这是最基础的。

然后我们大概了解,CNN捕捉空间信息(比如图像)、RNN捕捉时序信号(比如语言、语音这种天然的序列)的能力。那么,

  • 对于视频分析,是不是可以结合CNN和RNN?
  • 对于语音声学模型部分,Stack Deep CNN是不是可以近似于long-dependency RNN的效果?
  • 对于翻译,RNN cell使得end-to-end的Sequence to Sequence方法出现。而类似的可以抽象为序列到序列的任务还有哪些?(答案:文本摘要、文本生成、对话等)
  • 等等

还有就是一定要动手,关于Deep Learning的库,我个人最近这些年有一些体验(直说我有经验的):

  • Caffe发展最早,为Deep Learning特别是CNN的发展做出来巨大的推动。C++ Based Code使得它在效率等方面表现很出色,直接打包Caffe代码用于线上Inference也不是特别困难。但是缺点很明显:不是很适合序列学习的任务、对比现在一代的框架开发难度略大。
  • Theano只在当年做毕设的时候简单用过,没有太多感觉,这里不做评价。
  • MXNet我很喜欢,不过目前我个人遇到一个主要的问题在于:使用相同的参数设置,有时无法复现别人的结果(比如对比Tensorflow的Language Model on PTB Dataset);有些接口目前还不稳定;但是MXNet在多级多卡的性能和多级多卡的易用性上是我目前使用的最最最出色的。
  • Tensorflow(别名Tensorslow),社区最大,生态最成熟。现在发布了正式的1.0版本,API已经稳定下来。单机使用的不错的选择(上层可以使用Keras),但是多机性能非常渣(gRPC不吐槽了),单机也没有优化到最好的性能。而且现在代码结构很臃肿,设计上略显乱(反正我不喜欢),写起来完全是在写另外一种语言--不过这点可以使用Keras而忽略。
  • PyTorch,是我目前最爱的框架。主要原因就在于设计上,写起来像是“用丝绸擦过屁股”(出自黑客帝国2)一样爽。不过目前不支持单机。PyTorch的源码是值得很多感兴趣于深度学习框架设计的人读一读的(Caffe也一样)。

其实这里,深度学习框架大概经历了:Caffe代表的基于模板的一代(最小单元是层)、TF、Theano和MXNet代表的符号编程(最小单元是类似于加减乘除的算子)的一代、以及PyTorch(和CMU的DyNet)等的动态计算图的新一代(算是2.5代)。

深度学习的框架还建立了一个和一些一直以来没法参与到深度学习浪潮的计算机方向的桥梁。比如:

  • 编译优化:像是数据库做了多年的图优化、以及编译器方向的一些工作,比如TF的XLA。
  • 硬件方面:FPGA这样的传统硬件、TPU这样的Google专门做的优化硬件、寒武纪这样的专门的深度学习指令芯片等。

而长在框架上面,还有GPU资源调度和管理,GPU、CPU等异构计算的联动等,网络通信的优化,分布式机器学习领域的进一步发展等。

一下是相关学习资料:

《机器学习互联网业务安全实践》-机器学习文档类资源-CSDN下载《机器学习互联网业务安全实践》更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/TiaoZhanJi_Xian/85038335深度学习框架PyTorch开发教程-深度学习文档类资源-CSDN下载深度学习框架PyTorch开发教程更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/TiaoZhanJi_Xian/85038332神经网络与深度学习教程-深度学习文档类资源-CSDN下载神经网络与深度学习应用实战更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/TiaoZhanJi_Xian/85038328《深度学习模型及应用详解》-深度学习文档类资源-CSDN下载《深度学习模型及应用详解》更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/TiaoZhanJi_Xian/85038324《从AI模型到智能机器人:基于Python与TensorFlow》-机器学习文档类资源-CSDN下载《从AI模型到智能机器人:基于Python与TensorFlow》更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/TiaoZhanJi_Xian/85038316OpenCV从入门到精通-机器学习文档类资源-CSDN下载OpenCV从入门到精通【运用python】更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/TiaoZhanJi_Xian/85038312

你可能感兴趣的:(人工智能,深度学习,机器学习,人工智能)