人工智能时代前沿技术社区

首页 > 人工智能 > 热点

机器学习的建模问题

​今天分享的主题是机器学习的建模问题。

作者: | 2018-12-05 11:23:10

今天分享的主题是机器学习的建模问题,这其实是个非常大的问题。但是今天为什么还是分享这个呢?主要是两个原因,一个是因为在整个机器学习过程中,最重要的部分就是建模问题,建模就是把实际生活中遇到的场景数学化;第二个原因是在学习过程中,建模问题实际上是辅助了解机器学习的更好途径,对于整个机器学习的骨架都建立了一个比较完善的知识体系。

一、如何定义机器学习

机器学习本质上是从数据中发现规律的学科,也就是说机器学习兴起时实际上是用在科研中的,在科研中很多时候都要用到预测,能完成预测的过程就是机器学习的一个过程。从另一方面,机器学习=特征+模型,这里面的机器学习问题特化为了两个问题,第一个就是所谓的特征。

特征:现在在网上查找所谓的特征工程方面的内容,会发现他们分享的都非常局限于表格数据,电商和生活中用的比较多,强调这种特征工程可能就会让大家陷入一种误区。声音、音频、图像或者其他各种的数据类型,这是机器学习更多的面对的数据类型,如何处理这种类型是现在这个阶段需要处理的问题,所以特征工程并不仅仅局限于表格问题。

第二个就是模型。

模型:整个机器学习的核心,它特化为很多的机器学习方法,比如支持向量机、逻辑回归、线性回归等这都是一些简单的机器学习算法,但是它们具有通用性,内核是一致的。在2012年后,深度学习进入爆发时期,之后再解决机器学习问题就倾向于使用深度学习模型。

将二者有机结合起来才是目前阶段所有机器学习的灵魂。

实际上很多机器学习过程就是寻找一种可靠的方式去拟合函数。函数变量就是特征,这个变量都是数值型的变量,没有文字或字符类型。为什么会有人画图,是因为我们把函数映射到空间之中,函数和空间有一定的对应关系,由于函数有多个变量,所以是多维空间,这个时候我们才可以给它画图。这是机器学习的第一种方式,试图用空间曲面的方式去解决机器学习问题。我们所建立的函数就是从数据中得到的知识,也就是模型。

那么我们多建立的所有模型,最基本的目标:第一,快速;第二,精度。精度和速度是不能兼得的。 

最朴素的机器学习过程就是从数据中发现函数,最简单的就是插值

如图:

插值是在数据量较少的时候一种无奈的选择。

接下来看一个非常直观的机器学习过程

气压和高度的关系公式:

线性回归:

接下来列举两个非机器学习的例子:

非机器学习问题:数值模拟问题

非机器学习问题:最优路径(用机器学习很难去建立一个函数)

二、如何定义多种数据特征

特征

做特征的时候有两个选择,一个是做,一个是不做。有人觉得特征工程整个决定了机器学习的效果上限,个人觉得过度夸大其作用。其实在做特征的时候很多没有必要去做,可以交给模型去做,比如给一个简单的特征,然后去建立一个比较复杂的模型,去完成我们的预测工作,这是深度学习的意义。

这里我们定义特征是“人为”的从数据中发现的已知规律,也就是说在兴起之前,我们用的简单的机器学习方法,需要人为的去发掘一些特征。当然,人为也可以用机器,这是都是基于规则的,基于规则的变化可能不太适用于数据,但是依然能得到一个相对不受影响的结果,机器学习不太强调精度,因此得到一个可用的结果就可以了。 

表格类型和数据特征

最早遇到的机器学习类型就是表格类型。

每一行看成一个样本,每一列都是每个样本有多少属性。

最常见例子:

直线分类边界

很多机器学习模型实际上都是线性模型,虽然精度不够但是速度非常理想。很多人说线性模型是一种非常容易欠拟合的模型,也就是说它没法完成非常复杂的曲线拟合,这个想法没有什么大的问题,但这是我们没有做任何特征工程前提下所引发的问题。

非直线分类边界

例子:

网上很多做特征一般到上面就截止了,但是面对其他数据时该怎么解决呢?

一维连续数据特征

这是一个波形数据。

在信号分析中最常用的一种作特征的方式是傅里叶变换,是通过频谱分析声音大概在哪个频率的。

二维连续数据特征

生活中更常见的是二位连续数据,大家最直观的是图片,涵盖面非常广。

二维卷积/互相关提取特征:

Harry小波:

通过这个获取图像特征,然后就可以把得到的特征输入到机器学习的模型中能得到自己想要的结果,人脸检测这个过程中就可以用这个小波去完成识别。

因此,机器学习有一部分的精力需要放在这些固定特征的提取之上,虽然有了深度学习,但是固定特征的变化实际上体现了机器学习在建模过程中的设计感,这种设计感一方面是基于自己的心理,另一方面还能显著的减低计算的负担。

纯粹基于特征提取都可以完成机器学习

Harry小波+文本相似哈希:

三、如何建构模型

特征与模型:

特征不够,模型来凑,这是没有问题的。

机器学习模型通用性

在建模过程中需要强调的一点:我们在学习机器学习的过程中我们有很多的模型,比如说线性回归、深度神经网络、支持向量机等等算法,但各种算法之间都有通用型。

模型例子:

如何看待多种机器学习算法

在做传统模型的时候常常强调特征,如果特征提取非常困难的话,我们可以让网络本身去完成提取过程。

深度学习建模

深度学习是最适合入门的机器学习算法。

如果对数据不是非常熟悉的话就可以用深度学习来代替。

我们付出的代价是整个计算复杂度提高。

在深度学习中,最强调的是概率的依赖关系。

深度学习对于概率关系最常见的:

对于卷积神经网络来说,特征就是感受野

循环神经网络,特征就是时序依赖

四、建模实例

1图片分类

在做图片分类的时候,在卷积神经网络之后又加入了一个全连接网络,实际上加入全连接就是为了处理整张图片的信息,相当于每一个输出节点之间跟图像的每一个像素都建立了矩阵上的联系,这种联系带有概率上的依赖,所以说加入全连接网络可以完成所有图像分类的任务。

2文本分词

文本分词建模

双向神经网络,可以解决概率依赖关系。

最常用的方式就是画图。

五、深度学习模型过度使用问题

深度学习非常简单便捷,它弱化了特征工程,是一种非常理想的机器学习模型,但是它存在一个过度使用的问题。比如我们所有的深度学习问题都想用神经网络来解决,思维没有问题,但结果可能并不好,因为这会导致训练过程非常非常漫长。另外一方面,如果给定数据出现问题,模型可能不收敛,其次计算时间也会非常常,深度学习模型并不适合部署手机端。

训练数据构建问题

模型复杂度过高问题

如果想要进行更具体的特征提取,需要搭建比较复杂的模型,但是如果用三层、四层已经能完成很复杂的任务,搭建十层显然就没有必要,这就是过度建模。过度建模很使得计算成本显著增加,同时也是非常难以训练的。如何把握这个度,所需要的特征数量和网络的层数一定要匹配,这个才是建模的根本。

 

今天分享的内容就到这里。希望大家有时间可以多看看相关内容。