概述
通常,在我们接触深度学习的过程中,经常可以看到机器学习,深度学习,监督学习,无监督学习,神经网络,隐藏层,函数等一系列概念。这些概念之间的相互关系是什么,分别是什么意思,有什么作用,搞清楚这个是非常重要的。在此对其进行一次梳理。
背景
所有的概念都可以认为出自–人工智能(Artificial Intelligence)“人工智能”是“一门技术科学”,它研究与开发的对象是“理论、技术及应用系统”,研究的目的是为了“模拟、延伸和扩展人的智能”。早在50年代就已经提出,我们现在所做的“文本识别”,“图像识别”等其实都是基于“模拟人的文本阅读能力”和“模拟人的图像识别能力”,总而言之,其终极目的就是实现和人一样的“智能”。
定义
人工智能,机器学习和深度学习是最基础的概念,两者也没有绝对的定义。以下是参考定义:
人工智能: 人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。
机器学习: 顾名思义,是研究让机器具有学习能力的一个领域。这里,机器指的是计算机,是算法运行的物理载体,你也可以把各种算法本身当做一个有输入和输出的机器。
深度学习: 深度学习是机器学习的一部分,深度学习是用于建立、模拟人脑进行分析学习的神经网络,并模仿人脑的机制来解释数据的一种机器学习技术,它和神经网路这一个概念是分不开的,也有认为深度学习即是使用深层神经网络的机器学习
从以上的定义来看,人工智能的范围最广,它包括机器学习,而机器学习又包括深度学习。
机器学习
机器学习按照定义,指的是设计一种算法,给定一个数据集,让算法能够学习数据的规律,接下来就介绍一些算法和分类。
(以上的图都来源于网络)
可以看到这些算法的作用就是按照一定的规则,将数据划分为不同的类别,在这个过程中,算法学习到的就是数据的规律,也可以称之为特征,在实际的应用中,数据的维度可能会很大,也就是特征很多,不像上图那么简单,这就需要更加复杂的算法。
除了算法,还有就是数据本身,针对不同的数据要有不同的建模方式,依据学习方式和输入数据,机器学习主要分为以下四种学习方式:
监督学习:
监督学习是使用已知正确答案的示例来训练网络。已知数据和其一一对应的标签,训练一个预测模型,将输入数据映射到标签的过程。常见应用场景如分类问题和回归问题。
非监督式学习:
在非监督式学习中,数据并不被特别标识,适用于你具有数据集但无标签的情况。学习模型是为了推断出数据的一些内在结构。常见的应用场景包括关联规则的学习以及聚类等。
半监督式学习:
在此学习方式下,输入数据部分被标记,部分没有被标记,这种学习模型可以用来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,通过对已标记数据建模,在此基础上,对未标记数据进行预测。
弱监督学习:
弱监督通常分为三种类型:不完全监督、不确切监督、不准确监督,弱监督学习可以看做是有多个标记的数据集合, 数据集的标签是不可靠的,这里的不可靠可以是标记不正确,多种标记,标记不充分,局部标记等。
监督学习和无监督学习等都是根据具体的需求来进行分析。
下面来讲一下基础的步骤:
- 首先是数据集的创建和分类,对于具体的数据集进行标注划分,分为训练集和验证集,目标就是找一个函数,这个函数可以将输入的数据进行分类(或者其他操作)。
- 数据增强,原始数据并不能保证在处理过程中保持目标信息不变,而数据的好坏会直接影响训练结果,所以这一步是十分重要的。
- 特征设计,特征的选择和提取的好坏会影响能否正确全面的表达数据包含的信息,所以特征的设计包括之后的组合需要很好特征选择方法,深度学习中的卷积神经网络就是一个很好的方法。
- 设计预测模型和损失函数,通过特征设计之后,将原始的数据映射到特征空间之后,也就意味着我们得到了比较合理的输入。下一步就是构建合适的预测模型得到对应输入的输出。而如何保证模型的输出和输入标签的一致性,就需要构建模型预测和标签之间的损失函数,
- 在进行完以上操作之后选择合适的模型和超参数进行初始化,通过合适的优化方法不断缩小输出与标签之间的差距,当迭代过程到了截止条件,就可以得到训练好的模型。
- 训练完训练集图片后,需要进行模型测试。利用验证集来验证模型是否可行。在此过程中,通常会通过调整和模型相关的各种事物(超参数)来重复步骤2和3,诸如里面有多少个节点,有多少层,使用怎样的**函数和损失函数,如何在反向传播阶段积极有效地训练权值等等。之后即可测试应用。
深度学习
深度学习的概念离不开神经网络,规模庞大,层数够深的神经网络可以帮助机器更好的模拟人脑的学习分析,神经网络就是按照一定规则将多个神经元连接起来的网络。不同的神经网络,具有不同的连接规则,以下是一个基础的神经网络结构。
我们可以清楚的看到,它包括输入层,输出层,隐藏层,三种不同类型的层。且每层之间的神经元之间没有连线,而每一层的每个神经元与上一层的所有神经元相连,这就是典型的全连接层(每个连接之间都有权重)。首先输入层接受原始信息的输入,在隐藏层中进行处理,最后输出层输出结果(可以是分类或者重构等)。
复杂的神经网络就是由以上的基础神经结构构成。
参考文献:
https://github.com/scutan90/DeepLearning-500-questions