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