Deep Learning 1:简单线性分类

前言

今天在图书馆进行了为期一天的攻关,对BP神经网络进行了深入的学习,晚上花了将近3个小时的时间完成了我的第一个神经网络程序(基于Matlab)。

希望这是一个好的开始。


这是我的第一个 Deep Learning / 神经网络 程序,运用了BP神经网络对8个数据点进行四分类。

Matlab代码如下:

exercise1_minibatch.m

clear;
P = {[1;1] [1;2] [2;-1] [2;0] [-1;2] [-2;1] [-1;-1] [-2;-2]};   %11
Y = {[0;0] [0;0] [0;1] [0;1]  [1;0]  [1;0]  [1;1]   [1;1]  };
B = [-155;234];
W = [12,-34
     105,444];
 Eta = 0.1;     %learning rate
 iter= 10000;      %iterator 
 C = zeros(iter,1);
 m = 8;
 Dw = 0;
 Db = 0;
 for k=1:iter
     for i=1:8
         Z = W*P{i}+B;
         A = myhardlim(Z);
         Dz = (A-Y{i})*1;
         Dw = Dw + Dz*P{i}';
         Db = Db + Dz;
         if(mod(i,m)==0)
             W = W-Eta*Dw/m;
             B = B-Eta*Db/m;
             Dw = 0;
function mat = myhardlim(mat)
[m,n] =  size(mat);
for i=1:m
    for j=1:n
        if(mat(i,j)>=0)
            mat(i,j)=1;
        elseif(mat(i,j)<0)
            mat(i,j)=0;
        end
    end
end

Db = 0; end C(k) =C(k) + 1/2*sum((A-Y{i}).^2); end end plot(C); for i=1:iter if(C(i)==0) fprintf('iterator times: %d\n',i); break; end end


实验数据

收敛所需轮数Eta(学习速率)
mini_batch(m)0.1110
17988110
2159316017
4318531933
8636863864

缺陷

1.样本集太少,且只有测试集,没有训练集,无法查看过拟合等情况。

优点

1.简单,适合入门;

2.对迭代轮数、BP算法等有了一个基本的认识;

3.对以后的进一步学习打下了基础。

未来工作

1.对MNIST数据集进行训练

2.对《Neural Network and Deep Learning》进一步学习(它使用Python训练了MNIST数据集)


Reference:

[1] 《机器学习》,周志华

[2] http://neuralnetworksanddeeplearning.com/chap2.html,Michael Nielsen

[3] 《神经网络理论及应用》课程PPT,蒲晓蓉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值