2022李宏毅机器学习深度学习学习笔记第二周--RNN

文章目录

  • 摘要
  • 一、RNN(recurrent neural network)循环神经网络
    • RNN的提出
    • bidirectional RNN 双向循环网络
    • Long Short-term Memory(LSTM) 长短时记忆网络
  • 二、RNN的详细讲述
    • 梯度消失问题
    • RNN application
  • 总结


摘要

本文介绍了循环神经网络以及长短时记忆网络,分析RNN在训练时会出现梯度消失和梯度爆炸的问题,以及该问题的解决方法;最后讲了一些RNN的应用,比如在语音识别等。


一、RNN(recurrent neural network)循环神经网络

RNN的提出

slot filling(槽填充)
比如智慧订票系统需要slot filling技术,如果有人说我需要11月2日到台北,系统会有一些slot叫destination和time of arrival;系统要自动知道台北属于destination,11月2日属于time of arrival。
feedforward network(前馈网络)能解决slot filling的问题,输入为一个词汇,输出为输入的词汇属于 每个slot的几率。
词汇如何用向量表示?
方法一:1-of-N encoding
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第1张图片
Beyond 1-of-N encoding
为1-of-N encoding增加了other维度,不是已有的词汇就归类到other中。
Word hashing:用词汇的字母表示vector
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第2张图片
如果两个使用者说arrive taibei on November 2nd和leave taibei on November 2nd,两个taibei 一个为出发地,一个为目的地;但是对neural network来说,输入相同,输出也应该相同。这时我们希望neural network有记忆力,记住前面的arrive 和leave,根据上下文的不同,做出不同的反应。这种有记忆力的neural network就叫RNN。
hidden layer的输出会被存储到memory中,对于CNN,不仅考虑输入x1,x1还考虑memory a1,a2两个共同影响输出。
举例说明:
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第3张图片
用RNN来处理slot filling,虽然对于Taipei单词的输入是一样的,但存储在memory中的a1不同,他们的输出也不同。
RNN有不同的变形,上面所讲的叫elman network,把hide layer的值存起来,在下个时间点再读出来;还有一种叫Jordan network,它存的是output的值,在下个时间点再读出来。

bidirectional RNN 双向循环网络

2022李宏毅机器学习深度学习学习笔记第二周--RNN_第4张图片

RNN还可以是双向的,可以从输入的句首读到句尾,读取方向也可以反向读取,从句尾到句首。把正逆向的hidden layer拿出来,接给一个输出层,得到最后的y。它的好处就是在产生output的时候他看的范围比较广,既能看到前面的数据又能看到后面的数据。

Long Short-term Memory(LSTM) 长短时记忆网络

当某个neural network的output想要写入memory cell的时候,它必须先通过input gate,input gate打开时才能写入值,关闭就无法写入值,而input gate打开还是关闭,要neural network自己学;输出的地方也有一个output gate,决定外界可不可以把值从memory cell中拿出来;forget gate决定memory cell什么时候把过去记得的东西忘掉。LSTM可以看做它有4个input和一个output。
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第5张图片
LSTM和原来的network的关系
原来的network有很多neuron,把输入乘上不同的weight当做neuron的输入,每个neuron都是一个function;把LSTM的memory cell想成是一个neuron就好了;原来的network要一个输入和一个输出,LSTM要四个输入和一个输出。
LSTM和RNN有什么关系
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第6张图片
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第7张图片

xt乘上四个不同的值得到四个不同的向量zf,zi,z,zo;四个向量合起来操控memory cell的运作;ct-1为memory中的值,ct为修改之后的值;把hidden layer的输出接进ht中,当做下一个节点的输入,所以操作memory cell同时考虑ct,ht,和xt;

二、RNN的详细讲述

梯度消失问题

RNN的training比较困难,在训练的时候有时会看到绿色的线。
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第8张图片
分析error surface ,即total loss 对参数的变化,发现在有些地方很平坦,有些地方陡峭。假设从橙色的点用gradient decent 开始调整参数两次,正好跳过悬崖,loss暴增;有时可能正好踩在悬崖上,悬崖上的gradient 很大,之前的都很小,可能learning rate就很大,很大的gradient 和learning rate就导致参数飞出去了。
clipping:当gradient 大于某个值的时候,不要让他超过那个值。
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第9张图片
举个例子来说明gradient的大小是什么样子,把参数做小小的变化,看他对输出的影响就知道它的gradient是什么样子。
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第10张图片
从w和y的值我们看出w有很大的gradient,需要很大的learning rate在这里插入图片描述
在0.99处gradient又很小,需要大的learning rate
在这里插入图片描述
有什么技巧可以解决上面的问题呢?LSTM。
LSTM可以解决gradient消失的问题,不能解决gradient暴增的问题。RNN和LSTM在面对memory时,他们处理的操作是不一样的;在RNN中,在每个时间点,起始memory的值都会死掉,neuron的output的值会把memory的值覆盖掉;但是在LSTM中,除非forget gate要把memory中的值替换掉,否则就一直存在,所以LSTM不会有gradient消失的问题。
Gated Recurrent Unit(GRU)
相较于LSTM,它的gate只有两个;它把input gate和forget gate联动起来,当input gate打开时forget gate就会自动关闭洗掉memory中的值。
另外还有两种解决gradient消失的网络结构:
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第11张图片

RNN application

序列数据类型有:
many to one 多对一
输入为向量序列,输出为一个向量。
many to many多对多
输入输出都是序列,但是输出比输入短。比如语音辨识,输入是声音序列,输出为字符序列character sequence。如下例子:通常是好多个vector对应同一个字符,所以就通过trimming拿掉重复的东西,变成好棒。
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第12张图片
但存在一个问题,它无法辨识好棒棒。
connectionist temporal classification (CTC)
输出不只是中文字符,而且增加一个特殊的符号∅代表空
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第13张图片
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第14张图片

sequence to sequence learning
输入输出都是序列不确定长短。
机器翻译
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第15张图片
把machine learning用RNN读过去,在最后的时间点memory中就存了输入序列machine learning,输出字符机,把机当做下一个输入加上memory的值输出字符器。它不知道的什么是停下来,增加符号“===”断,在输出字符习之后输出断。
现在用sequence to sequence的技术甚至可以做到Beyond sequence。
比如syntactic parsing,让机器得到树状的结构。
在理解一个单词序列的时候,它的单词顺序不能忽视,相同单词不同的顺序会有不同的意思。
怎么把一个文件变成一个向量?
auto encoder text
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第16张图片
除了RNN还有另外一种network也用到了memory,叫做Attention-based Model。
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第17张图片
进行输入,输入被丢进中央处理器(可能是DNN、RNN),中央处理器会操控一个读写头,决定它放的位置,机器再从读写头的位置读取信息,产生最后的输出。
visual question answering
给机器一张图,通过CNN,把图的每块区域用一个向量来表示,输入一个query,query被丢到中央处理器,操控一个读写头决定了他要读取资讯的位置,看图片的什么位置是和现在的问题有关,读取到中央处理器,最后得到答案。
2022李宏毅机器学习深度学习学习笔记第二周--RNN_第18张图片


总结

了解了RNN为什么提出,RNN在处理有时序关系的输入的时候比一般的神经网络更具有优势;了解LSTM的基本结构,四个输入,一个输出;以及为何LSTM能解决Gradient Vanishing问题。

你可能感兴趣的:(机器学习,深度学习,学习)