神经网络最基本的元素与计算流程:

基本的组网原则:

神经网络监督学习的基本步骤:

  • 初始化权值系数
  • 提取一个样本输入NN,比较网络输出与正确输出的误差
  • 调整权值系数,以减少上面误差——调整的方法对应不同的学习规则
  • 重复二三步,直到所有的样本遍历完毕或者误差在可以容忍的范围内

Delta规则:(一种更新权值系数的规则)

  • 基于sigmoid函数的Delta规则:优势,便于用于分类问题——激活函数选择

  • 几种常见权值更新策略:

  • 三种更新策略下的代码演示

function W = DeltaSGD(W,X,D)
alpha = 0.9;
N = ;
for i = :N
x = X(i,:)';
d = D(i);
v = W*x;
y = sigmoid(v);
e = d - y;
dy = y*(-y)*e;
dW = alpha*dy*x';
W = dW + W;
end
end
function W = DeltaBatch(W,X,D)
alpha = 0.9;
N = ;
dWSum = zeros(,);
for i = :N
x = X(i,:)';
d = D(i);
v = W*x;
y = sigmoid(v);
e = d - y;
dy = y*(-y)*e;
dW = alpha*dy*x';
dWSum = dWSum + dW;
end
dWavg = dWSum/N;
W = W + dWavg;
end
function W = DeltaMiniBatch(W,X,D)
alpha = 0.9;
N = ;
M = ;
for j = :(N/M)
dWSum = zeros(,);
for q = :M
i = j*(M-) + q;
x = X(i,:)';
d = D(i);
v = W*x;
y = sigmoid(v);
e = d - y;
dy = y*(-y)*e;
dW = alpha*dy*x';
dWSum = dWSum + dW;
end
dWavg = dWSum/M;
W = W + dWavg;
end
end
function y = sigmoid(x)
y = /(+exp(-x));
end
function D = DeltaTest()
clear all;%清除所有变量
close all;%关闭所有打开文件 X = [0 0 1;0 1 1;1 0 1;1 1 1];% 输入样本
D = [0 0 1 1];%对应样本的答案 % 初始化误差平方和向量
E1 = zeros(1000,1);
E2 = zeros(1000,1);
E3 = zeros(1000,1); % 统一初始化权值系数
W1 = 2*rand(1,3) - 1;
W2 = W1;
W3 = W1; % 使用三种方法训练1000轮 同时每一轮计算一次误差平方
for epoch = 1:1000
%各自完成一轮训练
W1 = DeltaSGD(W1,X,D);
W2 = DeltaBatch(W2,X,D);
W3 = DeltaMiniBatch(W3,X,D); % 计算这一轮结束后的误差平方
N= 4;
for i = 1:N
%利用误差计算方法计算误差
% E1
x = X(i,:)';
d = D(i);
v1 = W1*x;
y1 = sigmoid(v1);
E1(epoch) = E1(epoch) + (d - y1)^2; % E2
v2 = W2*x;
y2 = sigmoid(v2);
E2(epoch) = E2(epoch) + (d - y2)^2; % E3
v3 = W3*x;
y3 = sigmoid(v3);
E3(epoch) = E3(epoch) + (d - y3)^2;
end end
for i = 1:4
x = X(i,:)';d = D(i);
v = W1*x;
y = sigmoid(v)
end
% 绘制三种算法策略的差异图
plot(E1,'r');hold on
plot(E2,'b:');
plot(E3,'k-');
xlabel('Epoch');
ylabel('Sum of Squares of Training Error');
legend('SGD',"Batch",'MiniBatch');
end

  

NNLearning阶段性总结01的更多相关文章

  1. 01.SQLServer性能优化之----强大的文件组----分盘存储

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...

  2. 用Kotlin创建第一个Android项目(KAD 01)

    原文标题:Create your first Android project using Kotlin (KAD 01) 作者:Antonio Leiva 时间:Nov 21, 2016 原文链接:h ...

  3. Java企业实训 - 01 - Java前奏

    前言: 虽然个人专攻.NET方向,不过由于个人是干教育行业的,方方面面的东西,不能说都必须精通,但肯定多少都会涉及到. 一个菜鸟学员,从啥都不会,经过一步步学习,最后到企业上手掌管一个模块甚至一个项目 ...

  4. Node.js 教程 01 - 简介、安装及配置

    系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...

  5. 0042 MySQL学习笔记-入门--01

    基本概念: 数据库DB(database): 数据的仓库,数据的集合,是数据的一种结构化的存储 数据库管理系统DBMS(database management system): 管理数据库的一套软件 ...

  6. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录

    一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...

  7. ArtifactTransferException: Failure to transfer org.apache.openejb:javaee-api:jar:5.0-1

    最近在myeclipse上创建maven类型的web项目的时候,出现了一个错误. ArtifactTransferException: Failure to transfer org.apache.o ...

  8. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  9. 异步编程系列第01章 Async异步编程简介

    p { display: block; margin: 3px 0 0 0; } --> 2016.10.11补充 三个月过去了,回头来看,我不得不承认这是一系列失败的翻译.过段时间,我将重新翻 ...

随机推荐

  1. MFC中用户自定义类响应自定义消息

    这篇技术文章不是讨论经典的MFC中的消息工作机理的,讨论消息工作原理.方式和路径的文章在网上和书本中随处可见.网上众多的讨论都是关于如何响应并进行用户自定义消息映射的:网上还有一些文章介绍如何在自定义 ...

  2. [转]解決 IE10 瀏覽器無法使用 ASP.NET 表單驗證登入的問題

    今天凌晨在客戶端上線,當程式佈署到正式機後發現我們的網站唯獨只有 IE10 瀏覽器無法成功登入,任何其他瀏覽器版本或使用較低的 IE 版本都可以正常登入,使用 IE 相容性檢視也都可以正常登入,想說會 ...

  3. 如何遍历Map操作总结

    Map<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "123"); ...

  4. Nodejs与mysql连接池的应用(pool)

    /* * 连接池 连接和缓存的技术 * */ var mysql = require('mysql'); var pool = mysql.createPool({ connectionLimit:2 ...

  5. 【AngularJS学习笔记】封装一些简单的控件(封装成Html标签)

    bootstrap有强大的指令系统,可以自定义一些属性,基本知识请移步:http://angularjs.cn/A00r  http://www.cnblogs.com/lvdabao/p/33916 ...

  6. JAVA正则表达式校验qq号码

    /* * 校验qq号码* 要求必须是5-15位* 0不能开头* 必须都是数字 */ (1)使用正则表达式校验qq号码 (2)方式2

  7. NopCommerce学习(2) EntityFramework

    NopCommerce-EntityFramework开发:主要是Controller-Service-Repository的开发方式 操作数据库,主要对象是BaseEntity,IDbContext ...

  8. ArrayList详解

    一.ArrayList类介绍:(这里给出jdk1.8源码上中文翻译) ArrayList是List接口以可变数组方式实现的,实现了所有的lis接口中的操作,并容许有null等所有元素.除了实现了Lis ...

  9. oc中文首字母排序

    oc中文首字母排序 NSArray *arr2=@[@"小雨",@"安安",@"小风",@"荣荣",@"张涛& ...

  10. 关于MySQL优化问题

    众所周知在数据量庞大的情况下普通的SQL语句已经满足不了我们的需要了,这个时候就需要DBA去进行数据库的优化,而我们作为一名开发人员不能对数据库进行优化这时该怎么办呢?答案是只能在SQL语句上面进行优 ...