从信息到知识到智能——理解和改变世界:白痴的胜利

发布于:2023-10-25 ⋅ 阅读:(102) ⋅ 点赞:(0)

作者:禅与计算机程序设计艺术

1.背景介绍

人类生活在这个信息化时代,信息越来越多、速度越来越快、信息获取越来越容易。这样带来的好处就是我们可以快速获取各种各样的信息,而很多时候这些信息又是无用的信息。如何有效地筛选这些信息并运用它们进行决策就成了我们需要解决的问题。这也是今天这个领域非常重要的一个研究方向。信息收集、加工、存储和处理都需要有相应的技术手段。

自然语言处理(NLP)在自然语言生成(NLG)、对话系统等方面都有广泛应用。但同时也存在着一些缺陷和局限性,其中最突出的一个就是人们习惯于假定“白盒”模型,即认为机器学习模型所做出的预测都是基于输入数据的,而忽略了模型内部可能潜藏的模式或结构。因此为了能够更好地理解和利用人类的语言和信息,我们需要从各种角度重新审视传统的机器学习模型。

2.核心概念与联系

2.1 模型评估指标与评分标准

由于现有的模型评价指标不足以衡量实际应用场景下模型的真实表现,因此作者提出了一种新的模型评估指标——鲁棒性指标(Robustness)。鲁棒性指标主要用来评价模型的健壮性和鲁棒性,其计算方式如下:

1) 准确率:准确率反映的是模型在测试集上的预测精度。准确率越高,模型的鲁棒性越好。

2) 召回率:召回率反映的是模型在测试集上正确识别出正确标签的能力。召回率越高,模型的鲁vldadliness越好。

3) F1-score:F1-score可以看作是准确率和召回率的调和平均值,计算方式如下: F1 = (2 * precision * recall) / (precision + recall) 在测试集上,F1-score取值范围为[0, 1],值越大表示模型的鲁vldadliness越好。

4) Kappa系数:Kappa系数是一个介于[-1, 1]之间的综合评价指标,它衡量的是模型对于观察到的概率分布的适应度。Kappa系数越接近于1,表示模型的预测结果与实际情况越一致;Kappa系数越接近于-1,表示模型的预测结果与实际情况越不一致。

5) 曲线敏感度:曲线敏感度是一个介于[0, 1]之间的评价指标,它衡量的是模型的预测结果与真实情况之间的相关程度。曲线敏感度越接近于1,表示模型的预测结果与真实情况越相关;曲线敏感度越接近于0,表示模型的预测结果与真实情况之间没有任何相关关系。

鲁棒性指标能够帮助我们衡量模型在实际应用中遇到的问题,如过拟合、欠拟合、数据不平衡、样本不均衡、稀疏数据、模糊语义、语言不通顺等。根据不同的场景和任务,人们可以设置不同阈值,从而达到最优模型的效果。

2.2 概念

2.2.1 人工神经网络(Artificial Neural Networks,ANN)

人工神经网络是由生物神经网络演变而来。它是一种模仿生物神经元工作原理的数学模型,是一种具有普遍适应性的统计分类学习模型。它的神经元由简单细胞组成,每个细胞接收多个信号源的输入,并通过激活函数输出多个连续的信号,这些信号随后将作为其他细胞的输入,构成复杂而层次化的网路。

ANN属于监督学习方法,其训练数据包括输入数据及其对应的输出标签。通过学习得到一个用于预测新数据的模型。一个典型的ANN由几个隐藏层以及输入层和输出层构成,其中隐藏层通常由多个神经元节点组成,每一层中的神经元接受前一层的所有输入,并产生自己的输出,然后发送给下一层。最后一层的神经元个数对应输出标签的种类数量,如果输出标签是离散的,则对应输出层的神经元个数等于标签种类数目。

2.2.2 梯度消失/爆炸问题

梯度消失问题指的是在深层的神经网络中,随着神经网络层数增加,训练误差逐渐减小或者不再变化,但是在测试阶段,随着输入数据的增加,测试误差却不断增大。也就是说,训练阶段的梯度更新步长导致网络的权重更新量缩小到较小的值,导致网络的性能下降严重。这是由于梯度更新步长太小,使得神经网络无法继续学习并输出较大的损失值。

