训练术语
欠拟合
欠拟合是指模型没有很好地捕获到数据特性,不能完整地表示数据的全部信息,也就是模型的复杂度低于应有的水平。例如,假设一个数据集实际上服从二阶多项式分布,但我们使用一阶线性模型去拟合它,这样的模型就会出现欠拟合。由于模型过于简单,它在训练集上的预测表现就会很差。
过拟合
过拟合则是模型过于复杂,以至于模型不仅学习到了数据的一般性质,而且还学习到了一些特殊情况,或者是噪声数据。这样的模型在训练集上的表现可能会非常好,然而但是在新的、未见过的数据上,也就是测试集上,因为模型已经把一些特定的、不具有普遍性的规律也考虑进来,导致预测表现往往会变差。因此,过拟合是指模型的复杂度超过了应有的水平。
在实际的模型训练过程中,我们需要通过一些方法来处理欠拟合和过拟合的问题,如增加数据量、降低模型复杂度、添加正则项、早停等,从而使得模型能更好地理解和预测未见过的数据。
噪声
在数据科学和机器学习中,"噪声"是指数据中的一些随机或不确定的变动。有时,它们可能来自于测量错误或者是数据的收集过程中的一些不可避免的随机性。例如,一个传感器在特定时间收集的温度数据可能会受到一些外部因素的影响,如突然的风、阳光等,这就会导致数据包含噪声。
在机器学习中,如果一个模型被训练成对这些噪声也进行学习和预测,通常就会导致过拟合,也就是说,模型在训练集(包含噪声)上表现得很好,但在新的、未见过的无噪声数据上,表现就会变差。
因此,我们在训练模型时通常会尽量避免模型去学习这些噪声,这就需要使用一些技术,如提前对数据进行清洗和预处理,使用正则化等方法。这样,模型就可以更好地抓住数据中的主要变动和真正的规律,而不是无关紧要的噪声。
正则化
正则化是在机器学习模型中避免过拟合的一种技术。它通过引入一个惩罚项(即正则项)来限制模型的复杂度,以此来提防模型过度依赖训练数据,捕获数据中的噪音信息而导致过拟合现象。
两种常见的正则化方法是L1正则化和L2正则化,通常它们会被加到损失函数中:
- L1正则化:它是将模型所有参数的绝对值之和作为惩罚项加到损失函数中。L1正则化的特点是会使得部分模型参数为零,从而实现模型参数的稀疏,起到特征选择的作用。
- L2正则化:它是将模型所有参数的平方和作为惩罚项加到损失函数中。L2正则化的特点是会使得模型参数均小且接近零,但并不会准确地让一部分参数为零,它有助于防止模型对单一样本过度敏感,实现平滑化。
那么,为什么添加了正则化之后可以防止过拟合呢?过拟合在很大程度上是由于模型过度复杂,学习了数据中的噪声,而正则化限制了模型的复杂度,使得模型不能完全依赖于训练数据的每一个细节,从而减轻了过拟合的问题。同时,由于正则化惩罚了大的参数值,使得模型参数无法过大,降低了模型复杂度,使得模型在新的未知数据上的表现更佳,提高了模型的泛化能力。
感受野
感受野是神经网络中的一个重要概念,特别是在卷积神经网络(Convolutional Neural Networks, CNN)中。它指的是对于网络中特定一层的一个神经元,其在输入数据中能“看到”或“感知到”信息的区域大小。
更具体来说,感受野可以被定义为对于卷积网络某一层的任何一个特定的输出特征图的像素点,其在输入图像上映射的区域的大小。
举个例子,对于一个普通的卷积网络的第一层,如果我们采用3x3的卷积窗口,那么每一个神经元的感受野大小就是3x3。对于后续的网络层,其感受野的计算会更复杂一些,必须考虑前面所有层的卷积核尺寸和步长等因素。
在图片识别任务中,感受野的概念非常重要,因为感受野决定了神经元能够获取到多大范围的上下文信息。太小的感受野可能会导致神经元只能获取到局部的,孤立的特征,而无法获取到更大的上下文信息。反之,感受野太大,可能又会导致神经元获取到了太多的信息,使得模型变得复杂,难以训练。
神经网络
感知机(感知器)
感知机(Perceptron)是一种最简单形式的前馈神经网络,是二分类(binary classification)线性分类器(linear classifier)的一种。(注意,感知机又被叫做Rosenblatt感知器,是Rosenblatt发明的。)
其模型基于一个假设:输入数据被线性可分。换句话说,在二维空间中,两分类的数据可以被一条直线分隔;在三维空间中,可以被一个平面分隔;在更高维度的空间,可以被一个超平面分隔。
感知机的原理可以理解为这样的过程:
- 每个神经元接收到信息后,通过与加权进行计算(权重 w 与输入 x 的点积),再加上偏置值 b。
- 计算出的结果作为激活函数(比如阶跃函数等)的输入,输出一个二分类结果。
如果我们把感知机比作一个接受信息、处理信息并做出决策的“神经元”模型的话,那么深度学习其实就是大量这样的“神经元”按照一定的结构连接、组织起来,形成“神经网络”,共同进行更复杂的任务。
感知机的经典模型图:
FNN
前馈神经网络(Feedforward Neural Networks,FNN)是一种基本的神经网络架构,在这种网络中,数据或信号仅在一个方向上流动,从输入开始经由隐藏层至输出结束。不存在环路,即当前层的输出不会反馈到当前层或之前的任何层,这是“前馈”这一术语的含义。
FNN主要包含三个部分:
- 输入层:因为FNN处理的原始数据是以向量的形式表示的,所以输入层的职责就是接收这些原始输入数据。对于图片来说,原始数据通常是每个像素的灰度值(对于彩色图片则是RGB值)。
- 隐藏层:这些层中的每一层都由多个神经元组成,每一层都接收前一层的输出作为输入并产生新的输出。隐藏层的神经元将前一层的输出与一组权重相乘,并将结果传递给一个激活函数如ReLU(Rectified Linear Unit)或sigmoid等非线性函数。
- 输出层:最后一层隐藏层的输出会被送到输出层。输出层的结构取决于具体的任务,如对于二分类问题,通常有1个神经元输出,对于多分类问题则有多个神经元(每个神经元对应一个类别)。
通过这种架构,FNN能够学习输入和输出之间的复杂模式。需要注意的是,FNN的训练通常使用称为反向传播(Backpropagation)的算法,通过梯度下降的方式不断调整网络中的权重和偏置,以最小化网络预测的输出和实际输出之间的差距。
总的来说,FNN是最初和最简单的深度学习模型,它是许多其他更复杂模型的基础,如卷积神经网络(CNN)和循环神经网络(RNN)。
感知机和前馈神经网络很相似,事实上,可以把感知机看作是前馈神经网络的一种最简单的情形。
这个模型其实就是一个感知机。它接收一组实数输入,计算输入与其权重的点积,然后通过激活函数输出结果。
在这个意义上,感知机就是一种最基础的、没有隐藏层的前馈神经网络。当我们添加更多的隐藏层,以及在隐藏层和输出层使用非线性的激活函数,我们就得到了深度神经网络,也就是我们现在理解的深度学习模型。
感知机和前馈神经网络的关系可以这样定义:感知机是最简单的前馈神经网络,而一个前馈神经网络可以看作是由多个感知机堆叠(或者更准确的说,组合)而成。
McCulloch-Pitts神经元模型,Rosenblatt感知器(感知机) 和 FNN之间的关系如下:
M-P,感知机,FNN 发展历史首先是McCulloch-Pitts神经元模型。这个模型最早由McCulloch和Pitts在1943年提出,是最基础的神经网络结构,也是最早模拟大脑神经元活动的模型之一。根据这个模型,多个二进制输入经过加权输送,然后和阈值比较,最后输出0或者1,进行简单的逻辑判断。但这个模型过于简化,只能处理简单的逻辑运算,并且没有包含学习机制,不能进行复杂功能的拟合。
然后是Rosenblatt感知器,也叫感知机。Rosenblatt在1957年提出了感知器模型,是第一个带有学习算法的人工神经网络模型。它对McCulloch-Pitts神经元模型进行了扩展,除了接收实数输入和权重,还引入了阈值作为偏置输入,并采用了阶跃函数作为激活函数以实现线性可分。更重要的是,它能通过一种简单的反馈学习机制根据需要调整权重和偏置以优化模型输出。但单层感知机仍然有明显的局限性,例如无法解决XOR问题。
最后是前馈神经网络(FNN)。在1980年代开始发展的深度学习领域,最核心的模型结构是前馈神经网络。它可以看作是由多个感知器堆叠而成的复杂网络,包含输入层、隐藏层和输出层。一个重要的改进是在神经元中引入了非线性激活函数(如sigmoid函数、tanh函数或ReLU函数等),这使得网络能够逼近任意复杂度的函数,大大提高了模型的表达能力。深度神经网络即在此基础上发展出来的,通过加深网络的层次,可以处理更复杂的任务,比如图像分类、语音识别等。
总的来说,这三个模型体现了从简到繁,从浅到深的发展趋势,是人工智能发展历程中的重要里程碑。从早期模拟生物神经元结构,到提出学习和优化的模型,再到深层次复杂任务的模型,每一步都是基础研究和应用需求的共同推动结果。
CNN
CNN,全称卷积神经网络(Convolutional Neural Networks),是一种深度学习的网络架构,特别擅长处理像素网格形式的数据,如图像。
CNN的特点是其结构中包含了卷积层(Convolutional Layer),这类层使用滑动窗口(也被称为卷积核或滤波器)在输入数据上进行卷积操作以学习局部特征。例如,在图像处理任务中,卷积层可能会学习到边缘,颜色斑点,纹理等本地特征。
接下来是池化层(Pooling Layer),它用来降低数据的维度以减少计算量和避免过拟合,同时保持了图像的主要特征。
这两种层级通常会在网络中交替出现,允许网络在不同的抽象级别上学习特征。比如在卷积神经网络的早期,网络可能会学习简单的边缘和纹理等特征;在后面的层级,当这些简单的特征经过更多的卷积和池化层后,可以组合成更复杂的、高级的特征。
在这些卷积和池化层之后,通常接着一个或多个全连接层(Fully Connected Layer),用于将学习到的特征映射到最终的输出类别。
总的来说,卷积神经网络有以下一些重要的优点:
- 参数共享:对于图像中的所有位置,卷积层使用相同的参数进行运算,这大大减少了模型的参数数量,也使得模型在不同位置具有相同的感知能力。
- 适用于网格形式的数据:CNN在处理网格形式的数据(如图像等)方面表现良好,在其它领域也得到了广泛的应用,例如语音识别和自然语言处理等。
- 层级结构:通过卷积层和池化层的交替堆叠,CNN能在多个尺度上提取特征,并自动学习出层次化的特征表示。
RNN
RNN,即循环神经网络(Recurrent Neural Networks),是一种具有“记忆”功能的神经网络模型,能够处理时间序列或者序列数据。它的核心思想是在模型中引入循环,使得信息可以在序列的各个位置之间传递。
如同我们在智能手机上打字输入时,下一个字母的出现经常受到前面字母的影响。RNN就有着处理这种问题的能力,因为它的网络结构充分考虑了数据在时间序列维度上的依赖关系。
RNN的主要特点是:
- 神经元之间可以构成有向环。每个神经元的输出可以直接或者通过其它神经元影响自己的未来状态,形成一种“记忆”机制。
- 共享参数,即在不同时刻的网络参数是一样的。这种设计使得RNN在处理长度可变的输入序列时具有更高的效率和准确性。
RNN的一个重要变种是长短期记忆网络(LSTM),它通过引入一个复杂的门控机制来解决RNN在处理长序列时可能出现的梯度消失或梯度爆炸问题。
LSTM
LSTM,全称为长短期记忆网络(Long Short-Term Memory),是一种特殊的循环神经网络(RNN),它是为了解决常规RNN在处理长程依赖问题时容易出现的梯度消失的问题。
LSTM的主要思想是在网络中添加一个称为"门"的结构: 遗忘门(Forget Gate),输入门(Input Gate),和输出门(Output Gate)。这些"门"结构可以帮助网络决定何时应该忘记旧的信息,以及何时该在状态中存储并记住新的信息。
LSTM的结构如下:
- 遗忘门:它决定了网络什么时候要忘记之前的隐藏状态。当遗忘门的值接近0时,网络会选择忘记之前的隐藏状态。
- 输入门:它决定了什么样的新输入信息会被纳入到当前的隐藏状态中。输入门的值越接近1,该位置的新输入信息就越可能会被记录。
- 输出门:它决定了当前时间步的输出是什么,基于当前的输入和隐藏状态。
- 单元状态:这是LSTM的"记忆部分"。每一个时间步长的单元状态都由前一个时间步的单元状态、当前步长的遗忘门,和当前步长的输入门共同决定。这样,网络就可以决定保留哪些长期和短期的记忆。
LSTM相较于基础的RNN,具有更好的长程信息处理能力,成为序列预测,序列生成,时间序列分析等任务中的首选模型,例如在自然语言处理中的文本生成,机器翻译,语音识别等任务中,LSTM都发挥了重要的作用。
GAN
GAN神经网络,全称为生成对抗网络(Generative Adversarial Networks),是深度学习领域一种非常强大的生成模型。这种网络模型由两部分构成,生成器与判别器。
生成器的任务是生成数据。例如,我们可以将一些随机分布(如正态分布)的数据输入生成器,生成器就会输出我们需要的数据(如图像、音频等)。而判别器的任务则是对生成器生成的数据进行判断,来看这些数据是否真实。例如,判别器需要来评估生成器生成的图像是否像真实的图像。
在训练过程中,生成器和判别器是处于对抗的关系。生成器的目标是生成足够逼真的数据以骗过判别器,而判别器的目标则是尽可能准确地判断出生成器生成的数据与真实数据的区别。通过这种对抗的方式,生成器会逐渐学习到如何生成更逼真的数据,而判别器也会越来越好地区分真实数据和生成的数据。
当GAN神经网络训练到一定程度后,生成器可以生成非常逼真的数据,到了难以用肉眼分辨的地步。这也是GAN的强大之处。
学习类型
监督学习
监督学习是一种机器学习的方式,它使用包含输入和对应输出(也被称为标签)的训练数据来训练模型。模型学习的目标是,给定一个新的、未见过的输入,能够根据学习到的知识准确地预测出对应的输出。
在监督学习中,我们有一个明确定义的任务,并且训练数据中包含了如何完成该任务的答案。例如,我们可能拥有一些电子邮件数据,标签可能表示这些邮件是否为垃圾邮件。然后,我们的目标是学习一个模型,这个模型能够根据新的电子邮件内容预测其是否为垃圾邮件。
为了达成这个目标,模型会试图找出输入数据(电子邮件内容)和输出数据(是否为垃圾邮件)之间的关联,并通过训练来不断调整以使预测结果更接近真实结果。算法会优化一个所谓的损失函数,这个函数表示了模型预测结果与训练数据中的真实结果之间的差异。
监督学习的常见应用包括信用评分、垃圾邮件检测、医疗诊断等,它被广泛使用在复杂的决策任务、预测任务中。
半监督学习
半监督学习是一种机器学习方法,介于监督学习和无监督学习之间。在训练阶段,除了如同监督学习那样使用标签数据外,半监督学习还使用大量未标记的数据。
遵循着“同类项目聚在一起”的假设,半监督学习试图在训练过程中挖掘未标记数据中的潜在结构或分布信息,从而帮助提升模型的泛化能力。实际上,大部分真实世界的数据集中,标记数据通常是稀缺且代价高昂的,而未标记的数据则通常量大易得。
其思想大致如下图所示,通过利用未标注的数据,我们可以更好地找到决策边界:
想象成我们要区分两种颜色的球(代表两种类别),每种颜色都有一些球(标注数据),但还有许多我们不知道颜色的球(未标注数据)。监督学习只看到有颜色的球,尝试找到两种颜色球的分界地点。但半监督学习还会看到无色的球(未标注数据),尝试根据所有球的位置找到一个更自然的边界线。
半监督学习通常用于自然语言处理、图像识别等领域,其中获得标签信息可能代价较大但未标记的数据量大且易获得。
无监督学习
无监督学习是一种机器学习方法,它主要通过挖掘输入数据自身的结构或者规律来训练模型。与监督学习不同的是,无监督学习在训练过程中,并不依赖于标签(或者说目标输出)。
具体来说,无监督学习会尝试寻找数据中的模式、聚类结构或者分布。比如,常见的聚类算法就是一种无监督学习方法,它试图根据数据的相似性把它们分为不同的组,这个过程中并不需要事先知道任何类别信息。
另外一个常见的无监督学习任务是降维,比如主成分分析(PCA). 这类算法尝试找到可以保留数据主要变化特征的低维空间,有助于我们理解数据的结构以及进行可视化。
而自监督学习可以看作是无监督学习的一个子集,它使用输入数据生成标签,然后以类似监督学习的方式训练模型。
无监督学习主要应用于那些我们并不完全了解内在规律的场景,或者在标签信息难以获得的场景,比如异常检测,聚类分析等。
强化学习
强化学习是机器学习中的一种独特的类型,其目标是让智能系统(通常称为agent)通过在环境中采取行动并获得反馈(即奖励或惩罚)来学习最佳策略。
强化学习的基本思想可以比作是训练一只宠物。比如训练一只小狗来取回投出的球。如果小狗正确地执行了这个动作,我们会给予奖赏,比如食物或者鼓励,这就相当于正反馈。如果它没有执行预期的动作,我们可能就会表现得不那么热情,甚至可能给出一些负面的反馈,比如说“不”。通过这样的系统反馈,小狗最终会学会我们期望它去做的事。
强化学习的过程也是相似的。智能系统会在一个环境中采取行动,然后环境会给予反馈。如果行动成功,系统会获得一个正的奖励。如果行动失败,系统可能会获得一个负的奖励(或者说惩罚)。最终,系统的目标是通过尝试和学习找到能够最大化奖励的策略。
一个著名的强化学习的应用就是AlphaGo,通过强化学习成功地学习了打围棋,并在2016年击败了人类的世界冠军。这是迈向通用人工智能的一个重大步骤。
自监督学习
自监督学习是一种机器学习的方法,在这种方法中,训练标签直接从输入数据中生成,因此不需要大量人工标注。在自监督学习中,我们设计了一种预测任务,利用这种任务从输入数据中学习有用的特征或 pattern。
自监督学习可以应用在监督学习和无监督学习的情景中。例如,在监督学习中,可能将没有标注的数据与少量标注数据一起使用,通过学习无标签数据中的模式来提高对有标签数据的预测。在无监督学习中,例如聚类和降维,自监督学习可以帮助我们更好地理解数据,使模型更有解释性。
举个例子,自监督学习在自然语言处理中的一个应用就是"掩码语言模型",模型需要预测在一个句子中被掩盖的部分。这个预测任务可以让模型理解词汇、短语的语义以及它们在句子中的作用,从而可以把这个模型用作其它任务的基础,比如文本分类或者情感分析等。著名的BERT模型就是运用了这种学习方法。
架构
transformer/注意力机制
Transformer是一种在深度学习中进行序列到序列(Sequence to Sequence,简称Seq2Seq)任务的模型架构。最早由Google在2017年的论文"Attention is All You Need"中提出。在许多自然语言处理任务中,特别是机器翻译,文本摘要等任务中展现出了卓越的性能。
Transformer的主要特点是其全面使用了注意力机制(attention mechanism),尤其是自注意力(self-attention)或者称为变换注意力(transformer attention),并且摈弃了传统的序列处理模型如RNN,LSTM中的循环(recurrent)和卷积(convolution)结构。
这种独特的结构使得Transformer具有以下一些优点:
- 强大的并行处理能力:由于移除了序列模型中的循环结构,序列中的每个元素能够同时得到处理,从而大大提高了计算的并行性,并避免了梯度消失问题。
- 对远程依赖关系的处理:在循环和卷积网络中,信息要经过多步操作才能从一端传播到另一端。Transformer的自注意力机制使得任何两个序列位置都可以直接相互影响,因此是更好的捕获序列的远程依赖关系。
Transformer的基本单元由两部分组成: 自注意力机制层(self-attention layer)和前馈神经网络层(feed-forward neural network layer)。在实际中,我们通常采用多层这种基本单元堆叠起来形成的深度模型。
Transformer论文中的原始模型,也被称为Transformer-base,由6个这样的单元层叠加而成。这个深度模型被分为两部分:编码器(Encoder)和解码器(Decoder)。编码器用于理解输入序列,解码器用于生成输出序列。