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