不懂高数也能入门深度学习

  ”已有一周多时间,根据学员学习的积极程度和产出来看,星星之火已开始升温,这篇文章就是我们优秀学员对于学习的深度体会,作者是百度 AI 技术的忠实学员和践行者,笔记内容和图片等已经作者同意,于我们平台进行发布。

  提前声明:本文标题为“不懂高数”,并非“不懂数学”。如有异议,抗议无效😳

  作者的原始目标读者是从事 IT 工作,想学习 AI 技术的专业人员。(敲黑板+严肃脸:咱的读者都是专业的)。当然如果自己看不懂,不如转给朋友同学,让朋友一起懵逼~

  PS:(分割线后正文)如果不知道 PaddlePaddle 的深度学习去哪儿入手,可以去极客学院的官网企业入口,点击进入百度 AI 图像技术课程。

  本视频讲的就是AI基础知识,让新用户打好理论基础,并且希望通过本次视频和学习笔记,逐步将AI爱好者引导至百度PaddlePaddle开源框架。如果是非IT人员仅仅想了解行业,还是建议看《猿人的第一次直立行走》这篇文章。

  水多数人对AI学习的概念很模糊,以为这是个半年时间就能学有所成的技术,但是“做AI”和“用AI”的区别很大。“做AI”的要求很高,我从各个渠道获取的信息,不是藤校硕博就别梦想自研算法了;但“用AI”的要求并不高。

  以这一节入门培训视频为例,有数学基础更好,没有高数基础听起来会很吃力,但多听几次查查百科也能听懂;实验实操部分使用的Docker部署环境和Jupyter电子书操作,对计算机水平要求也不高,能安装运行起Docker,能读懂Python常规语法即可。

  深度学习是机器学习的最热门分支,这句话足以解释深度学习和机器学习的关系。机器学习可以分为有监督学习和无监督学习,监督学习主要解决分类和回归问题,无监督学习最主流的算法是聚类和词嵌入。

  今天的课程只讲解监督学习的线性回归问题,这个经典的模型足以解释在深度学习中遇到的大部分基础问题。

  在监督学习过程中,一个Feature(特征)和对应的Label(标签)被称为一个样本(example),所有样本的集合被称为数据集(dataset)。图片识别过程中,原始图片是特征,图片的实际内容是标签;语音翻译过程中,原始语音是特征,输出的文字是标签;本节课的房价预测实验中,房价有关的13类信息是特征,预估出的房价是标签。

  监督学习中,模型就是尝试描述已知数据特征和数值的关系,来推演出新的数据特征对应的新的数值的关系。

  模型有两大关键概念,拟合描述和泛化预测。其中拟合描述已有数据之间的映射关系(Fit)就是日常说的样本训练,根据模型对未知数据做泛化预测(GeneraLization)就是推演。

  我们看一个极简版的线性回归模型场景,假设第一个数字是2,第二个数字是4,第四个数字是8,第三个数字应该是多少?这个场景虽然简单,但麻雀虽小五脏俱全,将前文提到的几个概念全部列出来了。

  机器学习的主要工作就是训练合格的模型,这一步有两个重要概念,分别是假设函数(Hypothesis Function)和损失函数(Cost Function)。

  首先看假设函数,假设函数就是用数学方法描述自变量X和因变量Y的关系,就是上文模型中的那个“y=θx”中的“saita(θ)”,这个例子只是一个最简单的线型假设函数,后面实验部分就能看到13个θ的复杂函数。

  下图是一个房价和人口关系的预测场景,这里最简单的趋势就是人口越多房价越高,做出来一个单变量先行假设函数,在下图中用一条蓝色的直线标识。

  上图中是极简化抽象的假设函数的例子很简单,但实际上可能非常复杂。比如说可能假设函数不是“y=θx”,而是“y=θ0+θ1x+θ2x+θ3x+θ4x……”,本文中打字不方便用下标,只是想说明假设函数可能有几十上百甚至上万个θ值,即上万个模型参数。

  损失函数是用来描述使用这个假设函数的预测结果和真实数据之间的误差,用误差的均方差做数值描述。当误差均方差最小的时候即为极值点,即假设函数质量最优。

  比如说我们在上图中总结出的规律是“A城市有十万人,房价为8万;B城市有20万人房价为16万,即y=θx中,房价y=0.8*人数x,模型参数θ=0.8。”这个模型过于简化生硬,因为C城市有15万人,但房价是10万,D城市有25万人,但房价为25万,则该模型均方差约为5.4。我们需要找到有没有更贴合实际房价的函数,让损失函数进一步减小,即无限贴近极值点,但几乎不可能直接达到极值点。

  上图中是极简化抽象的损失函数的例子,但实际上可能非常复杂,因为要涉及的Feature特征会非常多,特征的规律也未必是简单的一次函数。下文三个图是Feature特征逐步复杂导致损失函数逐渐复杂的示意图。

  通过寻找合适的假设函数,不断的降低损失函数的均方差,让损失函数逐渐靠近极值的过程就是模型训练的过程。训练过程中有多种可选的优化方法,本次课程讲的是最通用的梯度下降算法。梯度下降是为了找到损失函数的极值点,然后通过一步步迭代尝试的方式无限接近极值点。

  首先我们看为什么是无限迭代?人脑看到样本A中x=10,y=8,样本B中x=20,y=16,则稍微有数学基础的人都能看到y=0.8*x,但计算机不是人脑,这么简单的函数也要通过猜测重试的方法去测可能的θ。计算机很笨但速度很快,而且永不疲倦,人类很聪明但速度慢且有生理上限;自然人去写简单规律的程序的效率比AI高的多,因为自然人一眼就能看到最优雅的θ值,但复杂到上万个参数的数学规律能让数学家打字打到手抽筋,只能由AI来做。

  具体梯度下降的过程是如下图的一步步重试,如果顺着正确的方向去测试则损失函数越来越接近极值点,但如果测试的方向错了则离极值点会越来越远,即无法完成收敛。详细梯度下降过程可以看视频内容,但看不太懂也可以继续。

  梯度下降过程中需要人类指定一个叫学习率的参数,学习率太小了则是自我束缚,小碎步跑到极值点附近的时间可能是几天甚至几年;学习率太大了函数可能越来越发散,最终无法收敛。我们人类可以看到这些简单函数里计算机在乱撞,但计算机自己看不到,我们也看不清楚复杂函数(如上文的多个波峰波谷的三维函数)到底是接近极值点还是远离极值点了。

  ↑(如果这里能换个稍微复杂点有多个局部极值点的图,即函数从U形变成了W或则WvV型,模型训练的过程会更直观的展示出来。)

  因为计算机比较笨,人类又受到生理条件的限制,所以梯度下降的过程有一定的运气成分。模型训练有大致的规律趋势,也能逼近极值点,但没有教科书式的普遍性规律,而且也很难从逼近变为到达极值点。

  常见的三种梯度下降优化框架中,最推荐小批量梯度下降,因为另外两种方式或者太笨重或者太随机。但选择小批量样本要兼备脑子和运气,样本选择要足以表述全局数据集的特征,且数据要和算法、硬件有向量化匹配才能快速运算。

  我们看一下前文知识点的总结,对没数学基础的同学们,看懂前面25分钟的内容是很吃力的,但打好基础就能轻松上阵做下一步工作了。

  我们要知道什么是假设函数和损失函数,更要深度理解梯度下降算法,相关的知识点都在下图中有标明:

  再接下来的实验中,我们拿一份房价的数据集,首先要观察和预处理这些房价相关数据,然后设计假设函数和损失函数,最终训练和观测结果,完成一个数据训练从思考分析到技术实现的全过程。这一部分最难也最重要的数据预处理。

  今天先分享这么多,本节课的后部分明天发出。还有更多学习内容会持续更新,敬请关注,相信大家会越学越好!课程方面可以去学院学习!!返回搜狐,查看更多

您可能还会对下面的文章感兴趣: