微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

八度中正确的正则化实现是哪一个?

如何解决八度中正确的正则化实现是哪一个?

我目前正在上学吴安德(Andrew Ng)的机器学习课程,我尝试在学习时实施这些东西,以免忘记它们,我刚刚完成了正则化(第7章)。我知道theta 0是正常更新的,与其他参数分开,但是,我不确定其中哪个是正确的实现。

实现1:在我的梯度函数中,在计算了正则化向量之后,将theta 0的部分更改为0,这样当将其添加到总数中时,就好像从未对theta 0进行正则化。

实现2:将theta存储在一个temp变量中:_theta,用reg_step 0更新(因此就好像没有正则化),将新的theta 0存储在一个temp变量中:t1,然后更新原始theta值用我想要的reg_step并将theta 0替换为t1(来自非常规更新的值)。

下面是我第一个实现的代码,它并不意味着要先进,我只是在练习: 我使用的八度是1索引,所以theta(1)是theta(0)

function ret = gradient(X,Y,theta,reg_step),H = theta' * X;
  dif = H-Y;
  mul = dif .* X;
  total = sum(mul,2);
  m=(size(Y)(1,1));

  regular = (reg_step/m)*theta;
  regular(1)=0;

  ret = (total/m)+regular,endfunction

谢谢。

解决方法

稍微调整一下第一个实现对我来说是有效的。

首先,计算每个θ的正则化。然后继续执行渐变步骤,稍后您可以手动更改包含渐变的矩阵的第一项,以忽略theta_0的正则化。

% Calculate regularization
regularization = (reg_step / m) * theta;

% Gradient Step
gradients = (1 / m) * (X' * (predictions - y)) + regularization;

% Ignore regularization in theta_0 
gradients(1) = (1 / m) * (X(:,1)' * (predictions - y));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?