如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

只有高中数学基础,要如何掌握数据科学的数学?

  • 2019-06-20
  • 本文字数:2764 字

    阅读完需:约 9 分钟

只有高中数学基础,要如何掌握数据科学的数学?

导读: 本文是作者 Ajit Jaokar 即将出版的《Mathematical foundations of Data Science》(《数据科学的数学基础》中的一部分。在这篇文章中,作者用感知器算法(Perceptron algorithm)来填补高中数学和深度学习之间的鸿沟。

背景

作为高校课程主任,我负责讲授《Artificial Intelligence: Cloud and Edge Implementations》(《人工智能:云计算和边缘计算的实现》),但我看到的现状是,太多的学生熟悉的是编程方面,而不是数学方面。


他们上次学习数学,还是在大学里学的,已经是几年前的事情了。然后,当他们开始学习数据科学时,突然发现,他们需要跟矩阵、线性代数等等打交道。


他们原本以为,大学毕业以后就不会再碰数学了。更槽糕的是,他们发现,在很多情况下,他们并不知道这些概念到底是用于数据科学的哪些领域。


如果你要考虑学习数据科学所需的数学基础,那么你可以将它们分为四个关键领域:


  • 线性代数

  • 概率论与统计学

  • 多元微积分

  • 优化


所有这些基础都是在高中(14 到 17 岁)所教授的内容(至少是部分内容)。


在本文中,我们从这些想法开始,并将它们与数据科学与人工智能联系起来。

理解线性回归

让我们从线性回归开始讲起。


线性关系意味着可以用直线表示两组变量之间的关系。许多现象可以用线性关系来表示。我们可以用线性方程的形式来表示这种关系,形式如下:


y = mx + b


其中,“m” 表示直线的斜率;“x”表示直线上的任一点(一个输入或 x 值),“b”是直线与 Y 轴相交的位置。


这种关系可以表示如下:



如果我们将这个等式扩展到 n 个变量,我们就会得到:



现在,让我们将工具切换到一种新的模型,即从线性回归到感知器学习。我们展示了这个新模型和线性回归的关系。此外,感知器学习可以扩展到多层感知器,即深度学习算法。

感知器学习

感知器可以看作是“人工神经元”,也就是生物神经元的简化版。感知器如下图所示。感知器接受多个输入:x1、x2、……,并产生一个二进制输出:



图:感知器


展开上面的内容,在下面的示例中,我们现在考虑加权输入。感知器有三个输入,x1、x2、x3 和权重 w1、w2、……。w1、w2、……是实数,用来表示各个输入对输出的重要性。感知器的输出是 0 还是 1,要取决于加权和“∑jwjxj”是小于还是大于某个阈值。我们可以把感知器看作是一种通过权衡证据来作出决策的设备。这个概念类似于我们之前见过的多元线性方程。这个概念可以表示为如下所示的函数:



图:感知器的一般表示


它确实与我们以前所见到的多元线性回归方程相似。


感知器:不仅仅是历史上的一个脚注

作为一种算法,感知器有一段有趣的历史。感知器最初是在硬件上实现的。感知器算法的第一个实现是 Mark I 感知器。感知器算法于 1957 年由 Frank Rosenblatt 在 Cornell Aeronautical Laboratory 发明的。感知器被设计成一台机器而不是一个程序。这台机器是为图像识别而设计的:它有一个由 400 个光电管组成的阵列,随机连接到“神经元”上。权重编码在电位器中,学习过程中的权重更新由电动机执行。事后证明,当时人们对感知器的乐观态度实际上是错误的。在 1958 年由美国海军组织的新闻发布会上,Rosenblatt 发表了关于感知器的声明,引起了当时羽翼未丰的人工智能界的争议。根据 Rosenblatt 的声明,《New York Times》报道称,“感知器是一台电子计算机的雏形,(美国海军)希望它能够走路、说话、看物、写字、复制自己,并能够意识到自己的存在。”


虽然感知器最初看起来很有前途,但人们很快就证明了感知器并不能被训练来识别许多类的模式。这种错位的乐观主义导致神经网络领域多年来停滞不前,直到人们认知到,具有两层或更多层(也成为多层感知器)的前馈神经网络比只具有一层(即单层感知器)的感知器具有更强大的处理能力。单层感知器只能学习线性可分模式。


下面是(单层)感知器的学习算法的示例。一个图表显示了一个感知器随着更多训练样本的增加而更新其线性边界。



图:感知器分类


以上对感知器和图像的描述,改编自 WikiPedia:https://en.wikipedia.org/wiki/Perceptron


因此,虽然感知器具有历史意义,但它毕竟是一种功能性算法,即线性分类器。线性分类器虽然很有趣,但就最初的承诺和潜力而言,它还不够引人注目。


然而,对我们来说,感知器不仅仅是历史上的一个脚注。这是一种将你的高中基础知识与深度学习联系起来的方法。

使用非线性激活函数克服感知器学习的局限性

要克服感知器仅作为线性分类器的局限性,一个步骤是考虑非线性激活函数。在上图中(图:感知器的一般表示),函数 f 表示激活函数。对于感知器来说,激活函数只是一个阶跃函数。阶跃函数输出表示感知器的输出。阶跃函数的输入是加权输入。下面我们将更详细地讨论激活函数。但就目前而言,重要的是要认识到感知器的激活函数是一个阶跃函数。


1969 年,在 Marvin Minsky 和 Seymour Papert 合著的一本知名图书《Perceptrons》(《感知器》)中指出,感知器不可能会学习异或函数(XOR function)。但是,如果我们对感知器使用非线性激活函数(而不是阶跃函数),那么这个限制就不适用了。事实上,通过使用非线性激活函数,我们就可以对比逻辑异或更复杂的函数进行建模(哪怕只有单层)。如果我们添加更多的隐藏层来创建多层感知器,那么这个想法就可以得到扩展。


激活函数的工作原理可以通过在给定 x.sigmoid、tanH、ReLu 的曲线上找到 y 的映射值来理解。例如,sigmoid 激活函数映射 0 到 1 之间的值范围。这意味着,对于 x 在负无穷到正无穷之间的值,y 值将通过 Sigmoid 函数映射到 0 到 1 之间。对于每个节点,Sigmoid 激活将输出作为 sigmoid (dot(input, weights) ) + b,其中,函数的输入表示每个节点的 x 值和权重的点积。矩阵 b 表示偏差矩阵。类似的,tanh 函数表示结语 -1 和 +1 之间的输出。激活函数必须是可微分的,因为函数的导数表示更新步骤时的变化方向。


所以,我们来总结一下:


  • 感知器是生物神经元的简化模型。

  • 感知器是一种学习二元分类器的算法:一种将输入映射到输出值(单个二元指)的函数。

  • 感知器是一个人工神经元,使用阶跃函数作为激活函数。感知器算法也被称为单层感知器,以区别于多层感知器。

  • 虽然感知器算法具有历史意义,但它为我们提供了一种弥补线性回归和多层感知器之间差距的方法,即深度学习。

多层感知器

我们现在来讨论多层感知器(Multi-layer perceptron,MLP)的概念。多层感知器通过以下三种方法克服了上一节中讨论的感知器算法的局限性:


  1. 通过使用非线性激活函数

  2. 通过使用多层感知器(而非单层感知器)

  3. 使用不同的训练方法,即 MLP 需要结合反向传播和梯度下降进行训练



图:多层感知器


因此,多层感知器可以看作是一个复杂的感知器网络(具有非线性激活函数),它们可以在逐层权衡证据的基础上作出微妙而复杂的决策。




英文原文:


https://www.datasciencecentral.com/profiles/blogs/how-to-learn-the-maths-of-data-science-using-your-high-school


2019-06-20 17:016835
用户头像

发布了 376 篇内容, 共 207.3 次阅读, 收获喜欢 949 次。

关注

评论

发布
暂无评论
发现更多内容

啥子叫递归哟!!!(阶乘)

依旧廖凯

28天写作 3月日更

一分钟了解EFT公链新一代超级DeFi公链——EGG超级公链

币圈那点事

区块链 公链 挖矿

TCP拥塞控制四种算法

赖猫

TCP 网络协议

整理 自动备份MYSQL数据库shell脚本

edd

Elasticsearch Segments Merging 磁盘文件合并

escray

elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 3月日更

Python 初学者必看:Python 异常处理集合

华为云开发者联盟

Python 异常 代码 程序 错误

【科创人】维格表创始人陈霈霖:喜茶数字化转型的结晶是vika维格表

科创人

腾讯高级工程师保姆级“Java成长手册”,层层递进,全是精华

Java架构追梦

Java 腾讯 面试 架构师

数据营销“教父”宋星十年倾心之作,让数据真正赋能企业

博文视点Broadview

基于 SparkMLlib 智能课堂教学评价系统 - 系统实现(四)

大数据技术指南

大数据 spark 智能时代 28天写作 3月日更

解析分布式应用框架Ray架构源码

华为云开发者联盟

gRPC API 框架 ray 分布式应用框架

镁信健康“互联网+医+药+险”模式能否打造出中国版联合健康?

E科讯

翻译:《实用的Python编程》06_01_Iteration_protocol

codists

Python

中台还没建就开始拆中台了?医疗中台何去何从?

菜根老谭

中台 医疗中台

一文搞懂PID控制算法

不脱发的程序猿

3月日更 PID 控制算法 智能控制 工业控制

【LeetCode】螺旋矩阵Java题解

Albert

算法 LeetCode 28天写作 3月日更

万物互联网络在企业中的价值和展望 | 趋势解读

物联网

恭喜自己2021金三银四收到的第五个Offer:字节跳动Java研发岗

比伯

Java 编程 架构 面试 程序人生

Spring AOP 执行顺序 && Spring循环依赖(面试必问)

hepingfly【gzh:和平本记】

Java spring aop 循环依赖

学以至用-从“0”到“1”设计千万级交易系统

ninetyhe

高可用 分布式系统 海量数据库的设计与实践 异步削峰

BOE(京东方)物联网解决方案让会议更“智慧”

爱极客侠

融云聊天室属性 kv

融云 RongCloud

音视频

阿里P7亲自讲解!整理几个重要的Android知识,最全Android知识总结

欢喜学安卓

android 程序员 面试 移动开发

《精通比特币》学习笔记(第十一章)

棉花糖

区块链 学习 3月日更

书单|互联网企业面试案头书之程序员软技能篇

博文视点Broadview

有状态容器应用,从入门到实践

焱融科技

Kubernetes 容器 云原生 焱融科技 分布式存储

集成融云 IMLib 时,如何实现一套类似于 IMKit 的用户信息管理机制

融云 RongCloud

阿里P7亲自教你!一线互联网大厂中高级Android面试真题收录!讲的明明白白!

欢喜学安卓

android 程序员 面试 移动开发

三步上线自己的在线监考系统

融云 RongCloud

混合编程:如何用python11调用C++

华为云开发者联盟

c++ 编程 语言 python11 混合编程

Navicat操作MySQL简易教程

Simon

MySQL navicat

只有高中数学基础,要如何掌握数据科学的数学?_AI&大模型_Ajit Jaokar_InfoQ精选文章