![点击分享此内容 分享](/master/images/share_but.png)
梯度下降法理论及部分代码实现.doc
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
最后一页预览完了!喜欢就下载吧,查找使用更方便
10 文币 0人已下载
下载 | 加入VIP,免费下载 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 梯度下降法理论及部分代码实现.doc
- 资源描述:
-
1、1梯度下降法梯度下降法是一种最优化算法,常用来优化参数,通常也称为最速下降法。梯度下降法是一般分为如下两步:1)首先对参数 赋值,这个值可以是随机的,也可以让 是一个全零的向量;2)改变 的值,使得 J()按梯度下降的方向进行减少。以一个线性回归问题为例,应用 libsvm 包里的数据 heart_scale.mat 数据做测试。假设要学习这么一个函数: 210)(xxh那么损失函数可以定义成:(1)2|1)(YXJ其中 X 看以看成一行一行的样本向量,那么 就是一列一列的了。目标很简单,就是求损失 J 最小值时候的解 :先直接求导,对于求导过程,详解如下:首先定义损失变量: njijii y
2、Xr1那么损失函数就可以表示成: mirJ12一步一步的求导: mijijr1)(再求: ijjiXr那么把分步骤合起来就是: mi ijnkkij yJ1)(令导数为 0,求此时的 ,整理一下,有: mi mijinkkij yX11用矩阵符号将上面的细节运算抽象一下: 0YJTT2让导数为 0,那么求得的解为: YXT1)(求解矩阵的逆复杂度有点儿高,可以用梯度下降来求解:(2))( 1111 YXJJ TiTiiii 其中 就是下降的速度,一般是一个小的数值,可以从 0.01 开始尝试,越大下降越快,收敛越快。迭代终止的条件取: |1ii部分代码如下:w_old=zeros(size(X,2),1);%初始化参数 wk=1;while 1minJ_w(k) = 1/2 * (norm(X*w_old - Y)2; %损失函数 公式(1) %norm 默认为 L2 标准化w_new = w_old - gamma*(X*X*w_old - X*Y);%梯度下降公式%公式(2)if norm(w_new-w_old) epsilon %终止条件W_best = w_new;break;endw_old = w_new;k=k+1;end实验结果:3
![提示](https://www.docduoduo.com/images/bang_tan.gif)