1.介绍

1.1 人工智能

人工智能是一门研究如何使计算机系统能够模拟、仿效人类智能行为的科学与技术领域。其目标是使机器能够执行需要智能的任务,包括感知、学习、推理、问题解决和自主行动等。人工智能的发展涵盖了多个学科,包括计算机科学、数学、心理学、神经科学等,旨在创造出能够表现出类似人类智慧的机器系统。

关键特征和能力:

  1. 感知和认知: 人工智能系统能够感知和理解环境中的信息,包括视觉、听觉、触觉等感知方式。
  2. 学习能力: 人工智能具备学习的能力,可以通过处理大量数据来提高性能,不断优化自身的表现。
  3. 推理和决策: AI系统能够推理和进行决策,基于已有知识和经验来解决问题,并在不断学习的过程中改进决策能力。
  4. 自主行动: 一些高级人工智能系统具备自主执行任务的能力,可以执行特定的动作或操作。
  5. 自然语言处理: 能够理解和生成自然语言,使机器与人进行沟通和交流。

1.2 发展历史

在网上搜到一张图,看着比较直观

2.前期准备

2.1 Python基础

在学习人工智能之前,需要先学习Python基础方面的知识,因为Python和其他语言相比较,在人工智能方面的生态圈还是比较完善的,很多东西都可以说是:拿来就用,对于想快速上车的我们,非常有帮助。这也是前期我为什么花时间先学习Python的原因,下面是以往学习Python整理的文章,希望对你有用:

Python学习系列文章: http://mp.weixin.qq.com/mp/homepage?__biz=MzI5MDAzNTAxMQ==&hid=22&sn=85598fd25625a6940ddabe81a44da822&scene=18#wechat_redirect

2.2 心理准备

当我们准备想了解或者学习人工智能时,经常会听到或者看到各种各样的名词,如: 机器学习、深度学习、神经网络、自然语言处理、计算机视觉、强化学习、自动驾驶、模型训练等等。上面这些还算好的,网上搜一搜也能知道什么意思,最大的拦路虎可能是高数相关或者算法相关的,比如: 线性代数、微积分、概率论、梯度下降、决策树、朴素贝叶斯….

@提示: 当我第一次看到上面的行业术语后,头特别挺大;感觉学习完全无法下手,再加上我高数和算法都很渣,甚至都想放弃….,好在后来调整了心态: 车子会开就行,不一定非得会造车~

2.3 知识图谱

下面图片是在网上搜索而来,从图片上可以很清晰的看出: 人工智能、机器学习、深度学习之间的关系,以及每个领域内包含的重点知识,对于初步认识AI的我们,有很大的帮助。在这里由衷的感谢前辈们的知识整理和分享~

3.深度学习框架

不管学习什么语言,一般情况下,我们都需要掌握一个框架,因为框架可以帮我们实现很多功能;深度学习也是一样,深度学习框架可以简化和加速深度学习模型的设计、训练和部署过程,使我们能够更容易地构建、调整和优化神经网络模型。

3.1 主流框架

