赞
踩
版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com
适莽苍者,三餐而反,腹犹果然;适百里者,宿舂粮;适千里者,三月聚粮。
——庄周《逍遥游》
上文引用了战国中期先秦道家学派的代表人物庄子的逍遥游选段,翻译为白话文大致含义是:到近郊去的人,只带当天吃的三餐粮食,回来肚子还是饱饱的;到百里外的人,要用一整夜时间舂米准备干粮;到千里外的人,要用三个月来聚集粮草。
我相信,看到这篇文章的人,一定是致千里者。
我最早接触人工智能相关概念的时候大概是2019年,那时Google更新了TensorFlow,当时判断人工智能在未来肯定会越来越火,就建了个人工智能交流群,没几天500人的群就满员了。
于是,我们开始入门了。刚入门的时候遇到了很多与人工智能相关的概念,都不太了解什么意思,学习时脑袋就比较混乱,幸好我在CS领域有多年深耕经验,知道入门一个新领域时最好是对其有宏观的认识,然后再有计划的学习细分领域。这也是我发这篇文章的原因,希望这篇文章可以帮助到后来的入门者。
关于人工智能的发展历史就不再介绍了,从人工智能的定义和历史发展来看,它是一门内容广泛的学科。因此,在日常交流中,大家常常存在将人工智能、机器学习、深度学习、监督学习、强化学习、主动学习等混用的情况。
实际上,机器学习是人工智能的一个分支,它能够从数据中自动分析获得规律,对未知数据进行预测。而人工神经网络则是人类模仿生物神经网络的结构和功能提供的一种计算模型,属于机器学习算法的一种。2012年,AlexNet获得ImageNet挑战赛冠军后,深度学习就成为了热门的机器学习算法。
监督学习的任务是学习一个模型,这个模型可以处理任意的一个输入,并且针对每个输入都可以映射输出一个预测结果,这里模型就相当于数学中一个函数,输入就相当于数学中的X,而预测的结果就相当于数学中的Y,对于每一个X,都可以通过一个映射函数映射出一个结果。
非监督学习是指直接对没有标记的训练数据进行建模学习。注意,在这里的数据是没有标记的数据,与监督学习最基本的区别之一就是建模的数据是否有标签。例如聚类(将物理或抽象对象的集合分成由类似的对象组成的多个类的过程)就是一种典型的非监督学习,分类就是一种典型的监督学习。
当有标记的数据很少、未被标记的数据很多,人工标记又比较昂贵时,可以根据一些条件(查询算法)查询一些数据,让专家进行标记,这是半监督学习与其他算法的本质区别。所以说对主动学习的研究主要是设计一种框架模型,运用新的查询算法查询需要专家来人工标注的数据,最后用查询到的样本训练分类模型来提高模型的精确度。
当使用一些传统的监督学习方法做分类处理时,通常是训练样本的规模越大,分类的效果就越好。但是在现实中的很多场景中,标记样本的获取是比较困难的,因为这需要领域内的专家来进行人工标注,所花费的时间成本和经济成本都很大。而且,如果训练样本的规模过于庞大,则训练花费的时间也会比较多。那么问题来了:有没有一种有效办法,能够使用较少的训练样本来获得性能较好的分类器呢?答案是肯定的,主动学习(ActiveLearning)提供了这种可能,主动学习通过一定的算法查询出最有用的未标记样本,并交由专家进行标记,然后用查询到的样本训练分类模型来提高模型的精确度。
在人类的学习过程中,通常利用已有的经验来学习新的知识,又依靠获得的知识来总结和积累经验,经验与知识不断交互。同样,机器学习就是模拟人类学习的过程,利用已有的知识训练出模型去获取新的知识。并通过不断积累的信息去修正模型,以得到更加准确有用的新模型。不同于被动地接受知识,主动学习能够有选择性地获取知识。
根据不同的划分角度,可以将机器学习划分为不同的类型。
机器学习模型按任务类型可以分为回归模型、分类模型和结构化学习模型。具体说明如下:
机器学习按方法可以分为线性模型和非线性模型,具体说明如下:
机器学习模型可以分为有监督学习、半监督学习、无监督学习、迁移学习和强化学习,具体说明如下:
机器学习是一种实现人工智能的方法,而深度学习是一种实现机器学习的技术。深度学习本来并不是一种独立的学习方法,其本身也会用到有监督和无监督的学习方法来训练深度神经网络。但由于近几年该领域发展迅猛,一些特有的学习手段相继被提出(如残差网络等),因此越来越多的人将其单独看作一种学习的方法。
假设需要识别某个照片是狗还是猫,如果是用传统机器学习的方法,首先会定义一些特征,如有没有胡须、耳朵、鼻子和嘴巴的特征等。总之,首先要确定相应的“面部特征”作为机器学习的特征,以此将对象进行分类识别。而深度学习的方法则更进一步,它会自动找出这个分类问题所需要的重要特征,而传统机器学习则需要人工地给出特征。
我的理解是,其实深度学习并不是一个独立的算法,在训练神经网络的时候也通常会用到监督学习和无监督学习。但是由于一些独特的学习方法被提出,也可以把它看成是单独的一种学习算法。深度学习可以大致理解成包含多个隐含层的神经网络结构,深度学习的深指的就是隐藏层的深度。
CNN是卷积神经网络(Convolutional Neural Network)的缩写,是一种专门为处理具有网格结构的数据(如图像)而设计的深度学习架构。CNN在图像处理和计算机视觉领域特别成功,广泛应用于图像识别、物体检测、图像分类、图像分割、视频分析和自然语言处理等任务。
CNN的核心思想是利用卷积运算来自动和有效地提取图像中的局部特征,无需手动特征工程。卷积层通过滤波器(也叫卷积核或权重)在输入图像上滑动,计算局部区域的点积,并生成特征图(feature map)来表示特定的视觉特征,如边缘、角点或更复杂的纹理和形状。
CNN通常由以下几种类型的层组成:
RNN是循环神经网络(Recurrent Neural Network)的缩写,是一种专门设计来处理序列数据的人工神经网络。与传统的前馈神经网络不同,RNN能够处理任意长度的序列,因为它们具有内部状态(memory)来存储前面的信息。
RNN设计用于处理序列数据和时间序列数据,能够对序列中的元素进行建模,考虑到时间上的依赖关系。RNN的关键在于它们的循环连接,这使得网络能够将信息从前序步骤传递到当前步骤,从而保持对先前元素的“记忆”。RNN在自然语言处理(NLP)、语音识别、时间序列预测等任务中非常有效。
RNN的主要问题是长期依赖问题,即难以捕捉长序列中的依赖关系,这通常表现为梯度消失或梯度爆炸。为了解决这些问题,研究者开发了LSTM(长短期记忆)和GRU(门控循环单元)等更高级的循环神经网络变体。
全称Open Neural Network Exchange,是微软主导的一个开放式深度学习神经网络模型格式。该格式旨在通过一个统一的模型标准,促进不同人工智能框架之间的互操作性,从而建立一个强大的人工智能生态。是一个用于表示深度学习模型的开放标准,它被设计成允许模型在不同的深度学习框架之间进行转换和互操作。支持TensorFlow、Keras、PyTorch、Caffe、CNTK、MXNet、Apache SINGA的转换,并且在与这些框架的集成中扮演“中间人”的角色。
官网:https://onnx.ai/
开源地址:https://github.com/onnx/onnx/
除了ONNX,目前没有广泛接受的、类似范围的通用标准,但有一些其他工具和库可以用于模型转换和优化:
尽管上述工具和库可能不如ONNX那样专注于模型格式的标准化,但它们提供了在不同框架和平台之间转换、优化和部署模型的功能。这些工具各有侧重点,选择时应考虑模型的原始框架、目标部署平台和性能要求。
在人工智能领域,Netron是一个图形化的工具,用于可视化和探索深度学习和机器学习模型的结构。它支持多种不同的模型文件格式,包括常见的框架如TensorFlow、Keras、PyTorch、Caffe、ONNX、CoreML等。
开源地址:https://github.com/lutzroeder/netron/
软件下载:https://github.com/lutzroeder/netron/releases
网页版:https://netron.app/
本文介绍了目前比较主流的、我个人比较感兴趣一些深度学习框架。
TensorFlow官网:https://www.tensorflow.org/
TensorFlow Lite官网:https://www.tensorflow.org/lite
开源地址:https://github.com/tensorflow/tensorflow
Keras在2017年被集成进TensorFlow,在TensorFlow 2.0版本中,Keras被正式确立为TensorFlow的高级API,即tf.keras。
官网:https://keras.io/
开源地址:https://github.com/keras-team/keras
官网:https://pytorch.org/
开源地址:https://github.com/pytorch/pytorch
官网:https://caffe.berkeleyvision.org/
开源地址:https://github.com/BVLC/caffe
Core ML 并不是一个开源项目,它是苹果公司开发的专有框架,用于在 iOS、macOS、tvOS 和 watchOS 上运行机器学习模型。由于它是专有的,没有公开的源代码可供下载或修改。
苹果公司的 Core ML 官方主页提供了关于 Core ML 的详细信息和文档,包括如何开始使用 Core ML、如何转换和训练模型、以及 Core ML 支持的模型格式等。
官网:https://developer.apple.com/machine-learning/
总的来说,我个人比较推荐TensorFlow和PyTorch,它们都是完整的深度学习框架,支持广泛的应用,并且它们的社区和工具都在不断发展。Caffe在某些特定的领域如计算机视觉中仍然是一个高效可靠的选择,尽管它的流行度可能不如前两者。而Keras提供了一个用户友好的接口,使得深度学习更加容易上手,是学习和快速开发的首选。
主要介绍几个国内开源的深度学习推理引擎。
MNN(Mobile Neural Network)由阿里巴巴出品,是一个轻量级、高性能的深度学习框架,专门针对移动端和边缘设备设计。MNN的目标是帮助开发者和企业能够在移动设备上高效地部署和运行深度学习模型,特别是在资源有限的环境下。
官网:https://www.mnn.zone/
开源地址:https://github.com/alibaba/MNN
NCNN(Neural Network Inference Framework)由腾讯出品,是腾讯优图实验室开发的高性能神经网络前向推理框架,专为移动端和边缘设备设计,具有轻量级和高效率的特点。
开源地址:https://github.com/Tencent/ncnn
MindSpore是华为推出的一个全场景深度学习框架,移动端部署需要使用MindSpore Lite。
MindSpore官网:https://www.mindspore.cn/
MindSpore Lite官网:https://www.mindspore.cn/lite
开源地址:https://github.com/mindspore-ai/mindspore
MACE(Mobile AI Compute Engine)是小米开源的一个深度学习推理框架,专门设计用于在移动端和嵌入式设备上优化和运行机器学习模型。MACE支持多种平台,包括Android和iOS设备,以及支持ARM架构的Linux设备。
官网:https://mace.readthedocs.io/
开源地址:https://github.com/XiaoMi/mace
PaddlePaddle是由百度推出的开源深度学习平台,支持多种深度学习模型,并且特别优化了在百度大规模应用中的一些实用功能。
官网:https://www.paddlepaddle.org.cn/
PaddlePaddle开源地址:https://github.com/PaddlePaddle
Paddle-Lite开源地址:https://github.com/PaddlePaddle/Paddle-Lite
MegEngine是旷视公司自主研发的深度学习框架,于2020年3月25日全面开源。MegEngine 致力于提供高性能和易用性,支持广泛的AI应用,从图像和视频分析到语音识别和自然语言处理。
官网:https://www.megengine.org.cn/
开源地址:https://github.com/MegEngine/MegEngine
OneFlow 是OneFlow Inc.(一流科技有限公司)开发病开源的,OneFlow 旨在为用户提供易用、高效和可扩展的深度学习工具,特别强调在大规模分布式环境中的性能和灵活性。
官网:https://oneflow.org
开源地址:https://github.com/Oneflow-Inc/oneflow
本文完。
特别说明:本文部分内容来自AI大模型,如有错误请评论指出,不胜感激!
本文参考了以下文献:
版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。