程序员的需要掌握的数学知识

程序员的需要掌握的数学知识

  人工智能跟开发 APP 、后台服务器、前端相比,人工智能需要大量的数学知识。一般都需要用到哪些呢?

  • 微积分
  • 线性代数
  • 概率论
  • 最优化

  关于书籍,特别说明一下,除非你是数学知识遗忘的特别厉害了,或者是本科的时候没有学过相关数学知识,或者你对数学有强烈的兴趣,否则不建议大家抱着书去学习,会浪费大家大量的时间和精力。我们人工智能所需要的数学知识,只是书本中的一部分,大家认真听课,把我们讲解的数学知识点掌握,就足够了!我们是应用型数学,不是研究型数学,我们学了数学更不是为了做题。

微积分

  • 导数与求导公式
  • 一阶导数与函数的单调性
  • 一元函数极值判定法则
  • 高阶导数
  • 二阶导数与函数凸凹性
  • 一元函数泰勒展开式

  先说高等数学中的微积分。在机器学习中,微积分主要用到了微分部分,作用是求函数的极值,就是很多机器学习库中的求解器(solver)所实现的功能。在机器学习里会用到微积分中的以下知识点:

  • 导数和偏导数的定义与计算方法
  • 梯度向量的定义
  • 极值定理,可导函数在极值点处导数或梯度必须为0
  • 雅克比矩阵,这是向量到向量映射函数的偏导数构成的矩阵,在求导推导中会用到
  • Hessian 矩阵,这是 2 阶导数对多元函数的推广,与函数的极值有密切的联系
  • 凸函数的定义与判断方法
  • 泰勒展开公式
  • 拉格朗日乘数法,用于求解带等式约束的极值问题

  其中最核心的是记住多元函数的泰勒展开公式,根据它我们可以推导出机器学习中常用的梯度下降法,牛顿法,拟牛顿法等一系列最优化方法,泰勒公式:

   f ( x ) = ∑ n = 0 ∞ f ( n ) ( x 0 ) n ! ( x − x 0 ) n f(x) = \displaystyle\sum_{n = 0}^{\infty}\frac{f^{(n)}(x_0)}{n!}(x - x_0)^n f(x)=n=0n!f(n)(x0)(xx0)n

  泰勒公式一阶展开:

   f ( x ) ≈ f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) f(x) \approx f(x_0) + f^{'}(x_0)(x - x_0) f(x)f(x0)+f(x0)(xx0)

  泰勒公式二阶展开:

   f ( x ) ≈ f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + 1 2 f ′ ′ ( x 0 ) ( x − x 0 ) 2 f(x) \approx f(x_0) + f^{'}(x_0)(x - x_0) + \frac{1}{2}f^{''}(x_0)(x - x_0)^2 f(x)f(x0)+f(x0)(xx0)+21f(x0)(xx0)2

  微积分和线性代数,微积分中会用到大量线性代数的知识,线性代数中也会用到微积分的知识,两者相辅相成。

  参考书目:

在这里插入图片描述

线性代数

  • 向量及其运算

  • 矩阵及其运算

  • 张量

  • 行列式

  • 二次型

  • 特征值与特征向量

  相比之下,线性代数用的更多。在机器学习的几乎所有地方都有使用,具体用到的知识点有:

  • 向量和它的各种运算,包括加法,减法,数乘,转置,内积
  • 向量和矩阵的范数,L1 范数和 L2 范数
  • 矩阵和它的各种运算,包括加法,减法,乘法,数乘
  • 逆矩阵的定义与性质
  • 行列式的定义与计算方法
  • 二次型的定义
  • 矩阵的正定性
  • 矩阵的特征值与特征向量
  • 矩阵的奇异值分解
  • 线性方程组的数值解法,尤其是共轭梯度法
  • 常用的矩阵和向量求导公式

  机器学习算法处理的数据一般都是向量、矩阵或者张量。经典的机器学习算法输入的数据都是特征向量,深度学习算法在处理图像时输入的 2 维的矩阵或者 3 维的张量。掌握这些知识会使你游刃有余。

  参考书目:

在这里插入图片描述

概率论

  • 随机事件与概率
  • 条件概率和贝叶斯公式
  • 随机变量
  • 随机变量的期望和方差常用概率分布(正太分布、均匀分布、伯努利二项分布)
  • 随机向量(合概率密度函数等)
  • 协方差与协方差矩阵
  • 最大似然估计

  如果把机器学习所处理的样本数据看作随机变量/向量,我们就可以用概率论的观点对问题进行建模,这代表了机器学习中很大一类方法。在机器学习里用到的概率论知识点有:

  • 随机事件的概念,概率的定义与计算方法
  • 随机变量与概率分布,尤其是连续型随机变量的概率密度函数和分布函数
  • 条件概率与贝叶斯公式
  • 常用的概率分布,包括正态分布,伯努利二项分布,均匀分布
  • 随机变量的均值与方差,协方差
  • 随机变量的独立性
  • 最大似然估计

  参考书目:

在这里插入图片描述

最优化

  最后要说的是最优化,因为几乎所有机器学习算法归根到底都是在求解最优化问题。 求解最优化问题的指导思想是在极值点处函数的导数/梯度必须为0。因此你必须理解梯度下降法,牛顿法这两种常用的算法,它们的迭代公式都可以从泰勒展开公式中得到。如果能知道坐标下降法、拟牛顿法就更好了。

  凸优化是机器学习中经常会提及的一个概念,这是一类特殊的优化问题,它的优化变量的可行域是凸集,目标函数是凸函数。凸优化最好的性质是它的所有局部最优解就是全局最优解,因此求解时不会陷入局部最优解。如果一个问题被证明为是凸优化问题,基本上已经宣告此问题得到了解决。在机器学习中,线性回归、岭回归、 支持向量机、logistic 回归等很多算法求解的都是凸优化问题。

  拉格朗日乘子法将带约束(等式和不等式)的优化问题构造成拉格朗日函数。通过这一步变换,将带约束条件的问题转换成不带约束条件的问题。通过变换原始优化变量和拉格朗日乘子的优化次序,进一步转换为对偶问题,如果满足某种条件,原问题和对偶问题是等价的。这种方法的意义在于可以将一个不易于求解的问题转换成更容易求解的问题。在支持向量机中有拉格朗日对偶的应用。

  KKT条件是拉格朗日乘子法对带不等式约束问题的推广,它给出了带等式和不等式约束的优化问题在极值点处所必须满足的条件。在支持向量机中也有它的应用。 如果你没有学过最优化方法这门课也不用担心,这些方法根据微积分和线性代数的基础知识可以很容易推导出来。如果需要系统的学习这方面的知识,可以阅读《凸优化》这本经典教材。

  参考书目:

在这里插入图片描述

算法或理论相关数学知识
KNN距离函数
决策树概率、熵、Gini系数
贝叶斯分类器随机变量、贝叶斯公式、随机变量独立性、正态分布、最大似然估计
PCA协方差、散布矩阵、特征值特征向量
线性判别散布矩阵、逆矩阵、特征值特征向量
支持向量机点到面举例、Slater条件、强对偶、拉格朗日函数、KKT条件、凸优化、核函数、Mercer条件
Logistic概率、随机变量、最大似然估计、梯度下降法、凸优化、牛顿法
随机森林抽样、概率、方差
AdaBoost概率、随机变量、极值定理、数学期望、牛顿法
隐马尔科夫模型概率、离散型随机变量、条件概率、随机变量独立性、最大似然估计、拉格朗日乘子法
条件随机场条件概率、数学期望、最大似然估计
高斯混合模型正太分布、最大似然估计、Jensen不等式
人工神经网络梯度下降、链式法则、BP反向传播
卷积神经网络梯度下降、链式法则、BP反向传播
循环神经网络梯度下降、链式法则、BP反向传播
对抗神经网络梯度下降、链式法则、BP反向传播、极值定理、Kullback-Leibler散度、Jensen-Shannon散度、测地举例、条件分布、互信息
K-Means距离函数
贝叶斯网络条件概率、贝叶斯公式、图
VC维Hoeffding不等式

  出现频率最高的是优化方法,拉格朗日乘数法,梯度下降法,牛顿法,凸优化。其次是概率论知识,随机变量,贝叶斯公式,随机变量独立性,正太分布,最大似然估计。再次是线性代数知识,几乎所有都会涉及到向量、矩阵、张量的计算,包括特征值和特征向量,很多算法都会最终变成求解特征值和特征向量问题。

  微积分的知识比如链式法则。 除了主体这些数学知识,会用到微分几何中的流形、测地线、测地距离的概念。 支持向量机会用到 Mercer 条件、核函数,涉及到泛函分析和识别函数的范畴。 再比如说人工神经网络的证明,万能逼近定理会用到泛函分析和识别函数的内容,用来证明这样一个函数可以来逼近任何形式的函数。离散数学的知识比如图论、树在机器学习里面也会用到,但是用的都是比较简单的。

  所以说我们只有掌握好微积分、线性代数、概率论还有一些优化的算法,我们就能看懂所有的机器学习算法了。像刚才说的一些相对高深的微分几何、泛函分析和识别函数,它们主要用在一些基础理论证明上面,说白了就是证明一些算法的合理性,你即使看不懂这些证明,它也不影响你理解这些算法的推导、思想和使用。

下一关更新《一元函数的微分》!
持续更新中……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/46142.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全网最详细中英文ChatGPT-GPT-4示例文档-读书书单推荐从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

从0到1快速入门读书书单推荐应用场景 Introduce 简介setting 设置Prompt 提示Sample response 回复样本API request 接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例 其它资料下载 ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字…

使用 Python 进行网页抓取

如果您知道如何做到这一点,那么对于企业和个人使用来说,网络抓取似乎是一种非常有用的节省时间的工具。我们将重点介绍为什么您应该使用 Python 进行网页抓取,并为您提供有关如何完成它的快速教程,包括使用哪些Python 开发工具。 …

GPT-4太强,OpenAI也不懂!智能到底是怎么突然「涌现」的?

来源丨新智元 编辑丨LRS 点击进入—>3D视觉工坊学习交流群 2023年至今,ChatGPT和GPT-4始终霸占在热搜榜上,一方面外行人都在惊叹于AI怎么突然如此强大,会不会革了「打工人」的命;另一方面,其实内行人也不明白&#…

【视频课程】持续更新中!算法工程师如何从零掌握ChatGPT大模型

前言 自从2022年11月ChatGPT发布之后,迅速火遍全球。其对话的交互方式,能够回答问题,承认错误,拒绝不适当的请求,高质量的回答,极度贴近人的思维的交流方式,让大家直呼上瘾,更是带火…

GDOI2022游记

文章目录 Day -1Day 0Day 1Day 2Day 3()Day ?~?Day ? Day -1 考前好像写题状态不太好(可能是纯粹的懒)。 开始写板子,很多算法都很久没碰了,有的调了很久才过。树剖都调了一个多小时,身败名裂。不过想想省选应该不…

Web3.0与ChatGPT4如何开创未来创业机会?

随着Web3.0时代的到来,人们对于新一代互联网的期望越来越高,越来越多的企业开始关注区块链技术、人工智能技术和金融科技等方面的创新应用。在这个新时代的背景下,ChatGPT4作为最先进的自然语言处理技术之一,也将在未来创业机会中…

Virus Total 曝数据泄露大事件:涉及多国情报部门

The Hacker News 网站披露,可疑文件和病毒在线检测平台 VirusTotal 曝出数据泄露事故,一名员工无意中将部分 VirusTotal 注册客户的姓名、电子邮件地址等敏感数据信息上传到了恶意软件扫描平台,此举导致约 5600 名用户数据泄露。 据悉&#x…

深度学习博士自救指南

点击上方“AI遇见机器学习”,选择“星标”公众号 第一时间获取价值内容 来自|AI科技评论 编译 | 青暮、陈大鑫 关于如何攻读机器学习博士学位,这个嘛,主要是不要重蹈我的覆辙,哈哈。 你已经开始了博士的学习课程&…

NLP发展关键模型:BERT,GPT

文章目录 chat bot重大进展基于编码器的预训练模型word embeddingELMOBERT GPT:基于解码器的预训练模型GPT1:Improving Language Understanding by Generative Pre-Trainingfinetune如何实现实验 GPT2:Language Models are Unsupervised Multitask Learn…

GitHub更改username,注销账号的方法

小编很久之前就开始使用GitHub,那时候只要求能创建个账号,随便起了个username。 如今,随着GitHub深度使用,项目和粉丝都多了起来,对username也有了新的想法,毕竟username是显示在url里的。 方法&#xff…

[简易的网站登录注册,注销退出操作]

ml 数据库字段前端页面java处理信息 先看看最终效果吧 ;在登录提交时,前端页面会用JS点击事件判断; 1.首先判断的是账户框和密码框输入的是否符合规则(基本是判断不能为空,全部输空格是不允许的(用了字符串的trim()函数,将输入字符两边的空格去除,然后再判断),)然后就是密码不…

计算机账户注销重新登录,win10系统注销账户切换账号登录的方法

相信有很多用户在使用win10系统的电脑时经常需要切换账号进行登录,使用多个账号操作电脑的话可以对账号的一些权限进行限制,根据最高管理员对这些账户权限的分配可以限制某个账户对电脑进行某些操作,于是用户在使用的过程中就会遇到需要注销账…

如何注销Facebook账户

登录你的Facebook账户; 在浏览器键入地址:https://ssl.facebook.com/help/contact.php?show_formdelete_account,会转入以下界面 点提交后,再输入密码和验证码; 系统出现如下提示,并同时发一封邮件到你邮箱 然后确认删…

阿里云盘挂载本地

目录 一、先安装JDK,配置环境变量 二、获取refresh_token 三、Windows R -------> 输入cmd ------> 进入命令行模式 四、打开浏览器, 刺客边风!把64000GB网盘当成电脑本地硬盘用?最强网盘挂载本地盘神器&#xf…

阿里云linux挂载云盘

阿里云购买的第2块云盘默认是不自动挂载的,需要手动配置挂载上。 1.查看SSD云盘 sudo fdisk -l 可以看到SSD系统已经识别为/dev/vdb 2.格式化云盘 sudo mkfs.ext4 /dev/vdb 3.创建挂载点: mkdir /data 4.挂载 sudo mount /dev/vdb /opt (或mount /dev/vdb …

阿里云CentOS服务器挂载数据盘

1. 查看系统环境 lsb_release -a2. 查看磁盘分区情况 fdisk -l查看磁盘情况,该阿里云服务器对应的系统盘为vda:40G,数据盘为vdb2:1.7T。 3. 磁盘分区 输入fdisk /dev/vdb2 对数据盘进行分区。根据提示,输入 n, p, …

RaiDrive通过WebDAV挂载阿里云盘

有了阿里云盘后总是想怎么去折腾它,因为它的传输速度实在太快了,完全秒杀 “Bai度” ,因为电脑里面存的资料什么的比较多,笔记本只有一个 500G 的固态硬盘,感觉有点空间吃紧,所以想到了借助工具 RaiDrive把…

使用阿里云服务器安装AList

一、申请免费的服务器(需要学生认证) 打开链接阿里云学生云服务器免费申请,完成下面任务,即可免费申请一个2核2G的服务器 申请完成后,打开控制台, 重置实例密码 查看公网ip 二、安装步骤 1. 连接到服务器 使…

阿里云系统盘扩容及数据盘分区、格式化分区、挂载、取消挂载

系统盘扩容 重点注意: 1.如果出现ping不同或者ssh链接不上,解决办法,直接把/etc/fstab文件还原成默认就可以了(随便操作,退路以为你们留好) 2.分区后挂在会出现问题我这边分享个链接,不分区挂载…

阿里云云盘扩容

1、进入阿里云控制台-云服务器ECS-实例 2、进入存储与快照-云盘 3、进入实例,找到要扩容的机器,点击实例id进入,到云盘,选择要扩容的创建快照 在弹出的对话框中,根据实际情况配置快照信息,然后单击确定。 …