首页 > 其他 > 详细

神经网络

时间:2015-08-07 20:02:43      阅读:252      评论:0      收藏:0      [点我收藏+]

感知器

1.定义

   感知器是一种最简单的前馈神经网络,多输入单输出,是一种二分类。
   优点:学习算法简单,易于理解。
   缺点:学习速率低,学习效果差。不便于初学者运用,参数选择很难。

2.算法

   采用的是一种简单的惩罚机制。

条件:

  • 样本特征值:x=[x1,x2........xn]y{ -1, 1}, 初始值θ

算法:

  • 更新原则:
    if(yi?(θ?xi)<=0) : θ(k+1)=θ(k)+(xi?c?yi)
    other:θ(k+1)=θ(k)
  • 其中:
    c:

3.代码

  • 数据:
3,2,1
2.5,3.5,1
4,2,1
4,4,1
3.5,2.5,1
3.5,3,1
3,4.5,1
4.5,3,1
4.5,3.4,1
5,2.8,1
6,5.5,-1
7,6,-1
6.5,6.5,-1
8,7,-1
6.3,5,-1
6.5,4.7,-1
6.7,5,-1
6.8,5.3,-1
5.5,6.5,-1
7.5,4.7,-1
7.5,6.5,-1

离散图:
技术分享

  • 函数:

    • main:相当于主函数
    • gradientDecent:更新函数
  • main:


%% part0: 数据准备
data = load(‘data.txt‘);
x = data(:,[1,2]);
y = data(:,3);
pos = find(y == 1);
neg = find(y == -1);

plot(x(pos,1),x(pos,2),‘r+‘, x(neg,1),x(neg,2),‘go‘);
pause;

%% part1: 训练theta
[m,n] = size(x);
x = [ones(m,1),x];
theta = zeros(n+1,1);
theta = gradientDecent(x,y,theta,0.1);

X = 1:10;
Y = -(theta(1,1) + theta(2,1)*X)/theta(3,1);
plot(x(pos,2),x(pos,3),‘r+‘, x(neg,2),x(neg,3),‘co‘,X,Y,‘b‘);

  • gradientDecent
function theta = gradientDecent(x,y,theta,c)
%theta是超平面的乘数,c是惩罚因子

k  = 0;
m = size(y,1);
while 1
    flag2 = 1;
    for i = 1:m
        if y(i,1)*(x(i,:)*theta)<=0
            theta = theta + (y(i,1)*x(i,:) .*c)‘;
            flag2 = 0;
            k = k+1;
        end
    end
    if flag2 == 1
        break;
    end
end


  • 结果:
theta =

    3.0000
   -0.6000
    0.0100

veryterrible。。。。。。。。
虽然分开了,但效果实在太差。这就是单层感知器。

技术分享

未完。。。待续,,还有多层感知器,BP神经网络,RBF径向函数。。。。。

版权声明:本文为博主原创文章,未经博主允许不得转载。

神经网络

原文:http://blog.csdn.net/neu_chenguangq/article/details/47341975

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!