UFLDL学习笔记3——Softmax Regression

softmax regression是logistic regression的推广,处理k-分类问题。类似于logistic regression,由最大似然估计可得到cost function,然后再求关于 θ 的梯度时会发现形式上和linear regression时一样。这不是偶然,PRML书中4.3.6节有谈到这个问题:

This is a general result of assuming a conditional distribution for the target variable from the exponential family, along with a corresponding choice for the activation function known as the canonical link function.
这里先挖一个坑。

如果利用matlab的vectorization features,tutorial里面给了提示。主要是两个函数sub2ind(size,row,col)和bsxfun(f,A,B)。sub2ind(size,rol,col)在从矩阵中抽取一些下标无规律的元素时比较给力,注意它返回的是抽取元素在矩阵中的编号;bsxfun(f,A,B)则在批处理时比较给力,如对A的每一行做不同的处理等。
理清矩阵操作还是挺繁琐的,试着写了下面的程序,我的电脑是跑不了,找个给力点的电脑跑跑再改错。

% theta is a vector;  need to reshape to n x num_classes.
  theta=reshape(theta, n, []);
  num_classes=size(theta,2)+1;
  theta(:,num_classes) = 0;
%%% YOUR CODE HERE %%%
  h = bsxfun(@rdivide,exp(theta'*X),sum(exp(theta'*X)));
  I = sub2ind(size(h),y,1:size(h,2));
  f_bar = -log(h);
  f = sum(f_bar(I));

  h(I) = h(I) - 1;
  g = -X*(-h');
  g(:,num_classes)=[];
  g=g(:); % make gradient a vector for minFunc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值