梯度爆炸问题是指在深层的神经网络中,当神经元个数较少时,会出现梯度爆炸现象。此时,梯度更新步长增大,权重更新量增大,导致网络的权重更新值过大,导致网络发生了爆炸现象。这是因为神经网络中的参数过多,使得激活函数输出值饱和,导致梯度更新值过大,导致网络的性能下降严重。

2.2.3 注意力机制(Attention Mechanism)

注意力机制是一种根据输入数据的重要程度,分配不同的注意力资源的方法。目前的卷积神经网络(CNN)、循环神经网络(RNN)、transformer都实现了注意力机制。与传统的机器学习模型相比,注意力机制能够对输入数据中的不同特征给予不同的关注,提升模型的判别性能。

注意力机制是建立在上下文信息的基础之上的,具体来说,它能够把注意力集中在输入序列中的特定位置上,而不是所有位置上。在注意力机制中,有一个查询向量q,一个键向量k,和一个值向量v。首先,查询向量q与输入序列中的某一位置相关联,代表当前要被注意的位置;键向量k与每个位置关联,代表输入序列中与查询向量位置相关的上下文信息;值向量v与每个位置关联,代表k向量所对应项的重要性。注意力机制通过计算注意力权重a(t,j),来确定每一个输入元素对输出的影响。

2.2.4 模型蒸馏(Model Distillation)

模型蒸馏(Model Distillation)是一种模型压缩技术,其基本思想是在目标检测中提取目标检测模型的精细颗粒(细粒度分类器),然后将这些颗粒合并到一个粗粒度的分类器中,以此来减小模型的体积,并提高模型的预测速度。

模型蒸馏技术通过两个网络来解决这一问题,其中一个网络(teacher network)是原始的训练网络,另一个网络(student network)是目标检测网络的浅层版本。学生网络的输入为原始图像,通过预测输出目标检测概率,完成任务。而老师网络的输入与目标检测网络的输入相同,但是在输出层不包含最终目标检测的结果,而只包含原有网络的中间层的输出。学生网络通过对老师网络的中间层的输出进行蒸馏,以此来学习到老师网络的“眼球神经元”。

蒸馏后的学生网络的预测能力将远远超过单独使用老师网络的预测能力,并且相比于使用整个网络的预测时间更短。

2.2.5 对抗训练(Adversarial Training)

对抗训练是一种训练策略,它鼓励模型通过不断修改自身的参数,以逼近最佳的预测结果。对抗训练通过生成对抗样本来训练模型,使模型成为一个更好的防御者,从而抵抗恶意攻击或攻击者设计的虚假样本。

对抗训练有两种形式,第一种是直接在模型损失函数中添加对抗样本的损失,第二种是通过生成对抗样本的方式训练模型。第一种方式显然更简单,但是可能会产生不利于模型的鲁vldadliness的负面影响,因为添加的对抗样本实际上是合法的数据,但是它们被错误地分类成了异常样本。第二种方式可以在一定程度上缓解这一问题,但是仍然依赖于生成对抗样本,因此受制于生成样本的效率问题。

2.3 算法原理

2.3.1 深层学习(Deep Learning)

深度学习(Deep learning)是机器学习的一个分支,主要特点是基于神经网络的非监督学习,即对训练数据没有先验知识的情况下,利用数据的海量、无序、异质性进行自动学习,提升模型的预测能力。深度学习模型有着深厚的结构和复杂的连接规则,能够通过反复迭代优化和学习而学习到更加抽象、抽象、抽象的特征表示,从而在很多复杂的任务中取得高性能。

深度学习模型通过多层级的神经网络,每层包括多个节点。输入层接收原始输入,中间层采用非线性激活函数,输出层得到最终结果。每层之间通过权重矩阵进行连接,不同层之间可以共享同一份权重矩阵。通过反向传播算法,模型参数不断更新,得到更加准确的模型参数。

2.3.2 微调(Finetuning)

微调(Finetuning)是指利用预训练的模型作为基线模型,对其进行微调,使得其在特定任务上达到更好的效果。微调主要包含以下三个步骤:

1) 加载预训练的模型参数:首先加载预训练模型的参数,如ResNet50、VGG16、GoogleNet等,并在其顶端增加全连接层或卷积层。

2) 冻结底层参数:冻结预训练模型的底层参数,即设定其参数不允许发生变化,以防止对底层的预训练有过大的破坏。

3) 微调(fine tuning)过程:利用随机梯度下降(SGD)或Adam优化算法,对顶层参数进行训练,从而提升模型在特定任务上的性能。

2.3.3 数据增强(Data Augmentation)

数据增强(Data augmentation)是指对训练数据进行旋转、平移、缩放、裁剪等变换,以提升模型对变形、模糊、遮挡等情况下的鲁vldadliness。这种做法可以在一定程度上弥补偏置,提升模型的鲁vldadliness。

数据增强有两种形式,一种是采用生成式的数据增强方法,例如在图像中采用各种变换,如旋转、翻转、平移等来增强数据集;另一种是采用现成的数据增强库,比如Keras中的ImageDataGenerator模块。

2.3.4 Dropout(Dropout)

Dropout(随机丢弃)是深度学习里的一个重要的正则化技术,其基本思想是每次训练时,让一部分神经元的输出被忽略掉,从而降低模型的复杂度,提升模型的鲁vldadliness。

dropout的基本操作是以一定的概率将一部分神经元的输出设置为零,以期望达到模型的泛化能力。

2.3.5 Batch Normalization(批量归一化)

Batch normalization(批量归一化)是一种对深层网络进行训练的有效方法,通过对每一层的输入进行标准化,使得每一层的神经元的输出分布一致,从而降低模型的复杂度,提升模型的鲁vldadliness。

批处理归一化主要有以下两个步骤:

1)针对每个batch计算均值和方差,得到batch mean $\mu$ 和 batch variance $\sigma^2$;

2)针对输入数据X,标准化的公式为: X' = \frac{X - \mu}{\sqrt{\sigma^2 + \epsilon}} Y = g(X') g是激活函数,如ReLU。 通过标准化,可以使得每一层的神经元的输出分布保持一致。

2.3.6 目标检测(Object Detection)

目标检测(Object detection)是计算机视觉领域的一个热门方向,其任务是给定一张图像或视频,对其中的目标物体进行定位、分类、检测等。目前的目标检测方法一般采用两阶段的框架,第一阶段是候选区域生成(Region proposal generation),如R-CNN;第二阶段是目标分类与回归(Classification and regression of object location)。

R-CNN在生成候选区域的基础上,进行图像分类和目标回归。具体步骤如下:

1)选择一个region proposal algorithm,如selective search;

2)用该algorithm对图像进行初步筛选,获得初始的候选框;

3)用分类器(如SVM、Fast R-CNN)分别对候选框进行分类和目标回归,获得预测框的分类结果和边界框坐标;

4)对候选框进行进一步过滤,只保留预测框与gt box的IoU大于某个阈值的框作为最终输出。

Fast R-CNN提升了R-CNN的预测速度,引入了RoI pooling来降低计算复杂度,同时通过共享权重使得训练更加高效。它的检测框回归更加精准,并能处理较大图像。

YOLO(You Only Look Once,一次只能看到一个眼)是一种比较经典的目标检测方法,其模型结构简单、部署方便,性能优良。它由两个stage组成,第一个stage生成候选框,第二个stage对候选框进行分类和回归。

YOLO模型的整体结构如下图所示:

YOLO模型首先预测图片中的物体位置,将其划分为预定义的7x7个格子,每个格子预测为是否包含物体及其类别。每个格子有两个bounding box,一个是物体box,一个是分类box。分类box的大小与物体box的比例固定为1:2,是固定的预设值。YOLO模型使用损失函数将两个bounding boxes预测的置信度损失与边界框的位置损失进行加权求和。最后,YOLO模型使用非极大值抑制(Non-Maximum Suppression)消除重复预测的物体。

SSD(Single Shot MultiBox Detector)是一种目标检测方法,它的特点是一次性预测物体的位置及其类别。SSD的核心思想是用一个三层卷积网络替代传统的多层卷积网络,即用一层conv4_3输出预测的物体位置。SSD对输入图像上不同尺度的feature map进行预测,采用不同感受野的卷积核,如conv3_3、conv4_3等,将图像中的不同尺度的feature map映射到一个固定维度的输出空间。然后用多个不同尺度的不同aspect ratio的default bounding box生成default bounding boxes,并按需调整至真实物体的位置及大小。SSD检测框预测的更加精准,检测物体的速度更快,且检测框数量相对较少。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到