python AIOT教程一1.必备多元函数微分学理论基础
本篇博客主要给大家介绍一下,在学习python AIOT方向中,必备的数学基础知识。
一.多元函数
定义设D为一个非空的n 元有序数组的集合, f 为某一确定的对应规则。
若对于每一个有序数组,通过对应规则 f,都有唯一确定的实数 y 与之对应,则称对应规则 f 为定义在 D 上的n 元函数。记为 。 变量 称为自变量;y称为因变量。
当n=1时,为一元函数,记为y=f(x),x∈D;
当n=2时,为二元函数,记为z=f(x,y),(x,y)∈D,图象如下图。
二元及以上的函数统称为多元函数。
二.偏导数
偏导数,可以看作是导数的推广,对于多元函数来说,我们把其他的自变量固定不动,看成是常量,我们对其中的某一个变量求导数的话,那就是偏导数了,只对一个变量求导数!
几何意义上面来说就是在某个方向上对原函数来切一下,再去求导,就是偏导数。举例说明:
对变量x求偏导数,其中y是常量
对变量y求偏导数,其中x是常量
三.高阶偏导数
对于多元函数来说,若其一阶偏导数仍是关于每个自变量的函数,并且一阶偏导数对每个自变量的偏导数也存在,则说这个多元函数具有二阶偏导数。以此类推,有三阶偏导数,四阶偏导数等,我们把一阶以上的偏导数称为高阶偏导数。
如果定义在开集 G 上的函数的一阶偏导数关于某个变量可偏微分,就能作出二阶偏导数。同样能定义n阶偏导数。我们即将一阶以上的偏导数称为高阶偏导数。将这些高阶偏导数记为:
举例:
四.梯度
定义:
设二元函数在平面区域D上具有一阶连续偏导数,则对于每一个点P(x,y)都可定出一个向量 ,该函数就称为函数 在点P(x,y)的梯度,记作gradf(x,y)或,即有:
gradf(x,y)= =
其中 称为(二维的)向量微分算子或Nabla算子, 。
设 是方向l上的单位向量,则
由于当方向l与梯度方向一致时,有
所以当l与梯度方向一致时,方向导数 有最大值,且最大值为梯度的模,即
因此说,函数在一点沿梯度方向的变化率最大,最大值为该梯度的模。
通俗一点总结一下:梯度可以看成一元函数的导数,对于多元函数来说就是偏导数而已。
多元函数的梯度公式:
五.雅可比矩阵
相信很多人没有接触过这个矩阵,其实这个是比较好理解的,雅可比矩阵就是由一阶偏导数构成的矩阵,发明它的目的主要是为了简化求导公式,对多元的复合函数求导,如果我们用雅可比矩阵来计算的话,它会写起来非常简洁,这在人工神经网络反向推导的过程中往往会看到的。
y=f(x), 其中 x 是 n 维向量表示有 n 个未知数即 n 个自变量,y是k维的向量表示函数对应关系计算返回k个因变量。这句话理解不了不要紧,静下心来,我们继续往后看。
Yi = f(Xi) ,其中每个Xi 和每个 Yi 都是相关的,也就是每个 Yi 是单独从 Xi 映射过来的函数。
那么函数f(X)的雅可比矩阵就是每个Yi 分别对每个 Xi 求偏导,然后构成的矩阵就叫雅可比矩阵:
可能看到这里还是有点迷惑,不知道怎么用这个玩意,我们举几个例子,然后再回过头看,就会有不一样的理解。
示例一
示例二
示例三
相信大家对雅可比矩阵有了一个全面的认识。
六.Hessian矩阵
Hessian矩阵类似于雅可比矩阵,Hessian矩阵是对于一个多元函数来说的,它就相当于一元函数的二阶导数。
有一个关于x 的n元 函数,自变量为 x 1 , x 2 , x 3 , . . . , x n , {x}_{1},{x}_{2},{x}_{3\, ,...},{x}_{n}, x1,x2,x3,...,xn,那么Hessian矩阵为:
举个例子:
从上面例子我们引出来一个问题:什么是正定呢?矩阵的正定是如何判断呢?
答案就在下一个知识点极值判别法则。
七.极值判别法则
7.1、极值判定条件
对于一元函数,f(x) = x2的一阶导数等于0处有极值,当f(x)的二阶导数大于0时是极小值,当f(x)的二阶导数小于0时是极大值,可以参考f(x) = x2这个函数,其二阶导数为2,大于0,那么该函数是凸函数。
对于多元函数 ,首先f(x)的一阶导数等于0,这点是驻点,那它就可能是极值点,它是极大值还是极小值或者不是极值怎么判定呢?
看Hessian矩阵,在f(x)的一阶导数等于0处,就是驻点处。
- 如果Hessian矩阵是正定的话,函数在该点有极小值。
- 如果Hessian矩阵是负定的话,函数在该点有极大值。
- 如果Hessian矩阵不定,函数在该点不是极值。
那么怎么判断Hessian矩阵正负定呢?
7.2、实对称矩阵的正负定判断
实对称矩阵A正定负定判断条件:
我们用代码演示一下:
实对称矩阵A负定,代码如下:
import numpy as np
A = np.array([[-2,-3,-1],[-3,-6,-4],[-1,-4,-5]])
v = np.array([3,5,6])
print('给定向量任意向量v',v)
print('求解矩阵A正定判定条件结果是:'v.dot(A).dot(v))
'''
给定向量任意向量v:[3,5,6]
求解矩阵A正定判定条件结果是: -714
'''
但是这样不太容易判断,我们还可以根据特征值正负去判断矩阵正定与否:
- 矩阵A的特征值全部大于0,那么矩阵A为正定矩阵;
- 矩阵A的特征值全部小于0,那么矩阵A为负定矩阵;
实对称矩阵A负定,特征值代码如下:
import numpy as np
A = np.array([[-2,-3,-1],[-3,-6,-4],[-1,-4,-5]])
w,v = np.linalg.eig(A)
print('矩阵A的特征值特征向量是:')
print(w,v)
'''
矩阵A的特征值特征向量是:[-10.54287655 -0.03922866 -2.41789479] 特征值全部为负数[[ 0.32798528 0.73697623 -0.59100905][ 0.73697623 -0.59100905 -0.32798528][ 0.59100905 0.32798528 0.73697623]]
'''
那存在不存在特征向量有大与0的,也有小于0的呢? 肯定是存在的,我们称它为不定。那存在不存在特征向量大于等于0的,或者小于等于0的呢? 肯定也是存在的,它们我们称为半正定,或者半负定。
什么是半正定,什么是半负定呢?留个疑问,我们学完下面的二次型就明白啦。
八.二次型
8.1、二次型定义
二次型(quadratic form):n个变量的二次多项式称为二次型,即在一个多项式中,未知数的个数为任意多个,但每一项的次数都为2的多项式。
二次型就是纯二次项构成的一个函数。
因为二次函数(方程)的二次部分最重要,为了发表研究,我们把含有n个变量的二次齐次函数:
称为二次型。
8.2、二次型表示
我们可以通过矩阵来进行表示
二次型通俗表现形式:
二次型矩阵表示:
这里我们可以发现与我们之前说的Hessian矩阵的判定正负有点相似。
n个变量的二次齐次函数矩阵表示:
8.3、二次型应用
在机器学习中,我们可以根据数据分布进行模型选择:
●如果数据分布是一次型的,那我们就可以选择Logistic Regression、SVM 等分界面为-次型的模型;
●如果据分布是二次型的,我们可以选择naive bayes;
●如果数据分布既不是一次型也不是二次型,那我们可以选择基于决策树的模型,例如GBDT、随机森林等,或者DNN (深度神经网络), 这些模型都高度非线性,表达能力极强理论上可以拟合任意曲线。
8.4、Hessian矩阵与二次型
将Hessian矩阵A转换为二次型:
这个就是我们上一节留的疑问,半正定,半负定矩阵。
正定效果图,如下所示:
如上图所示,正定有极小值,相反负定有极大值。
半正定效果图,如下所示:
不定效果图,如下所示:
我们可以看到,不定没有最大值也没有最小值。
以上仅供理解,大概理解正定,负定,半正定,半负定,不定就可以了。
以上就是机器学习必备的多元函数微分学理论基础的知识点。
bye,bye!
python AIOT教程目录:
1.AIOT介绍
2.python AIOT 必备多元函数微分学理论基础
持续更新中。。。,本人马上就要考研了,可能更新有些慢,敬请理解。
python AIOT教程一1.必备多元函数微分学理论基础相关推荐
- Python 3 教程一:入门
Python已经是3.1版本了,与时俱进更新教程.(由于Django不支持python3, 所以为了你的发展潜力, 建议你学习python2.x ) python 2.x教程地址: http://ww ...
- GEE学习笔记 六十七:【GEE之Python版教程一】GEE学习背景介绍
相信很多人都对GEE已经比较熟悉了(只是不熟悉GEE的Python的API而已),这里只是做一个简单的总结概括一下GEE相关内容. 1.GEE学习基本要求 目前市面上无论出现什么新的技术,总会出现一种 ...
- python twisted教程一,异步编程
前言 最近有人在twisted邮件列表中问有没有一个可以让人快速学习twisted的文档.总体的来说:这个系列不是这样的一个文档.如果你没有很多时间或者耐心的话,这个系列的文章不太适合你. 不过,如果 ...
- 程序员的数学【多元函数微分学】
目录 前言 一.多元函数的定义 二.偏导数 三.高阶偏导数 四.梯度 五.雅可比矩阵 5.1 雅克比矩阵定义 5.2 雅克比矩阵示例 六.Hessian矩阵 6.1 Hessian矩阵定义 6.2 实 ...
- R语言七天入门教程一:配置运行环境
R语言七天入门教程一:配置运行环境 一.R语言介绍 1.R语言是什么? 参考:R语言教程-R语言介绍 R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析.绘图.数据挖掘.R语言有丰富的 ...
- WPF教程一:基础(转)
WPF教程一:基础 一.WPF简介 WPF:WPF即Windows Presentation Foundation,翻译为中文"Windows呈现基础",是微软推出的基于Windo ...
- shell教程一 :介绍
shell教程一 :介绍 大家好,自工作至今,因为工作环境原因(CenOS6.X 集群),经常用到shell的编程,shell是linux下开发必不可少的利器.为了能让想学习的朋友,能快速上手.so ...
- Python培训教程之Python基础知识点梳理
Python语言是入门IT行业比较快速且简单的一门编程语言,学习Python语言不仅有着非常大的发展空间,还可以有一个非常好的工作,下面小编就来给大家分享一篇Python培训教程之Python基础知识 ...
- python语言if语句-Python入门教程之if语句的用法
这篇文章主要介绍了Python入门教程之if语句的用法,是Python入门的基础知识,需要的朋友可以参考下 OK分享完毕!需要Python资料的可以加QQ群:832339352 进群免费领取下面资料! ...
最新文章
- 左右HttpClient上传的方法来解决中国的乱码
- [ATF]-ATF启动--BL31跳转到optee和uboot
- Android 的源代码结构
- 8、angular的select
- scrapy startproject【学习笔记02】
- JavaScript算法(实例九)整数的置换 / 求s=a+aa+aaa+aaaa+aa...a的值 / 自守数
- Spring mvc介绍
- 【剑指 offer】(二十二)—— 栈的压入、弹出序列
- css3之渐变背景色(linear-gradient)
- 10 JavaScript函数
- mysql 存储过程 锁表_MYSQL锁表问题的解决方法
- 微信公众号分销商城(源码+数据库+文档)
- 矩阵的对数运算公式_对数(运算层面)
- 计算机内存128毫升,内存换算公式(内存怎么换算)
- shape用法的详细举例
- 计算机两字符是多少磅,word字符磅 word里一个字符等于多少磅
- WeWork上演宫斗大戏,这个市还上吗?
- 业界 | 福布斯:2018年机器学习试点及实施数量将翻倍
- Java类加载机制,类加载过程,类加载器以及双亲委派详解
- 【SparkSQL笔记】SparkSQL的入门实践教程(一)
热门文章
- 信息化企业招投标,最加分的资质证书大盘点
- STM32之温湿度DHT11驱动
- python 16.1 继承 重写 supper()方法 多重继承
- 金山词霸只能最大化,无法恢复小型查词界面
- vitamio视频播放器实现
- world wind java sdk_科学网—用worldwind java SDK开发应用程序 - 谢安涛的博文
- 安产链为安全生产保驾护航 | FinTechathon 安产链团队
- IPFS为数据隐私保驾护航
- Ubuntu三步配置scrcpy,实现手机投屏和控制
- 2019年下半年教师资格幼儿园《保教知识与能力》真题与参考答案