下面简单介绍下,市面上比较主流的深度学习框架:

  1. TensorFlow:

    • 特点:Google开发,是目前应用最广泛的深度学习框架之一。
    • 优势: 强大的生态系统、支持多平台(CPU、GPU、TPU)和灵活的部署选项,广泛应用于学术界和工业界。TensorFlow 2.0版本更注重简化API和提高易用性。
    • 应用: 适用于各种深度学习任务,包括图像处理、自然语言处理等。
  2. PyTorch:

    • 特点:Facebook开发,被广泛用于学术界和研究领域。
    • 优势: 动态计算图、易于调试、直观的API设计,广受研究者和实践者欢迎。
    • 应用: 适用于研究、原型设计以及在学术界的深度学习项目。
  3. Keras:

    • 特点: 原本是独立的深度学习库,后来整合到TensorFlow中,也支持其他后端引擎。
    • 优势: 简洁、易用、高层抽象,适合初学者和快速原型设计。
    • 应用: 广泛用于构建各种深度学习模型,尤其在快速迭代和实验阶段。
  4. MXNet:

    • 特点: Apache基金会支持的深度学习框架,以灵活性和高性能而著称。
    • 优势: 动态和静态计算图、支持多种编程语言(Python、Scala、Julia)。
    • 应用: 在工业界和学术界都有广泛应用,尤其在大规模和分布式训练方面表现优异。
  5. Caffe:

    • 特点: 专注于卷积神经网络(CNN)的深度学习框架,适用于图像识别任务。
    • 优势: 高效、简单,适合特定领域的深度学习任务。
    • 应用: 主要用于计算机视觉领域,如图像分类和物体检测。
  6. Theano:

    • 特点: 是早期的深度学习框架之一,提供高效的数学表达和GPU加速。
    • 优势: 强调数学表达的优雅性和效率。
    • 应用: 在早期深度学习研究中有一定影响,但由于后续框架的发展,已逐渐减少使用。

@注意: 上面虽然介绍很多主流框架,单是经常被提起且热度比较高的框架只有:TensorFlow、PyTorch

3.2 两者之争

往大了说是深度框架选择,往小了说就是: TensorFlow、PyTorch二选一;下面简单对比下两者的区别:

功能点 TensorFlow PyTorch
计算图 使用静态计算图,需要先定义整个计算图结构,然后执行 使用动态计算图,允许在运行时动态构建和修改计算图
灵活性与易用性 TensorFlow 2.0 引入了更加易用的 Keras API,使其更接近PyTorch的动态图风格 以直观、灵活的动态图风格而著称,更容易上手,尤其适合实验和原型设计
可视化工具 TensorBoard 是 TensorFlow 的可视化工具,用于分析和调试模型 提供了一些内置的可视化工具,同时也支持使用 TensorBoard
部署和生态系统 TensorFlow ServingTensorFlow Lite 等工具用于模型的生产部署。具有广泛的生态系统和支持 TorchServeTorchScript用于模型部署,生态系统较TensorFlow相对较小。
社区和文档 TensorFlow有庞大的社区和广泛的文档资源,适用于各种应用和场景 虽然社区较TensorFlow小,但仍然活跃,而且 PyTorch 的文档和教程通常被认为更易读
产业应用 在工业界有更广泛的应用,尤其在大规模生产环境中 更受研究机构和学术界欢迎,也在产业界逐渐得到应用

@说明: 对于TensorFlow、PyTorch二选一这种说法,适用于刚学习AI的前期,后期还是两个框架尽量都要会的。只是哪个先学哪个后学的而已..

3.3 框架选择

对于初学者的我们,在网上搜索一圈后,基本上都是推荐我们应该选择PyTorch,原因如下:

  • 基于Python: PyTorch是基于Python编写的,这使得它更容易于学习和使用,尤其是对于初学者来说。Python是一种简单易学的、易于扩展和易于维护的编程语言,可以帮助初学者快速入门深度学习。
  • 易用性: PyTorch提供了简单的API,使得初学者可以轻松地构建神经网络和完成深度学习任务。这使得初学者可以专注于学习深度学习的概念和技术,而不必过多关注底层实现细节。
  • 灵活性: PyTorch具有高度的灵活性,支持多种网络结构和优化算法。这使得初学者可以根据需要自定义模型,并学习各种不同的深度学习技术。
  • 社区支持: PyTorch拥有活跃的社区,提供了丰富的资源和教程,帮助初学者快速学习和解决问题。这使得初学者可以在遇到困难时获得快速帮助和建议。
  • 适用于各种任务: PyTorch支持各种深度学习任务,包括计算机视觉、自然语言处理、推荐系统等。这使得初学者可以根据实际需求学习和应用PyTorch

综合考虑,初学者可以从 PyTorch 入手,掌握深度学习的基本概念和技能,然后再考虑学习其他框架以丰富自己的技能。随着经验的增长,你可能会发现在不同的项目中选择不同的框架更为合适。