神经网络和CNN的一些基础概念,基础知识的梳理

article/2025/10/8 22:26:16

(好吧,这又是一篇软文,适合初学者)

一、通用概念:

1.  

有监督学习方法与非监督学习方法:

  •    必须要有训练集与测试样本,模型在训练集中寻找规律,训练结束对测试样本使用这种规律进行预测【所有的回归和分类算法都属于监督学习,常见的比如:线性回归(Linear Regression), 多项式回归(Ploynomial Regression)——处理非线性, 岭回归(Ridge Regression),Lasso回归和弹性网络回归(ElasticNet Regression);朴素贝叶斯、决策树、随机森林、集成学习分类版,一些神经网络】。而非监督学习没有训练集,只有一组数据,在该组数据集内寻找规律(比如聚类算法)。
  •       有监督学习的方法就是识别事物,识别的结果表现在给待识别数据加上了标签。因此训练样本集必须由带标签的样本组成。而非监督学习方法只有要分析的数据集的本身,预先没有什么标签。如果发现数据集呈现某种聚集性,则可按自然的聚集性分类,但不予以某种预先分类标签对上号为目的。
  •      非监督学习在寻找数据集中的规律性,这种规律性并不一定要达到划分数据集的目的,也就是说不一定要“分类”。

这一点是比有监督学习方法的用途要广。    譬如分析一堆数据的主分量,或分析数据集有什么特点都可以归于非监督学习方法的范畴。

  •     (简而言之,有训练样本的,训练集有输入有输出,就是监督型学习)。 包括所有的回归算法分类算法,比如线性回归 决策树 神经网络。无监督学习一般指的是聚类算法,我们事先不知道样本的类别,通过某种办法,把相似的样本放在一堆。

    训练集只有输入没有输出是无监督,包括所有的聚类算法,比如k-means PCA gmm等

半监督学习:

在此学习方式下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM.)等。

 

2.泛化:

 

 

            当某一反应与某种刺激形成条件联系后,这一反应也会与其它类似的刺激形成某种程度的条件联系,这一过程称为泛化——换句话说,模型适应未知数据的能力。

 

3.过拟合和欠拟合

 

过拟合和欠拟合是机器学习算法表现差的两大原因:

过拟合:当某个模型过度的学习训练数据中的细节和噪音,以至于模型在新的数据上表现很差,我们称过拟合发生了。这意味着训练数据中的噪音或者随机波动也被当做概念被模型学习了。而问题就在于这些概念不适用于新的数据,从而导致模型泛化性能的变差。
随着时间进行,算法不断地学习,模型在训练数据和测试数据上的错误都在不断下降。但是,如果我们学习的时间过长的话,模型在训练数据上的表现将继续下降,这是因为模型已经过拟合并且学习到了训练数据中的不恰当的细节以及噪音。同时,测试数据集上的错误率开始上升,也即是模型的泛化能力在下降。

欠拟合:欠拟合指的是模型在训练和预测时表现都不好的情况。

一个欠拟合的机器学习模型不是一个良好的模型并且由于在训练数据上表现不好

欠拟合通常不被讨论,因为给定一个评估模型表现的指标的情况下,欠拟合很容易被发现。矫正方法是继续学习并且试着更换机器学习算法。

  • 过拟合:在训练数据上表现良好,在未知数据上表现差。
  • 欠拟合:在训练数据和未知数据上表现都很差

实际中过拟合出现较多,欠拟合情况非常少

 

详细参考:http://www.cnblogs.com/nxld/p/6058782.html

 

 

4.偏置:(有的地方也叫做截距项)

简单说就是方便进行更复杂的分类

详细参考:http://blog.csdn.net/xwd18280820053/article/details/70681750

 

5.

 

激励(活)值指的就是输出值

6.
损失函数=代价函数=误差函数

 

 

 

7.  阀值:

 

当外界刺激达到一定的阀值时,神经元才会受刺激,影响下一个神经元

 

 

 

8. 激活函数:

 

为什么要引入激活函数:http://blog.csdn.net/u010002387/article/details/52797287

不使用激励函数的话,神经网络的每层都只是做线性变换,没有激活函数网络仅是一个线性分类器。多层输入叠加后也还是线性变换。因为线性模型的表达能力不够,激励函数可以引入非线性因素。

