机器学习&深度学习浅析

1. 什么是深度学习

这里首先简单介绍一下机器学习,什么是深度学习,深度学习是机器学习得一个分支,是通过多层的计算结构做的机器学习,机器学习又是人工智能的分支,所以这三者的关系是层层递进的。所谓机器学习就是不需要显示的通过编程告诉机器怎样做,而是随着数据增加机器的能力越来越强。


如图,我们先确定一个评价指标,机器学习就是通过数据总结规律,使这个评价指标越来越好,PaddlePaddle就是中间的机器学习程序。


这是一个监督学习的例子,监督学习是指有一个数据样本,将数据样本输入到一个初始模型中,它会给出一个预测结果,将预测结果跟真实结果做一个对比,通过学习让真实结果和预测结果更接近,然后学习的表现就是给模型调参。比如人的年龄和体重的关系,左边的数据是年龄和体重,比如说0岁是3公斤,10岁是40公斤。首先先把样本数据输给模型,然后这个模型根据这个公式会有一个预测结果。然后根据这个预测结果和真实结果,也就是说体重之间的差,可以确定一个最小化的学习目标。这个学习目标就是让真实体重和预测体重的差最小,通过学习目标来调节模型的参数进而得到一个最优的模型,这就是一个最简单的监督学习的框架。

机器学习主要有四个要素

第一个要素就是数据,数据的训练场景和使用场景要一致。比如上面那个例子中人的年龄和体重,数据标签中并没有性别,可能都是女性的年龄和体重,但是预测的时候或者使用的时候是不在乎性别或者只有男性,这个时候预测肯定不准,因为一般而言男性比女性稍微重一些。

第二个要素是模型结构,主要体现在对问题的理解。刚才预测年龄和体重的模型结构是一个线性的模型,就是一条直线,但是这肯定是不对的,因为人的体重肯定不会随着年龄无限的增长,所以模型结构和具体问题有关。而且模型结构还有一个问题就是输入特征是什么?刚才这个模型年龄应该是一个特征,当然还可能有别的特征,比如说收入情况,比较穷的人可能体重不会很大,比较富的人体重也不会很大,因为有时间锻炼,但是中产阶级可能比较胖。

第三个要素是优化目标函数,就是如何衡量预测和真实的差异。刚才这个例子用的优化目标就是平方差。这是比较简单的一个优化目标,但如果是分类问题,比如如果要做一个手写字符的识别,两个类别之间做差肯定是不行的,那么应该如何设计这个优化目标呢,这也是一个比较重要的问题。

第四个要素就是优化算法,也就是调参。实际上优化算法可以选择的很多,包括现在有一些自适应学习率的学习算法,都可以用PaddlePaddle来实现。


那么什么又是浅层学习呢?浅层学习的典型算法就是SVM和逻辑回归。图中x1-x5是五个特征,w1-w5是五个权重,预测值y就等于权重和对应特征的乘积和。假如说这是一个分类问题,那么y大于阈值就是正例,小于阈值就是负例,这就是一个浅层学习的基本模型。如果把这个浅层模型投影到二维情况下,那么y就可以表示成x和w的一条直线,这条直线是一个分界线,直线两边分别表示正例和负例。但是对于非线性问题,也就是线性不可分的情况下传统的浅层学习是做不了的。


浅层学习的局限性一是依赖于特征选择,如果特征选择特别准,那么确实可能线性可分或者说一刀切。比如说人类性别分类问题,如果我们选择头发长度或者颜色,身高或者体重作为特征,这些特征不太可能一刀能够切开这个分割平面。但是如果选择DNA作为特征,显然这个问题是线性可分的。或者可以通过核函数,将原来的空间扭曲成一个线性可分的空间。这些情况的话需要对输入数据的分布有比较清楚的了解,而且要有非常好的数学背景。但是如果没有那么好的数学背景呢?这个时候就需要神经网络了,传统的统计学习就是分析数据,调整核函数,而神经网络比较简单的玩法就是看看有没有效果,如果有效果再说为什么这么做。


上图是一个两层模型,两层模型的话其实就是两个浅层模型的堆叠。从x到y是一个浅层学习,从y到z也是浅层学习。它的需求点就是y到z应该是线性可分,但是y是通过x学习出来的特征。所以深度学习的特点就是叠很多层,然后在中间每一层对特征进行变换,直到最后变成一个可以分类的空间。中间的这些特征都是可学的,所以就不用显式地去编程中间应该怎么做了。

深度学习有以下几个特点一是比较灵活,网络可以连接成不同结构,可以是环路或者跳层的连接,也可以选择不同的训练目标、激活函数或者正则化。

二是可以学习高层次的抽象、分解变化因素。因为只有最后一层是做分类的,所以之前的都可以看作是特征提取的过程。

多任务学习也是神经网络非常好的一个特点,比如说现在有一个机器翻译数据,是一个英文到法文,还有一个英文到中文数据,那么这两个机器翻译任务可以在一个神经网络里面学习,只是两个不同的任务,前面英文的相关网络都是可以共享的,这也是神经网络比较灵活的一点。

四是转移学习或者迁移学习,这也是深度学习中非常常用的一点。我们可以从一个任务里得到一个神经网络然后直接应用到另外一个任务。迁移学习的好处就是对于一个新的领域,在数据量比较少的情况下,也可以得到比较好的效果。

那么到底什么样的任务适合于深度学习?其实也是目前机器学习的一个问题。主要有两点,第一点是一个明确目标。这个目标最好可以用数学表示出来。比如说优化目标可以是正确率或者某一种误差函数。

第二点就是大量的数据,或者虽然这个任务里面没有大量数据,但是另一个任务有大量数据可以用,这两个任务之间可以迁移学习。所以目前来讲机器学习是一个很有局限性的问题。这个局限性,比如如果把围棋棋盘变成三角形或者六边形的事情,而直接用围棋棋盘来训练AlphaGo的话,它是适应不了棋盘的变化的,但是人是适应的。所以目前的AI还是一个特定领域下的AI,应用场景非常窄。一个类似《西部世界》中能学习的智能体,目前还是一个需要探索的问题,我们还没有完全了解,我们也正在尝试了解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值