Halcom 发表于 2017-9-7 22:25:53

Softmax回归

百度网盘视频链接:
视频链接:
视频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为正则化参数抑制过拟合function = fmin(X, y, lambda)
% 输入
%    X : 784 * 500, 500表示图像样本数量,784 = 28*28,我们的图像是28*28
%    y :10 * 500, 500表示图像样本数量, 10表示图像样本分类标签

= size(X);    % m = 784, n = 500
numClasses = 10;   % Number of classes (MNIST images fall into 10 classes)
theta = zeros(numClasses, m) + 0.005 * randn(numClasses, m);
theta_best = theta;
J0 = 10000;

num_iter = 100;
for i=1:num_iter
    = JCostFunction(theta, X, y, lambda);
    fprintf(1,'代价函数值J 当前等于 %f\n',J);
    theta = theta - 0.1 * thetagrad;
    if(J<=J0)
      theta_best = theta;
      J0 = J;
    end
end代价函数:function = JCostFunction (theta, X, y, lambda)
% 输入
%    X : 784 * 500, 500表示图像样本数量,784 = 28*28,我们的图像是28*28
%    y :10 * 500, 500表示图像样本数量, 10表示图像样本分类标签

= size(X);    % m = 784, n = 500
numClasses = 10;   % Number of classes (MNIST images fall into 10 classes)
thetagrad = zeros(numClasses, m);
% X = ;

% 概率
h = exp(theta*X);
h_sum = sum(h,1);
h = h./repmat(h_sum,);% 归一化
% h = exp(theta*X);
% h = bsxfun(@rdivide, h, sum(h));

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

% 梯度
thetagrad = (-1/size(X,2)).*(((y-(h))*X') + (lambda*theta));
theta求解后,预测结果:
function = predict(theta, X)
=size(X);
h = e.^(*theta);
= max(h, [], 2);
p=p-1;

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









页: [1]
查看完整版本: Softmax回归