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

基本的组网原则:

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

  • 初始化权值系数
  • 提取一个样本输入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. PHP中__get()和__set()的用法实例详

    刚刚看到一个对我有用的文章,我就把它摘抄下来了.                                                                        php面 ...

  2. ASP.NET Web API编程——文件上传

    首先分别介绍正确的做法和错误的做法,然后分析他们的不同和错误之处,以便读者在实现此功能时可避开误区 1正确的做法 public class AvaterController : BaseApiCont ...

  3. 理解JavaScript对象

    理解JavaScript对象 对象是JavaScript的基本数据类型.对象是一种复合值:将很多值(原始值或者其他对象)聚合在一起. JavaScript对象不仅可以保持自有的属性,还可以从原型对象继 ...

  4. 启动memcache

    "D:\SOFT\memcached-1.4.5-amd64\memcached-amd64\memcached.exe"

  5. HDU 1022 Train Problem I(栈的操作规则)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1022 Train Problem I Time Limit: 2000/1000 MS (Java/Ot ...

  6. 修改本机默认的jdk版本

    因为开发需要使用多个jdk,在修改jdk版本时遇到了一些问题 在系统变量的%JAVA_HOME%中修改了jdk的路径,但是重启后java -version版本并没有改变. 在网上找到一篇文章,修改了注 ...

  7. Java关于NIO类的详解

    一.IO与NIO的区别: 前提我们先说一说java IO: Java中使用IO(输入输出)来读取和写入,读写设备上的数据.硬盘文件.内存.键盘......,根据数据的走向可分为输入流和输出流,这个走向 ...

  8. 20181029NOIP模拟赛T2

    2.追捕 [题目背景] Duan2baka:“jmsyzsfq天下第一蠢!” jmsyzsfq:“你说什么?!” [题目描述] 于是Duan2baka开始了逃亡的旅程,而jmsyzsfq也开始追捕Du ...

  9. Jquery中数值求和及根据余数改变对应的数值样式

    Jquery内容 <script type="text/javascript"> $(function () { var num = 0; $(".box o ...

  10. springboot的junit4模拟request、response对象

    关键字: MockHttpRequest.Mock测试 问题: 在模拟junit的request.response对象时,会报如下空指针异常. 处理方法: 可用MockHttpServletReque ...