Hello Mat

 找回密码
 立即注册
查看: 4892|回复: 0

Softmax回归

[复制链接]

1294

主题

1520

帖子

110

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22633
发表于 2017-9-7 22:25:53 | 显示全部楼层 |阅读模式
百度网盘视频链接:
视频链接:
视频1: http://pan.baidu.com/s/1dF7yaNB
视频2:http://pan.baidu.com/s/1pLFlel1
录制的视频是算法底层原理讲解,底层代码实现,方便大家真正掌握算法实质,开发出更加出色的算法。录制视频的初衷是:避免读者朋友利用大把时间学习已有常见算法,本系列视频旨在让读者朋友快速深入了解这些常见算法原理,有更多的时间去研究更加高大上算法(价值)。

具体链接在halcom.cn论坛,联系人QQ:3283892722
该论坛是一个学习交流平台,我会逐一的和大家分享学习。
欢迎大家录制视频,并提交给我,我来设置视频,你可在论坛进行打赏分享。
视频专用播放器:http://halcom.cn/forum.php?mod=viewthread&tid=258&extra=page%3D1

Softmax回归:
(1)logistic 回归二分类;
(2)Softmax回归多分类,当分类数N=2时,就退化为logistic回归;
(3)Softmax回归,采用exp(cita*X)的归一化概率方式进行最大值输出,每一类别均有概率;

输入图像X,输出分类标签y,y需要说明的是,如果是三类的话,
y=1,表示为1,0,0
y=2,表示为0,1,0
y=3,表示为0,0,1
通过迭代寻找J最小时对应的theta:
lambda为正则化参数抑制过拟合
  1. function [theta_best] = fmin(X, y, lambda)
  2. % 输入
  3. %    X : 784 * 500, 500表示图像样本数量,784 = 28*28,我们的图像是28*28
  4. %    y :  10 * 500, 500表示图像样本数量, 10表示图像样本分类标签

  5. [m, n] = size(X);    % m = 784, n = 500
  6. numClasses = 10;     % Number of classes (MNIST images fall into 10 classes)
  7. theta = zeros(numClasses, m) + 0.005 * randn(numClasses, m);
  8. theta_best = theta;
  9. J0 = 10000;

  10. num_iter = 100;
  11. for i=1:num_iter
  12.     [J, thetagrad] = JCostFunction(theta, X, y, lambda);
  13.     fprintf(1,'代价函数值J 当前等于 %f\n',J);
  14.     theta = theta - 0.1 * thetagrad;
  15.     if(J<=J0)
  16.         theta_best = theta;
  17.         J0 = J;
  18.     end
  19. end
复制代码
代价函数:
  1. function [J, thetagrad] = JCostFunction (theta, X, y, lambda)
  2. % 输入
  3. %    X : 784 * 500, 500表示图像样本数量,784 = 28*28,我们的图像是28*28
  4. %    y :  10 * 500, 500表示图像样本数量, 10表示图像样本分类标签

  5. [m, n] = size(X);    % m = 784, n = 500
  6. numClasses = 10;     % Number of classes (MNIST images fall into 10 classes)
  7. thetagrad = zeros(numClasses, m);
  8. % X = [ones(m,1), X];

  9. % 概率
  10. h = exp(theta*X);
  11. h_sum = sum(h,1);
  12. h = h./repmat(h_sum,[numClasses,1]);  % 归一化
  13. % h = exp(theta*X);
  14. % h = bsxfun(@rdivide, h, sum(h));

  15. % 代价函数
  16. J = (-1/size(X,2)).*sum(sum(y.*log(h)));
  17. J = J + (lambda/2).*sum(sum(theta.^2));

  18. % 梯度
  19. thetagrad = (-1/size(X,2)).*(((y-(h))*X') + (lambda*theta));
复制代码

theta求解后,预测结果:
  1. function [p] = predict(theta, X)
  2. [m n]=size(X);
  3. h = e.^([ones(m,1) X]*theta);
  4. [temp p] = max(h, [], 2);
  5. p=p-1;
复制代码


参考链接:http://ufldl.stanford.edu/wiki/index.php/Softmax回归









算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-4-24 05:09 , Processed in 0.234247 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表