❤️“人工智能”的初生
- 人工智能(Artificial Intelligence,简称AI)是指计算机系统通过仿效人的思维和行为方式,实现类似于人类智能的一种技术。20世纪初期,“人工智能”就作为一个概念被提出。当时,科学家们开始思考如何使机器能够模拟人类的思维过程,以便更好地解决复杂的决策问题。20世纪50年代,AI 的概念逐渐具体化,并在达特茅斯会议上被正式提出
🤷♂️如何定义 AI
- 现在我们希望 AI 的存在能允许计算机系统具备类似于人类智能的某些能力。这些能力包括:
能力类型 | 含义 |
---|---|
👀感知能力 | 让计算机能够感知周围环境,包括听觉、视觉、触觉等多个方面。 |
🙋语言能力 | 让计算机能够理解并处理人类语言,包括自然语言处理、语音识别等技术。 |
🕹️推理能力 | 让计算机能够根据已有的信息进行推理,并做出正确的决策。 |
🤔学习能力 | 让计算机能够不断从经验中学习,并提升自身的智能水平。 |
🎶创造能力 | 让计算机能够创造新的知识和思想。 |
- 机器学习时代,计算机算力资源很缺乏,大部分研究着重于如何让计算机从传感器数据中感知世界,而关于推理能力能有多强,大家并没有太高的期望。因此涌现出了很多机器学习方法,大多数工作集中在人工的特征工程上,利用各种独特的技术抽取数据的特征来做决策。机器学习也就成为了 AI 实践的重要方法论
- 2012 年,AlexNet 凭借 CNN(卷积神经网络)突破了机器学习最极限的图像分类性能,自此点燃了神经网络技术的发展星火。同时随着并行计算的快速发展,各种基于 CNN 优化的神经网络算法登上历史舞台,比如耳熟能详的 ResNet,彻底奠定了神经网络端到端算法的地位
- 其实到 ChatGPT 的诞生,已经标志着 AI 开始全面拥有了以上定义的 5 种能力。AI 能够关注事物的特点,能够从语言联系到现实,能够根据提示工程做出最终的判断,能够自我评价总结反思,能够根据知识生成不存在的事物。统一大模型成为了极具诱惑力的香饽饽,为 AI 技术创造出极强的影响力
🕹️优化算法的本质
简单问题
一个线性关系的学习过程是寻求最拟合一元一次方程的过程(以不同面积房价预测为例)
其中 \( w \)、\( b \) 是 Learnable,代表了其对于预测精度的决定性影像,也代表了它需要一个优化过程,经优化确定之后模型会有越来越好的预测能力
非结构化问题
- 一个非线性关系的学习需要多层非线性变换,实现对 DATA 的高层抽象
- DATA 输入会更复杂,需要更复杂的数据操作
从 HIDEN LAYER 的 CELL 中理解优化算法
- 在多层感知机中,隐层由图示的 CELL 组建而成,每一个 CELL 接受上一层的多个 CELL 输入(\( S_n \)),经过 Activation(激活函数,此处以 ReLU 为例),得到该 CELL 对下一层的输出(\( S^{\prime} \))
$$ Learnable:w1、w2... wn;bias $$
$$ o=\sum(ws)+bias $$
$$ S^{\prime}=Activation(o) $$
🤔现在我们开始理解什么是学习
首先,我们总结一下简单问题和非结构化问题的学习目标:
- 在简单线性关系的学习中,我们的拟合函数在学习一套权重(\( w \) 和 \( b \)),每设置一套权重,我们都能评估直线方程与所有数据点的总距离
- 在非结构化问题的学习中,我们使用了好复杂的神经网络,权重多了很多。但同样,每当我设置一套神经网络的权重,我就可以根据最后一层的两个神经元的值评估分类的正确性
- 两种问题的学习都有一些共同点:1. 都需要学习一个或一组权重来计算结果 2. 计算结果都能利用一个精度指标评估
- 现在就好办了,我们只需要找到一个方法,让我们根据精度来调整我们的权重。不断反复这个过程就是不断学习,而调整权重的方法就是优化算法
- 这些优化算法的本质,都是根据预测结果与正确结果之间的误差来构建损失函数,并根据损失函数的图像来计算参数更新是正是负、具体更新多少
👀CV 的基础任务
优化算法的突破需要非常深厚的学科积累,而且现有工作远不如权重结构设计多。因此,在了解了学习的过程后,我们就可以直接开始认识一些主流的神经网络架构啦。这里以最经典的视觉问题为例
非像素级
IMAGE CLASSIFICTIOIN(分类)
- 一张图像中是否包含某种物体,对图像进行类别描述是 Image Classification 的主要研究内容
- 经典 CNN:AlexNet(2012),在其之后,有很多基于CNN的算法也在 ImageNet 上取得了特别好的成绩,比如 GoogleNet(2014)、VGGNet(2014)、ResNet(2015)以及 DenseNet(2016)等
常用公共数据集(数据复杂度递增):
- MNIST:60k 训练图像、10k 测试图像、10个类别、图像大小1×28×28、内容是0-9手写数字
- CIFAR-10:50k 训练图像、10k 测试图像、10个类别、图像大小3×32×32
- CIFAR-100:50k 训练图像、10k 测试图像、100个类别、图像大小3×32×32
- ImageNet:1.2M 训练图像、50k 验证图像、1k 个类别。2017年及之前,每年会举行基于 ImageNet 数据集的 ILSVRC 竞赛
LOCALIZATION(定位)
- 在 Image Classification 的基础上,还想知道图像中的单个主体对象具体在图像的什么位置,通常是以包围盒(bounding box)的形式。网络带有两个输出头。一个分支用于做图像分类,另一个分支用于判断目标位置,即输出四个数字标记包围盒位置(例如中心点横纵坐标和包围盒长宽),该分支输出结果只有在分类分支判断不为“背景”时才使用
OBJECT DETECTION(检测)
- Object Detection 通常是从图像中输出多个目标的 Bounding Box 以及类别,同时完成了 Image Classification 和 Localization 。在 Localization 中,通常只有一个目标,而目标检测更一般化,其图像中出现的目标种类和数目都不定。近年来,目标检测研究趋势主要向更快、更有效的检测系统发展
经典算法:
- two-stage:R-CNN(第一个高效模型)、Fast R-CNN、Faster R-CNN、R-FCN 等;
- one-stage:YOLO、SSD 等
- PASCAL VOC 包含20个类别。通常是用 VOC07 和 VOC12 的 trainval 并集作为训练,用 VOC07 的测试集作为测试。
常用公共数据集(数据复杂度递增):
- PASCAL VOC:20个类别。通常是用 VOC07 和 VOC12 的 trainval 并集作为训练,用 VOC07 的测试集作为测试
- MS COCO:COCO 比 VOC 更困难。80k 训练图像、40k 验证图像、20k 没有公开标记的测试图像(test-dev),80个类别。通常是用80k 训练和35k 验证图像的并集作为训练,其余5k 图像作为验证,20k 测试图像用于线上测试
像素级/细粒度级
SEGMENTATION(分割)
分割任务是将整个图像分成像素组,然后对其进行标记和分类,难度上比非像素级更大,特征更加复杂
语义分割
- 语义分割试图在语义上理解图像中每个像素在大类上的从属(例如天空、汽车、摩托车等)。
基本思路:
- 二分类:我们将图像输入模型,得到和图像一样长宽的输出,其输出为单通道概率图,每个像素代表其属于第二类的可能性,进行二值化得到分割结果
- 多分类:我们将图像输入模型,得到和图像一样长宽的输出,其输出为多通道,每个通道代表不同类别,本质是给每个类别一张二值图以得到多类分割结果
- 经典算法:FCN(全卷积神经网络)、UNet、PSPNet、DeepLabV3 系列、UPerNet 等
- 常用公共数据集比较杂,涉及了遥感、医学影像、自动驾驶等各个专业和领域,体量庞大且专业性强,这里不做展示
实例分割
- 和语义分割的本质区别在于,语义分割是得到在大类上的从属关系,实例分割进一步区分大类中不同实体间的区别。比如,如果一群人打排球,语义分割和实例分割都会将其分割结果归类为「人」,但是语义分割的分割结果是一个大多边形把人都包起来(图1),而实例分割会给每个人一个多边形包起来(图2)
关键点检测
- 提取分析对象的关键点,例如人脸的关键点有眼珠、眼角、鼻尖、嘴尖、下颚转折点等等,通过提取这些点的二维坐标就可以得到大概的线状、面状分布特征,如果能够提取三位点坐标,则可以引入深度特征,实现更加复杂的应用
🔍为何分类是最基础的任务?
- 基于分类算法,可以在后面连接到各种其他任务的算法(例如检测、分割等),或者与其他算法头并行。总之,如果没有了分类,检测器的包围框将没有实际的参考价值,分割器的像素之间划分开的差异也没有实际意义,所以分类算法是一切人工智能算法的基础,分类领域的突破是下游任务发展的重要推动力
📐DEEPLEARNING 神经网络架构的设计
- 从朴素的观点来说,深度学习模型的隐层只需专心负责特征提取,输入层可以任意输入各种模态的数据。比如,声音数据可以经过滤波算法以及可视化算法转化成彩图和视觉算法共用输入层;图像数据可以切分为有序的块,然后把每个块映射为高维向量,作为 Token 输入自然语言的 Transformer 算法。所以,DL 算法本质上只要数据兼容做的好,就可以套用到不同模态的学习过程中
- 但单纯将各种模态数据映射为统一的输入结构,容易损失数据特征,因此需要针对分析对象的性质和关键特征来设计模型的输入层,以及隐层中的特征提取方式
例如,而视频和音频数据相比于单帧数据,带有时序特征,在设计上如何考虑多帧之间的时序关系是非常重要的,因此难度也要更高。常见的应用有:
- 片段引导:划分视频片段,并对应某类片段的受众,引导受众跳转到感兴趣片段
- 片段查询:根据用户的自然语言描述,截取出符合描述条件的片段
本文参与了SegmentFault 思否写作挑战赛,欢迎正在阅读的你也加入。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。