1.介绍
1.1 人工智能
人工智能是一门研究如何使计算机系统能够模拟、仿效人类智能行为的科学与技术领域。其目标是使机器能够执行需要智能的任务,包括感知、学习、推理、问题解决和自主行动等。人工智能的发展涵盖了多个学科,包括计算机科学、数学、心理学、神经科学等,旨在创造出能够表现出类似人类智慧的机器系统。
关键特征和能力:
- 感知和认知: 人工智能系统能够感知和理解环境中的信息,包括视觉、听觉、触觉等感知方式。
- 学习能力: 人工智能具备学习的能力,可以通过处理大量数据来提高性能,不断优化自身的表现。
- 推理和决策: AI系统能够推理和进行决策,基于已有知识和经验来解决问题,并在不断学习的过程中改进决策能力。
- 自主行动: 一些高级人工智能系统具备自主执行任务的能力,可以执行特定的动作或操作。
- 自然语言处理: 能够理解和生成自然语言,使机器与人进行沟通和交流。
1.2 发展历史
在网上搜到一张图,看着比较直观
2.前期准备
2.1 Python基础
在学习人工智能之前,需要先学习Python
基础方面的知识,因为Python
和其他语言相比较,在人工智能方面的生态圈还是比较完善的,很多东西都可以说是:拿来就用
,对于想快速上车的我们,非常有帮助。这也是前期我为什么花时间先学习Python
的原因,下面是以往学习Python
整理的文章,希望对你有用:
2.2 心理准备
当我们准备想了解或者学习人工智能时,经常会听到或者看到各种各样的名词,如: 机器学习、深度学习、神经网络、自然语言处理、计算机视觉、强化学习、自动驾驶、模型训练等等。上面这些还算好的,网上搜一搜也能知道什么意思,最大的拦路虎可能是高数相关或者算法相关的,比如: 线性代数、微积分、概率论、梯度下降、决策树、朴素贝叶斯….
@提示: 当我第一次看到上面的行业术语后,头特别挺大;感觉学习完全无法下手,再加上我高数和算法都很渣,甚至都想放弃….,好在后来调整了心态: 车子会开就行,不一定非得会造车~
2.3 知识图谱
下面图片是在网上搜索而来,从图片上可以很清晰的看出: 人工智能、机器学习、深度学习之间的关系,以及每个领域内包含的重点知识,对于初步认识AI
的我们,有很大的帮助。在这里由衷的感谢前辈们的知识整理和分享~
3.深度学习框架
不管学习什么语言,一般情况下,我们都需要掌握一个框架,因为框架可以帮我们实现很多功能;深度学习也是一样,深度学习框架可以简化和加速深度学习模型的设计、训练和部署过程,使我们能够更容易地构建、调整和优化神经网络模型。
3.1 主流框架
下面简单介绍下,市面上比较主流的深度学习框架:
TensorFlow:
- 特点: 由
Google
开发,是目前应用最广泛的深度学习框架之一。 - 优势: 强大的生态系统、支持多平台(
CPU、GPU、TPU
)和灵活的部署选项,广泛应用于学术界和工业界。TensorFlow 2.0
版本更注重简化API
和提高易用性。 - 应用: 适用于各种深度学习任务,包括图像处理、自然语言处理等。
- 特点: 由
PyTorch:
- 特点: 由
Facebook
开发,被广泛用于学术界和研究领域。 - 优势: 动态计算图、易于调试、直观的
API
设计,广受研究者和实践者欢迎。 - 应用: 适用于研究、原型设计以及在学术界的深度学习项目。
- 特点: 由
Keras:
- 特点: 原本是独立的深度学习库,后来整合到
TensorFlow
中,也支持其他后端引擎。 - 优势: 简洁、易用、高层抽象,适合初学者和快速原型设计。
- 应用: 广泛用于构建各种深度学习模型,尤其在快速迭代和实验阶段。
- 特点: 原本是独立的深度学习库,后来整合到
MXNet:
- 特点:
Apache
基金会支持的深度学习框架,以灵活性和高性能而著称。 - 优势: 动态和静态计算图、支持多种编程语言(
Python、Scala、Julia
)。 - 应用: 在工业界和学术界都有广泛应用,尤其在大规模和分布式训练方面表现优异。
- 特点:
Caffe:
- 特点: 专注于卷积神经网络(
CNN
)的深度学习框架,适用于图像识别任务。 - 优势: 高效、简单,适合特定领域的深度学习任务。
- 应用: 主要用于计算机视觉领域,如图像分类和物体检测。
- 特点: 专注于卷积神经网络(
Theano:
- 特点: 是早期的深度学习框架之一,提供高效的数学表达和
GPU
加速。 - 优势: 强调数学表达的优雅性和效率。
- 应用: 在早期深度学习研究中有一定影响,但由于后续框架的发展,已逐渐减少使用。
- 特点: 是早期的深度学习框架之一,提供高效的数学表达和
@注意: 上面虽然介绍很多主流框架,单是经常被提起且热度比较高的框架只有:
TensorFlow、PyTorch
3.2 两者之争
往大了说是深度框架选择,往小了说就是: TensorFlow、PyTorch
二选一;下面简单对比下两者的区别:
功能点 | TensorFlow | PyTorch |
---|---|---|
计算图 | 使用静态计算图,需要先定义整个计算图结构,然后执行 | 使用动态计算图,允许在运行时动态构建和修改计算图 |
灵活性与易用性 | TensorFlow 2.0 引入了更加易用的 Keras API ,使其更接近PyTorch 的动态图风格 |
以直观、灵活的动态图风格而著称,更容易上手,尤其适合实验和原型设计 |
可视化工具 | TensorBoard 是 TensorFlow 的可视化工具,用于分析和调试模型 | 提供了一些内置的可视化工具,同时也支持使用 TensorBoard |
部署和生态系统 | TensorFlow Serving 和 TensorFlow Lite 等工具用于模型的生产部署。具有广泛的生态系统和支持 |
有TorchServe 和 TorchScript 用于模型部署,生态系统较TensorFlow 相对较小。 |
社区和文档 | TensorFlow 有庞大的社区和广泛的文档资源,适用于各种应用和场景 |
虽然社区较TensorFlow 小,但仍然活跃,而且 PyTorch 的文档和教程通常被认为更易读 |
产业应用 | 在工业界有更广泛的应用,尤其在大规模生产环境中 | 更受研究机构和学术界欢迎,也在产业界逐渐得到应用 |
@说明: 对于TensorFlow、PyTorch
二选一这种说法,适用于刚学习AI的前期,后期还是两个框架尽量都要会的。只是哪个先学哪个后学的而已..
3.3 框架选择
对于初学者的我们,在网上搜索一圈后,基本上都是推荐我们应该选择PyTorch
,原因如下:
- 基于Python:
PyTorch
是基于Python
编写的,这使得它更容易于学习和使用,尤其是对于初学者来说。Python是一种简单易学的、易于扩展和易于维护的编程语言,可以帮助初学者快速入门深度学习。 - 易用性:
PyTorch
提供了简单的API
,使得初学者可以轻松地构建神经网络和完成深度学习任务。这使得初学者可以专注于学习深度学习的概念和技术,而不必过多关注底层实现细节。 - 灵活性:
PyTorch
具有高度的灵活性,支持多种网络结构和优化算法。这使得初学者可以根据需要自定义模型,并学习各种不同的深度学习技术。 - 社区支持:
PyTorch
拥有活跃的社区,提供了丰富的资源和教程,帮助初学者快速学习和解决问题。这使得初学者可以在遇到困难时获得快速帮助和建议。 - 适用于各种任务:
PyTorch
支持各种深度学习任务,包括计算机视觉、自然语言处理、推荐系统等。这使得初学者可以根据实际需求学习和应用PyTorch
。
综合考虑,初学者可以从
PyTorch
入手,掌握深度学习的基本概念和技能,然后再考虑学习其他框架以丰富自己的技能。随着经验的增长,你可能会发现在不同的项目中选择不同的框架更为合适。