讓我們直接從代碼開始,下面開始分佈講解
【注】想要mnist請回復博主
% z=+1,-1;
% result=-0.3;負類 -1 分對了 +1 分錯了 y*result>0
% =0.4;正類 +1 分對了 -1 分錯了
% z*(w'*x)=z*w'*x=w'*z*x=w'*y
%w1*x1+w2*x2+w3=0;
%w'*x+b=0;
%w'x=0;
% (x1,x2,1)
% (w1,w2,w3)
data=randn(2,40);
data(:,21:40)=data(:,21:40)+5;
scatter(data(1,1:20),data(2,1:20),'*');
hold on;
scatter(data(1,21:40),data(2,21:40),'+');
hold on;
w=randn(3,1);
data(3,:)=ones(1,40);
z=ones(1,40);
z(21:40)=-1;
for i=1:40
data(:,i)=data(:,i).*z(i);
end
for i=1:40
result1(:,i)=w'*data(:,i);
end
for s=1:1000
for i=1:40
result1(:,i)=w'*data(:,i);
end
dydx=zeros(3,1);
for i=1:40
if(result1(:,i)<=0)
dydx=dydx+data(:,i);
end
end
dydx=-1.*dydx;
amda=1;
w=w-amda.*dydx;
end
%x2=-(w1*x1+w3)/w2;
%w1=randn(1,1);
%w2=randn(1,1);
%w3=randn(1,1);
%w(1)*x(1)+w(2)*x(2)+b=0
%w'x+b=0;
w=randn(2,1);
b=randn(1,1);
%w=randn(784,1);
b=randn(10,1);
w=randn(784,10);
for i=1:60000
results(:,i)=w'.*trdata(:,i)+b;
end
[maxv,indexv]=max(results);
%w1*x1+w2*x2+...+w784*x784+w785=0;
%data(1,1)*w1+data(2,1)*w2+w3
for i=1:40
result(i)=w'*data(:,i)+b;
end
%x2=-(w1*x1+w3)/w2;
x1=[-4,8];
x2=-1.*(w(1).*x1+w(3))./w(2);
plot(x1,x2);
%data(2,1)
for i=21:40
scatter(data(1,i),data(2,i),'+');
hold on;
end
首先我們先畫出一幅散點圖,這樣我們好進行下面的分類
有了散點圖之後,我們再自己畫線
w1 w2 w3是三個線性係數,這裏不再贅述
這裏,我們換成向量的形式,784=28*28
上述的向量都是是列向量
接下來我們考慮,如果要分類類型多的時候,盲區存在,改怎麼處理
解決方法就是,max勝出原則,代入後,更大的勝出
考慮784是個超平面,不好畫出、描繪出來
升維
然後,沒有b了
大於零分對了 小於零分錯了
w和最小錯分數是階梯函數,這樣不好優化,我們就鬆弛他
鬆弛後,更加平滑
由此我們考慮梯度下降法