大概4年前本专栏发布了一篇关于神经网络的入门科普文章,到现在大概有小5k赞了(Mr.看海:神经网络15分钟入门!足够通俗易懂了吧)。
这几年人工智能发生了突飞猛进的发展,时至今日甚至发展出了GPT-4、Midjourney这样逆天的应用。专栏这些年一直在策划开启深度学习的系列化教程,奈何之前的括号先生挖的坑太多,所以一直在填模态分解、时频域分析、特征提取、降维等等方面的内容。最近终于把想讲的、该讲的差不多讲完了,所以从今天开始,本专栏将正式开启深度学习专题!
诚然现在网络上将深度学习的教程多如牛毛,不过我依然想把这部分内容完整梳理一遍,并希望能够尽可能直观地、生动地、全面地对深度学习的各种方法的方方面面进行讲解,会涵盖各种网络基本原理的讲解、MATLAB和python代码的实现、常见问题的解惑等等,深度学习的专题是一个比较庞大的选题,尤其配备的代码还需要反复校验与注释封装,所以文章更新可能会是一个比较长期的过程。
本篇作为专栏的第一篇,先来聊一聊深度学习是什么、能干什么、要怎样学?
https://fuxi.163.com/database/39
一、深度学习是什么?
我们常常会听到几个名词:神经网络、人工智能、深度学习、机器学习,这几个概念有什么区别呢?
人工智能是一门研究和开发智能机器的科学和技术。它旨在使机器能够模拟和展现人类的智能行为,如感知、理解、推理、学习和决策等。人工智能的目标是创造具有自主思考和学习能力的机器,使其能够完成复杂的任务并模仿人类的认知能力。人工智能的范畴在这几个概念中是最广的。
机器学习是实现人工智能的一种方法。机器学习是研究如何让计算机系统通过数据和经验自动学习和改进性能的领域。它使用各种算法和模型,包括神经网络,来训练机器从数据中学习规律和模式,以完成特定任务。通常可以认为机器学习属于人工智能的范畴。
神经网络是一种受到人脑神经系统启发的计算模型。它由大量的人工神经元组成,这些神经元通过连接权重相互连接,形成一个复杂的网络结构。神经网络可以通过学习和调整连接权重来处理输入数据,进行模式识别、分类、预测等任务。神经网络属于人工智能,也属于机器学习,但是要注意,并不是所有机器学习都是神经网络模型,比如支持向量机、决策树等等。
深度学习是以多层次的神经网络为基础,每一层的输出作为下一层的输入,形成层层传递和处理数据的结构。深度即层数,我们通常将很多层的神经网络模型称为深度学习,但是多少层以上算是深度学习呢,有说三层的,也有说八层的,没有一个很标准的说法,反正现在的深度学习网络层数是越来越多了。
所以这四个概念的包含关系大概是这样的:人工智能>机器学习>神经网络>深度学习
本专题我们将聚焦深度学习,但是强烈建议大家读一下本专栏之前写的两篇关于神经网络的基础科普文章,
- Mr.看海:神经网络15分钟入门!足够通俗易懂了吧
- Mr.看海:神经网络15分钟入门!——反向传播到底是怎么传播的?
这两篇是我们讲解深度学习的基础,理解了文章里的内容,基本就对于神经网络是什么、是怎样实现的有一个整体的认知,在后边的文章中有很多重复的概念我将不再复述。
那么总结一下,深度学习是什么呢?
- 它是机器学习的一个分支,是一种基于人工神经网络的机器学习方法,旨在模仿人脑神经网络的工作方式,以实现对大规模数据进行学习和建模的能力。
- 它通过构建多层神经网络,(通常)通过大量的数据和反向传播算法来自动学习数据的特征表示和模式。
- 它的核心思想是利用多层神经网络的非线性变换能力,逐层提取数据的抽象特征表示。每一层神经网络都通过简单的线性和非线性变换将输入数据转化为更高级别的特征表示,从而逐步实现对数据的深层次理解和建模。这种层层叠加的结构使得深度学习模型能够处理和学习复杂的特征和关系,从而在许多领域取得了出色的性能。
二、深度学习能干什么?
深度学习的应用已经深入到我们生活的方方面面,比如进画画草草的拍照识图、比如金融市场的量化交易、比如车辆自动驾驶、比如某音上“这个男人叫小帅”这种语音合成、比如像“中国队勇夺世界杯”这种虚空作画。
AI创作的“中国队勇夺世界杯” 图片来源:https://k.sina.cn/article_2437958991_p91504d4f02702fh7l.html
如果从本质上进行总结,常见的深度学习应用大概可以分成几大类:
1.分类:这可能是深度学习最常见的应用之一。在分类任务中,模型需要预测输入数据属于哪一个类别。例如,对于一张图像,模型可能需要预测图像是猫还是狗。其他的例子包括垃圾邮件检测(判断邮件是否为垃圾邮件)以及情感分析(判断一段文本的情感倾向是积极还是消极)。
猫狗图片分类识别 https://www.zhaoyabo.com/?p=4104
2.回归预测:在回归任务中,模型需要预测一个连续的数值,而不是一个类别。例如,根据一个房屋的特征(如面积、位置和房龄等)来预测其价格。
https://xueqiu.com/7239700492/146811654
3.时间序列预测:在时间序列预测任务中,模型需要预测序列中的下一个元素或一系列元素。例如,根据过去几个月的销售数据来预测下个月的销售量,比如股市走势预测。时间序列预测也可以是做回归预测的一种,但时间序列预测更加专注于处理具有时间依赖性的数据。
https://www.chaogu1688.com/1245.html
4.生成模型:生成模型是深度学习中的一个重要任务,目标是学习并理解输入数据的分布,以便生成新的数据样本。比如,生成对抗网络(GANs)就是生成模型的一种,被广泛用于生成类似真实的图像、音乐、语音等。 GPT主要涉及的任务类型是生成模型任务。
与机器人对话 https://www.bbc.com/news/technology-63861322
5.强化学习:强化学习是一种模型在环境中进行探索,并通过奖励和惩罚来学习如何实现其目标的机器学习方法。例如,训练一个游戏AI,如下棋或打电子游戏,以便它能够学习如何赢得比赛。
Dota世界冠军被OpenAI碾压,全程人类只推掉两座外塔 https://www.pingwest.com/a/186357
6.序列到序列(Seq2Seq)预测任务:这种类型的任务中,输入和输出都是序列,这种模型常见于自然语言处理领域,比如机器翻译、文本摘要等。
机器翻译 https://www.dataapplab.com/machine-translation-zhihu-ai-unemployment/
7.自然语言处理:深度学习在处理语音识别、情感分析、文本生成、问答系统等自然语言处理问题上表现出强大的能力。
情感分析 https://zhuanlan.zhihu.com/p/24944935
8.计算机视觉:深度学习已被广泛应用于目标检测、图像分割、人脸识别、3D物体重建等计算机视觉任务。
https://zhuanlan.zhihu.com/p/475512535
在上述分类中,任务类型往往不是完全相互独立的,而是有大量的交叉和融合。某些任务可能涵盖多个类型的元素,同时使用不同类型的技术来解决问题。比如chat-GPT需要理解用户的输入(自然语言处理),然后生成合适的响应(Seq2Seq预测),又比如自动驾驶系统需要使用到计算机视觉技术进行路面检测、行人检测等,同时还要通过强化学习来优化决策策略,以确保安全和有效地驾驶。如此种种,不一而足。
不过在本专栏中,我们会将有所侧重。我们将重点针对最常见的分类、回归预测和时间序列预测进行讲解和示范。其他应用方向可能会放在后边,在讲到相应的网络类型时再进行有针对性的讲解。
三、深度学习该怎样学?
深度学习是一个涵盖范围广泛的主题,涉及到数学、计算机科学和多种不同的技术。对于初学者来说,最有效的学习方法通常是边学边做。在理解理论的同时,通过编写代码和完成项目来实践并巩固你的理解。以下是一份为初学者设计的深度学习学习路径:
1. 数学基础知识
深度学习是一个高度数学化的领域,以下列出的数学知识是深度学习中必须掌握的:
- 线性代数:这是深度学习的基石,你需要理解向量、矩阵和张量的操作,这对理解神经网络的计算过程至关重要。同时,其他概念如特征向量、特征值等也会在某些场景中使用。
- 微积分:微积分在深度学习中的主要应用是用于优化。深度学习中常用的优化算法,如梯度下降,其背后的原理就是微积分。你需要了解导数、偏导数、梯度以及链式法则等概念。
- 概率论和统计:深度学习中的很多概念,如损失函数、正则化、Bayes推理,都需要概率论和统计知识的支持。理解概率分布(如高斯分布、伯努利分布等)、期望、方差、协方差、条件概率、贝叶斯定理等概念是非常重要的。
2.编程语言
同时,你需要熟悉至少一种编程语言。
Python是深度学习领域最常用的语言,有着大量的框架可以使用,以及海量的资料可以参考;
MATLAB则是(我认为)实现起来最简单的编程语言,可以快速实现你想做的研究。
在本专栏中我将使用python和MATLAB都进行深度学习的实现,在这过程中你可以挑选出自己更喜欢的方法。
3. 学习深度学习和神经网络
可能有些教程会在开始深度学习之前,讲解一些机器学习的内容,比如决策树、支持向量机等等,不过我人建议这些理论可以用到哪学到哪,否则这些繁杂的概念可能会成为学习路上擂起的第一道退堂鼓,况且其中很多概念在深度学习中是用不到的。
深度学习可以从前馈神经网络开始,然后是反向传播算法(这两篇已经写好了,就是这两个:神经网络15分钟入门!足够通俗易懂了吧、反向传播到底是怎么传播的?);
然后是卷积神经网络(CNN)、循环神经网络(RNN)以及深度信念网络、深度生成模型、深度强化学习等,要理解这些模型的工作原理和如何训练它们。
本专栏会带着大家一个个啃下它们。
4. 项目实践
理论学习的同时,务必动手实践。可以开始做一些简单的项目,例如手写数字识别(MNIST数据集)或者简单的图像分类(CIFAR-10数据集),或者时间序列方面可以预测一下股票走向(虽然不一定靠谱)。
5. 持续学习和关注新进展
深度学习是一个快速发展的领域,新的研究和技术不断涌现。因此,需要定期阅读新的研究论文和博客文章,关注最新的进展。
结语
以上是本专栏深度学习的开篇词,总之按照本专栏的内容,我会带着大家从零开始逐渐实现对深度学习的全面了解和掌握。
对该内容感兴趣的同学们欢迎关注本专栏:与信号处理有关的那些东东
同时我开了一个专门收录我写的神经网络及深度学习内容的专栏,也欢迎大家关注:看海的深度学习专栏
谢谢支持!