[自然语言处理-先修]三、神经网络基础

学习路线参考:

https://blog.51cto.com/u_15298598/3121189

https://github.com/Ailln/nlp-roadmap

https://juejin.cn/post/7113066539053482021

本节学习使用工具&阅读文章:

https://www.cnblogs.com/subconscious/p/5058741.html

https://www.jiqizhixin.com/graph/technologies/f9849d6c-6262-4c1f-8f42-6d976be17161

https://zhuanlan.zhihu.com/p/30155870

https://blog.csdn.net/qq_18822147/article/details/120243772

https://blog.csdn.net/weixin_44646390/article/details/127926813

https://zhuanlan.zhihu.com/p/72038532?ivk_sa=1024320u

https://blog.csdn.net/happy488127311/article/details/123869219

https://blog.csdn.net/hollyprince/article/details/125900787

https://blog.csdn.net/happy488127311/article/details/123869219

  1. 神经网络

    1. 节点(神经元)

      节点的结构如图所示:

      神经元结构图

      用x来表示输入,用w来表示权值,用g(x)来表示非线性函数,用y来表示输出,那么图上这个节点的计算过程可以描述为:y = g(w_1x_1+w_2x_2+w_3x_3)
      事实上,这是在一个线性回归的基础上增加了一个非线性函数。当去掉非线性函数(或换为线性函数)时,节点的计算过程就退化为线性回归。这个非线性函数被叫做激活函数。
      神经网络由多个节点组成,一个神经网络的训练算法就是让权重的值调整到最佳,以使得整个网络的预测效果最好。

    2. 单层神经网络(感知机)

      感知器是一种最简单形式的前馈神经网络,可以处理线性可分问题。通常用于将数据分为两部分。因此也被称为线性二元分类器。

      感知机

      感知机的结构如图所示,可以看成是由n个不计算的神经元的输入层+用于计算的输出层组成。其激活函数通常选用符号函数sign(x)。当x非负时,函数取值为1,;当x为负数时,函数取值为-1。

      1. 问题描述

        感知机寻找的是一个超平面wx+b=0使得数据集的正实例点和负实例点完全正确地划分到超平面的两侧。

      2. 损失函数(Loss)

        损失函数的一个自然选择是误分类点的总数,但是这样损失函数不是参数w和w的连续可导函数,不易优化。另一个选择是误分类点到超平面S的总距离,这是感知机所采用的。

        输入空间中任一点x_0到超平面S的距离:{1\over||w||}|wx_0+b|。其中{1\over||w||}wL_2范数

        误分类点(x_i,y_i)到超平面S的距离:{1\over||w||}y_i|wx_i+b|

        假设超平面S的误分类点集合为M,那么所有误分类点到超平面S的总距离:{1\over||w||}\sum_{x_i∈M}y_i|wx_i+b|

        不考虑{1\over||w||},得到感知机学习的损失函数:L(w,b)=-\sum_{x_i∈M}y_i|wx_i+b|

        • 损失函数的作用对象是误分类的点。只要数据集线性可分,无论有没有{1\over||w||}Loss的值最终都会收敛到0,因此可以不考虑。
      3. 优化方案:随机梯度下降

    3. 两层神经网络(单隐层神经网络)

      在感知机的基础上,向输入层和输出层中间再添加一层中间层,就得到了两层神经网络。中间层又被称为隐藏层,两层神经网络又被称为单隐层神经网络。

      两层神经网络结构图

      一般情况下,除了权重w,还有偏置值b。偏置节点是一个只含有存储功能,且存储值永远为1的单元。它没有输入,但与后一层的所有节点都有连接,一般在网络图中并不专门画出来。

      1. 前向传播:网络模型从输出到输出结果的过程。

        设输入层节点数为n,则网络的输入:X = (x_1,x_2,…,x_n)

        设隐藏层第i个节点的权重为w^1_i,则权重向量:W^{(1)} = (w^1_1,w^1_2,…,w^1_n)

        故隐藏层的求和结果为:Z^{(1)} = W^{(1)}X + b^{(1)}

        设隐藏层的激活函数为\theta(x)

        则隐藏层的输出为:A^{(1)} = \theta(Z^{(1)})

        同理可得,输出层的求和结果为:Z^{(2)} = W^{(2)}A^{(1)} + b^{(2)}

        输出层的输出为:A^{(2)} = \theta(Z^{(2)})

      2. 反向传播:网络模型参数更新的过程,可视为整体的最优化过程。

        在单隐层神经网络中,首先要根据神经网络计算出的值和期望值计算损失函数的值,然后采用梯度下降法,通过链式求导法则计算出损失函数对每个权重或偏置的偏导,最后进行参数更新。

        该方法对网络中所有权重计算损失函数的梯度。 这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数,使得输出靠近预期结果。

    4. 多层神经网络

      在单隐层神经网络的基础上,继续增加隐藏层的数量,就得到了多层神经网络。因为神经网络的层数增加了,参数也增加了,表示能力大幅度增强,很容易出现过拟合现象。在情况更复杂的网络中,还会出现梯度消失梯度爆炸问题。

  1. 梯度消失与梯度爆炸

    在反向传播过程中,得到的梯度值接近0的现象,被称为梯度消失;得到的梯度特别大的现象,被称为梯度爆炸。这两个问题是由于神经网络层数过深、激活函数选择不恰当、初始化权重不合适导致的。

    防止出现该类问题有多种手段:

    1. 更换激活函数,更改权重初始化方式;
    2. Batch Normalization:对每一层的输出规范为均值和方差一致。这消除了权重参数放大缩小带来的影响,进而解决梯度消失和爆炸的问题
    3. 对权重进行正则化:通过正则化项来限制权重的大小
    4. 梯度截断:设置一个梯度剪切阈值,然后更新梯度的时候,如果梯度超过这个阈值,那么就将其强制限制在这个范围之内
  1. 防止过拟合

    过拟合是指模型过分拟合训练集,导致泛化能力低下的现象。常常在训练数据过少或者过度训练的情况下出现。

    1. 正则化:给目标函数添加L1或L2正则项。

    2. 数据增强:增大数据数量。

    3. Dropout:在训练过程中每次按一定的概率随机地使一部分隐藏节点的激活函数设为0,让这些神经元不进行计算而失灵。

    4. Early Stopping:在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。

  1. 常见激活函数

    激活函数在神经网络中最重要的作用是引入非线性表达能力。除此之外,在提高模型鲁棒性、缓解梯度消失问题、将特征输入映射到新的特征空间以及加速模型收敛等方面都有不同程度的改善作用。

    1. Sigmoid函数:g(x)=\frac{1}{1+e^{-x}}

      • 优点:将输入转换为(0, 1)的区间
      • 缺点:容易出现梯度消失;函数均值不为0,参数只能同增或者同减,网络收敛速度慢。
    2. Tanh函数:g(x)={e^x-e^{-x}\over e^x+e^{-x}}

      • 优点:解决了Sigmoid函数均值不为0的问题
      • 缺点:依然存在梯度消失问题;幂函数计算开销大
    3. ReLU函数:g(x) = max(0,x)

      • 优点:解决了梯度消失问题;计算速度快
      • 缺点:函数均值不为0;Dead ReLU Problem:当x < 0时梯度为0,且该神经元之后的神经元梯度永远为0,即神经元失效。需要通过合理的初始化,或是降低学习率来解决
    4. Leaky ReLU函数:g(x) = max(αx,x)

      • 优点:在负数区域时激活,而不是失效

      • 缺点:函数均值不为0;α值不好确定

  1. 常见优化器

    1. 随机梯度下降(SGD)& 小批量随机梯度下降(MBGD)

      最常见的优化器,从梯度下降法延伸而来。梯度下降的问题是每次都要将整个矩阵加入计算,计算速度很慢。

      随机梯度下降每次从样本中随机抽出一组,训练后按梯度更新一次,计算速度很快。缺点在于容易落入局部最优,不适合并行计算。

      梯度下降:w=w-\alpha*\sum^n_i(wx_i-y_i)*x_{i}

      随机梯度下降:对每一个x_iw=w-\alpha*(wx_i-y_i)*x_{i}

      小批量随机梯度下降每次参数更新使用一小批样本。比GD收敛速度快,比SGD更稳定,且能并行化计算。缺点是学习率难以确定。

      • 共同特点:容易落入局部最优点;容易出现震荡;每个参数的学习率相同,容易出现部分特征学习不足的问题。
    2. SGDM:在SGD基础上增加一阶动量,抑制SGD的震荡问题。

    3. Adagrad:在SGD基础上增加二阶动量,可以对模型中的每个参数分配自适应学习率。适合处理稀疏数据。

    4. RMSProp:对Adagrad进行改进,缓解Adagrad算法学习律过快的问题。

    5. Adam:同时结合一阶动量和二阶动量,并加入修正值,同时具备二者的优点。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容