码迷,mamicode.com
首页 > 其他好文 > 详细

神经网络

时间:2015-08-07 20:05:39      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:神经网络   感知器   bp神经网络   rbf径向函数   分类函数   

感知器

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径向函数。。。。。

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

神经网络

标签:神经网络   感知器   bp神经网络   rbf径向函数   分类函数   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!