



要想研究与人工智能领域相关的技术和算法并获取相应的解决方案,理解机器学习和深度学习的一些关键概念非常重要。
当我们谈论人工智能的现状时,通常指的是能够通过大量数据找到模式并基于这些模式进行预测的系统。
虽然人工智能(artificial intelligence,AI)一词给人带来的印象可能是科技感满满的会说话的人形机器人或会自动驾驶的汽车,但是这些高大上形象的背后实际上是以图(graph)的形式和互连计算模块网络为支撑的。
接下来,我们首先介绍机器学习。
1959年,Arthur Samuel创造了机器学习(machine learning,ML)一词。他将机器学习描述为“使计算机在没有明确编程的情况下进行学习”。塞缪尔编写了第一个版本的跳棋程序,他设想能够进行机器学习的程序有一天将击败世界顶级棋手。这一设想在今天已经变为现实。
机器学习属于计算机科学领域,它使机器能够从过去的经验中进行学习,并可根据这些经验进行预测。
机器学习的更精确定义可表述如下。
如果某计算机程序在任务T中的性能(由P衡量)随着经验E的提高而提高,则可以从经验E中学习有关某类任务T和性能度量P的信息。这样的程序称为机器学习程序。
使用上面的定义,在目前常见的类比中,T是与预测相关的任务(task),而P是计算机程序在执行任务T时所达到的准确率的度量,称为性能(performance)。程序学习所获得的经验(experience)被称为E。随着E的增加,计算机程序将做出更好的预测,这意味着P会提高,因为程序将以更高的准确率执行任务T。
在现实世界中,你可能会遇到一位老师教学生执行某项任务,然后通过让学生参加考试来评估学生执行任务的技能。学生接受的训练越多,他们完成任务的能力就越强,他们在考试中的得分也就越高。像这样有老师的学习称为监督学习(supervised learning),而没有老师的学习则称为无监督学习(unsupervised learning)。在它们之间还有一种学习方式称为半监督学习(semi-supervised learning),就是老师不教学生,但是学生提交答案时,老师可以判断对错。
接下来,我们介绍深度学习。
长期以来,我们一直都听到“学习”这个词,在某些情况下,它通常意味着在执行任务时获得经验。然而,当以“深度”为前缀时,又意味着什么呢?
在计算机科学中,深度学习(deep learning)是指一种机器学习模型,它涉及一个以上的学习层。这意味着计算机程序由多种算法组成,数据通过这些算法一一传递,最终产生所需的输出。
深度学习系统是使用神经网络的概念创建的。神经网络由连接在一起的神经元层组成,数据从一层神经元传递到另一层,直至到达最终层或输出层。神经元的每一层所获取的数据输入都是上一层的输出,它可以和最初提供给神经网络的形式相同,也可以不同。
图1-1显示了神经网络示意图。
图1-1
图1-1包含了一些术语,我们来简要认识一下它们。
保存输入值的层称为输入层(input layer)。有些人认为该层实际上不是一个层,而只是一个保存数据的变量,因此是数据本身,而不是一个层。然而,保持层的矩阵的维度很重要,必须正确定义神经网络才能与第一个隐藏层通信。因此,它在概念上实际就是一个保存数据的层。
任何介于输入层和输出层之间的层都称为隐藏层(hidden layer)。生产环境中使用的典型神经网络可能包含数百个输入层。
一般来说,隐藏层包含比输入层或输出层更多的神经元。但是,在某些特殊情况下,这可能不成立。在隐藏层中有更多的神经元通常是为了处理输入层以外的维度中的数据。这允许程序获得可能在数据中不可见的见解或模式。
神经网络的复杂性直接取决于网络中神经元的层数。虽然神经网络可以通过添加更多层来发现数据中更深的模式,但它也增加了网络的计算成本。网络也有可能进入一种称为过拟合(overfitting)的错误状态。相反,如果网络太简单,或者说不够深,就会达到另一种错误状态,称为欠拟合(underfitting)。
注意:
有关过拟合和欠拟合的详细信息,可访问以下网址。
https://towardsdatascience.com/overfitting-vs-underfitting-a-conceptual-explaining-d94ee20ca7f9
最后一层称为输出层(output layer)。它将生成所需的输出并保存起来。该层通常对应着所需输出类别的数量,或者具有一个保存所需回归输出的神经元。
神经网络中的每一层都经历了一个称为激活函数(activation function)的应用。该函数的作用是将神经元中包含的数据保持在归一化范围内,否则这些数据会变得太大或太小,并导致在计算机中出现与处理较大的十进制系数或较大数字相关的计算错误。此外,激活函数使神经网络能够处理数据中模式的非线性。