人工神经网络
人工神经网络(Artificial Neural Network,ANN)是指一系列受生物学和神 经学启发的数学模型。这些模型主要是通过对人脑的神经元网络进行抽象,构 建人工神经元,并按照一定拓扑结构来建立人工神经元之间的连接,来模拟生 物神经网络。在人工智能领域,人工神经网络也常常简称为神经网络(Neural Network,NN)或神经模型(Neural Model)。
神经元
人工神经元(Artificial Neuron),简称神经元(Neuron)也叫感知器,是构成神经网络的基本单元,其主要是模拟生物神经元的结构和特性,接受一组输入信号 产出输出。
生物学家在20世纪初就发现了生物神经元的结构。一个生物神经元通常具 有多个树突和一条轴突。树突用来接受信息(输入层),轴突用来发送信息(输出层)。当神经元所 获得的输入信号的积累超过某个阈值时(激活函数),它就处于兴奋状态,产生电脉冲。轴突尾端有许多末梢可以给其他个神经元的树突产生连接(突触),并将电脉冲信 号传递给其它神经元。
一个神经元(感知器)有如下组成部分:
-
输入权值 一个感知器可以接收多个输入
,每个输入上有一个权值
,此外还有一个偏置项
,就是上图中的
。
-
激活函数 感知器的激活函数可以有很多选择,比如我们可以选择下面这个阶跃函数来作为激活函数:
- 输出 感知器的输出由这个公式来计算
激活函数
激活函数在神经元中非常重要的。为了增强网络的表示能力和学习能 力,激活函数需要具备以下几点性质:
- 连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以 直接利用数值优化的方法来学习网络参数。
- 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率。
- 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小, 否则会影响训练的效率和稳定性。
常见的激活函数有sigmoid、tanh、relu,
推荐文章:26种神经网络激活函数可视化,英文链接
前馈神经网络
一个生物神经细胞的功能比较简单,而人工神经元只是生物神经细胞的理 想化和简单实现,功能更加简单。要想模拟人脑的能力,单一的神经元是远远 不够的,需要通过很多神经元一起协作来完成复杂的功能。这样通过一定的连 接方式或信息传递方式进行协作的神经元可以看作是一个网络,就是神经网络。目前最常见的神经网络结构有三种:前馈网络、反馈网络、图网络。本次只讲前馈网络。
前馈网络中各个神经元按接受信息的先后分为不同的组。每一组可以看作 一个神经层。每一层中的神经元接受前一层神经元的输出,并输出到下一层神 经元。整个网络中的信息是朝一个方向传播,没有反向的信息传播,可以用一 个有向无环路图表示。前馈网络包括全连接前馈网络和卷积神经网络等。
前馈神经网络的目的是对于输入 ,假设我们要模拟从输入到输出的真实函数
,神经网络想要找到这样的映射
和合适的参数
使得其预测尽量接近于真实函数
。
正则化
机器学习的关键问题是泛化性,即要避免过拟合。由于神经网络的拟合能力强且过度参数化,导致模型的泛化性很差。如何提高神经网络的泛化能力?通常做法是正则化、Dropout。
正则化(Regularization)是一类通过限制模型复杂度,从而避免过拟合,提 高泛化能力的方法,包括引入一些约束规则,增加先验、提前停止等。
和
正则化
正则化主要是在目标函数后额外添加一项,作为惩罚项。
数据增强
深层神经网络一般都需要大量的训练数据才能获得比较理想的效果。在数 据量有限的情况下,可以通过数据增强(Data Augmentation)来增加数据量,提 高模型鲁棒性,避免过拟合。目前,数据增强还主要应用在图像数据上,在文本等 其它类型的数据还没有太好的方法。
权重衰减
在每次参数更新时,引入一个衰减系
提前停止
由于深层神经网络的拟合能力非常强,因此比较容易在训练集上过拟合。在 使用梯度下降法进行优化时,我们可以使用一个和训练集独立的样本集合,称 为验证集(Validation Set),并用验证集上的错误来代替期望错误。当验证集上 的错误率不再下降,就停止迭代。
丢弃法Dropout
当训练一个深层神经网络时,我们可以随机丢弃一部分神经元(同时丢弃其 对应的连接边)来避免过拟合,这种方法称为丢弃法(Dropout Method)。
后续补上
FastText
FastText模型架构和word2vec的CBOW模型架构非常相似。下面是fastText模型架构图:
相同的是,和CBOW一样,fastText模型也只有三层:输入层、隐含层、输出层(Hierarchical Softmax),输入都是多个经向量表示的单词,输出都是一个特定的target,隐含层都是对多个词向量的叠加平均。
不同的是,CBOW的输入是目标单词的上下文,fastText的输入是多个单词及其n-gram特征,这些特征用来表示单个文档;CBOW的输入单词被onehot编码过,fastText的输入特征是被embedding过;CBOW的输出是目标词汇,fastText的输出是文档对应的类标。
fastText的核心思想就是:将整篇文档的词及n-gram向量叠加平均得到文档向量,然后使用文档向量做softmax多分类。
例子:利用FastText模型进行文本分类
https://fasttext.cc/docs/en/supervised-tutorial.html
推荐文章:
神经网络与深度学习:https://nndl.github.io/nndl-book.pdf
常见FastText问题:https://fasttext.cc/docs/en/faqs.html#content
FastText原理及实践:http://www.52nlp.cn/fasttext
FastText文本分类例子:https://juejin.im/post/5c95fdfb6fb9a070b96f0f4c