常见的几种激活函数:

  • sigmoid 函数:函数饱和使梯度消失

    当函数激活值接近于0或者1时,函数的梯度接近于0。在反向传播计算梯度过程中:δ(l)=(W(l))(l+1)∗f′(z(L)),每层残差接近于0,计算出的梯度也不可避免地接近于0。这样在参数微调过程中,会引起参数弥散问题,传到前几层的梯度已经非常靠近0了,参数几乎不会再更新。

    );函数不是关于原点中心对称的(这个特性会导致后面网络层的输入也不是零中心的,进而影响梯度下降的运作
  • tanh 函数:同样存在饱和问题,但它的输出是零中心的,因此实际中 tanh 比 sigmoid 更受欢迎。
  • ReLU函数:较于 sigmoid 和 tanh 函数,ReLU 对于 SGD 的收敛有巨大的加速作用;ReLU 的缺点是,它在训练时比较脆弱并且可能“死掉”(合理设置学习率,会降低这种情况的发生概率
  • Leaky ReLU: 解决了ReLUctant的“假死”问题,缺点是是的计算更复杂缓慢

 

详细参考:点击打开链接

 

 

 

9. 常用的数据处理方法:

 

  • PCA:

PCA的具有2个功能,一是维数约简(可以加快算法的训练速度,减小内存消耗等),一是数据的可视化。

PCA并不是线性回归,因为线性回归是保证得到的函数是y值方面误差最小,而PCA是保证得到的函数到所降的维度上的误差最小。另外线性回归是通过x值来预测y值,而PCA中是将所有的x样本都同等对待。

在使用PCA前需要对数据进行预处理,首先是均值化,即对每个特征维,都减掉该维的平均值,然后就是将不同维的数据范围归一化到同一范围,方法一般都是除以最大值。但是比较奇怪的是,在对自然图像进行均值处理时并不是不是减去该维的平均值,而是减去这张图片本身的平均值。因为PCA的预处理是按照不同应用场合来定的。

自然图像指的是人眼经常看见的图像,其符合某些统计特征。一般实际过程中,只要是拿正常相机拍的,没有加入很多人工创作进去的图片都可以叫做是自然图片,因为很多算法对这些图片的输入类型还是比较鲁棒的。在对自然图像进行学习时,其实不需要太关注对图像做方差归一化,因为自然图像每一部分的统计特征都相似,只需做均值为0化就ok了。不过对其它的图片进行训练时,比如首先字识别等,就需要进行方差归一化了。

有一个观点需要注意,那就是PCA并不能阻止过拟合现象。表明上看PCA是降维了,因为在同样多的训练样本数据下,其特征数变少了,应该是更不容易产生过拟合现象。但是在实际操作过程中,这个方法阻止过拟合现象效果很小,主要还是通过规则项来进行阻止过拟合的。 并不是所有ML算法场合都需要使用PCA来降维,因为只有当原始的训练样本不能满足我们所需要的情况下才使用,比如说模型的训练速度,内存大小,希望可视化等。如果不需要考虑那些情况,则也不一定需要使用PCA算法了。

  • 白化(Whitening):

Whitening的目的是去掉数据之间的相关联度,是很多算法进行预处理的步骤。比如说当训练图片数据时,由于图片中相邻像素值有一定的关联,所以很多信息是冗余的。这时候去相关的操作就可以采用白化操作。数据的whitening必须满足两个条件:一是不同特征间相关性最小,接近0;二是所有特征的方差相等(不一定为1)。常见的白化操作有PCA whitening和ZCA whitening。

PCA whitening是指将数据x经过PCA降维为z后,可以看出z中每一维是独立的,满足whitening白化的第一个条件,这是只需要将z中的每一维都除以标准差就得到了每一维的方差为1,也就是说方差相等。

ZCA whitening是指数据x先经过PCA变换为z,但是并不降维,因为这里是把所有的成分都选进去了。这是也同样满足whtienning的第一个条件,特征间相互独立。然后同样进行方差为1的操作,最后将得到的矩阵左乘一个特征向量矩阵U即可。

10.权值随机初始化:

“小随机数”用来保证网络不会因权值过大而进入饱和状态,从而导致训练失败;“不同”用来保证网络可以正常地学习。实际上,如果用相同的数去初始化权矩阵,则网络无能力学习
 

11.学习率

实际和信号分析里的时间常数是一样的,学习率越小 学习会越精细,但同时学习速度也会降低,因为现实中很多模型都是非线性的,犹如一条曲线,梯度下降采用很多小直线迭代去逼近非线性的曲线,如果每一步跨度太大(学习率)就会失去很多曲线的扭曲信息,局部直线化过严重,跨度太小你要到达曲线的尽头就需要很多很多步,这就需要更多的样本,所以这个也要考虑实际问题再来决定学习率的。

二、神经网络优缺点(BP):
1. 全连接进行大量数据的训练时太耗时太复杂

详细参考:BP神经网络优缺点

三、CNN

  • 局部感受野:在一副图像中,距离较远的像素,它们的相关性一般较弱(打个比方:我们的衣领和脸),所以每个神经元没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就可得到全局信息。

  • 权值共享:有的地方的特性是相似的。所以对于每个神经元,我们用同一个卷积核去卷积图像

  • 多卷积核和多卷积层:权值共享虽然好,但这也就意味着这些卷积核提取的是同一个特征(说到提取的特征,与计算机视觉有关,比如锐化、边缘检测就是通过改变卷积核权值实现的),但是对于分类问题,提取一个特征肯定是远远不够的,比如判断是否是一只熊,仅仅提取出熊掌的特征是不足的,因此需要多个高级语义特征的组合,在这里就又引入了多卷积核概念。为什么CNN要设计这么多层呢?识别一个物体,CNN是从像素,边缘,局部形状一直到整体形状进行感知,也就是说它得将低级特征组合而来的高级特征在进一步变成语义特征。

  • 池化层(也叫降采样层、下采样层):

    压缩数据和参数的量,有减小过拟合的作用




 

 

 

 

 


http://chatgpt.dhexx.cn/article/eC6hj29v.shtml

相关文章

一些神经网络基础知识归纳

神经网络(NN)复杂度 NN复杂度,多用NN层数和NN参数个数表示 如上图示 空间复杂度 层数隐藏层的层数1个输出层 上图为2层NN 总参数 3*44 4*2226 时间复杂度 乘加运算次数 3*44*220 指数衰减学习率 可以先用较大学习率,快速得…

Java网络编程(一)网络的基本认知

前言 这是一个信息化的时代,在生活中,网络通信无处不在。比如发送短信,邮件,视频通话等。 以邮件为例子: ① 收件人: 相当于网络编程的ip地址端口号,定位到某一个具体的地方!只有找…

第四章 使用JAVA构建神经网络

• 构建一个神经网络 •激活函数 • Encog持久化 •在代码里使用Encog Analyst 这章将展示用Encog怎样构造前馈与简单递归神经网络,以及在最后部分怎样保存这些神经网络。创建神经网络类型使用BasicNetwork和BasicLayer这两个类,除了这两个类,还使用…

深入浅出讲解神经网络的种类及举例说明

本文收录于《深入浅出讲解自然语言处理》专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅!个人主页:有梦想的程序星空个人介绍:小编是人工智能领域硕士,全栈工程师&a…

Java网络基础知识

目录 一,计算机网络 1,概念 2,计算机网络的主要功能 3,计算机网络分类 二,网络通信协议及接口 1,网络通信协议 2,网络通信接口 3,通信协议分层思想 4,协议分类 …

神经网络可以用来分类吗,神经网络如何实现分类

怎么用spss神经网络来分类数据 。 用spss神经网络分类数据方法如下:神经网络算法能够通过大量的历史数据,逐步建立和完善输入变量到输出结果之间的发展路径,也就是神经网络,在这个神经网络中,每条神经的建立以及神经…

BP神经网络JAVA实现详解

注:本文手动搬家自我的新浪博客点击打开链接 从2016年3月份左右,我的毕业设计开题答辩时间正好是AlphaGo大战李世石之日。还记得当时答辩PPT最末引用的图片还是这张: 李世石大战Google的AlphaGo 不过当时答辩情况并不理想,答辩组老…

Java网络编程--网络基础

文章目录 网络协议常用网络协议族(簇)(protocol)端口(port)常见知名端口动态端口 IP地址IP地址分类IPv4的分类IPv6子网掩码 网络协议 是为计算机网络中进行数据交换而建立的规则、标准或约定的集合。为了使不同计算机厂家生产的计…

神经网络如何实现分类,神经网络基本概念

人工神经网络分类方法 从20世纪80年代末期,人工神经网络方法开始应用于遥感图像的自动分类。 目前,在遥感图像的自动分类方面,应用和研究比较多的人工神经网络方法主要有以下几种:(1)BP(BackP…

神经网络如何进行分类

1.首先搞清楚什么是感知机 如上图所示,输入为向量,经线性变换,再通过激活函数得到输出,这样一个完整的结构成为感知机。感知机是人工神经网络的最小单元,本质上由一个仿射变换接一个非线性变换组成。 上图wxb属于仿射变…

Java基础学习(17)网络编程

Java基础学习 一、 网络编程1.1 什么是网络编程1.2 常见的软件架构:1.3 网络编程的三要素1.4 IP1.4.1 InetAddress用法 1.5 端口号1.6 协议1.6.1 UDP协议1.6.1.1 UDP的三种通信方式 1.6.2 TCP协议1.6.2.1 TCP底层原理 一、 网络编程 1.1 什么是网络编程 解释&…

java简单的神经网络

运行环境:jre1.7 以下是神经网络的主体类 public class NeuralNetwork {int inputNodes;//输入层节点数int hiddenNodes;//隐藏层节点数int outputNodes;//输出层节点数double learningRate;//学习率double[][] weight_ih;//输入层与隐藏层之间的权重double[][] w…

java实现神经网络算法,java调用神经网络模型

如何用70行Java代码实现神经网络算法 。 如何用70行Java代码实现神经网络算法import.Random;publicclassBpDeep{publicdouble[][]layer;//神经网络各层节点publicdouble[][]layerErr;//神经网络各节点误差publicdouble[][][]layer_weight;//各层节点权重publicdouble[][][]la…

神经网络如何实现分类,神经网络分类特点区别

人工神经网络分类方法 从20世纪80年代末期,人工神经网络方法开始应用于遥感图像的自动分类。 目前,在遥感图像的自动分类方面,应用和研究比较多的人工神经网络方法主要有以下几种:(1)BP(Back …

Java神经网络(一)——Neuroph初次使用

Java神经网络 前言Neuroph框架Neuroph结构框架图Java API 及其类库说明(core nnet util) Neuroph简单案例实现下载必要的Neuroph jar包导入jar包找案例(在书中或者网上)运行解决方案 前言 学了好一阵子时间的神经网络,…

神经网络分类

人工神经网络(Artificial Neural Network,ANN)简称神经网络(NN),是基于生物学中神经网络的基本原理,在理解和抽象了人脑结构和外界刺激响应机制后,以网络拓扑知识为理论基础,模拟人脑的神经系统…

神经网络分类总结

1.人工智能、机器学习与深度学习 人工智能:努力将通常由人类完成的智力任务自动化。机器学习机器学习( machine learning)是人工智能的一个特殊子领域,其目标是仅靠观察训练数据来自动开发程序[即模型( mo…

神经网络分类四种模型,神经网络分类特点区别

神经网络有哪些主要分类规则并如何分类? 神经网络模型的分类人工神经网络的模型很多,可以按照不同的方法进行分类。其中,常见的两种分类方法是,按照网络连接的拓朴结构分类和按照网络内部的信息流向分类。 1按照网络拓朴结构分类…

【学习记录】神经网络三种主要类型

1.图结构 图网络是定义在图结构数据上的神经网络:①图中每个节点都由一个或一组神经元组成②节点之间连接可以有向可以无向③每个节点可接收来自相邻节点或自身的信息。 2.前馈神经网络 前馈神经网络中,把每个神经元接受信息的先后分为不同的组&#xf…

神经网络的类型分类和结构理解

一、序言 神经网络是模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。 在深度学习领域,神经网络就是我们深度学习的灵魂,如果我们想依靠算法实现一些功能,就必须依托不同的神经网络结构,所以很有必…