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

基本的组网原则:

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

  • 初始化权值系数
  • 提取一个样本输入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. 第三章.搭建MyBatis工程环境

    1.数据库的准备: 数据库: create DATABASE mybatis: 数据表: CREATE TABLE `user` ( `id` int(10) NOT NULL AUTO_INCREM ...

  2. @SuppressWarnings注解用法详解

    @SuppressWarnings注解用法详解 今天来谈谈@SuppressWarnings注解的作用. J2SE 提供的最后一个批注是 @SuppressWarnings.该批注的作用是给编译器一条 ...

  3. Junit应用代码(读取mysql表数据)

    1. 封装连接数据库的类: import java.sql.ResultSet; import java.sql.Connection; import java.sql.DriverManager; ...

  4. CVPR 2016 paper reading (2)

    1. Sketch me that shoe, Qian Yu, Feng Liu, Yi-Zhe Song, Tao Xiang, Timothy M. Hospedales, Cheng Chan ...

  5. webservice 从客户端中检测到有潜在危险的 Request.Form 值

    webservice中传递xml格式的参数时报错 webservice 从客户端中检测到有潜在危险的 Request.Form 值解决方案: 1.在web.config的system.web节点中添加 ...

  6. ARM Linux 内核 panic 之cache 一致性 ——Cortex-A9多核cache和TLB一致性广播

    ARM Linux 内核 panic 之cache 一致性 ——Cortex-A9多核cache和TLB一致性广播 Cortex-A9的多喝CPU可以接收和执行一致性广播操作,当其使能并处于SMP模式 ...

  7. C# 5.0中使用CallerMemberName、CallerFilePath和CallerLineNumber获取代码的调用方信息(转载)

    很多时候,我们需要在运行过程中记录一些调测的日志信息,如下所示: public void DoProcessing() { TraceMessage("DoProcessing()被XXX调 ...

  8. js判断值是不是全是数字

    if(isNaN(value)){ 不是数字 }else{ 全是数字 }

  9. Unity 游戏框架搭建 (十六) v0.0.1 架构调整

    背景: 前段时间用Xamarin.OSX开发一些工具,遇到了两个问题. QFramework的大部分的类耦合了Unity的API,这样导致不能在其他CLR平台使用QFramework. QFramew ...

  10. oracle导出sequences

    将某个用户的全部sequence查询出来,并拼成创建语句: select 'create sequence '||sequence_name|| ' minvalue '||min_value|| ' ...