IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 李宏毅机器学习笔记第12周_Recurrent Neural Network_2 -> 正文阅读

[人工智能]李宏毅机器学习笔记第12周_Recurrent Neural Network_2


一、Learning Target

1.Loss Function

如下图所示,这是一个Slot Filling的例子,我们要将输出的y与映射到slot的reference vector做cross entropy。例如,Taipei对应到的slot是dest,那reference vector在dest上的值为1,其余的值都为0。RNN的输出与reference vector的cross entropy的和就是要minimize的对象。注意:句子里面的词语必须按照语序输入,不能打乱语序!
在这里插入图片描述

2.Training

1) 有了Loss Function之后,Training也用Gradient Descent,这里为了计算简便,采用了BPTT(Backpropagation through time)。
在这里插入图片描述
2) 如下图所示,RNN的Training是比较困难的,我们希望随着Epoch地增加,loss跟图中蓝色线一样慢慢下降,但是很不幸的是我们在训练过程中会出现绿色线的结果。
在这里插入图片描述

3.Error surface

1)如下图所示,RNN的error surface(Total Loss对参数变化)是非常崎岖的,这里的意思就是loss在某些地方比较平坦,在某些地方又比较陡峭。假如把橙色点当作起始点,用Gradient Descent调整参数,然后更新参数,可能会得到loss猛增的结果。最坏的情况是一脚踩在悬崖上,由于之前一直处在平坦区域,gradient很小,那么就会把learning rate调的比较大,因此踩在悬崖上时gradient变得很大,就会整个飞出去。
在这里插入图片描述
2) 我们用Clipping来解决这个问题。Clipping就是当gradient大于某个threshold时,就不让它继续增长,然后继续做RNN的Training。

二、Why?

如下图所示,当w从1变到1.01后,y^1000从1变到了20000,此时L对w的微分值很大,所以需要较小的Learning rate;当w从0.99变到0.01后,y^1000从0变到了0,此时L对w的微分值很小,所以需要较大的Learning rate;因此我们可以得到,RNN训练困难原因是同样weight在不同的时间点被反复使用。
在这里插入图片描述

三、Helpful Techniques

1. 使用LSTM(Long Short-term Memory)可以解决上面的问题,它会把error surface平坦的地方拿掉,从而解决掉gradient vanshing的问题,但是它无法拿掉崎岖的地方,所以无法解决gradient explode的问题。
在这里插入图片描述
2. 为什么LSTM可以替换RNN?因为在RNN里面,在每一个时间点,memory里面的信息都会被清理掉;在LSTM里面,会把原来memory里面的值乘上一个值,然后再加上input的值放到Cell里面。对LSTM来说,除非forget gate被使用,否则不会把memory之前的信息给清除掉。
在这里插入图片描述
3. 另外一个版本是GRU(Gated Recurrent Unit),只有两个gate操作memory,需要的参数少,不容易过拟合。它秉承的是只有memory里面的信息被清除掉,才会新的信息给添加进来。
4. 其它的技术,Clockwise、SCRN(Structurally Constrained Recurrent Network)等。
在这里插入图片描述

四、More Applications

1. 在Slot Filling中,输入一个vector,输出它的label。除此之外,RNN还可以做更多事情。
在这里插入图片描述

2.Many to one

1) sentiment Analysis
这是一个语句情绪分析系统,我们给它某影片的相关评价,然后分析语句是Positive or Negative。输入是一个vector sequence,在不同时间点输入不同的字符,在最后时间输出语句的情绪。
在这里插入图片描述
2) Key Term Extraction
这里是一个关键词分析系统,给它一篇文章,提取出文章中的关键词,然后把含有关键词标注的文章作为RNN的训练资料。
在这里插入图片描述

3.Many to Many

1)如果input和output都是sequence,但output比input更短时,RNN可以解决这类问题。用语音辨识举例说明,输入一段声音讯号,每隔一段时间就用1个vector表示,现在使用Slot Filling来处理,得到识别结果是“好好好棒棒棒棒”,这与我们想要不同,所以使用Trimming把结果重复部分清除掉,得到“好棒”。但是现在没法辨识“好棒棒”,可以用CTC解决问题,它就是在输出中加上NULL,只需要去除NULL,就可以得到我们想要的结果。
在这里插入图片描述
2)CTC的训练过程,采用了穷举的方法。
在这里插入图片描述
3)得出结果,如下图所示。
在这里插入图片描述

五、RNN v.s. Structured Learning

1. 如下图所示,两者各有所长。
在这里插入图片描述
2. 如下图所示,其实两者是可以结合起来的。input的feature先通过RNN和LSTM,RNN和LSTM的output再作为HMM等的input。
在这里插入图片描述


  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 22:54:12  更:2022-07-04 22:57:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:57:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码