机器学习3——梯度下降法剖析
来源:互联网 发布:腰振mmd动作数据下载 编辑:程序博客网 时间:2024/06/09 19:05
按照上一节的总结,选定房价和房间的面积和朝向成线性关系模型,定义,为房价的面积,为房间的朝向;其中=1表示模型中的常数。
定义房价的预测函数
使用最小二乘法定义预测好坏的评估函数
其中上标表示第组数据,等价于
其中是m维度的列向量;注意与上标区分开。(矩阵)向量和元素一般都是用大小写进行区分。比如写成矩阵的形式如下:
这只是约定的规则而已,只要能区分开向量或元素,个人觉得这不是关键问题,但是为了达成最大共识,按照通用规则书写:矩阵字母大写,向量以及元素以小写字母加上标或者下标。因此采用公式(1),但是一定要注意上下文,以确定向量还是元素。
对评估函数求得极小值,在几何意义上简单而言其过程即:从曲面的某个起始位置按照特定的方向和步长向曲面的某个谷底走去。下面解释一下其含义。
由高中数学已知函数极小值不一定是函数的最小值,但是函数的最小值一定在其某个极小值点或者区间边界上的函数值取得。给定一个光滑的曲面,它包括多个极小值点和极大值点(否则它就是一张平面了),那么从其三维几何上看就存在多个“山峰”和“谷底”。在曲面给定一个起始点,往下降的方向走,每次下降一小步,逐渐迭代就会到达某个谷底。在这里脑海里一定要反思几个问题:(1)选择什么样的起始点?任意呢还是有特殊要求?比如有好坏之分呢?(2)下降的方向如何选择?站在山顶时,360度个下降方向可以选择(3)下降的步长取多大?步长大小有何区别?(4)一定能到达谷底嘛?为什么?如果你知道这些问题的答案,恭喜你数学学的很牛逼,可以跳过下文了,否则继续。对于问题(1)和(4)放到最后回答,它依赖于另外两个问题。首先回答问题(2)和(3)。
要想回答问题(2)(3),需要方向导数,偏导数和梯度的概念。考验大学微(积)分的时候到了。方向导数:函数在指定的方向(矢量)上的变化率;偏导数:多元函数沿坐标轴方向的方向导数。梯度:标量场的一个向量,表示函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。显然,下降的方向应该选择函数梯度方向,步长设为梯度的模;如此函数值下降的速度最快,到达谷底的步数也最少。换言之,求得极小值迭代计算的次数最少,计算量最小。而其他方向和步长也是可选的,但不是最好的。
因此,的梯度为
其中
其中是数据矩阵的的列向量,即
定义起始值
迭代算法
其中是用户输入参数,作用于步长,调节其下降速度。,当时,原定踏步;当最快速度迭代。步长较大较小都不好,步子较小会导致迭代次数增加,计算量上升;步子较大会导致迭代次数减少,但是会跳做极值点。因此这个需要实践经验来具体问题具体确定。
然后回头看看问题(1)和(4)。起始值的选定,也需要一定经验。从0起始固然通用,但是计算量会有一定影响。也就说好的起始点会尽量靠近极值点,以减少不必要的计算。此外,不同的起始点可能会进入不同的函数量场的“谷底”或者进入不到“谷底”,因此不同的起始点可能会有不同的结果。最后问题(4)牵涉到算法收敛的证明。这里不证明了,有兴趣请参考《梯度下降法收敛性证明》.
整个过程可以看到数学的简洁和优雅。这就是数学的力量!
- 机器学习3——梯度下降法剖析
- 机器学习——梯度下降法
- 机器学习——梯度下降
- 机器学习笔记——梯度下降:
- 机器学习基础——梯度下降
- 机器学习——梯度下降算法
- 机器学习—梯度下降算法
- 机器学习算法——梯度下降法
- 机器学习笔记——梯度下降法
- 机器学习【2】线性回归——梯度下降法
- 机器学习----梯度下降法
- 机器学习--梯度下降法
- 机器学习---梯度下降法
- 机器学习-梯度下降法
- 机器学习(3)——回归算法:最小二乘法(梯度下降法)
- 《机器学习》 梯度下降
- 《机器学习》 梯度下降
- 机器学习 ~~ 梯度下降
- docker之使用dockerfile配置tomcat、jdk环境
- 基于RNN的语言模型与机器翻译NMT
- 编写第一个Hibernate例子
- k8s学习笔记之核心概念
- 设计模式
- 机器学习3——梯度下降法剖析
- C指针用法详解
- DAVINCI DM6446 开发攻略——V4L2视频驱动和应用分析
- Python机器学习应用 | MLP实现手写识别
- crack the coding interview 数组与字符串 1.1
- explain分析sql语句执行效率
- 《剑指offer》二维数组中的查找
- Java远程通讯
- 十年寒窗,从高考到海盗,人的梦想是不会结束的