你一定要知道的神经网络知识

作为当下最为火爆的深度学习算法,越来越受到学者们的重视,想要学好深度学习,就必须要求你掌握关于神经网络的知识,这是你通向大牛的基础,本文通过参阅资料整理出一些关于神经网络的概念,理解这些概念是你学习深度学习的前提要求,除了一些概念,还会介绍一些模型中的参数的意义下面一起来看看把。

1、神经网络基础

下面先看一下简单的神经网络结构(图片来源于网上)
在这里插入图片描述
上图显示了简单的神经网络结构,神经网络模型是源于人的大脑,比如当人获得信息以后,大脑里面的神经会对此信息进行处理,然后传递个下一个神经处理或者输出,据此,神经网络算法便是基于此而构建形成,比如上图中的x1,x2,x3表示我们的信息输入,这里对于新人可能会有些不理解,这些输入x1,x2,x3具体是什么啊,这里举个例子:
比如一条文本:‘我爱中国’,对文本分词以后会得到‘我 爱 中国’,然后对文本向量化处理,因为机器不认识文本,只认识数字啊,所以后面出现了词向量的方法,这里不再详细说,想知道的可以参看我的其他博客。这里就先用one-hot进行简单表示。比如‘我’[1,0,0]表示,那么这里的也就是[1,0,0]就是刚才说的x1,将x1传入网络就可以了,ok现在说其他的概念。

除了x1,x2,x3以外,还有个1,这里的1是bias(偏置向),目的是为了修正模型,除此之外你还会发现,第一列和第二列之间有很多的线,这些线就是权重,然后Layer3层之后的h(x)叫做激励函数,就是非线性函数,这是神经网络的关键所在。

每一层都有很多的源圆圈,这就是我们常说的神经元。上面简单介绍了一下模型结构,下面就针对这些概念以及模型原理进行阐述。

1.1 神经元

神经元(Neuron)——就像形成我们大脑基本元素的神经元一样,神经元形成神经网络的基本结构。想象一下,当我们得到新信息时我们该怎么做。当我们获取信息时,我们一般会处理它,然后生成一个输出。类似地,在神经网络的情况下,神经元接收输入,处理它并产生输出,而这个输出被发送到其他神经元用于进一步处理,或者作为最终输出进行输出。

1.2 权重

当输入进入神经元时,它会乘以一个权重。例如,如果一个神经元有两个输入,则每个输入将具有分配给它的一个关联权重。我们随机初始化权重,并在模型训练过程中更新这些权重。训练后的神经网络对其输入赋予较高的权重,这是它认为与不那么重要的输入相比更为重要的输入。为零的权重则表示特定的特征是微不足道的。
让我们假设输入为a,并且与其相关联的权重为W1,那么在通过节点之后,输入变为a * W1,如下图所示
在这里插入图片描述

1.3 偏差(bias)

除了权重之外,另一个被应用于输入的线性分量被称为偏差。它被加到权重与输入相乘的结果中。基本上添加偏差的目的是来改变权重与输入相乘所得结果的范围的。添加偏差后,结果将看起来像a* W1 +偏差。这是输入变换的最终线性分量。

1.4激励函数

一旦将线性分量应用于输入,将会需要应用一个非线性函数。这通过将激活函数应用于线性组合来完成。激活函数将输入信号转换为输出信号。应用激活函数后的输出看起来像f(a * W1 + b),其中f()就是激活函数

在下图中,我们将“n”个输入给定为X1Xn而与其相应的权重为Wk1Wkn。我们有一个给定值为bk的偏差。权重首先乘以与其对应的输入,然后与偏差加在一起。而这个值叫做u
U = Σ W ∗ X + b U =ΣW* X+ b U=ΣWX+b
激活函数被应用于u,即 f(u),并且我们会从神经元接收最终输出,如yk = f(u)
神经网络的25个必熟概念
常用的激活函数介绍

最常用的激活函数就是SigmoidReLUsoftmax
a ) S i g m o i d — — 最 常 用 的 激 活 函 数 之 一 是 S i g m o i d , 它 被 定 义 为 a)Sigmoid——最常用的激活函数之一是Sigmoid,它被定义为 aSigmoidSigmoid
在这里插入图片描述
Sigmoid变换产生一个值为0到1之间更平滑的范围。我们可能需要观察在输入值略有变化时输出值中发生的变化。光滑的曲线使我们能够做到这一点,因此优于阶跃函数。

b ) R e L U ( 整 流 线 性 单 位 ) — — 与 S i g m o i d 函 数 不 同 的 是 , 最 近 的 网 络 更 喜 欢 使 用 R e L u 激 活 函 数 来 处 理 隐 藏 层 。 该 函 数 定 义 为 : b)ReLU(整流线性单位)——与Sigmoid函数不同的是,最近的网络更喜欢使用ReLu激活函数来处理隐藏层。该函数定义为: bReLU线Sigmoid使ReLu

