深度学习基础入门

2023-05-16

一.神经网络基础

线性函数:从输入到输出的映射

损失函数 = 数据损失 + 正则化惩罚项

我们总是希望模型不要太复杂,过拟合的模型是没用的

反向传播

  • 加法门单元:均等分配
  • MAX门单元:给最大的
  • 乘法门单元:互换
  • 允许信息从损失函数反向流动来计算梯度
  • 从训练数据来看,我们不知道隐藏的单元的效果
  • 当我们改变一个隐藏的激活时,可以得到误差传播的速度
  • 使用误差导数
  • 每个隐藏的单元可以影响许多输出单元
  • 单独的误差影响 → 合并这些影响
  • 可以有效地计算隐藏单元的误差导数(一旦我们有了隐藏激活的误差导数,就很容易得到权重的误差导数)
  • 反向传播就是不断地利用求导的链式法则进行展开的过程
  • 常用的深度学习框架中均不需要我们手动编码进行反向传播,只需要我们前向传播的tensor流动路径定义清楚,框架会自动帮我们计算梯度并反传更新权值
  • 我们只需要关心损失函数的定义,网络框架的搭建等更加宏观的内容
  • 需要保证在tensor流图中的每一个tensor均可以进行反向传播

mini-batch 随机梯度下降

  • 把训练集合切分成多个mini-batches
  • 在每个epoch中,随机排列mini-batches,并按顺序取一个小批来近似梯度
  • 一个epoch对应于训练集中所有模式的单一表达
  • 每次迭代估计的梯度更可靠
  • 从较小的batch size开始,随着训练的进行逐渐增加

随机学习

  • 梯度的估计是有噪声的,在每次迭代中权值可能不会沿着梯度精确地向下移动
  • 比批量学习更快,特别是当训练数据有冗余的时候
  • 噪声通常会产生更好的结果
  • 权值是波动的,它可能不会最终收敛到局部极小值

批学习

  • 收敛条件很好理解
  • 一些加速技术只适用于批量学习
  • 权值变化规律和收敛速度的理论分析相对简单

神经网络的强大之处在于:用更多的参数来拟合复杂的数据

二.前馈网络

信息流从输入开始,经过中间计算(即函数映射)生成类别

没有反馈连接(循环网络)

函数结构可以用有向无环图来描述(因此称为前馈网络)

f(1)是第一层,f(2)是第二层,以此类推

深度是函数组合链中最大的i

最后一层称为输出层 

只指定输出层的输出

中间层的输出不指定,因此命名为隐藏层

神经:f(i)的选择和层次化结构组织,受到神经科学的启发

设计决策

  • 需要选择优化器,损失函数和输出形式
  • 选择激活函数
  • 结构设计(网络层数等)

MLP构成通用分类器

  • MLP是实际输入的函数
  • MLP是一个在实数空间中寻找复杂“决策边界”的函数
  • MLPs可以拟合任何分类边界
  • 单层MLP可以对任何分类边界进行建模
  • MLP是通用分类器
  • 理论上平面内的任何分界面都可以类似的利用MLP进行拟合
  • 只用了一层隐藏单元,理论最优深度可以为一层
  • MLP是通用分类器
  • 更深的网络需要的神经元更少,深度和宽度的折衷 

MLP用来连续回归

  • 一个简单的3单元MLP可以在输入端产生一个“平方脉冲”
  • 具有多个单元的MLP可以对输入上的任意函数进行建模(任意精度,只需要使单个脉冲变窄)
  • 单层MLP可以对单个输入的任意函数建模

MLPs构造连续值函数

  • MLP可以组成任意维数的任意函数
  • 利用MLP簇构成高维空间的任意函数
  • MLP是一个通用逼近器
  • 到目前为止只解释了输出单元只进行求和操作的情况,即没有“激活”

更一般的

  • 说明不管我们要学习什么函数,一个规模足够的MLP可以表示这个函数
  • 但不能保证我们的训练算法能够学习到这个函数
  • 没有给出关于网络将有多大规模的说明(最坏情况下是指数大小)
  • 之前展示了一些有启发性的结果

如何学习权值?

  • 初步想法:随机扰动一个权重,看看它是否提高了性能,而后保存更改
  • 非常低效:对于一个权重的改变,需要在样本集上进行多次传递
  • 其他想法:同时扰动所有的权重,并将性能的提高与权重的变化联系起来
  • 非常难以实现
  • 所以:只扰动激活值(因为它们数量较少)但同样低效

三.卷积神经网络

应用:检测任务,分类和检索,超分辨率重构,医学任务,无人驾驶,人脸识别

模型结构图

整体架构

  • 输入层(input layer):数据
  • 卷积层(convolutional layer):提取特征,压缩提纯
  • 池化层(pooling layer):压缩特征,对卷积层输出的特征图进一步特征抽样,主要分为max pooling和average pooling两种
  • 输出层(全连接层 + softmax layer):每个节点输出一个概率,所有节点的概率加和等于1,这也是CNN选择softmax层进行分类的原因所在,可以将一张待分类的图片放进模型,softmax输出的概率中,最大概率所对应的标签便是这张待分类图的标签

卷积层涉及的参数

  • 滑动窗口步长
  • 卷积核尺寸
  • 边缘填充
  • 卷积核个数

超参数的设置:卷积核初始化

  • 卷积核的权值w和偏置b一开始是需要人工去初始化的,tensorflow或者keras在构建卷积层的时候自行初始化了,但想自己初始化也是可以的,可以根据高斯分布去设置,这样得到的初始化权值更加符合自然规律
  • padding:就是为了保持边界信息,倘若不填充,边界信息被卷积核扫描的次数远比不是中间信息的扫描次数,这样就降低了边界信息的参考价值了;有可能输入图片的尺寸参差不齐,通过padding来使所有的输入图像尺寸一致,避免训练过程中没必要的错误
  • stride:就是卷积核工作的时候,每次滑动的格子数,默认是1,但也可以自行设置,步幅越大,扫描次数越少,得到的特征也就越“粗糙”;设置方法业界也没有很好的判断方法,一切全靠自己去试

卷积层引入非线性因素,使其具备解决非线性问题的能力

  • sigmoid激活函数:饱和时梯度值非常小,故网络层数较深时易出现梯度消失
  • relu激活函数:缺点在于当反向传播过程中有一个非常大的梯度经过时,反向传播更新后可能导致权重分布中心小于零,导致该处的倒数始终为0,反向传播无法更新权重,即进入失活状态

卷积神经网络与全连接神经网络的区别

  • 总有至少1个卷积层,用以提取特征
  • 卷积层级之间的神经元是局部连接和权值共享,这样的设计大大减少了(w,b)的数量,加快了训练

卷积核是怎么工作的?

  • 我们可以把蓝色矩阵看作卷积层的上一层,绿色矩阵看作卷积层,在蓝色矩阵上蠕动的便是卷积核
  • 卷积核通过与他所覆盖蓝色矩阵的一部分进行卷积运算,然后把结果映射到绿色矩阵中
  • 卷积核在滑动过程中做的卷积运算就是卷积核w与其所覆盖的区域的数进行点积,最后将结果映射到卷积层

局部连接和权值共享

  • 全连接神经网络的局限性在于它的网络层与层之间是全连接的,这就导致了整个训练过程要更新多对(w,b)
  • 为此CNN特定引入了局部连接和权值共享两个特性来减少训练的计算量

四.循环神经网络

1.RNN

序列模型

  • 定义:通常在自然语言,音频,视频以及其它序列数据的模型
  • 类型:语音识别,情感分类,机器翻译
  • 在序列模型使用CNN等神经网络不好的原因:序列数据前后之间有很强的关联性,序列数据的输入输出长度不固定

循环神经网络将状态在自身网络中循环传递,可以接受时间序列结构输入

  • 循环神经网络是处理时序数据的,它将序列按照顺序分成了很多时间步,在每个时间步,它的输入依赖于前一个时间步的隐藏状态(记忆单元)和当前的输入信息,所以它通过隐藏状态来保存之前时间步的信息
  • 词汇被转换成了机器可读的向量(one-hot)然后RNN逐个处理向量序列
  • 先前隐藏状态充当神经网络记忆传递给当前时间步,将当前时间步输入与此连接后计算,经过激活函数之后,输出的是新的隐藏状态(网络记忆)

标准神经网络建模的弊端

  • 输入和输出数据在不同例子中可能有不同的长度
  • 一个像这样单纯的神经网络结构 ,它并不共享从文本的不同位置上学到的特征
  • 参数量巨大:输入网络的特征往往是one hot或者embedding向量,维度大;输入网络的特征是一段序列,当序列很长的时候,输入向量是巨大的
  • 没办法体现出时序上的前因后果

类型

基础网络结构

  • xt:表示每一时刻的输入
  • ot:表示每一时刻的输出
  • st:表示每一个隐层的输出
  • 中间的小圆圈代表隐藏层的一个单元
  • 所有单元的参数共享

时序反向传播算法

  • 目标:计算误差关于参数U,V和W以及两个偏置bx,by的梯度,然后使用梯度下降法学习出好的参数。由于这三组参数是共享的,我们需要将一个训练实例在每时刻的梯度相加 
  • 要求:每个时间的梯度都计算出来,然后加起来的梯度,为每次W更新的梯度值

RNN缺点:当序列太长时,容易导致梯度消失,参数更新只能捕捉到局部依赖关系,没法再捕捉序列之间的长期关联或者依赖关系

梯度消失和梯度爆炸

  • 这里的梯度消失现象不是说后面时刻参数更新的时候梯度为0,而是说后面时刻梯度更新的时候,前面更远时刻的序列对参数更新是起不到作用的,梯度被近距离梯度主导,所以才说RNN无法捕捉长期依赖
  • 梯度爆炸:一个解决方法是梯度修剪,就是设定一个阈值,当梯度向量超过某个阈值时,将它减少到阈值
  • 梯度消失:长期依赖是指后面的单词在很长时间序列后还依赖前面的单词,但由于梯度消失问题,导致前面的单词无法影响到后面的单词,解决方式是LSTM和GRU

由于RNN当中也存在链式求导规则,并且其中序列的长度位置,所以

  • 如果矩阵中有非常小的值,并且经过矩阵相乘N次之后,梯度值快速的以指数形式收缩,较远的时刻梯度变为0
  • 如果矩阵的值非常大,就会出现梯度爆炸

2.LSTM

最早应用于文本,是RNN的一个升级

思路

  • RNN:想把所有信息都记住,不管是有用的信息还是没用的信息
  • LSTM:设计一个记忆细胞,具备选择性记忆的功能,可以选择记忆重要信息,过滤掉噪声信息,减轻记忆负担

原理

  • 记忆细胞:在LSTM的每个时间步里,都有一个记忆细胞,这个东西给予了LSTM选择记忆功能,使得LSTM有能力自由选择每个时间步里面记忆的内容
  • 遗忘门:决定着我们还需不需要记住前面状态的信息,即当前时刻的记忆状态有多少来自于前面的记忆
  • 更新门:

3.GRU

相较于LSTM,GRU有相当效果,但是更易于计算

  • 更新门:能关注的机制。假设时间步 t0-t1 更新门一直近似0,那么在此之间的输入信息几乎没有流入当前时间的隐藏状态,实际上,这可以看作是较早时刻的隐藏状态一直通过时间保存并传递至当前时间步,这个设计可以应对循环神经网络中的梯度衰减问题;更新门控制从前一个隐藏状态将有多少信息转移到当前隐藏状态;更新门有助于捕捉时间序列里长期的依赖关系
  • 重置门: 能遗忘的机制。如果重置门中元素值接近0,那么意味着重置上一时间步隐藏状态元素为0,即丢弃上一时间步的隐藏状态,这有效地使隐藏状态可以丢弃将来以后发现不相关的任何信息,从而允许更紧凑的表示,故可以用来丢弃与预测无关的历史信息;如果重置门元素值接近1,那么表示保留上一时间步的隐藏状态,然后与当前输入连接,再通过含激活函数tanh的全连接层计算出候选隐藏状态;重置门有助于捕捉时间序列里短期的依赖关系

在计算当前时刻的隐藏状态时,它会首先计算一个候选隐藏状态,而在计算候选隐藏状态时,会考虑重置门的取值

每个隐藏单元都有单独的重置门和更新门

比较

  • RNN对于序列中的每个样本计算的权重是一样的,GRU的效果是可以有效选择序列中样本的权重,当前样本若不重要,GRU会选择忽略,反之GRU会抛弃 t 时刻前的信息,仅保留当前 t 时刻样本的信息
  • GRU输入输出的结构与普通的RNN相似,其中的内部思想与LSTM相似,与LSTM相比,GRU内部少了一个门控
  • 数据集小时倾向于使用GRU,但是在数据集很大的情况下,LSTM性能更好
  • LSTM门控网络结构过于复杂和冗余,GRU将遗忘门和输入门合并成更新门,同时将记忆单元和隐藏层合并成了重置门,进而让整个结构运算变得更加简化且性能得以增强

五.Transformer

  • 基于编码器-解码器架构来处理序列对 
  • 跟使用注意力的seq2seq不同,transformer是纯基于注意力
  • seq2seq的模型结构,用以序列预测序列的任务,例如机器翻译
  • 由编码器encoder和解码器decoder组成,每个编码器由1个位置编码层和N个编码层encoder layer组成,每个解码器由1个位置编码层与N个解码层decoder layer以及1个以softmax为激活函数的全连接层组成
  • 第t个编码层的输入是t-1个编码层的输出,解码层同理
  • 模型的输入:以机器翻译为例,例如是将中文翻译成英语的任务,训练时的数据应该是中文,英语句子对。编码器输入的是中文,解码器输入的是英语。在做预测时,编码器输入的是要翻译的中文,解码器输入的是模型上一时刻的输出
  • 模型的输出:编码器的输出将作为解码器中某个模块的输入,解码器的输出即整个模型的输出是softmax归一化后序列类别分布,通常维度是[batch size,序列长度,类别数量]

编码层

多头注意力

  • 对同一key,value,query,希望抽取不同的信息,例如短距离关系和长距离关系
  • 多头注意力使用h个独立的注意力池化,合并各个头(head)输出得到最终输出
  • 解码器对序列中一个元素输出时,不应该考虑该元素之后的元素,可以通过掩码来实现

残差

层归一化

  • 批量归一化对每个特征/通道里元素进行归一化,不适合序列长度会变的NLP应用
  • 层归一化对每个样本里的元素进行归一化

前馈神经网络

  • 就是MLP结构,在这个MLP中,输入向量和输出向量是一样的,中间隐藏层的维度可随意调整

解码器比编码器多了

  • 遮盖的多头注意力层
  • 交互注意力层

训练时解码器的输入是要预测的序列

遮盖的多头注意力层:masked multi-head attention

遮盖的意义是为了将未来信息掩盖住,使得训练出来的模型更准确

交互注意力层:multi-head attention

解码器中的交互注意力层与编码器中的注意力层唯一区别在于,前者计算query向量的输入是解码器的输出,解码器的注意力层实际上被称为自注意力层

六.BERT

BERT分为预训练和微调

预训练简单来说就是通过两个联合训练任务得到BERT模型,而微调就是在预训练得到BERT模型基础上进行各种各样的NLP任务

预训练:MLM + NSP

输入经BERT Encoder层编码后,进行MLM和NSP任务,产生一个联合训练的损失函数,从而迭代更新整个模型中的参数

BERT Encoder

  • 采取默认12层的transformer encoder layer对输入进行编码 

MLM(掩码语言模型:掩盖句子中若干个词通过周围词去预测被遮盖的词)

  • AR:autoregressive,自回归模型,只能考虑单侧的信息,典型的就是GPT
  • AE:autoencoding,自编码模型,从损坏的输入数据中预测重建原始数据,可以使用上下文的信息,BERT就是说用的AE
  • 输入:BERT Encoder层的输出,需要预测的词元位置(batch size,词元位置数量的一个张量)
  • 中间:一个MLP的结构,默认的形式为dense(Relu)→ layer normalization → 全连接层(softmax(token数量))
  • 输出:序列类别分布张量,形状为batch size,需要预测的词元位置数量,总token数量

NSP(下一个句子预测:判断句子B在文章是否属于句子A的下一个句子)

  • 从训练语料库中取出两个连续的段落作为正样本
  • 从不同的文档中随机创建一对段落作为负样本
  • 缺点:主题预测和连贯性预测合并为一个单项任务
  • 输入:BERT Encoder层输出<CLS>位置的张量(也就是序列中的首位)形状为[Batch Size,Emd dim]
  • 中间:一个MLP的结构,默认是一个输出维度为2的激活函数为softmax的全连接层
  • 输出:类别分布张量,形状为[batch size,2]
  • 采样:50%的概率将第二个句子随机替换为段落中的任意一个句子

训练过程

FINE TUNE

BERT ENCODER

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习基础入门 的相关文章

  • 执行 install_geographiclib_datasets.sh 错误

    https blog csdn net weixin 41865104 article details 119418901 在 usr share 新建GeographicLib文件夹 在 usr share GeographicLib 文
  • 通过mavros的桥接连接qgc

    fcu url指定的是飞控的连接方式 xff0c 设置飞控为正确的端口即可 gcs url指定的是QGC所在主机的IP xff0c 这个换为运行QGC主机的IP地址即可 如果不知道主机的IP地址可以用udp发布方式 gcs url span
  • ros在同一工作空间下调用其它功能包的头文件

    A功能包需要调用B功能包的头文件 在B功能包CMakeLists txt中修改 去掉catkin package中的include注释 xff08 让别人能识别到自己的头文件 xff09 A功能包在find package时能识别到B功能包
  • 千寻位置NTRIP网络基准站

    端口选择NTRIP连接方式 xff1b 点击 Connect 输入Enter URL Enter URL格式 xff1a http NTRIP账号 xff1a 密码 64 rtk ntrip qxwz com 通道号 RTCM32 GGB
  • 关于egoplanner fastplanner内PID的控制

    Kp0 Kp1 Kp2 Kv0 Kv1 Kv2
  • 如何描述数据分布的特征?

    数据分布的特征可以从集中趋势 xff0c 离中趋势 xff0c 偏态和峰态三个方面进行描述 一 集中趋势 xff08 位置 xff09 是一组平均指标 xff0c 它反映了总体的一般水平或分布 1 平均数 分为 xff1a 简单平均数 xf
  • 对于egoplanner的障碍物分析

    根源 根据障碍物检查并分段初始轨迹 bool BsplineOptimizer span class token operator span span class token function check collision and reb
  • t265 通过mavros传递定位信息px4

    https github com thien94 vision to mavros 通过话题 mavros vision pose pose 向PX4发送位置数据 t265两种安装方式 xff1a USB口朝右镜头向前和向下安装 如需其它方
  • T265 VS D435i

  • px4_sitl_defult error

    span class token operator span Firmware span class token operator span Tools span class token operator span sitl gazebo
  • Intel RealSense D435i与IMU标定用于vins-fusion

    1 标定imu工具 mkdir span class token operator span p imu catkin ws span class token operator span src cd imu catkin ws span
  • PCL点云滤波处理D435i深度图用于octomap

    D435i直接输出的深度点云噪点太多经过滤波处理后再使用 直通滤波 保留或删除某一轴线特定范围内的点 xff0c 改变视野范围 pcl span class token operator span PassThrough span clas
  • ros编译过程中缺少各种依赖库的集合操作

    1 OpenGL All the OpenGL functionality tests failed You might need to modify the include and library search paths by edit
  • ROS发布自定义数组和数据

    主要使用std msgs数据结构 rosmsg show std msgs 自定义话题消息 1 新建msg文件 2 修改CMakeLists txt文件 3 修改package xml文件 4 生成对应头文件 5 编写发布者程序 6 编写接
  • 关于几个坐标系的关系NED ENU ROS

    几个坐标系转来转去 xff0c 时间一长又搞混了 px4使用的坐标系为NED xff08 北东地 xff09 坐标系或者FRD xff08 前右下 xff09 坐标系 然而mavros xff08 melodic版本 xff09 中常使用的
  • 使用Optitrack给px4提供定位

    Motive设置 打开View gt Data Streaming xff0c 确认OptiTrack Streaming Engine和VRPN Streaming Engine勾选Broadcast Frame Data 创建刚体 xf
  • 相关分析与回归分析

    相关与回归分析就是了解变量之间相关关系的统计方法 一 相关分析 具有相关关系的变量之间 xff0c 如果不区分原因和结果 xff0c 我们称之为相关分析 相关分析是看两个因素之间的相关性 xff0c 不需要确定哪个是自变量 xff0c 哪个
  • D435i运行vins-fusion性能提升

    1 mavros imu data mavros imu data raw选用区别 2 vins estimator odometry 话题转发给 mavros vision pose pose 3 关闭D435i的自动曝光 xff0c 设
  • 关于cartographer建立正确关系树的理解

    正确的TF关系map odom base link laser base link是固定在机器人本体上的坐标系 xff0c 通常选择飞控 其中map odom 的链接是由cartographer中lua文件配置完成的 map frame s

随机推荐

  • noetic ---lunar_devel melodic--indigo_devel

    对应关系
  • tf监听两个坐标系关系

    tf监听器 tf span class token operator span TransformListener listener span class token punctuation span span class token co
  • IDEA 2019 Tomcat日志中文乱码问题解决

    操作系统版本 Windows 10 1809 IDEA版本 2019 1 1 Tomcat版本 8 5 38 解决方法 修改conf logging properties配置文件 将其中的UTF 8改为GBK 1catalina org a
  • docker无法从docker hub下载镜像

    root 64 localhost docker docker info Containers 1 Running 1 Paused 0 Stopped 0 Images 2 Server Version 17 09 0 ce Storag
  • 下载yum源报错,无法解析mirrors.aliyun.com

    最近使用centOS安装Oracle xff0c 下载文件提示正在解析主机 mirrors aliyun com mirrors aliyun com 失败 xff1a 未知的名称或服务 解决这个问题简单 xff0c 需要在网络访问中改配置
  • 团队效率工具: 代码格式化之Clang-format

    介绍 平时团队进行合作的时候需要注意代码的格式 xff0c 虽然很难统一每个人的编码风格 xff0c 但是通过工具能够很好的管理代码格式 这里介绍下clang format xff0c 它是基于clang的一个命令行工具 xff0c 能够自
  • 关于头文件保护和变量重复定义的一点理解

    之前一直都有一个困惑 xff1a 既然头文件一般都有避免重复编译的预编译条件保护 xff0c 那为什么在头文件中定义全局变量就会出现重复定义的错误呢 xff1f 这个困惑持续了很久 xff0c 一直到最近才算大概理解 现记录于此 xff0c
  • YOLOv4剪枝【附代码】

    本项目只是负责把框架搭建起来 xff0c 没有进行重训练的微调或者去研究应该剪哪里比较好 xff0c 需要自己去研究 YOLOv4代码参考 xff1a Pytorch 搭建自己的YoloV4目标检测平台 xff08 Bubbliiiing
  • 爬虫 | Selenium库

    一 基础 1 定义 自动化测试工具 xff0c 支持多种浏览器 爬虫中主要用来解决JavaScript渲染的问题便捷地获取网站中动态加载的数据便捷实现模拟登录 2 使用流程 环境安装 xff1a pip install selenium下载
  • java李白打酒蓝桥杯

    题目 xff1a 李白打酒 话说大诗人李白 xff0c 一生好饮 幸好他从不开车 gt gt 一天 xff0c 他提着酒壶 xff0c 从家里出来 xff0c 酒壶中有酒2斗 他边走边唱 xff1a gt gt 无事街上走 xff0c 提壶
  • java求abc的全排列

    给定一个 没有重复 数字的序列 xff0c 返回其所有可能的全排列 示例 输入 abc 输出 xff1a abc acb bac bca cab cba 这里可以使用深度优先遍历 xff0c 遍历完a遍历b xff0c 最后遍历c java
  • java最大公共子序列

    题目 xff1a 求两个字符串的最大公共子序列 这里子序列和子串需要区分一下 xff0c 子序列不需要字符串里元素紧挨着 xff0c 但子串要求前后元素紧挨 xff0c 这里求子序列可以用递归法来做 代码如下 xff1a span clas
  • java矩阵乘法

    试题 基础练习 矩阵乘法 资源限制 时间限制 xff1a 1 0s 内存限制 xff1a 512 0MB 问题描述 给定一个N阶矩阵A xff0c 输出A的M次幂 xff08 M是非负整数 xff09 例如 xff1a 矩阵A为 1 2 3
  • java实现蓝桥杯单词分析

    单词分析 686 题目描述 小蓝正在学习一门神奇的语言 xff0c 这门语言中的单词都是由小写英文字母组 成 xff0c 有些单词很长 xff0c 远远超过正常英文单词的长度 小蓝学了很长时间也记不住一些单词 xff0c 他准备不再完全记忆
  • Java实现N皇后问题

    八皇后问题 xff08 英文 xff1a Eight queens xff09 xff0c 是由国际西洋棋棋手马克斯 贝瑟尔于1848年提出的问题 xff0c 是回溯算法的典型案例 问题表述为 xff1a 在8 8格的国际象棋上摆放8个皇后
  • C++求解整数划分问题(递归)

    整数划分问题是算法中的一个经典命题之一 xff0c 有关这个问题的讲述在讲解到递归时基本都将涉及 所谓整数划分 xff0c 是指把一个正整数n写成如下形式 xff1a n 61 m1 43 m2 43 43 mi xff08 其中mi为正整
  • java两个字符串的删除操作(动态规划)

    两个字符串的删除操作 给定两个单词 word1 和 word2 xff0c 找到使得 word1 和 word2 相同所需的最小步数 xff0c 每步可以删除任意一个字符串中的一个字符 xff08 力扣 xff09 示例 输入 sea ea
  • C/C++无向图的遍历(bfs和dfs)

    描述 简单介绍一下图 xff0c 图就是由一些小圆点 xff08 称为顶点 xff09 和连接这些小圆点的直线 xff08 称为边 xff09 组成的 例如下图的由五个顶点 xff08 编号1 2 3 4 5 xff09 和五条边 xff0
  • 树状数组c++/java版

    span class token keyword class span span class token class name Bit span span class token punctuation span span class to
  • 深度学习基础入门

    一 神经网络基础 线性函数 xff1a 从输入到输出的映射 损失函数 61 数据损失 43 正则化惩罚项 我们总是希望模型不要太复杂 xff0c 过拟合的模型是没用的 反向传播 加法门单元 xff1a 均等分配MAX门单元 xff1a 给最