深度学习算法简介(jiè)
神经网络:基(jī)础
神(shén)经(jīng)网络是一个(gè)具有相(xiàng)互连接的节点的(de)计算系统,其节点的工(gōng)作方式更像是人脑中的神(shén)经元。这些神经元在它们(men)之间进行处理并传递信息。每(měi)个神经网络都是一系列的算法,这些算法试图通过(guò)一个模拟人类大脑运作的过程来(lái)识别一组数据(jù)中的潜在关系(xì)。
深度学(xué)习算法和经典(diǎn)神经网络(luò)之(zhī)间有什(shí)么区别呢?最(zuì)明显的区别是:深度学习中使用的神经网络(luò)具有更(gèng)多隐藏层。这些层位于神经元的第一层(即输(shū)入层)和最后一层(即输(shū)出层(céng))之间。另外(wài),没(méi)有必要(yào)将不同层(céng)的所有神(shén)经元连接起来。
您应该(gāi)知道的9种(zhǒng)深度学习算(suàn)法(fǎ)
#1反向传播
反向传播算(suàn)法是(shì)一种非常流(liú)行的用于训练前馈神经(jīng)网(wǎng)络的(de)监督学习(xí)算法。本质上,反向传播计算成本函(hán)数的导数(shù)的表达式(shì),它(tā)是(shì)每一层之间从左到右的导(dǎo)数乘积(jī),而每一层之间的权重梯度是对部(bù)分乘积的简单(dān)修改(gǎi)(“反向传播误差(chà)”)。
我们向网(wǎng)络提(tí)供数据,它产生一个输(shū)出,我们将(jiāng)输(shū)出与期望的输出进行比较(jiào)(使用损失(shī)函数(shù)),然后根据差异重新调(diào)整(zhěng)权重。然后重复此过程。权(quán)重的调整是通过一(yī)种称(chēng)为随机(jī)梯度下(xià)降的非线性优化技术来实(shí)现的。
假设(shè)由于某种(zhǒng)原(yuán)因,我们想识别图(tú)像中的(de)树(shù)。我们向网络提供任何种类的图像,并产(chǎn)生输出。由于(yú)我们知道图像是(shì)否实际上有一棵树,因此我(wǒ)们可以(yǐ)将输出与真实情况进行比较(jiào)并调整网络。随着我们传递越来越多的图像,网(wǎng)络的(de)错误就会(huì)越来越少。现在(zài)我们可以给(gěi)它提供一个(gè)未知(zhī)的图像,它将告诉(sù)我们该图(tú)像是否包含(hán)树。
#2前馈(kuì)神经(jīng)网络(FNN)
前馈(kuì)神经网(wǎng)络通常是全(quán)连接,这意味着(zhe)层中的(de)每个神经元都与下一层(céng)中(zhōng)的所(suǒ)有(yǒu)其他(tā)神(shén)经元相(xiàng)连(lián)。所描述的结构称为(wéi)“多(duō)层感知器(qì)”,起源(yuán)于1958年(nián)。单层感知器只能学习线性可分离的模式(shì),而多层感知器则可以学习(xí)数据之间的非线性(xìng)的(de)关系(xì)。
前馈网(wǎng)络(luò)的(de)目标是近似某个函数(shù)f。例如对于分类,=(x)将输入x映射到(dào)类别y。前馈网(wǎng)络定义了一个映射y = f(x;θ),并学习了(le)导致最(zuì)佳(jiā)函数逼近的参数(shù)θ的值。
这些模型(xíng)之所以称为前(qián)馈(kuì),是因为从x到定义f的中间计算,最后到(dào)输出y,没有反馈(kuì)连接。没有将模(mó)型的输(shū)出反馈(kuì)到自身的反馈连(lián)接。当前馈神经网络扩展为(wéi)包括(kuò)反馈连接时,它(tā)们称为循环(huán)神经(jīng)网络。
#3卷积神经网络(CNN)
卷积神经网(wǎng)络除了为机器人和(hé)自动驾驶汽车的视(shì)觉提供帮助外,还(hái)成功的(de)应(yīng)用于人脸识(shí)别,对象监(jiān)测和交(jiāo)通(tōng)标志识别等领域。
在数学(xué)中,卷积是一个函(hán)数越过另一(yī)个函数时(shí)两个函数重(chóng)叠多少的积分度量。
绿色曲(qǔ)线(xiàn)表示蓝色和红色曲线的卷积,它是t的函数,位置由垂直的绿色线表示。灰色区域表(biǎo)示乘积g(tau)f(t-tau)作为t的(de)函数,所以它的面(miàn)积作为t的函数就是卷(juàn)积。
这(zhè)两(liǎng)个(gè)函数在x轴上(shàng)每一点的重叠的乘积就是它们(men)的卷积。
在某(mǒu)种程度上(shàng),他们尝(cháng)试对前馈网(wǎng)络进(jìn)行正则化,以避免过度拟(nǐ)合(当模型只(zhī)学(xué)习预先看到的数据而不能泛化时),这使得他们能(néng)够很好(hǎo)地识(shí)别数(shù)据之(zhī)间的空间(jiān)关系。
#4循环(huán)神经网络(RNN)
循(xún)环神经(jīng)网络在许多(duō)NLP任务(wù)中都非常成功。在(zài)传(chuán)统的神经(jīng)网络中,可以理解所有输入和输出都是独立的。但是,对于许多(duō)任务,这是不合适的。如果要预(yù)测句子中的下一个(gè)单词,最好考虑一下它前面(miàn)的单词。
RNN之所以(yǐ)称为循环(huán),是因(yīn)为它们对序(xù)列的每(měi)个元(yuán)素执行相同(tóng)的任务,并且输出取决于先前(qián)的计算。RNN的另一种解(jiě)释:这些网(wǎng)络具有(yǒu)“记忆”,考虑了(le)先前的(de)信息。
例如,如果序列是5个单(dān)词的句子,则(zé)由5层(céng)组成,每个单(dān)词一(yī)层。
在(zài)RNN中定义(yì)计算的(de)公式如下:
x_t-在(zài)时间步(bù)t输入(rù)。例(lì)如,x_1可以是(shì)与句子(zǐ)的第二(èr)个(gè)单词相对应(yīng)的(de)one-hot向(xiàng)量。
s_t是步骤(zhòu)t中(zhōng)的隐藏状态。这是网络的“内存”。s_t作为函数取决于(yú)先前的状态(tài)和当(dāng)前输入(rù)x_t:s_t = f(Ux_t + Ws_ {t-1})。函数f通常是非线性的,例(lì)如(rú)tanh或(huò)ReLU。计算第一个隐藏(cáng)状态所需的s _ {-1}通常初始化(huà)为零(líng)(零向量)。
o_t-在步骤t退出。例如(rú),如果我们要预(yù)测(cè)句子中的单(dān)词,则输出可(kě)能是字典中的概率(lǜ)向量。o_t = softmax(Vs_t)
图像描述(shù)的(de)生成
与卷积神经(jīng)网络一起,RNN被用作模型的一部(bù)分,以生成未标(biāo)记图像(xiàng)的描述(shù)。组合模型将生成的单词与图像中的特(tè)征相结合(hé):
最常用的RNN类型是LSTM,它比(bǐ)RNN更好地捕获(存(cún)储)长(zhǎng)期(qī)依(yī)赖关(guān)系。LSTM与RNN本质上相同,只是(shì)它们具有不同(tóng)的(de)计算隐藏状态的方式。
LSTM中(zhōng)的memory称为cells,您可以将其视为接受先前状态h_ {t-1}和当前输入参数(shù)x_t作为输入的黑盒。在内部,这些cells决定保存和删(shān)除哪些memory。然后,它们将先前的状(zhuàng)态,当前memory和输入参数组(zǔ)合在(zài)一起。
这些类型的单元在(zài)捕(bǔ)获(存(cún)储(chǔ))长期依赖关系方(fāng)面(miàn)非常有效。
#5递归神(shén)经网络
递归神经网络是循(xún)环(huán)网络的另一种形(xíng)式,不(bú)同之处在于(yú)它们(men)是树形结构。因此,它们可以在训练数据集中建(jiàn)模(mó)层次结(jié)构。
由于其与二叉树、上下文和基于自然语言(yán)的解析器的关系,它们通常用于音频到文本转录和情绪分析等NLP应用程序中。然而,它们往往比递(dì)归网络慢(màn)得多
#6自(zì)编码器
自编码器可在输出处恢复输入信号。它们内部有(yǒu)一个隐藏层。自编码器设计为无法将输入准(zhǔn)确复制到输(shū)出,但是为(wéi)了使(shǐ)误差(chà)最小化,网络被迫学习选择最重要(yào)的特(tè)征(zhēng)。
自编码器可用于预训(xùn)练(liàn),例如,当(dāng)有(yǒu)分类任务且标记对(duì)太少时。或降低数据中的维度以供以(yǐ)后可视化。或者,当您只需要(yào)学(xué)习区分输入信号(hào)的有用属性时。
#7深度信念网络和受限(xiàn)玻尔兹曼(màn)机器
受限玻尔兹曼机是一个随机神经(jīng)网络(luò)(神经网络,意味着我们(men)有类似神(shén)经元的单元,其binary激活(huó)取决(jué)于它们(men)所连(lián)接的相(xiàng)邻单元;随机意味着这些激活具有概(gài)率性元(yuán)素),它(tā)包括:
可见(jiàn)单位层
隐(yǐn)藏单元层(céng)
偏差单元(yuán)
此外,每个可见单元连接(jiē)到所有的隐藏单元(这种连接是无向的,所以(yǐ)每个隐藏单元也(yě)连接到所有的可见单元),而偏(piān)差单元连接到所有的可见单元和所有的隐藏单元。
为了使学习更容易,我们对网络进行了限制(zhì),使任何(hé)可(kě)见(jiàn)单(dān)元都(dōu)不连接到任(rèn)何其他可(kě)见单元,任何隐藏(cáng)单元都不连接到任何其(qí)他隐藏(cáng)单(dān)元。
多个RBM可(kě)以叠加形(xíng)成(chéng)一个(gè)深度(dù)信念网络。它们看起(qǐ)来完全像全连接(jiē)层,但但是它们的训练方式不同(tóng)。
#8生成对抗网络(GAN)
GAN正(zhèng)在成(chéng)为(wéi)一种(zhǒng)流行的在线零(líng)售机器学(xué)习模型(xíng),因(yīn)为(wéi)它们能够以越(yuè)来(lái)越高(gāo)的准确度理解(jiě)和重建视(shì)觉内(nèi)容。用例包括:
从轮(lún)廓填充(chōng)图像(xiàng)。
从文(wén)本生(shēng)成(chéng)逼真的图像。
制作(zuò)产(chǎn)品原型的真(zhēn)实感描述。
将(jiāng)黑白图像转换为彩色图像。
在(zài)视(shì)频制作中,GAN可用(yòng)于:
在(zài)框架内模(mó)拟人类行为(wéi)和运动(dòng)的模式。
预测(cè)后续的视频(pín)帧。
创(chuàng)建deepfake
生成对(duì)抗网络(GAN)有(yǒu)两个部(bù)分:
生成器学习生成(chéng)可(kě)信的数据。生成的实例(lì)成为判别器的负面训练实例。
判(pàn)别器学(xué)会从数据中分(fèn)辨出生成器的假数据(jù)。判别(bié)器对(duì)产生(shēng)不可信结果的发生器进行惩罚。
建立GAN的第一步是识(shí)别(bié)所需的最终输(shū)出,并根据这些(xiē)参数收集初始训练数据集。然后将(jiāng)这些数据随机化并输入到生成器(qì)中,直到(dào)获得生成输出的基本精度为止(zhǐ)。
然后,将生(shēng)成(chéng)的图像与原(yuán)始概(gài)念的实(shí)际数据点一起(qǐ)馈入判别器(qì)。判别器对信息进行过滤,并返回0到1之间(jiān)的概(gài)率来(lái)表(biǎo)示每(měi)个图(tú)像的真实性(1与真(zhēn)相关,0与假相关)。然(rán)后检查(chá)这些值是否成功,并不断重复,直到达(dá)到预期的结果。
#9Transformers
Transformers也很新,它们(men)主要用于语言应用。它它们基于(yú)一个叫做注意力(lì)的(de)概念,这个概(gài)念被用(yòng)来迫使网络将注意力(lì)集中在特定的(de)数据点上。
由于LSTM单元过于复杂,因此可(kě)以(yǐ)使用(yòng)注意力机制根据其重要性(xìng)对输入的不同部分(fèn)进(jìn)行权衡。注意力机制(zhì)只不过是(shì)另一个具有权重的层,它的唯一(yī)目(mù)的是调整权(quán)重,使输(shū)入的(de)部分优先化,同(tóng)时排除其他部(bù)分。
实际上(shàng),Transformers由多个(gè)堆叠的编码器(形成编码(mǎ)器层),多(duō)个堆叠的解码器(解(jiě)码(mǎ)器层)和一堆attention层(céng)(self- attentions和encoder-decoder attentions)组成
Transformers设(shè)计用于处理诸如机(jī)器翻(fān)译和文本摘要之类的(de)各种任务的(de)有(yǒu)序数据序列,例如(rú)自然语言。如(rú)今,BERT和GPT-2是两(liǎng)个最著名的经过预先训练的自然语言系统,用于各种NLP任务中,它们都基于Transformers。
#10图神经网(wǎng)络(luò)
一般来说,非结构化数据并不适合(hé)深度学习。在许多实(shí)际应用中,数据是非结构化的,例如(rú)社交网络(luò),化合物,知识(shí)图,空间数据等。
图神(shén)经(jīng)网络的目的是对图数据进(jìn)行建模,这意味着它们识别图中节点之间的(de)关系,并对其进行数值(zhí)表示。它(tā)们以(yǐ)后可以在任何其他(tā)机(jī)器学习模型中用于各种(zhǒng)任(rèn)务,例(lì)如聚类,分类等。