当X>0时,函数的输出值为X;当X<=0时,输出值为0。函数图如下图所示:
在这里插入图片描述
使用ReLU函数的最主要的好处是对于大于0的所有输入来说,它都有一个不变的导数值。常数导数值有助于网络训练进行得更快。

c ) S o f t m a x — — S o f t m a x 激 活 函 数 通 常 用 于 输 出 层 , 用 于 分 类 问 题 。 c) Softmax——Softmax激活函数通常用于输出层,用于分类问题。 cSoftmaxSoftmax
它与sigmoid函数是很类似的,唯一的区别就是输出被归一化为总和为1。Sigmoid函数将发挥作用以防我们有一个二进制输出,但是如果我们有一个多类分类问题,softmax函数使为每个类分配值这种操作变得相当简单,而这可以将其解释为概率。

1.4 输入层/隐藏层/输出层

正如它们名字所代表的那样,输入层是接收输入那一层,本质上是网络的第一层。而输出层是生成输出的那一层,也可以说是网络的最终层。处理层是网络中的隐藏层。这些隐藏层是对传入数据执行特定任务并将其生成的输出传递到下一层的那些层。输入和输出层是我们可见的,而中间层则是隐藏的。如下图所示
在这里插入图片描述

1.5 前向传播

前向传播的过程是向神经网络馈送输入值并得到我们称为预测值的输出。当我们将输入值提供给神经网络的第一层时,它没有进行任何操作。第二层从第一层获取值并进行乘法,加法和激活操作,然后将得到的值传递给下一层。在后面的层中执行相同的操作,最后我们在最后一层得到一个输出值。
在这里插入图片描述

1.6 反向传播

前向传播后,我们得到一个被称为预测值的输出值。为了计算误差,我们将预测值与实际输出值进行比较。我们使用损失函数(下面会提到)来计算误差值。然后我们计算神经网络中每一个误差值的导数和每一个权重。反向传播使用微分学的链式法则。在链条法则中,首先我们计算对应最后一层权值的误差值的导数。我们称这些导数为:梯度,然后使用这些梯度值来计算倒数第二层的梯度。重复此过程,直到我们得到神经网络中每个权重的梯度。然后从权值中减去该梯度值,以减少误差值。这样,我们就更接近(下降)局部最小值(也就是说最小的损失)。
在这里插入图片描述

1.7 感知机

单个神经元将无法执行高度复杂的任务。因此,我们使用堆栈的神经元来生成我们所需要的输出。在最简单的网络中,我们将有一个输入层、一个隐藏层和一个输出层。每个层都有多个神经元,并且每个层中的所有神经元都连接到下一层的所有神经元。这些网络也可以被称为完全连接的网络。

1.8 批次(Batches)

在训练神经网络的同时,不用一次发送整个输入,我们将输入分成几个随机大小相等的块。与整个数据集一次性馈送到网络时建立的模型相比,批量训练数据使得模型更加广义化。

1.9 周期(Epochs)

周期被定义为向前和向后传播中所有批次的单次训练迭代。这意味着1个周期是整个输入数据的单次向前和向后传递。

你可以选择你用来训练网络的周期数量,更多的周期将显示出更高的网络准确性,然而,网络融合也需要更长的时间。另外,你必须注意,如果周期数太高,网络可能会过度拟合。

1.10 Dropout

Dropout是一种正则化技术,可防止网络过度拟合套。顾名思义,在训练期间,隐藏层中的一定数量的神经元被随机地丢弃。这意味着训练发生在神经网络的不同组合的神经网络的几个架构上。你可以将Dropout视为一种综合技术,然后将多个网络的输出用于产生最终输出。
神经网络的25个必熟概念

1.11 批量归一化(Batch Normalization)

作为一个概念,批量归一化可以被认为是我们在河流中设定为特定检查点的水坝。这样做是为了确保数据的分发与希望获得的下一层相同。当我们训练神经网络时,权重在梯度下降的每个步骤之后都会改变,这会改变数据的形状如何发送到下一层。
但是下一层预期分布类似于之前所看到的分布。 所以我们在将数据发送到下一层之前明确规范化数据。
在这里插入图片描述

1.12 正则化

用于克服过拟合问题。在正则化中,我们通过在权重向量w(它是给定算法中的学习参数的向量)中添加L1(LASSO)或L2(Ridge)范数来惩罚我们的损失项。
L(损失函数)+ λN(w) – 这里λ是你的正则项,N(w)是L1或L2范数

1.13 模型优化器

优化器是一种用于更新模型中权重的搜索技术。

SGD:随机梯度下降,支持动量。 
RMSprop:由Geoff Hinton提出的自适应学习率优化方法。 
Adam: Adaptive Moment Estimation (Adam自适应时刻估计方法),能计算每个参数的自适应学习率

