官方重大项目建设库网站,wordpress 注册 用户名,布恩网站删除,商城网站开发培训学校此为24年秋研究生课程复习笔记 导论
神经网络的研究方法分为
连接主义#xff0c;生理学派#xff0c;模拟神经计算。高度的并行、分布性#xff0c;很强的鲁棒和容错性。便于实现人脑的感知功能(音频图像的识别和处理)。符号主义#xff0c;心理学派#xff0c;基于符号… 此为24年秋研究生课程复习笔记 导论
神经网络的研究方法分为
连接主义生理学派模拟神经计算。高度的并行、分布性很强的鲁棒和容错性。便于实现人脑的感知功能(音频图像的识别和处理)。符号主义心理学派基于符号推演。便于实现人脑的高级认知功能(逻辑思维)。行为主义控制论学派控制进化。强调智能系统与环境的交互进行自学习、自适应。
机器学习导论
有监督学习 回归问题预测值。有线性回归等模型。分类问题预测类别。有逻辑回归(基于线性模型和sigmod做二分类)、SVM(找到最大超平面改变维度)、朴素贝叶斯 无监督学习 kmeans(聚类)将相似的点归为一类总共划分k个类。相似度度量有欧式距离、汉明距离、余弦距离等。PCA(降维)
生物神经网络
树突传入信号细胞体进行处理轴突输出信号。 当前神经元的轴突与下一个神经元的树突间通过突触连接突触分为兴奋和抑制型。 细胞体接收信号如果为抑制型则膜电位降低兴奋反之。当神经元的膜电位到达阈值会放电并将此信号继续传播。实现信号的传递并最终导致人的认知与活动。
大脑的学习过程就是神经元之间连接强度随外部信息做自适应变化。学习结果由神经元的状态表现出来。
ANN特点
对应对生物神经网络
输入连接-树突输出连接-轴突权重-突触求和与激活函数-细胞体
空间上知识分布存储时间上并行处理容错性高(可以处理不完整、有噪音的信息泛化)自学习、自组织、自适应解为满意解而非精确解(不一定全局最优但是全局较好)
在结构建模分为
前馈型。神经元的输出只会作为下一层神经元的输入影响下面的层。例如CNN。反馈型。神经元的输出还会作为当前层或之前层神经元的输入。这使得网络能有记忆功能能考虑过去的信息适用于处理时序数据。例如RNN。(反馈型与反向传播无关)竞争学习网络。是一种无监督学习方法神经元会相互竞争并根据胜败调整权重。适用于聚类分析等领域。
ANN领域面临的挑战
需要大数据集。弱标签、无标签数据远多于有标签数据。超参数调优。权值参数可以自学习但超参数需要根据经验和实验来设置。现在有个方向Neural Architecture SearchNAS神经网络搜索通过搜索求出高性能的网络结构。过拟合。 欠拟合是指模型在训练集、验证集和测试集上均表现不佳的情况模型复杂度过低、特征量过少。这个不算挑战只能算训练不到位。过拟合是指模型在训练集上表现很好到了验证和测试阶段就很差即模型的泛化能力很差。样本数量过少、样本质量不佳无法代表整体样本分布、模型复杂度过高等。 不透明。神经网络模型本质是黑盒算法可解释性和可靠性较差。不灵活。一个模型的训练和设计针对了某个特定场景那就只能用于这个特定场景通用性差。现在有迁移学习即根据已有知识学习新知识找到新旧知识的相似性。当然最热门的还是大模型AGI(Artificial General Intelligence通用人工智能)。
感知机
感知机基于M-P模型。有加权、求和、激励三个部分。 y f ( ∑ i 1 n w i x i θ ) y f\left( \sum_{i1}^{n} w_i x_i \theta \right) yf(i1∑nwixiθ) 为了拟合非线性函数(比如解决异或问题)需要多层次、多神经元。
训练中会基于当前模型参数产生实际输出与样本输出存在差距即损失值loss这个计算函数就是损失函数。 我们给训练定了个最终目标即最小化一个与模型相关的函数这个函数就是目标函数。目标函数基于损失函数还引入了正则项等参数以及求均值等方法。我们的梯度下降等进行参数更新的操作就是为了最小化目标函数的输出。
ps: 感觉这块有人特地区分有人随便弄混大概了解一下就行实际交流中懂的人自然懂。
Rosenblatt感知机是一个多层感知机采用{-1,1}的阈值函数。课件中的例题是损失值为 ( w x b ) ∗ y − y (wxb)*y-y (wxb)∗y−y如果不为0就要调整调整方式就是 w w 学习率 ∗ y ∗ x , b b 学习率 ∗ y ww学习率*y*x,bb学习率*y ww学习率∗y∗x,bb学习率∗y。直到所有样本输出都与实际输出相等。 激活函数
激活函数执行对神经元输入值的变换。由于若干线性单元叠加还是线性单元所以在多层网络结构中要使用非线性映射来拟合复杂的目标。 Sigmoid
非线性映射。当 x 的绝对值很大时接近阈值函数(只输出0或1)可以做二分类当x接近0时梯度接近1即线性映射在训练初始阶段加速收敛。同时单调连续、无限次可微有利于使用梯度下降。但是x绝对值很大时梯度接近为0(即存在饱和区这个范围内输出几乎不变)。在反向传播中实际上是对于激活函数求导那么在链式乘法中乘小于1的数梯度会指数级下降即会导致梯度消失。此外sigmoid的输出范围为(0,1)始终大于0(非0对称)在梯度下降中权重都会朝着同一个大方向改变不能够有正有反这影响收敛速度与性能。 Tanh
比起sigmoid实现了0对称 ( − 1 , 1 ) (-1,1) (−1,1)同时在x较小时斜率更大、收敛速度更快。但还是存在梯度消失的问题。 Relu
没有指数运算计算简单效率高收敛速度快。但非零对称。 对于左图梯度为0会导致权值无法更新。 而右图的leaky relu对于x小于0的部分做了调整不会导致神经元失效。且函数的两个部分都是线性的无饱和区不会出现梯度消失。 训练优化
梯度下降
训练目标是最小化目标函数那么就要求目标函数对每个权值参数的偏导因为梯度方向是下降最快的方向。 对于多元函数使用偏导求各个权重在对应方向的梯度。 梯度只是个方向还有下降的步长称为学习率。
batch_size
batch_size是每次梯度下降时使用的样本数。
1随机梯度下降SGDN批量梯度下降BGD1sizeN, 小批量梯度下降SGD size小时学习快速内存消耗少方便在线模型的更新。下降方向的波动大有利于跳出鞍点但因为少量样本的下降方向与正确方向存在误差也减慢了收敛速度。 size大也不一定学习慢因为可以利用并行计算加速矩阵运算。
SGD是一种折中方案常用。
梯度下降优化器
动量法。引入动量和动量学习率两个参数。动量其实就是历史梯度的累积。基于先前的动量和当前梯度更新当前动量基于当前动量更新权值。当梯度平缓时加速收敛当陷入鞍点时有概率被动量扯着越过鞍点。由于结合了历史动量即使梯度方向变化大也会变平缓、更新更平滑减少震荡。 Nesterov方法是对传统动量法的改进。唯一的变动就是求梯度的部分。动量法用的是当前梯度而Nesterov是将当前位置按动量走一下然后再求梯度。大概思想是先用动量探索一下如果当前梯度大就可以走更多梯度小就少走一点。收敛速度比动量法快。 AdaGrad。Ada就是自适应将学习率动态调整。学习率部分有一个变量是历史梯度的平方和。这导致起始时整个学习率较大随着梯度下降的执行学习率变小。加速收敛。缺点是当历史梯度平方和很大很大时学习率趋近于0梯度消失。 RMSProp。加了一个 β \beta β衰减系数用于对历史历史梯度做加权平均可以减少久远梯度信息的影响力。 Adam。RMSPropMomentum。两者都用了衰减系数。
反向传播
梯度下降是求目标函数对某个参数的偏导。目标函数在网络的输出层对于深层网络求偏导需要一个很长度的链式求导。
通过下图可以看到前向求导和反向求导的区别。虽然这个图因为对称所以看不出来其实反向求导的计算量会小很多。所以前向传播最终得到loss再反向根据loss求偏导再下降梯度。 CNN
卷积层、下采样层(池化层)、全连接层。
神经网络的前面的层捕获各个位置的特征越往后特征图越大即捕获更精细的特征
卷积层通过卷积在不同位置共享一个卷积核上的参数。局部感知权重共享。 池化层通过减少特征图大小减少计算消耗同时能有效处理过拟合问题。 全连接层将三维的特征图做flatten做几次FC。将卷积层得到的局部特征整合成全局特征。 模型的最后一层使用 Softmax 函数将原始分数转换为概率分布然后使用交叉熵损失函数计算损失。
特征图大小 featuremap_size ⌊ image_size − kernel_size 2 × padsize stride ⌋ 1 \text{featuremap\_size} \left\lfloor \frac{\text{image\_size} - \text{kernel\_size} 2 \times \text{padsize}}{\text{stride}} \right\rfloor 1 featuremap_size⌊strideimage_size−kernel_size2×padsize⌋1
AlexNet
使用Relu提出了Dropout提高性能和泛化性使用最大池化使用了LRN局部响应归一层。抑制大值增强小值提高模型的泛化能力和对抗过拟合能力。使用了ImageNet数据集
googlenet 使用不同大小的卷积核捕获不同尺寸的输入输出。进行多尺寸特征提取和特征融合。 使用 1 ∗ 1 1*1 1∗1的卷积核减少通道数减少计算量 辅助分类器。提供额外的梯度信号起到了正则化效果。
ResNet 残差将前面层的一些参数通过捷径直接传到较后面的层与后面的输出相加再继续往下传播避免了梯度消失问题并将粗糙和精细的特征融合。通过适当的卷积核大小来控制特征图的shape以便不同层的输出特征图可以相加。批归一化(batch normalization)对图像标准化处理加速收敛。
Densnet
在ResNet的基础上将残差连接增多。 RNN
激活函数为tahn域值为 [ − 1 , 1 ] [-1,1] [−1,1] 需要实现n to m的转换
BPTT 在时间轴上链式求偏导变成了一个和前面时间的偏导的连乘 LSTM 遗忘门计算短时记忆信息与当前信息的关系用sigmoid映射到 [ 0 , 1 ] [0,1] [0,1]得到抛弃短时记忆的程度。 输入门计算计算 i t i_t it查看短时记忆和当前输入的关系用sigmoid映射到 [ 0 , 1 ] [0,1] [0,1]判断添加输入到长时记忆中。计算 C ^ t \hat C_t C^t计算一个此次要被添加的长时记忆值。tanh只是一个激活函数和sigmoid作用不一样。 更新长时记忆。求出短时记忆被遗忘后的剩余以及此次要被添加的输入相加得到更新后的当前时刻的长时记忆。 更新短时记忆。根据当前时刻的输入值更新下一时刻的短时记忆。
sigmoid用来表示门的开闭tanh调节数据范围并通过正负值起到增减的作用。
LSTM也是用BPTT训练但是推导之后发现连乘可以变成加法形式缓解梯度爆炸/消失的情况。
GRU
只有重置门和更新门。 r t r_t rt计算多少历史记忆进入候选状态。 h ^ t \hat h_t h^t是候选状态得到一个临时的输入。然后更新 h t h_t ht历史信息要添加的越多当下添加的就越少。 简化了门数量和参数量效率高适合实时计算。但没有专门维护长时记忆只适合简单序列。 运算过程
seq2seq
encoder-decoder框架分了两个结构两边都可以套RNN的各种模型但是效果更好因为直接使用单模型只能根据上文理解而先encode可以理解完整个上下文然后再decode就能结合到整个上下文的信息对语义的理解更好。
attention
Q(与其他单词的匹配度)、K(其他单词与本单词的匹配度)、V(本单词的编码向量) 首先根据输入乘权重得到每个单词的qkv a i w ∗ x i , q i a i ∗ W Q , k i a i ∗ W K , v i a i ∗ W V a_iw*x_i,\ q_ia_i*W^Q,\ k_ia_i*W^K,\ v_ia_i*W^V aiw∗xi, qiai∗WQ, kiai∗WK, viai∗WV 然后a对b的匹配度点乘b对a的匹配度(余弦相似度)然后除以一个东西得到注意力权重 除以的这个是一个单词的维度是为了将分布重新变为 ( 0 , 1 ) (0,1) (0,1)的分布softmax也是归一。 α i , j s o f t m a x ( q i ∗ k j T r a n s p o s e d q , k ) \alpha_{i,j}softmax(\frac{q_i*k^{Transpose}_j}{\sqrt{d_{q,k}}}) αi,jsoftmax(dq,k qi∗kjTranspose) 然后乘注意力权重就是其他单词到本单词的注意力值 a t t e n t i o n i ∑ a i , j ∗ v i attention_i\sum a_{i,j}*v_i attentioni∑ai,j∗vi 上面是自注意力整体使用到了QKV矩阵。类比卷积核每个卷积核可以识别不同的特征我们这里也可以将QKV分成多份即不是QKV而是 Q i 、 K i 、 V i Q_i、K_i、V_i Qi、Ki、Vi让每组QKV识别一种特征这就是多头注意力。计算后将结果拼接、降维得到注意力值。 Transformer
• 完全依赖注意力机制来刻画各个单词间的全局依赖关系 • 利用类似残差结构有效的防止梯度消失的问题 • 在自然语言处理中单词的输入是并行的大大加快了计算效率
Encoder 生成词嵌入-位置编码-多头注意力-归一注意还有个分支是残差将原始信息直接与细节信息融合。然后加个前馈网络。
归一化服从正态分布加快收敛。
位置编码是因为在RNN和LSTM中数据被依次处理有历史记忆和当前输入的这种前后关系。而注意力机制虽然用的也是时序数据但求QKV的乘法并没有体现前后顺序只是排列组合同一个单词放在开头和末尾的得分是一样的。所以这里需要将位置信息编码进输入数据中。
Decoder 有个mask层因为对于token是并行处理的比如I love you是decoder的输入当encoder处理完我爱你之后在处理I时通过掩码把love you盖住(改为很大的负数,softmax为0)不让他直接知道当前位置的未来答案让解码只依赖当前位置之前的信息。 除了这个将未来信息盖住还有个对齐操作因为每个批次输入数据长度不一致需要后补很大的负数。encoder其实也做了这个。
而第二个multiattention的KV来自encoderQ来自mask。
bert
将Encoder堆至少12层。
VIT
vision transformer将transformer用于cv。transformer以token作为处理单位vit将图像分割为块(patch)并将patch作为处理单位。同时也需要对图像进行位置编码。
考题
三种学习方法有导师学习、无导师学习和增强学习有什么不同
有导师学习Supervised Learning 定义有导师学习是指在训练过程中提供带有标签的数据给算法让算法通过学习这些带有正确答案的数据来建立一个模型从而对新的未知数据进行预测或分类。特点需要大量的标记数据学习过程相对直接容易评估模型性能。应用广泛应用于图像识别、语音识别、情感分析等任务。总结依赖于已知结果的示例来指导学习过程适合解决预测和分类问题。 无导师学习Unsupervised Learning 定义无导师学习是在没有标签的情况下进行的算法试图从未标记的数据中发现内在的结构或规律。特点不需要标签数据因此可以处理大量未标注的数据目标通常是为了找到数据的分布模式或降维。应用常用于聚类、关联规则挖掘、异常检测等任务。总结尝试在没有明确指导的情况下发现数据的内在结构适用于探索性数据分析。 增强学习Reinforcement Learning 定义增强学习是一种通过试错来学习的方法它关注的是如何采取行动以最大化某种累积奖励。在这个过程中智能体Agent通过与环境互动来学习最佳策略。特点不需要预先标记的数据集学习过程是一个长期的决策过程强调的是行动与环境之间的交互。应用适用于游戏、机器人导航、资源管理等需要做出一系列决策的问题。总结通过与环境的交互来优化行为策略适合处理需要连续决策的问题。
计算题
最终期末考的题生物神经元的结构画图和各部分功能、三种梯度下降不同批度的特点以及批量梯度下降的优缺点、动量法和学习率自适应法的特点及例子、PPT上roseblatt、根据一个卷积层核和池化层核求输出的特征图尺寸、一个前馈网络的梯度下降和反向传播中的参数、RNN前向计算、LSTM和GRU的介绍和比较、ResNet和DenseNet的比较、transformer的Encoder和Decoder的结构以及各部分功能。
优化器种类
SGD、动量法、Nestrov、AdaGrad、Adam
反向传播例题
目标函数一般用的是 ( y ^ − y ) 2 2 \frac{(\hat{y}-y)^2}{2} 2(y^−y)2 注意前向计算过程有zwxb、yf(z)最后还有一个EE( y ^ \hat y y^,y)这些要链式。
对sigmoid激活函数求偏导得到 ∂ f ( x ) x f ( x ) ∗ ( 1 − f ( x ) ) \frac{\partial f(x)}{x}f(x)*(1-f(x)) x∂f(x)f(x)∗(1−f(x)) 对目标函数求偏导很容易就是 y ^ − y \hat{y}-y y^−y。wyb对w求偏导就是y。
卷积核计算 1 ∗ 28 ∗ 28 1*28*28 1∗28∗28的输入图大小 经过 25 ∗ 3 ∗ 3 25*3*3 25∗3∗3的卷积核 padding为0stride为1 28 − 3 2 ∗ 0 1 1 26 \frac{28-32*0}{1}126 128−32∗0126 同时通道数为卷积核数25即得到特征图 25 ∗ 26 ∗ 26 25*26*26 25∗26∗26。此时每个卷积核用到的参数是 3 ∗ 3 3*3 3∗3个。 然后经过 2 ∗ 2 2*2 2∗2的max_polling假设一次走那么大的尺寸即 26 2 13 \frac{26}{2}13 22613 因为池化层没有卷积核所以通道数不变。 25 ∗ 13 ∗ 13 25*13*13 25∗13∗13 再来个 50 ∗ 3 ∗ 3 50*3*3 50∗3∗3的卷积核即 13 − 3 1 1 11 \frac{13-3}{1}111 113−3111 注意输入图的通道数不是1所以是一个卷积核与每个图通道的对应位置做卷积然后对生成的25张图做求和得到一个图然后50个卷积核就得到50个通道数即新特征图的通道数等于卷积核个数。 50 ∗ 11 ∗ 11 50*11*11 50∗11∗11。此时每个卷积核用到的参数是 25 ∗ 3 ∗ 3 25*3*3 25∗3∗3个。
再经过 2 ∗ 2 2*2 2∗2的max_polling即 11 2 5 \frac{11}{2}5 2115 得到 50 ∗ 5 ∗ 5 50*5*5 50∗5∗5
AlexNet卷积核计算
Input227x227x3 First layer (CONV1): 96 11x11 filterstride 4 227 − 11 4 1 55 , 96 ∗ 55 ∗ 55 使用参数为 3 ∗ 11 ∗ 11 ∗ 96 \frac{227-11}{4}155,96*55*55使用参数为3*11*11*96 4227−11155,96∗55∗55使用参数为3∗11∗11∗96 Second layer (POOL1): 3x3 poolingstride 2 55 − 3 2 1 27 , 96 ∗ 27 ∗ 27 , 使用参数为 0 \frac{55-3}{2}127,96*27*27,使用参数为0 255−3127,96∗27∗27,使用参数为0
RNN计算
只考虑前向