机器学习之所以必要,主要是因为对于一些复杂任务,直接编程太过复杂,人类难以解决任务中的所有细节并精确编程。例如,编写程序去识别复杂场景中照明条件下新视角的三维物体很困难,因为我们不了解其在大脑中的运作机制,即便知道,编写的程序也会非常复杂;编写计算信用卡诈骗概率的程序也很困难,因为可能没有简单可靠的规则,需要结合大量弱规则判别,且欺骗行为会转移目标,程序需不断更改。
在这种情况下,我们向机器学习算法提供大量数据,让算法通过探索数据并找到能实现程序员目的的模型来解决问题。机器学习算法利用这些样本生成的程序可能与典型手写程序不同,可能包含数百万个数字。如果做得正确,该程序能像处理训练集样本一样处理新样本,且数据改变时程序也可通过训练新数据改变。
目前,大量的计算比支付给程序员编写特定任务的程序更便宜。机器学习适用的任务例子包括模式识别(如真实场景中的物体、面部识别或表情、口语)、异常识别(如不寻常的信用卡交易序列、核电站传感器读数的异常模式)、预测(如未来股票价格或货币汇率、一个人喜欢的电影)。
选自Medium作者:James Le机器之心编译参与:白悦、黄小天我们为什么需要「机器学习」?机器学习对于那些我们直接编程太过复杂的任务来说是必需的。有些任务很复杂,以至于人类不可能解决任务中所有的细节并精确地编程。所以,我们向机器学习算法提供大量的数据,让算法通过探索数据并找到一个可以实现程序员目的的模型来解决这个问题。我们来看两个例子:写一个程序去识别复杂场景中照明条件下新视角的三维物体是很困难的。我们不知道编写什么程序,因为我们并不了解它在我们大脑中运作的机制,即便知道如何实现,写出来的程序也可能会非常复杂。写一个程序去计算信用卡诈骗的概率是很困难的。因为可能没有任何既简单又可靠的规则,我们需要结合大量的弱规则去判别。欺骗是可以转移目标的,程序需要不断更改。接着出现了机器学习方法:我们不需为每个特定的任务手动编程,只要收集大量的样本,为给定的输入指定正确的输出。机器学习算法利用这些样本去生成完成指定工作的程序。学习算法产生的程序可能与典型的手写程序非常不同,它可能包含数百万个数字。如果我们做得正确,这个程序将像处理训练集上的样本一样来处理新样本。如果数据改变,程序也可以通过训练新数据改变。你应该注意到,目前大量的计算比支付给程序员编写一个特定任务的程序便宜。鉴于此,机器学习最适用任务的例子包括:模式识别:真实场景中的物体,面部识别或面部表情,口语。异常识别:不寻常的信用卡交易序列,核电站传感器读数的异常模式。预测:未来股票价格或货币汇率,一个人喜欢什么电影。什么是神经网络?
由于库和框架的支持不断增加,机器学习开始变得越来越流行。我们现在很容易在所有领域找到人工智能和机器学习的应用。然而,通过库和框架使用人工智能,并不足以让我们成为机器学习领域的所谓”专业人士“。有编码框架的支持直接套用固然很方便,但要实现落地AI行业;我们必须了解这些代码背后的逻辑。一旦我们取消了现有框架的支持,了解这些框架背后的数学细节,编写这些算法中包含的复杂模式就会显得非常重要。可以参照上面的图例,我们至少需要了解概率、统计、线性代数、微积分和图论方面的知识。[heading1]如何利用数学成为机器学习领域的专家[content]有了具体的数学知识,我们就可以充分利用机器学习的潜力,在我们感兴趣的所有领域内构建各种各样有趣的应用程序。比如:凭借算法背后的内联数学知识,为数据集选择最佳算法。利用正则化器背后的数学知识帮助解决模型过拟合或高方差问题。利用图论的知识来分析数据特征之间更复杂的关系。利用优化器背后的数学知识来设计适当的成本函数。[heading1]机器学习需要什么水平的数学知识?[content]这个问题的答案相对比较主观,取决于每个人的具体需求。比如我们正在进行机器学习的底层研究,可能需要具有深厚的数学知识,因为研究要求彻底深入。但对单纯的应用者来说,我们可能不需要任何高等数学的相关知识,掌握prompt的基础框架就可以很好的应用。
因此,情况对神经网络不利。但是,为什么?他们的想法毕竟是想将一连串简单的数学神经元结合在一起,完成一些复杂任务,而不是使用单个神经元。换句话说,并不是只有一个输出层,将一个输入任意传输到多个神经元(所谓的隐藏层,因为他们的输出会作为另一隐藏层或神经元输出层的输入)。只有输出层的输出是「可见」的——亦即神经网络的答案——但是,所有依靠隐藏层完成的间接计算可以处理复杂得多的问题,这是单层结构望尘莫及的。有两个隐藏层的神经网络言简意赅地说,多个隐藏层是件好事,原因在于隐藏层可以找到数据内在特点,后续层可以在这些特点(而不是嘈杂庞大的原始数据)基础上进行操作。以图片中的面部识别这一非常常见的神经网络任务为例,第一个隐藏层可以获得图片的原始像素值,以及线、圆和椭圆等信息。接下来的层可以获得这些线、圆和椭圆等的位置信息,并且通过这些来定位人脸的位置——处理起来简单多了!而且人们基本上也都明白这一点。事实上,直到最近,机器学习技术都没有普遍直接用于原始数据输入,比如图像和音频。相反,机器学习被用于经过特征提取后的数据——也就是说,为了让学习更简单,机器学习被用在预处理的数据上,一些更加有用的特征,比如角度,形状早已被从中提取出来。传统的特征的手工提取过程的视觉化因此,注意到这一点很重要:Minsky和Paper关于感知机的分析不仅仅表明不可能用单个感知机来计算XOR,而且特别指出需要多层感知机——亦即现在所谓的多层神经网络——才可以完成这一任务,而且罗森布拉特的学习算法对多层并不管用。那是一个真正的问题:之前针对感知机概括出的简单学习规则并不是适用于多层结构。想知道原因?让我们再来回顾一下单层结构感知机如何学习计算一些函数: