小白学习NLP(自然语言处理)第一课:什么是神经网络

小白笔记-学习NLP(自然语言处理)第一课:什么是神经网络

神经网络(NN)

人工神经网络是模仿生物神经网络而人工搭建的,试图通过模拟大脑神经网络处理、记忆信息的方式进行信息处理。
小白学习NLP(自然语言处理)第一课:什么是神经网络
这就是一个可视化的人工神经网络,里面的圆圈就是神经元,与生物神经元不同的是,人工神经元的排列是整齐有序的,每一列组成一个神经层,第一列是输入层,直接接收传入的信息。最后一列是输出层,输出经过神经元的传递分析得到的结果。隐藏层,是在输入层和输出层中由众多神经元组成的各个层面,可以有多层,至少一层,主要负责传递信息,以及对信息的加工处理,以此加深该神经网络对输入信息的理解

训练神经网络

用识别猫狗图片的神经网络举例

  1. 首先需要非常多的猫狗照片 这些照片必须是已经标注好的该图片是猫,或者该图片是狗。

  2. 划分数据集(这里的数据集就是指刚说的标记好的猫狗照片)将这些猫狗照片分成两个文件夹,一个是训练集一个是测试集,训练集是给计算机学习用的,测试及就是为了检测这个神经网络学习结果的。【注】测试集不能拿来给计算机训练!因为如果测试集也给计算机用于训练的话,计算机就背下来了测试集的答案,反馈的准确率就很高,你以为自己的神经网络学习成功了,但是实际应用时,计算机看到一个没学习过的图片,他可能就不认识了,所以咱不能帮计算机作弊,千万不要给他泄题。

  3. 给计算机看训练集中的图片 计算机看图片时,部分的神经元会被激励(可以理解为被**了),这些被**的神经元传递的信息是计算机最重视的信息,也就是决定了计算机判断这是猫是狗的关键信息。小白学习NLP(自然语言处理)第一课:什么是神经网络
    计算机将这个判断结果反馈给我们,比如反馈的是:狗。这个答案的准确率可能只有10%,但是没关系,错误答案对训练来说也非常重要,话说失败是成功之母嘛,我们可以吸取失败经验。

  4. 学习 计算机会把刚刚判断错误的结果,以及判断过程中神经元处理这些信息的参数全部返回,然后神经网络会根据这些反馈调整自己的参数,这就是一个学习的过程。我们准备了那么多的图片,就是为了让神经网络能够充分的学习。直到他的准确率达标。小白学习NLP(自然语言处理)第一课:什么是神经网络

  5. 测试 完成训练后就需要对计算机的学习成果进行检验了,给计算机看测试集里的图片,让计算进行判断,然后给他的测试打分评价。

RNN 循环神经网络

1、为什么会有RNN
一般的神经网络在处理同一类型的问题时,流程都是一样的,就像一个函数,比如:

data 012
进入NN之后做了:1+2的运算,
输出的Result 03

这里的NN就是加法运算

在计算下一个数据时,依然用加法运算,比如3+5=8,
上一个输出的结果“3”,并不会影响下一次的运算。
小白学习NLP(自然语言处理)第一课:什么是神经网络
但是,如果下一次的运算与上一次输出的结果是有关系的,(比如做饭这件事情,Data有:盐、菜、油。NN表示放入锅里这个动作,但是必须得放了油之后才能放菜,放了菜之后才能放盐。)普通的NN就做不到关联了。

人是怎么做到这种关联的呢?
最简单的方法,就是记住。
小白学习NLP(自然语言处理)第一课:什么是神经网络
2、什么是RNN
在第一次处理数据时,让NN记住这个过程,到第二次分析数据时,连同上一次的一起分析:
小白学习NLP(自然语言处理)第一课:什么是神经网络
这就是循环神经网络(RNN)
小白学习NLP(自然语言处理)第一课:什么是神经网络
应用RNN时,它的结构形态很*,比如情感分析:淘宝评价用户的评论是说这个商品好,还是说这个商品不好,就可以对评论中每个词逐个分析,直到最后一个词分析完之后给一个结果,那么它的结构就可以是这样:小白学习NLP(自然语言处理)第一课:什么是神经网络
还可以用RNN进行机器翻译,用RNN制作一段音乐等等。

3、RNN的缺陷
之前说过神经网络学习的时候,需要根据输出结果,将误差传回来(给每一层都乘以它的误差),调整参数,达到学习的目的,但是RNN是一个迭代的过程,那么想要把结尾的结论返回到一开头,就有很长很长的路要走,尤其是当该神经网络层数非常多的时候:
如果这个误差是一个大于1的数,那么一层一层的乘过去,这个数就会趋于无穷大,这种情况叫做梯度爆炸
如果这个误差是一个小于1的数,那么一层一层的乘过去,这个数就会趋于0,这种情况叫做梯度消失(或者梯度离散)

也就是说,RNN就像一个老爷爷,会因为一开始的记忆过于久远(要传的层数过多)的时候,就会很难回忆。

4、长短期记忆(LSTM)
为了解决上述RNN的问题,就有了LSTM RNN
LSTM整体思路与RNN相同,都是在第一次处理数据时,让NN记住这个过程,到第二次分析数据时,连同上一次的一起分析。不同的是,接下来,LSTM会将上次的分析结果忘掉,把这次分析的结果再存起来,到下次分析时,再拿出来一起分析,以此循环往复。
如下图所示:
小白学习NLP(自然语言处理)第一课:什么是神经网络
主线就是本次要分析的数据,分线的输入就是上次分析完存下来的数据,然后将主线和分线一起分析,成为输出,然后把上一次的分线输入忘记,将本次的输出再作为下一次的分线输入。

这样一来,LSTM就不会再像RNN跟老爷爷一样,总是会忘记比较久远的记忆啦。