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