梯度下降高级优化算法中initial_theta与theta的理解(基于吴恩达机器学习)

首先,贴出梯度下降高级优化算法的实现代码(octave或者matlab,来源于吴恩达机器学习)

function [J, grad] = costFunction(theta, X, y)

options = optimset('GradObj', 'on', 'MaxIter', 400);
[theta, cost] = (@(t)(costFunction(t, X, y)), initial_theta,options);

其中initial_theta是整个参数的初始值(即最开始我们选择的的参数),而costFunction中的theta是每次迭代优化计算得到参数(从options来看迭代了400次),只是在第一次迭代时initial_theta传给costFunction的theta进行计算代价函数和偏导项,但之后的迭代中更新的theta在传给costFunction的theta,所以initial_theta和theta是有区别的。

 

另外,在costFunction中有操作是从输入的theta(此时是向量形式)运用reshape函数获得θ1、θ2和θ3(矩阵形式),参数从向量又提取为矩阵形式是因为在costFunction函数中,返回的结果是代价函数和各个参数的偏导项,因此在其计算过程中会需要用到前向传播,也肯定会使用到参数(而此时利用参数的向量化进行计算是一个更合理的选择,因此在该函数中我们会将参数向量转化为参数矩阵)。而最终我们能得到梯度矩阵(即各个参数的偏导项组成的矩阵),但是在返回结果中我们需要获得的是向量形式,因此我们又把梯度矩阵转换成了长向量(这是与参数向量一一对应的顺序,因为各个梯度就是代价函数J(θ)对各个参数有的偏导)

 

以上仅仅是个人的理解……

 

posted @   neverstopcoding  阅读(707)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示