您的位置:首页 > 其它

深度学习的入门方法

2017-07-30 22:35 239 查看
声明:摘自《TensorFlow技术解析与实战》

京东链接:http://item.jd.com/12073631.html

要想入门深度学习,需要两个工具,即算法知识和大量的数据,外加一台计算机,如果有GPU就更好了,但是因为许多入门初学者的条件有限,没有GPU也可以。

深度学习的入门过程如下图所示7个步骤:



1.学习或者回忆一些数学知识

因为极端及能做的只是计算,所以人工智能更多地来说还是数学问题。我们的目标是训练处一个模型,用这个模型去进行一系列的预测。于是,我们将训练过程设计的过程抽象成数学函数:首先,需要定义一个网络结构,相当于定义一种线性非线性函数;接着,设定一个优化目标,也就是定义各种损失函数(loss function)。

而训练的过程,就是求解最优解及次优解的过程。在这个过程中,我们需要掌握基本的概率论、高等书序、线性代数等知识,如果学过最好,没学过也没有关系,仅仅知道原理和过程即可,有兴趣可以涉猎一些推导证明。

2.掌握经典机器学习理论与基本算法

这些基本算法包括支持向量机。逻辑回归、决策树、朴素贝叶斯分类器、随机森林、聚类法、协同过滤、关联性分析、人工神经网络和BP算法、PCA、过拟合与正则化等。

推荐阅读李航老师的《统计学习方法》。机器学习方面也可以阅读周志华的《机器学习》。

3.掌握一种编程工具(语言)

Python语言是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python是很多新入门程序员的入门编程语言,也是很多老程序员后来必须掌握的编程语言。我们需要重点掌握使用线性代数库和矩阵的操作,尤其是Numpy、Pandas第三方库,也要多试试机器学习的库,如sklearn,做一些SVM及逻辑回归的练习。这对直接上手写TensorFlow程序大有裨益。

4.研读经典论文,关注最新动态和研究成果

一些经典论文是必读的。例如,要做手写数字识别,若采用LeNet,要先于都一下LeNet的学术论文;要做物体目标检测的训练,若选定MSCNN框架,可以先读MSCNN相关的论文。那么,论文从哪里找呢?那么多论文应该读哪篇呢?

下面以GoogleNet的TensorFlow实现为例。在GitHub上,一般在开头的描述中就会说明这个模型所依据的论文,如下图:

(链接:https://github.com/tensorflow/models/tree/master/inception

顺着这篇论文阅读,可以大致了解这个网络的实现原理,对迅速上手应用有很大的作用。

很多模式识别的工作者之所以厉害,是因为他们有多很多、很深的论文积累,对模型的设计很有独到的见解,而他们可能甚至一行代码也不会写,而工程(写代码)能力在工作中很容易训练。许多工程方向的软件工程师,工作模式常常在实现业务逻辑和设计架构系统上,编码能力强,但却缺少论文积累。同时具有这两种能力的人,正是硅谷一些企业目前青睐的人才。

平时还可以阅读一些博客、笔记,以及微信公众号、微博新媒体资讯等,往往一些很流行的新训练方法和模型会很快在这些媒体上发酵,其训练神经网络采用的一些方法可能有很大的启发性。

5.自己动手训练神经网络

接着,就要选择一个开源的深度学习框架。

从目前来看,投身TensorFlow是一个非常好的选择,掌握TensorFlow在找工作时是一个非常大的加分项。

接下来就是找一个深度神经网络,目前的研究方向主要集中在视觉和语音两个领域。初学者最好从计算机视觉入手,因为它不像语音等领域需要那么多的领域知识,结果也比较直观。例如,用各种网络模型来训练手写数字(MNIST)及图像分类(CIFAR)的数据集。

6.深入感兴趣或者工作相关领域

人工智能目前的应用领域很多,主要是计算机视觉和自然语言处理,以及各种预测等。对于计算机视觉,可以做图像分类、目标检测、视频中的目标检测等;对于自然语言处理,可以做语音识别、语音合成、对话系统、机器翻译、文章摘要、情感分析等,还可以结合图像、视频和语音,一起发挥价值。

更可以深入某一个行业领域。例如,深入医学行业领域,做医学影像的识别;深入淘宝的穿衣领域,做衣服搭配或衣服款型的识别;深入保险业、通信业的客服领域,做对话机器人的智能问答系统;深入智能家居领域,做人机的自然语言交互等等。

7.在工作中遇到问题,重复前六步

在训练中,准确率、坏案例(bad case)、识别速度等都是可能遇到的瓶颈。训练好的模型也不是一成不变的,需要不断优化,也需要结合具体行业领域和业务进行创新,这时候就要结合最新的科研成果,调整模型,更改模型参数,一步步更好地贴近业务需求。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: