网站建设定制公司,wordpress制作大型网站,工业设计师,国内常见的博客网站大概看了一点动手学深度学习#xff0c;简单整理一些概念。
一些问题
测试结果
Precision-Recall曲线定性分析模型精度average precision(AP) 平均精度 Precision #xff1a;检索出来的条目中有多大比例是我们需要的。
一些概念
损失函数#xff08;loss function简单整理一些概念。
一些问题
测试结果
Precision-Recall曲线定性分析模型精度average precision(AP) 平均精度 Precision 检索出来的条目中有多大比例是我们需要的。
一些概念
损失函数loss function或cost function一个可优化的目标函数量化目标的实际值与预测值之间的差距。张量tensorn维数组。维度向量的维度指向量的元素数量张量的维度指其具有的轴向量数。梯度gradient指向变化最大的方向。梯度下降法在每个步骤中检查每个参数看看如果仅对该参数进行少量变动训练集损失会朝哪个方向移动。 然后在可以减少损失的方向上优化参数。训练误差和泛化误差generalization error前者是在训练集上的误差后者是测试的误差。学习率太小导致更新慢需要更多迭代太大会难以收敛。
监督学习
在给定输入特征的情况下预测标签可以是已知输入的也可以是作为预测结果输出的。
回归regression问题标签是任意数值。预测所依据的自变量称为特征。分类classification问题标签是类别。 层次分类hierarchical classification宁愿错误地分入一个相关的类别也不愿错误地分入一个遥远的类别。 序列学习输入是连续的例如通过前一帧的图像对后一帧作出更好的预测。序列学习需要摄取输入序列或预测输出序列或两者兼而有之。
无监督学习
没有标签数据中不含目标的机器学习。
强化学习
智能体agent在一系列的时间步骤上与环境交互。 在每个特定时间点智能体从环境接收一些观察observation并且必须选择一个动作action然后通过某种机制有时称为执行器将其传输回环境最后智能体从环境中获得奖励reward。
问gpt下面这段话中端到端的具体含义 毋庸置疑深度学习方法中最显著的共同点是使用端到端训练。 也就是说与其基于单独调整的组件组装系统不如构建系统然后联合调整它们的性能。 例如在计算机视觉中科学家们习惯于将特征工程的过程与建立机器学习模型的过程分开。 Canny边缘检测器 (Canny, 1987) 和SIFT特征提取器 (Lowe, 2004) 作为将图像映射到特征向量的算法在过去的十年里占据了至高无上的地位。 在过去的日子里将机器学习应用于这些问题的关键部分是提出人工设计的特征工程方法将数据转换为某种适合于浅层模型的形式。 然而与一个算法自动执行的数百万个选择相比人类通过特征工程所能完成的事情很少。 当深度学习开始时这些特征抽取器被自动调整的滤波器所取代产生了更高的精确度。
pytorch一些数学知识
A torch.arange(20).reshape(5, 4) # 得到一个5x4矩阵
# axis 几哪一个轴维度就会被降维而消失
row_sum A.sum(axis 0) # 按行求和即将一列中的所有元素求和且降维成一个向量得到[40, 45, 50, 55]
col_sum A.sum(axis 1, keepdims True) # 按行求和且不降维得到一个5x1矩阵
# 广播机制 当用一个向量加一个标量时标量会被加到向量的每个分量上。范数
向量的范数将其映射为标量反映向量的大小。 L 2 L_2 L2范数各元素平方和的平方根。torch.norm(x) L 1 L_1 L1范数各元素绝对值之和。torch.abs(x).sum() 矩阵的Frobenius范数是其元素平方和的平方根。
线性神经网络
线性回归
仿射变换通过加权和对特征进行线性变换linear transformation 并通过偏置bias项来进行平移translation。 线性回归与其他大部分模型不同的是它的解可以用一个公式简单地表达出来 这类解叫作解析解analytical solution或显式解。
梯度下降法
不断地在损失函数递减的方向上更新参数来降低误差。最简单的方法是计算损失函数数据集中所有样本的损失均值 关于模型参数的导数在这里称为梯度。 但因为在每一次更新参数之前必须遍历整个数据集所以实际中的执行会非常慢。因此通常采用小批量随机梯度下降minibatch stochastic gradient descent在每次需要计算更新的时候随机抽取一小批样本每个小批量中的样本数即batch size。batch size太小不利于并行计算太大则浪费资源。并且公式中的伊塔表示学习率这些训练前手动设置不在训练中更新的参数称为超参数。
全连接层fully-connected layer每个输入都通过矩阵向量乘法得到每个输出。
softmax回归
对于分类问题采用独热编码one-hot encoding表示类别独热编码是一个向量其分量和类别一样多。例如要识别的分类为{猫狗鸡}对应的标签y就分别是(1, 0, 0), (0, 1, 0)和(0, 0, 1)。
作为输出数据本身可能是任意的值但我们想要将其视为概率这就需要校准calibration来将其变为非负且总和为1softmax函数完成了该功能。它首先做求幂变成非负然后除以总和来规范化到01的范围。
多层感知机
在输入层和输出层之间可以加上若干个隐藏层来实现从线性到非线性的转变隐藏层不能使用线性函数否则会等价于不使用隐藏层。
激活函数
因此隐藏层使用非线性函数即激活函数activation function来确定神经元是否应该被激活激活函数的输出 称为活性值activations。
过拟合overfitting
模型在训练集上表现良好但不能推广到测试集。表现的形式就是训练集的损失函数正常下降但测试集的损失函数并没有甚至上升且高于训练集的损失函数。 以下情况容易过拟合。
可调整参数的数量自由度很大时。权重的取值范围较大时。训练样本少时。
正则化用于解决过拟合问题。
权重衰退weight decay
权重衰退是正则化的技术之一也叫L2正则化。主要是针对上述提到的第二点情况进行优化。给损失函数加上一个惩罚项将原来的训练目标最小化训练标签上的预测损失调整为最小化预测损失和惩罚项之和。 L o s s ( ) l a m b d a / 2 ∗ ∣ ∣ w ∣ ∣ 2 Loss() lambda / 2 * ||w||^2 Loss()lambda/2∗∣∣w∣∣2其中lambda用来控制衰退的程度过小就丧失了意义过大则可能欠拟合。在pytorch框架中一般用weight_decay表示。
暂退法dropout
将一些输出项随机置为0,将其他的项扩大以保持数学期望不变。常作用在多层感知机的隐藏层输出上。实际上就是在向前传播的过程中计算每一内部层的同时丢弃一些神经元。
卷积神经网络convolutional neural networksCNN
平移不变性translation invariance不论检测对象在图像中的哪里神经网络的前面几层应该对相同的图像区域具有相似的反应。局部性神经网络的前面几层应该只探索输入图像中的局部区域而不过度在意图像中相隔较远区域的关系。最终可以聚合这些局部特征以在整个图像级别进行预测。
卷积层
对全连接层利用以上两点得到卷积层。因此也可以看出卷积层是对全连接层的简化需要更少的参数。 卷积层将输入和卷积核矩阵进行卷积加上偏移后得到输出。其中卷积核和偏移是可学习的参数而核矩阵的大小是超参数。
卷积层的输出有时被称为特征映射feature map。而在卷积神经网络中某一层的任意元素x其感受野receptive field是指在前向传播期间可能影响x计算的所有元素来自x的所有先前层。
在卷积时可能会丢失边界信息针对于此可以采用填充padding操作。从另一个角度想卷积也会减少输出的 大小而如果要输出较少的维度就需要作大量的卷积计算这时就可以用到步幅来让卷积核每次移动不止一个像素。
卷积核不一定是一个二维的在处理多通道图像时也可以是纵向的。1x1卷积核通常用于调整网络层的通道数量和控制模型复杂性。移除全连接层可减少过拟合。
池化pooling层
池化也叫汇聚层通常放在卷积层之后目的是降低卷积层对位置的敏感性同时降低对空间降采样表示的敏感性。 与卷积核不同的是池化层不包含参数只在原输入上进行运算。池化层分为最大池化max pooling和平均池化average pooling。 使用max pooling以及大于1的步幅可减少空间维度。
批量归一化batch normalization
训练时数据在最底部而损失出现在最后。反向传播时后面的层训练得快底部则较慢但底部层一经变化后面的所有都要跟着重新学习因此导致收敛的速度变慢。 批量归一化放在激活函数前通过固定批量中的均值和方差可以持续加速深层网络的收敛速度。 另外注意若batch_size为1,那么批量归一化是无效的。因为并不存在均值方差。 计算机视觉
图像增广
对训练图像进行一系列的随机变化之后生成相似但不同的训练样本从而扩大了训练集的规模。且可以减少模型对某些属性的依赖从而提高模型的泛化能力。 常见的做法如翻转切割变色等。
微调fine-tuning
一个神经网络一般可以分为两块很多层的特征提取将原始像素变成容易线性分割的特征变得可学习以及一个线性分类器。 假设现在要训练的模型是目标模型微调的思路是在另一个源数据集上训练源模型将其特征提取层的参数直接复制到目标模型上使用相同的网络架构此时在目标数据集上进行训练的话输出层将从头开始进行训练而所有其他层的参数将根据源模型的参数进行微调。这也就是迁移学习transfer learning即将从源数据集学到的知识迁移到目标数据集源数据集和目标数据集应该是相似的东西如猫和狗或热狗和香蕉。 总结地说微调通过使用在大数据上得到的预训练好的模型来初始化模型权重来提升精度。
锚框
用边界框bounding box描述位置。 在输入图像中以每个像素为中心生成多个放缩比和宽高比aspect ratio不同的边界框即锚框anchor box。然后判断锚框中是否有目标若有则调整边界从而更精准地预测目标的真实边界框ground-truth bounding box。 以每个像素为中心会生成过多的锚框因此对于大目标可以采样较少的区域小目标可以采样较大的区域。
在训练集中将每个锚框视为一个训练样本。 训练时需要每个锚框的类别class和偏移量offset标签其中前者是与锚框相关的对象的类别后者是真实边界框相对于锚框的偏移量。 在预测时为每个图像生成多个锚框预测所有锚框的类别和偏移量根据预测的偏移量调整它们的位置以获得预测的边界框最后只输出符合特定条件的预测边界框。
IoU
用交并比intersection over unionIoU衡量锚框覆盖目标的程度。具体地说就是用锚框和真实边界框的相交面积比上相并面积0表示无重合1表示完全重合。给每个锚框要么标注成背景要么关联到一个边界框。背景类别的锚框通常被称为负类锚框其余的被称为正类锚框。
假设有n个真实边界框m个锚框计算每个锚框对每个真实边界框的IoU生成一个mxn的矩阵。每次从中选取最大的IoU将其对应的真实边界框分配给对应的锚框并删除该元素所在的行列。
非极大值抑制
当有许多锚框时可能会输出许多相似的具有明显重叠的预测边界框都围绕着同一目标。 为了简化输出就需要使用非极大值抑制non-maximum suppressionNMS合并属于同一目标的类似的预测边界框。
R-CNN算法
区域卷积神经网络region-based CNNR-CNN。 若每个锚框不一样大怎么让他们可以在一个batch里训练呢就要用到兴趣区域region of interest, RoI池化层相当于一个max pooling将他们变成固定大小。
语义分割
语义分割semantic segmentation识别每一个像素并将其分类。
全卷积网络
卷积不会增加输入的高宽有时候需要将图片放大即上采样upsampling。可以用转置卷积transposed convolution增大高宽。 全卷积网络fully convolutional networkFCN通过1x1卷积将通道数变为类别数然后利用转置卷积将中间层特征图的高和宽变换回输入图像的尺寸。
风格迁移
风格迁移style transfer使用内容损失、风格损失和全变分损失将内容图像的风格转为风格图像。 合成的图像中会有大量高频噪点需要用全变分损失来进行全变分去噪total variation denoising。