一个监督的赫布学习(Hebb Learning)的例子
来源:互联网 发布:pss监控软件下载 编辑:程序博客网 时间:2024/05/17 19:19
赫布学习(Hebb Learning)基于赫布规则(Hebb Rule):When an axon of cell A is near enough to excite a cell B and repeatedly or persistently takes part in firing it, some growth process or metabolic change takes place in one or both cells such that A's efficiency, as one of cells firing B, is increase.
赫布规则大致说的是如果神经细胞刺激不断加强,两者联系加强。首先看看一个简单的神经网络的结构(以识别为例):左边P(R×1的向量) 是输入,表示待识别物体的R 个特征。W是权重矩阵,通过计算特征和权重矩阵的乘法,用于形成S 个结果,S是判别函数。最终形成a (S×1向量)的结果。下面以位矩阵的数字识别为例:问题:有6×5大小的像素矩阵用于表示数字0,1,2,如下图所示每个数字矩阵用一个一维的特征向量表示,比如0 对应的特征向量为p1:p1 = [-1 1 1 1 -1 1,-1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1]^T其中-1代表这个像素不上色,1反之,t1-t3分表代表结果是0,1,2。那我们的问题是如果识别带有误差,或者只有部分像素的例子。如下面图中应该识别为多少呢? 分析:使用如下的神经网络,权重矩阵W通过下面等式计算:W = p1·p1^T + p2·p2^T + p3·p3^T在我们这个例子里,权重函数如下S判别函数我们使用hardlims,当输入大于0则结果为1,当小于0 则结果为-1. 针对一个特定识别过程(如下图):下面是实现这个过程的Python 代码,使用到numpy 库。#_*_coding:utf-8_*_import osimport sysimport numpy as npmat0 = np.matrix([-1,1,1,1,-1,\1,-1,-1,-1,1,\1,-1,-1,-1,1,\1,-1,-1,-1,1,\1,-1,-1,-1,1,\-1,1,1,1,-1])mat1 = np.matrix([-1,1,1,-1,-1,\-1,-1,1,-1,-1,\-1,-1,1,-1,-1,\-1,-1,1,-1,-1,\-1,-1,1,-1,-1,\-1,-1,1,-1,-1])mat2 = np.matrix([1,1,1,-1,-1,\-1,-1,-1,1,-1,\-1,-1,-1,1,-1,\-1,1,1,-1,-1,\-1,1,-1,-1,-1,\-1,1,1,1,1])mat0t = mat0.getT()mat0p = mat0t.dot(mat0)mat1t = mat1.getT()mat1p = mat1t.dot(mat1)mat2t = mat2.getT()mat2p = mat2t.dot(mat2)print "===============matrix 0===================="print(mat0p)print "===============matrix 1===================="print(mat1p)print "===============matrix 2===================="print(mat2p)matw = mat0p+mat1p+mat2pprint "===============matrix sum===================="print matwtesta0 = np.matrix([-1,1,1,1,-1,\1,-1,-1,-1,1,\1,-1,-1,-1,1,\-1,-1,-1,-1,-1,\-1,-1,-1,-1,-1,\-1,-1,-1,-1,-1])mata0 = matw.dot(testa0.getT())print "=========== raw mata0 =============="print mata0for ii in xrange(mata0.size):if mata0[ii] > 0:mata0[ii] = 1else:mata0[ii] = -1print "============= After testa0 ================="print mata0
备注:这是Neural Network Design 的一个例子,作者用python 代码实现了下。
查看原文:http://blog.foool.net/2016/09/%e4%b8%80%e4%b8%aa%e7%9b%91%e7%9d%a3%e7%9a%84%e8%b5%ab%e5%b8%83%e5%ad%a6%e4%b9%a0%ef%bc%88hebb-learning%ef%bc%89%e7%9a%84%e4%be%8b%e5%ad%90/
0 0
- 一个监督的赫布学习(Hebb Learning)的例子
- Hebb Learning 监督学习的例子
- 神经网络学习笔记2:有监督的Hebb学习
- Machine Learning(Stanford)| 斯坦福大学机器学习笔记--第一周(1.监督学习与无监督学习的介绍)
- 监督学习 - 一个典型的工作流程
- 海扁學習與神經網路的同步化(Hebb学习与神经网络的同步化)
- Machine Learning(一) 监督学习初探
- 半监督学习(semi-supervised learning)
- 半监督学习(semi-supervised learning)
- 监督学习(supervised learning)和无监督学习(unsupervised learning)
- Deep learning:二十(无监督特征学习中关于单层网络的分析)
- 无监督学习(Unsupervised Learning)
- 无监督学习(unsupervised learning)
- 什么是监督学习(supervised learning)
- 监督式学习(Supervised learning)
- 监督式学习(Supervised learning)
- 周志华《Machine Learning》学习笔记(15)--半监督学习
- 周志华《Machine Learning》学习笔记(15)--半监督学习
- poj 2096
- Java虚拟机详解----常用JVM配置参数
- CentOS7配置防火墙
- Educational Codeforces Round 16 B. Optimal Point on a Line【水】
- java List多字段排序
- 一个监督的赫布学习(Hebb Learning)的例子
- Maximal Square
- 56. Merge Intervals 对区间进行合并
- leetcode题解日练--2016.09.03
- 各个 Linux 发行版的风格和哲学分别是怎样的?
- RxJava 基础
- Linux下6种优秀的邮件传输代理
- 计划任务
- Android Dialog高度封装