每日一问之鞍点(saddle point)
今天开始在 GitHub 上刷每日一题,但是很快就被一道题卡住了。题目如下所示:
结合自己的情况并针对这道问题,整理出了以下概念:
什么是鞍点?
什么是 Hessian 矩阵?
如何证明一个点为鞍点?
局部最小值和鞍点的区别?
什么是鞍点
在维基中的定义如下:
In mathematics, a saddle point or minimax point is a point on the surface of the graph of a function where the slopes (derivatives) in orthogonal directions are all zero (a critical point), but which is not a local extremum of the function.
在数学中,鞍点或极小值点是函数图形表面上的一个点,其正交方向上的斜率(导数)均为零(临界点),但不是函数的局部极值。一句话概括就是:
一个不是局部极值点的驻点称为鞍点。
*驻点:函数在一点处的一阶导数为零。
如下图所示,是函数 z = x2 - y2 图像,其鞍点在 (0, 0) 位置。函数 z 的整个曲面看上去就像是一个马鞍,其在 x 轴方向向上曲,在 y 轴方向向下曲。所以这也是鞍点这个名字的由来。
附上一张吴恩达大大的画作,哈哈。
什么是 Hessian 矩阵
在维基中的定义如下:
In mathematics, the Hessian matrix or Hessian is a square matrix of second-order partial derivatives of a scalar-valued function, or scalar field. It describes the local curvature of a function of many variables.
在数学中,Hessian 矩阵是标量值函数或标量场函数的二阶偏导数的方块矩阵。它描述了许多变量函数的局部曲率,可以用于判定多元函数的极值。假设有一实数函数 f: Rn→ R ,是关于输入 x (x ∈ Rn) 及输出 f(x) ∈ R 之间的关系式。如果其所有的二阶偏导数都存在,并且在该函数的领域上连续,那么 Hessian 矩阵 H 是一个 n×n 的矩阵,通常如下定义:
如何证明一个点为鞍点
Hessian 矩阵是一个凸函数,并且是正半定的。通过这一属性,我们可以测试临界点 x 是局部最大值,或者是局部最小值还是鞍点。如下所示:
如果 H 在 x 处为正定矩阵时,则函数 f 在 x 处有一个局部极小值;
如果 H 在 x 处为负定矩阵时,则函数 f 在 x 处有一个局部极大值;
如果 H 在 x 处为不定矩阵时(即同时有正特征值和负特征值),则函数 f 在 x 处为鞍点。
所以,一个简单标准的方法验证一个静止点是否为一个实数函数的鞍点,就是计算该函数的在该点上的 Hessian 矩阵。如果该 Hessian 矩阵为不定的,则该点为该函数的鞍点。
局部极小值和鞍点
局部极小值和鞍点的相同点是,在该点处的梯度(导数)都为零。从上面可以看出,局部极小值和鞍点的区别就在于,在该点处的 Hessian 矩阵的特性。如果 Hessian 矩阵在该点处是正定的,则为局部极小值;如果为不定的,则为鞍点。
鞍点通常是神经网络训练的困难之处。如下图所示,是一个包含两个参数的神经网络,是一个低维度的图,可以发现其存在很多的局部极小值,训练神经网络的时候,通常会陷入这些极小值中。事实上,建立的神经网络包含大量的参数,造成局部最优的困惑不是这些极小值点,而是零梯度点,通常为鞍点。
为什么说鞍点是训练神经网络的困难之处呢?因为鞍点的存在,会有一个平稳段,在该平稳段,函数的导数会长时间接近于 0,这使得神经网络的训练变得缓慢。
最后,总结到这里,大家也都知道开篇这道题目的答案了吧。
参考
[1]. Saddle point - Wikipedia
[2]. Hessian matrix - Wikipedia
[3]. 鞍点 - CSDN博客
[4]. 吴恩达 - 深度学习课程
P.S:文中有错欢迎指出,互相学习。以及欢迎关注我的公众号 ?
每日一问之鞍点(saddle point)相关推荐
- (一)神经网络训练不起来怎么办:局部最小值(local minia)与鞍点(saddle point)
Optimization的时候,怎么把gradient descent做的更好? 1.局部最小值(Local minima)与鞍点(saddle point) 所谓的saddle point其实就是g ...
- 每日一问 - 关于决策树算法
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 来源:Datawhale优秀回答者 将在留言区,Datawhale高校群 ...
- 每日一问:你了解 Java 虚拟机结构么?
对于从事 C/C++ 程序员开发的小伙伴来说,在内存管理领域非常头疼,因为他们总是需要对每一个 new 操作去写配对的 delete/free 代码.而对于我们 Android 乃至 Java 程序员 ...
- 每日一问:LayoutParams 你知道多少?
前面的文章中着重讲解了 View 的测量流程.其中我提到了一句非常重要的话:**View 的测量匡高是由父控件的 MeasureSpec 和 View 自身的 `LayoutParams 共同决定的. ...
- 区块链每日一问 | 数字货币的场内交易和场外交易各指什么?各有哪些特点?...
区块链每日一问 | 数字货币的场内交易和场外交易各指什么?各有哪些特点? 每日一问 • 2018-02-07 • 区块链 玩儿币最重要的是心态. 原文发布时间为:2018-02-07本文作者:每日一问 ...
- 鞍点Saddle Point Locator
目录 1. 简介 2. 作业题目 2.1 要求 2.2 提示 3. 解答 3.1 建立数据来源 3.2 设计当前点梯度 3.3 寻找最小值 4. 寻找鞍点 4.1 珠子等间距连接 4.2 设置弹簧弹 ...
- 每日一问-ChapGPT-20221231-关于中医的各国看法
文章目录 每日一问-ChapGPT系列起因 每日一问-ChapGPT-20221231-关于中医的各国看法 各个国家对伤寒论的看法 日本对于中医的看法 韩国对于中医的看法 欧美对于中医的看法 中国对于 ...
- 每日一问-ChapGPT-20230416-中医基础-经络
文章目录 每日一问-ChapGPT系列起因 每日一问-ChapGPT-20230416-中医基础-经络 人体的经络有哪些,有什么规律,怎么记忆 经络拓展-五运六气 1# 五腧穴 与五运六气架构 2# ...
- 【每日一问】工作日问题
[每日一问] 某一年的七月份如果有23个工作日,那么这一年的七月一号可能是周几 答案: 周一,周二,周三. 思路: 7月份一共有31天. 一周(7天循环)有5个工作日,2个休息日. 1-7,8-14, ...
最新文章
- iOS 开发 高级:使用 宏定义macros (#,##,...,__VA_ARGS_)
- 将 iPhone 定位设置在法国,手机速度就能迅速提升?
- 086_html5Input类型
- tableau必知必会之用 Fixed 函数实现客户回购分析
- 【揭秘】Slack:从0到10亿美元的产品是怎样炼成的
- BO QUERY BUILDER - SI_INSTANCE相关属性
- 【BIM入门实战】Win11平台上Revit 2018_x64简体中文版图文安装与卸载完整教程
- uniapp踩坑指南之坑多到写不完
- ECC椭圆曲线加密算法原理
- SoapUI 测试http接口实战
- 开发小计之判断输入字符串类型(正则表达式)
- JAVA日期查询:季度、月份、星期等时间信息
- ES+Redis+MySQL,这个高可用架构设计太顶了!
- bilibili老版本_bilibili旧版本
- Cadence OrCAD Capture 自底而上的设计流程
- 智能安防视频监控平台页面无法访问该如何排查?
- MISC解题思路总结(一)XCTF平台
- 第三次作业--原型设计
- Internet of Things(IOTS)and Wireless Sensor Networks Lecture1(WSNS)
- 计算机电脑关机后可以充电吗,电脑关机了还能充电吗
热门文章
- 如何在Ubuntu 18.04上安装和配置NFS服务器
- 天气微信小程序相关代码
- 新的起点开始新的征程
- android 高德地图周边,地点/周边搜索-Android平台-开发指南-高德地图车机版 | 高德地图API...
- Java(2) 虚拟机
- Overture小课堂之如何演绎钢琴滑音
- 反调试(设置主线程为隐藏调试破坏调试通道调试器的检测)
- html拖放数据库字段,利用HTML5拖放(Drag 和 Drop)实现Table间数据的交互
- java一般项目提成多少_java面试之经典提成问题
- 打字翻译都是一句话的事儿,轻松提升工作效率,咪鼠智能语音鼠标S7B体验