介绍了一些神经网络的基本概念,下面基于此来介绍FastTaxt

2、FastText原理

自然语言处理(NLP)是机器学习,人工智能中的一个重要领域。文本表达是 NLP中的基础技术,文本分类则是 NLP 的重要应用。fasttext是facebook开源的一个词向量与文本分类工具,在2016年开源,典型应用场景是“带监督的文本分类问题”。提供简单而高效的文本分类和表征学习的方法,性能比肩深度学习而且速度更快。

fastText结合了自然语言处理和机器学习中最成功的理念。这些包括了使用词袋以及n-gram袋表征语句,还有使用子词(subword)信息,并通过隐藏表征在类别间共享信息。我们另外采用了一个softmax层级(利用了类别不均衡分布的优势)来加速运算过程。

2.1 FastText原理

fastText方法包含三部分:模型架构层次SoftMaxN-gram子词特征

2.1.1 模型架构

fastText的架构和word2vec中的CBOW的架构类似,因为它们的作者都是Facebook的科学家Tomas Mikolov,而且确实fastText也算是word2vec所衍生出来的。

CBOW的架构:输入的是w(t)的上下文2d个词,经过隐藏层后,输出的是w(t)。
在这里插入图片描述
word2vec将上下文关系转化为多分类任务,进而训练逻辑回归模型,这里的类别数量是 |V| 词库大小。 通常的文本数据中,词库少则数万,多则百万,在训练中直接训练多分类逻辑回归并不现实。

word2vec中提供了两种针对大规模多分类问题的优化手段,negative sampling 和 hierarchical softmax。在优化中,negative sampling 只更新少量负面类,从而减轻了计算量。hierarchical softmax 将词库表示成前缀树,从树根到叶子的路径可以表示为一系列二分类器,一次多分类计算的复杂度从|V|降低到了树的高度。

fastText模型架构:
其中x1,x2,…,xN−1,xN表示一个文本中的n-gram向量,每个特征是词向量的平均值。这和前文中提到的cbow相似,cbow用上下文去预测中心词,而此处用全部的n-gram去预测指定类别。
在这里插入图片描述

2.1.2 层次SoftMax

对于有大量类别的数据集,fastText使用了一个分层分类器(而非扁平式架构)。不同的类别被整合进树形结构中(想象下二叉树而非 list)。在某些文本分类任务中类别很多,计算线性分类器的复杂度高。为了改善运行时间,fastText 模型使用了层次 Softmax 技巧。层次 Softmax 技巧建立在哈弗曼编码的基础上,对标签进行编码,能够极大地缩小模型预测目标的数量。

fastText 也利用了类别(class)不均衡这个事实(一些类别出现次数比其他的更多),通过使用 Huffman 算法建立用于表征类别的树形结构。因此,频繁出现类别的树形结构的深度要比不频繁出现类别的树形结构的深度要小,这也使得进一步的计算效率更高。

image

2.1.3 N-gram子词特征

fastText 可以用于文本分类和句子分类。不管是文本分类还是句子分类,我们常用的特征是词袋模型。但词袋模型不能考虑词之间的顺序,因此 fastText 还加入了 N-gram 特征。在 fasttext 中,每个词被看做是 n-gram字母串包。为了区分前后缀情况,"<", ">"符号被加到了词的前后端。除了词的子串外,词本身也被包含进了 n-gram字母串包。以 where 为例,n=3 的情况下,其子串分别为<wh, whe, her, ere, re>,以及其本身 。

2.2 fastText和word2vec的区别

相似处
图模型结构很像,都是采用embedding向量的形式,得到word的隐向量表达。
都采用很多相似的优化方法,比如使用Hierarchical softmax优化训练和预测中的打分速度。
不同处
模型的输出层:word2vec的输出层,对应的是每一个term,计算某term的概率最大;而fasttext的输出层对应的是分类的label。不过不管输出层对应的是什么内容,起对应的vector都不会被保留和使用。

模型的输入层:word2vec的输出层,是 context window 内的term;而fasttext 对应的整个sentence的内容,包括term,也包括 n-gram的内容。

两者本质的不同,体现在 h-softmax的使用
Word2vec的目的是得到词向量,该词向量 最终是在输入层得到,输出层对应的 h-softmax
也会生成一系列的向量,但最终都被抛弃,不会使用。
fastText则充分利用了h-softmax的分类功能,遍历分类树的所有叶节点,找到概率最大的label(一个或者N个)
回到顶部
总结
fastText是一个能用浅层网络取得和深度网络相媲美的精度,并且分类速度极快的算法。按照作者的说法“在标准的多核CPU上,能够训练10亿词级别语料库的词向量在10分钟之内,能够分类有着30万多类别的50多万句子在1分钟之内”。但是它也有自己的使用条件,它适合类别特别多的分类问题,如果类别比较少,容易过拟合。

3、文本处理案例

参考

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值