快速了解LVQ神经网络是什么

news/2024/5/20 7:01:56 标签: 机器学习, 聚类, 深度学习

本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com


目录

一. 快速了解LVQ神经网络    

1.1 LVQ神经网络是什么    

1.2 LVQ神经网络的表示     

二. 关于LVQ神经网络的判别计算过程    

2.1 LVQ神经网络模型与它的判别方法    

2.2 LVQ模型的判别公式    

三. LVQ神经网络-简单Demo 

3.1 matlab的LVQ神经网络DEMO    


LVQ神经网络全称为Learning Vector Quantization,主要用于做分类
它是Kohonen于1989年提出基于竞争网络的学习矢量量化网络
本文面向新人入门,简单介绍LVQ神经网络的结构、运作,
通过本文可快速了解LVQ神经网络是个什么东西

 


一. 快速了解LVQ神经网络    

本节简单介绍LVQ神经网络的思想

1.1 LVQ神经网络是什么    

       LVQ用于解决分类问题,它先对每个类别都初始化一些类别判别中心点,然后通过训练来调整这些类别判别中心的位置,使它们能较好地识别训练样本


       这样,来了新样本,只要判断新样本离哪个聚类中心点近,就判断样本属于该聚类中心点所代表的类别

1.2 LVQ神经网络的表示     

LVQ神经网络的拓扑表示

LVQ一般用一个三层神经网络来表示,它的拓扑结构如下:

其中,输入层与隐层全链接,隐层与输出层的每个节点唯一连接

LVQ神经网络元素的意义

每个隐层节点代表着一个类别判别中心,它与输入层的权重就是它的位置,,它的输出层的连接代表着它是哪个类别的判别中心

例如,某个隐节点的输入权重为[0.3 0.5],输出权重为[0 1],则代表它的位置为[0.3,0.5], 是类别1的判别中心


二. 关于LVQ神经网络的判别计算过程    

本节简单介绍LVQ神经网络的模型是如何进行预测的

2.1 LVQ神经网络模型与它的判别方法    

LVQ训练后得到的模型就是W^{21}W^{32},即各个判别中心的位置和它们所属类别,

LVQ的判别方法就是样本离哪个判别中心最近,就将样本判别为它所属的类别标签

2.2 LVQ模型的判别公式    

LVQ神经网络的判别原理如上所述,本节展示具体的判别公式

LVQ模型的判别公式如下

其中,
👉W21为输入层到隐层的权重            
👉W32为隐层到输出层的权重            
👉dist为欧氏距离函数                        
👉compet则为向量竞争函数              
      即向量中最大值者为1,其它为0    


✍️备注
从判别公式可以看到,模型只依赖W21和W32
其中W21代表着各个判别中心的位置 
而W32则记录了判别中心所属的类别  

 

 

三. LVQ神经网络-简单Demo 

3.1 matlab的LVQ神经网络DEMO    

matlab可以通过newlvq函数构建一个LVQ神经网络,再利用train函数对网络进行训练,就可以得到训练好的LVQ神经网络,下面展示一个来自matlab官方的简单LVQ例子Demo
 matlab工具箱使用LVQ的Demo代码

%代码说明:LVQ的matlab工具箱使用Demo
%来自《老饼讲解神经网络》bp.bbbdata.com ,matlab版本:2014b
%-----------------------------------------------------
%数据准备
rand('seed',70)
P = [-3 -2 -2  0  0  0  0 +2 +2 +3; ...
    0 +1 -1 +2 +1 -1 -2 +1 -1  0];     % 输入数据
Tc = [1 1 1 2 2 2 2 1 1 1];            % 输出类别
T = ind2vec(Tc);                       % 将输出转为one-hot编码(代表类别的01向量)

