语音识别一定想到RNN,就像图片识别想到CNN一样。
英汉翻译有两种方法:一是语音识别,一是英汉对照直接training

1.RNN的learning

1.1loss function

  • cross entropy是怎么算的呢:对每个输入xi, 其输出的yi 与相应的reference vector
  • cross entropy之和就是loss function
  • 注意:sequence不能打散,要先用x1 得到y1, 再用x2 得到y2.

1.2 training

  • 用gradient descent做training,gradient descent的算法从BP(Backpropagation)进阶为BPTT(Backpropagation through time)

  • 但是:很遗憾的,RNN的训练是比较困难,error surface要么很平缓要么很陡峭

  • 解决办法是clipping:当gradient>某个阈值时,让gradient = 阈值

蓝色是好,绿色也是经常出现的。

RNN的性质就是陡峭:很大的gradient*很大的learning rate就会飞出去。
1.3 为什呢RNN会有rough的error surface?
和sigmoid没关系啊,因为实验证明换成ReLU效果往往更差
所以原因是time sequence,同样的weight在不同时刻被多次使用
(gradient在w=1处很大,在w=0.99处很小

丢进去1,输出就是w的n次方,绿色地方,w有很小的变化(跳崖原因,同一个weight在不同地方使用),输出变化就很大,这种情况,把gradient设大,学习率设小
黄色地方刚好相反,
1.4 怎么解决RNN的跳崖行为呢:
把一般的RNN换成 LSTM呀
为嘛LSTM就可以解决呢?

  • 因为LSTM可以处理gradient vanishing的问题:LSTM可以让error surface不那么崎岖,把平坦的部分拿掉

为什么把LSTM换成RNN:

  • 那gradient explosion的问题呢?不知道

1.41 先说LSTM怎么处理gradient vanishing的问题

  • 在一般的RNN中,每个时刻neuron的output都会被放到memory中去,所以在每个时刻memory中的值都会被洗掉
  • 但在LSTM中,是把memory中原来的值乘上一个数再加上一个数,即memory和input是相加的关系。
  • 所以LSTM中如果weight影响了memory中的值,那么这个影响会永远都存在
  • 若使用LSTM出现了过拟合,找GRU(参数量很小啊),GRU的精神是“旧的不去,新的不来”:input gate 开,forget gate 关(进来时,不洗) 不进来时,洗,也就是说,把存在memory里面的值洗掉之后,才会有新的值进来

1.42其它处理gradient descent的技巧
clockwise RNN, SCRN
[Quoc V. Le, arXiv’15]提出,如果用单位矩阵初始化一般RNN的weight,那么用ReLU的效果要比用LSTM的效果好。(random初始化一般RNN的weight,那么用ReLU的效果要比用sigmoid的效果差。)

2.RNN偏应用的东西

2.1 More Applications

传统,输入输出一样:

2.11 Many to one
指的是:RNN也可以做到,输入是vector sequence,而输出只有一个vector

输入一个句子到RNN中,最后输出这个句子包含的情感

爬虫爬的就是这个东西,爬影评


2.12 Many to Many (Output is shorter):语音辨识
每一小段时间就用一个vector表示:0.01秒
时间太短所以可能多个vector对应同一个字

  • 1 输入是一个sequence(比较长),输出也是一个sequence(比较短)
  • 2.使用Trimming操作去除掉重复的东西,最后输出这段语音的意思
    但这种情况有时候会存在问题,就是去的多了,比如我想表达的时好棒棒呢?

怎么办呢?
用Connectionist Temporal Classification (CTC)。

简单看一下他的过程:
这个方法会输出一个 $ 代表 “null” 的意思。解决叠字的问题


CTC怎么做训练呢?:

因为不知道,好对应哪几个$,所以就穷举所有可能
但可能性太多了,是有方法的,这里不细讲

现在谷歌的语音辨识,都已经换成CTC了,即便有从未出现过的词汇,CTC也可能是把他辨识出来的。

  • 3.输出正确结果后它不会停下来。
    文字接龙:

    怎么办?
    给它加一个“===”的符号,代表任务结束。
  • 4.Google的一片论文,它实现了输入声音讯号(比如英语),不经过语音辨识,然后直接输出翻译后的句子(比如翻译成中文)
    就是收集一堆英文的语音讯号,对应标注中文,直接training,modle标识的结果。这样就方便把方言转换出来。
  • 5.用于生成 Syntactic parsing tree 。非常surprise


让机器看一段句子,然后机器就会输出这个句子的语法的结构树。

  • 6使用bag-of-word方法把一段文字转成word vector的话,是没有考虑顺序的:听不懂廖
    两个单词相同但不同意思句子,在bag-of-word看来就是一样的。
    Sequence-to-sequence Auto-encoder - Text就能在考虑顺序的情况下,把一段文字转成word vector。

chat-bot
收集how are you 对应 i am fine的data去train

阅读理解:把问的问题丢到中央处理器里面,去看,哪个和这个问题相关,可以换位置,得到最终答案

这是自己学的

问题:这是什么水果 回答:这是香蕉
丢给RNN之后,会到中央处理器里面看看哪个位置和他相关;

句子拿进来-语义分析-转成文字-再把文字语义分析 Attention是看哪些部分画的重点和回答问题有关

3.RNN vs Structured Learning

3.1 Structured Learning考虑整个语句,cost和error相关,完胜
但RNN的Deep有优势
但必须有Deep,所以RNN完胜


3.2 两个结合:

3.3在语音识别里的结合:

怎么work的呢?

2020李宏毅学习笔记——16.Recurrent Netural Network 下相关推荐

  1. 2020李宏毅学习笔记——15.Recurrent Netural Network 上

    讲的是RNN: 1.RNN的基本概念:有记忆的neural network 案例:slot分类,比如地点啊,时间啊 有个订票系统,Slot Filling,听到用户说: I would like to ...

  2. 2020李宏毅学习笔记——14.Convolution Netural Network

    CNN来了,他真的来了,带着迅速的步伐来了.那,yolo还会远吗. 1. Why 不DNN 1.1肯定是DNN有缺陷呀: 一般的全连接神经网络处理图像: 第一层识别一些最基础的线条 第二层就开始复杂 ...

  3. 2020李宏毅学习笔记——8. Convolution Netural Network

    文章目录 摘要 1.CNN v.s. DNN 2. why CNN ? 原因1:Some patterns are much smaller than the whole image 原因2:The ...

  4. 2020李宏毅学习笔记——54.Anomaly Detection(4_7)

    解决一个问题, 什么问题呢? 理想的分类器是这样子的,下面是猫狗分类器: 如果有些动物没有猫的特征也没有狗的特征: 那我们会把这些东西放在边界上,分数会比较低. 但是有些动物有虽然不是猫狗但是有猫狗的 ...

  5. 台大李宏毅Machine Learning 2017Fall学习笔记 (16)Unsupervised Learning:Neighbor Embedding

    台大李宏毅Machine Learning 2017Fall学习笔记 (16)Unsupervised Learning:Neighbor Embedding

  6. 台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network

    台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network 本博客主要整理自: http://blog.csdn.net/x ...

  7. 2021李宏毅机器学习笔记--22 Generative Adversarial Network 01

    @[TOC](2021李宏毅机器学习笔记–22 Generative Adversarial Network 01(GAN,生成式对抗网络)) 摘要 GAN是建立于神经网络的基础上的,其核心思想是&q ...

  8. cocos2d-x学习笔记16:记录存储1:CCUserDefault

    cocos2d-x学习笔记16:记录存储1:CCUserDefault 一.简述 CCUserDefalt作为NSUserDefalt类的cocos2d-x实现版本,承担了cocos2d-x引擎的记录 ...

  9. SpringBoot学习笔记(16)----SpringBoot整合Swagger2

    Swagger 是一个规范和完整的框架,用于生成,描述,调用和可视化RESTful风格的web服务 http://swagger.io Springfox的前身是swagger-springmvc,是 ...

最新文章

  1. .net操纵xml文件类(c#)
  2. 数据结构源码笔记(C语言):索引文件建立和查找
  3. TreeView 跟 Iframe 关联设置的方法。
  4. linux中怎样获得进程描述符,linux进程学习-进程描述符,控制块
  5. nssl1454-最短路【并查集,贪心】
  6. 幂集 返回某集合的所有子集
  7. js获取数组中最大和最小值
  8. 你和一位姑娘正在恋爱,很想知道她是不是喜欢自己
  9. master节点重置后添加node报错_企业实战(23)基于Docker平台的Jenkins添加node节点与报错详解(2)...
  10. 西班牙出差见闻之三(普拉多博物馆)
  11. C# .NET弹出窗口大全
  12. php新浪博客模板,supersite php模板
  13. mysql 速度评测_[评测]低配环境下,PostgresQL和Mysql读写性能简单对比(欢迎大家提出Mysql优化意见)...
  14. python turtle绘制漫天雪花
  15. Windows下如何对声卡音频输出进行录音
  16. 3.注册后台处理逻辑编写
  17. Eclipse 工具上Springboot项目的简单 增删改查 的搭建
  18. javaWeb的分页
  19. 汉家江湖无名幻境服务器找不到,汉家江湖无名幻境怎么打开_汉家江湖无名幻境开启方式攻略_玩游戏网...
  20. 常用单片机编程思想及例程2——串口接收断帧

热门文章

  1. 天基实业投资理财需了解的基础知识
  2. IDM下载视频按钮不见了
  3. 亲戚关系关系算法java程序_C++并查集亲戚(Relations)算法实例
  4. Vue 中监控 img 加载完毕事件
  5. a豆:在讲一个珍重每一个人的故事
  6. css hover变成手_html实现鼠标悬停变成手型实现方式
  7. 《DSP using MATLAB》Problem 7.16
  8. NESSUS 安装 6.12 及使用
  9. Arrays.copyOf 编译器提示 Usage of API documented as @since 1.6+ less... (Ctrl+F1) This inspection finds
  10. 条件概率、全概率公式