2.2神经网络基础
仅用作学习笔记 仅用作学习笔记 仅用作学习笔记
1.CNN:卷积神经网络是一种带有卷积结构的深度神经网络。。。。。。
各层结构和作用:
卷积层(Convolutional Layer)
作用: 提取输入数据中的局部特征。通过应用多个卷积核(过滤器)在输入图像上滑动,生成特征图(feature maps)。
实现: 卷积操作通过对图像进行局部加权和求和来计算每个特征图的值。这些卷积核能够自动学习不同的特征,例如边缘、角点或纹理。
参数: 每个卷积核的权重(滤波器)是需要学习的参数。
激活层(Activation Layer)
作用: 引入非线性变换,增加网络的表达能力,使其能够学习复杂的特征。
常用激活函数:
ReLU(Rectified Linear Unit): f(x) = max(0, x),大大提高了训练速度和收敛性。
Sigmoid: f(x) = 1 / (1 + exp(-x)),主要用于二分类任务。
Tanh: f(x) = (exp(x) - exp(-x)) / (exp(x) + exp(-x)),可以使输出值在-1和1之间。
池化层(Pooling Layer)
作用: 降低特征图的空间维度,减少计算量,同时保留最重要的特征信息。
常用池化操作:
最大池化(Max Pooling): 从池化区域中选择最大值。
平均池化(Average Pooling): 计算池化区域的平均值。
参数: 池化窗口的大小和步幅(stride)是需要设置的超参数。
归一化层(Normalization Layer)
作用: 加速网络训练过程,稳定网络的训练过程,提高网络的表现。
常用归一化方法:
批量归一化(Batch Normalization): 对每一层的输出进行标准化,确保均值为0,方差为1。
层归一化(Layer Normalization): 对每个样本的特征进行归一化,适用于序列数据。
全连接层(Fully Connected Layer)
作用: 将卷积层和池化层提取的特征映射到最终的分类或回归结果。每个神经元与前一层的所有神经元相连。
实现: 在全连接层中,输入是展平的特征图,每个神经元都与上一层的所有神经元连接,输出用于最终预测。
输出层(Output Layer)
作用: 生成最终的分类概率或回归值。
常用激活函数:
Softmax: 对多分类问题输出每个类别的概率。
Sigmoid: 对二分类问题输出概率值。
其他层(Optional Layers)
丢弃层(Dropout Layer): 在训练过程中随机“丢弃”部分神经元,防止过拟合。
2.batch_size:表示单次传递给程序用以训练的数据(样本)个数。eg:batch_size=100;每次训练使用数据1-100;101-200…
可以减少内存的使用,提高训练的速度,因为每次完成训练后我们都会更新我们的权重值使其更趋向于精确值。所以完成训练的速度较快
3.划分数据集:
训练集:训练集是用于训练机器学习模型的数据集
验证集:验证集是用于调整模型超参数和评估模型性能的数据集。在训练过程中,验证集用来调整模型的参数,以防止模型在训练集上过拟合。验证集的表现可以帮助选择最佳的模型参数。
测试集:测试集是用于评估训练好的模型性能的数据集。在模型训练完成后,测试集被用来验证模型对未知数据的泛化能力。模型在测试集上的表现可以帮助评估模型的准确性和性能。
可以根据验证集的结果调整训练的参数,以获得最优的模型,但是测试集只用来检测最后模型的准确率,不会再调整
4.卷积:卷积涉及将一个卷积核(小矩阵)与图像的每个局部区域进行点乘和加和操作。卷积的过程是一个降维的过程,将原始图像的特征提取出来,每一次移动都进行一次乘积的求和,作为此位置的值。
5.卷积核:卷积核是一个通常比输入图像小的矩阵,上图中的蓝色区域
6.池化:用于减少特征图的尺寸,同时保留重要的特征。池化操作的主要作用是减少计算量,降低模型复杂度,并防止过拟合。通过减小特征图的尺寸,池化层也帮助提取更具抽象性的特征。
最大池化:取像素最大值作为输出 平均池化:取像素平均值
7.填充:在进行卷积操作时,特征图的尺寸通常会减少。通过填充,可以控制卷积后特征图的尺寸,使其保持不变或者达到预期的尺寸。卷积操作倾向于减少边缘像素的信息,填充可以帮助保护输入图像的边缘特征,使卷积层能更好地处理边缘信息。
8.全连接层:是神经网络中用于将特征图映射到最终输出的关键组件,全连接层可以将从前面的卷积或池化层提取的高层次特征进行融合,形成一个扁平化的向量(一维),将提取的特征映射到每个类别的概率分布
9.激活函数:是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。类似于人类大脑中基于神经元的模型,激活函数最终决定了要发射给下一个神经元的内容。一个节点的激活函数定义了该节点在给定的输入或输入集合下的输出。
*非零均值的激活函数:梯度消失:如果激活函数的均值偏离零,尤其是在较大的网络深度中,可能导致梯度在反向传播过程中逐渐消失。这是因为偏离零的均值可能导致大多数激活值集中在一个区域,从而使得梯度在通过网络时逐渐减小。
梯度爆炸:如果激活函数的均值偏离零,可能导致在反向传播过程中梯度迅速增大,这会导致训练过程中的不稳定和网络权重的巨大更新,从而影响模型的训练效果和收敛性。
饱和函数:当输入值远离零时,Sigmoid和Tanh函数的输出接近其饱和区间的边界(0或1,对Tanh来说是-1或1)。在这些边界区域,函数的梯度变得很小,导致反向传播中的梯度也很小,难以有效更新权重。*
Sigmoid:非零均值、饱和函数 f(x) = 1 / (1 + exp(-x))
Tanh:零均值,饱和函数 f(x) = (exp(x) - exp(-x)) / (exp(x) + exp(-x))
ReLU:非零均值,非饱和函数 f(x) = max(0, x)
10.梯度传播:通过网络层之间传递和计算梯度,以优化网络的参数
前向传播:将输入数据通过神经网络的每一层进行计算,直至输出层,以获取最终预测结果的过程。
反向传播:用于更新网络的权重和偏置,从而最小化损失函数。它基于链式法则,将误差从输出层传播回输入层。
举一个超级简单的示例
反向传播过程如下图所示
每一次反向传播,w和b根据学习率和偏导(梯度)直接更新,中间的α部分则作为一种特别的“中间环节损失函数J”(即上一层所留下的造成的一种偏差),继续向前一层传播循环下去,直到传播到输入层,α分量也就不存在了,最后更新一次w和b即完成了一轮反向传播
梯度消失:在深层网络中,梯度可能在通过多层时变得非常小,从而导致网络难以更新其权重。通常由饱和激活函数引起。
梯度爆炸:梯度在反向传播过程中可能变得非常大,导致权重更新过大,从而使得训练过程不稳定。
改进:
批量归一化:在每层的激活值进行规范化,以减轻梯度消失问题。
适当的权重初始化:使用He初始化、Xavier初始化等策略来稳定梯度的传播。
使用非饱和激活函数:如ReLU及其变体,这些函数在正区间内具有恒定梯度,减少梯度消失的问题。
11.过拟合:过拟合指的是模型在训练数据上表现得非常好,但在未见过的新数据(测试数据)上表现差。模型在训练过程中学习到了数据中的噪声和不重要的细节,而不是仅仅学习数据中的真实模式。这通常发生在模型过于复杂时,例如使用了过多的特征或者层数较多的神经网络。
解决方法:
简化模型:选择更简单的模型或减少模型的复杂度(如减少神经网络的层数或参数)。
正则化:在损失函数中加入正则化项(如L1正则化、L2正则化),以约束模型的参数。
交叉验证:使用交叉验证来评估模型性能,从而选择合适的超参数和模型。
数据增强:增加数据的多样性,使用数据增强技术(如图像的旋转、缩放)来提高模型的泛化能力。
提前停止(Early Stopping):在训练过程中监控验证误差,并在验证误差开始增加时停止训练,以防止过拟合。
欠拟合:欠拟合指的是模型过于简单,无法捕捉到数据中的重要模式,导致模型在训练数据和测试数据上都表现不好。这通常发生在模型的复杂度不足时,例如使用了过于简单的模型或特征选择不充分。
解决方法:
增加模型复杂度:使用更复杂的模型,如增加神经网络的层数或参数,或者使用更复杂的特征工程。
特征选择与工程:增加更多有用的特征或进行特征工程以提高模型的表达能力。
减少正则化:如果正则化过强,可能会导致模型无法学习到数据中的重要模式。可以尝试减小正则化力度。
增加训练时间:有时模型训练时间不够,增加训练时间可能会帮助模型更好地学习数据。
数据集的多样性:确保训练数据能够覆盖数据的各种情况,提高数据集的质量和数量。
12.正则化:一种在机器学习和统计学中用于防止模型过拟合(overfitting)的技术
L1正则化:通过将模型的权重参数的绝对值的和添加到损失函数中来实现。
公式
L2正则化:通过将模型的权重参数的平方和添加到损失函数中来实现。
公式:
训练神经网络时,w和b不是一个唯一的值,(通过公式可以得出当w和b同时扩大相同倍数,得到的输入值还是相同的),当找到最小的损失函数时,得到的可能是不同组的w和b的值,然而权重过大即使不影响训练时的损失函数值,但是在面对新数据时,大参数会放大噪声和误差,对预测结果产生较大影响
那也就是说,为防止过拟合,正则化的过程就是人为限定一个w的可行域范围,将其加入到损失函数中,在w规定范围之内(偏置b对于曲线形状没有影响,对于过拟合情况影响也不大)求损失函数的最值,(即拉格朗日最值)那么从拉格朗日极值角度考虑,如下图所示
但是这样求出来的最值并不是最后结果,还需进行一步,这样在传统拉格朗日函数中是先确定C再计算出λ,实际上是根据梯度先确定 λ,认为确定了选择哪个点作为极值点,进而调整了C,如下图所示
超参数由C变为λ了,至此也就是通过控制权重到原点的距离控制了权重的大小
正则化又名权重衰减,实际上是一个在学习过程中自动对权重进行惩罚的过程,从权重衰减的角度考虑,推导过程如下图
可见在损失函数中加入了权重项之后,每一步的梯度下降法的学习,正常更新权重之余,还会根据学习率自动地不断惩罚去缩小权重
13.Dropout:是一种正则化技术,旨在防止深度学习模型的过拟合。它的基本原理是在训练过程中随机“丢弃”神经网络中的一些节点(即使其输出为0),这样可以减少网络对特定节点的依赖。具体来说,每次训练时,Dropout会以一定的概率(例如50%)将某些节点的输出设为0,这样模型就不会过分依赖于任何单一节点。最终,这种技术可以增强模型的泛化能力,使其在处理新数据时表现更好。
14.损失函数:是衡量模型预测与真实标签之间差距的指标,训练过程中模型会根据损失函数的值进行参数更新。
最小二乘法:
简单来说,就是由真实情况和预测情况的差值绝对值求和而来,为了方便求导求梯度,变换为平方和
容易出现过拟合,对异常值很敏感
极大似然估计:
将连乘转换成连加取对数
15.Batch Normalization(批量归一化):是一种用于加速训练并提高深度神经网络性能的技术。它通过对每一层的输入进行标准化来减少内部协变量偏移,过程如下图所示:
xi经过神经网络第一层的变换后,就得到了输出zi作为下一层的输入,在进行下一层的变换之前,首先计算zi的平均值和标准差,并通过减去均值除以标准差的方法,将各个样本归一化到均值为0,标准差为1的分布当中,为了稳定数值计算(分母不为0)加一个小常数,且不希望每层样本的分布完全相同,经过一个线性计算进行简单的分布变化,即增加两个可以学习的参数。
则每一层包含了三个运算,线性变换,非线性激活,分布归一化
样本较多时有效,对于RNN或者序列数据性能较差
16.学习率:优化算法中的一个关键超参数,它控制模型在每次迭代中更新权重的步长。合适的学习率加快收敛速度。
17.数据增强技术:常见的有以下几种:
翻转(Flip): 水平或垂直翻转图像,以增加数据的多样性。例如,水平翻转常用于图像分类任务。
裁剪(Crop): 从原图中随机裁剪出一个区域,通常用于增加训练样本的多样性和改善模型对物体位置变化的鲁棒性。
缩放(Scale): 改变图像的尺寸,以模拟不同的物体大小或距离。常用的技术有随机缩放和固定比例缩放。
颜色抖动(Color Jitter): 调整图像的亮度、对比度、饱和度和色调,增强模型对颜色变化的鲁棒性。
平移(Translation): 将图像在水平或垂直方向上移动,以模拟物体在不同位置的情况,帮助模型学习更具鲁棒性的特征。
18.MLP和RNN:
MLP(多层感知机)、CNN(卷积神经网络)和RNN(递归神经网络)都是神经网络的不同类型,用于不同类型的数据和任务。
MLP
结构: 由输入层、一个或多个隐藏层和输出层组成,每层神经元与前一层的每个神经元都有连接。
应用: 适用于结构化数据和分类、回归任务。
特点: 无特定的空间结构处理能力,通常用于较简单的任务。
RNN:
结构: 具有反馈连接,允许信息在时间步骤之间传递。常见的变种包括LSTM(长短期记忆网络)和GRU(门控循环单元)。
应用: 主要用于处理序列数据,如自然语言处理和时间序列预测。
特点: 具备处理时间序列数据和记忆先前信息的能力,适合动态输入。
MLP适用于静态结构数据,CNN适用于有空间结构的数据(如图像),RNN适用于有时间序列关系的数据(如文本和语音)