%网络训练
net = newlvq(P,4,[.6 .4]);   % 建立一个LVQ神经网络
net = train(net,P,T);        % 训练神经网络
%预测
Y = sim(net,P);              % 预测(one-hot形式)
Yc = vec2ind(Y);             % 将one-hot编码形式转回类别编号形式
% 提取出各个类别的判别中心                            
c       = net.iw{1,1};                                % 中心
c_class = net.lw{2,1};                                % 中心所属类别
c       = [vec2ind(c_class)',c]                       % 添加中心的类别标签

plot(c(:,2),c(:,3),'o','MarkerEdgeColor','k','MarkerFaceColor','y','MarkerSize',10)
for i = 1: size(c,1)
text(c(i,2)-0.050,c(i,3)+0.02,num2str(c(i,1)))
end
title('LVQ预测类别')

得到结果如下

c =
    1.0000    0.0497   -0.0100
    1.0000   -0.0400    0.0099
    2.0000         0   -0.0398
    2.0000         0    0.0495
    


这就是上述例子中设置了4个类别判别中心的类别(第1列)和位置(第2-3列)


相关文章
1-LVQ的学习目录:老饼|BP神经网络-竞争神经网络
2-SVM的学习目录:老饼|BP神经网络-感知机与SVM
3-BP的学习目录:老饼|BP神经网络-BP入门


http://www.niftyadmin.cn/n/318196.html

相关文章

UNIX网络编程卷一 学习笔记 第十三章 守护进程和inetd超级服务器

守护进程是在后台运行且不与任何控制终端关联的进程。Unix系统通常有很多守护进程在后台运行(约20到50个的量级),执行不同的管理任务。 守护进程由系统初始化脚本(在开机时运行)启动,而没有控制终端是系统…

HTTP协议(二)/HTTPS

HTTPS是啥 https是在http协议的基础上,加上了数据的加密解密层,即TLS/SSL。在进行http请求的时候,通过TLS/SSL进行加密,在响应的时候,也会通过TLS/SSL进行解密。加密解密层TLS/SSL不会对下三层加密解密,而…

【2023华为OD笔试必会20题--C语言版】《08 找数字、找等值元素》——数组

本专栏收录了华为OD 2022 Q4和2023Q1笔试题目,100分类别中的出现频率最高(至少出现100次)的20道,每篇文章包括原始题目 和 我亲自编写并在Visual Studio中运行成功的C语言代码。 仅供参考、启发使用,切不可照搬、照抄,查重倒是可以过,但后面的技术面试还是会暴露的。✨✨…

关于ASA广告归因接入方法

投放苹果ASA广告,提高 app 曝光率、下载量的增长,那么我们该如何从后台看到投放广告的效果呢? 我们可以借助Apple Ads归因API。那什么是归因?什么又是API呢? 归因:可以给用户打标签,然后看他在…

【python】无限量PPT免费下载?找模板在不怕心仪得不能用啦

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 开发环境: python 3.8 pycharm 不会安装的可以文末名片我获取哦 😎 模块使用: 第三方模块,需要安装 win R 输入cmd 输入安装命令 pip install 模块名 (如果出现爆红 可能是因为 网络…

Linux应用开发:socket

目录 1、TCP 1.1 TCP建立连接的流程图 1.2 TCP函数 1.2.1 socket 1.2.2 bind 1.2.3 listen 1.2.4 accept 1.2.5 recv 1.2.6 send 1.2.7 connnect 1.2.8 setsockopt、getsockopt 1.3 应用程序:服务器 1.4 应用程序:客户端 2、UDP 2.1 UDP建…

如何使用现代C++特性构建游戏引擎

如何使用现代C特性构建游戏引擎 一、引言1 游戏引擎的定义及作用2 现代C特性的应用3 本文目的和意义 二、现代C特性概述1 C11、C14、C17的新特性2 常用现代C特性介绍2.1 智能指针2.2 Lambda表达式2.3 模板特化与偏特化2.4 可变参数模板2.5 constexpr函数2.6 类成员函数的默认实…

JVM 直接内存(Direct Memory)

直接内存概述 不是虚拟机运行时数据区的一部分&#xff0c;也不是<<Java 虚拟机规范>> 中定义的内存区域直接内存是Java 堆外的、直接向系统申请的内存区间来源于 NIO&#xff0c;通过存在堆中的 DirectByteBuffer 操作 Native 内存访问直接内存的速度会优于 Java…