【李宏毅机器学习笔记】 23、循环神经网络(Recurrent Neural Network,RNN)

【李宏毅机器学习笔记】1、回归问题(Regression)

【李宏毅机器学习笔记】2、error产生自哪里?

【李宏毅机器学习笔记】3、gradient descent

【李宏毅机器学习笔记】4、Classification

【李宏毅机器学习笔记】5、Logistic Regression

【李宏毅机器学习笔记】6、简短介绍Deep Learning

【李宏毅机器学习笔记】7、反向传播(Backpropagation)

【李宏毅机器学习笔记】8、Tips for Training DNN

【李宏毅机器学习笔记】9、Convolutional Neural Network(CNN)

【李宏毅机器学习笔记】10、Why deep?(待填坑)

【李宏毅机器学习笔记】11、 Semi-supervised

【李宏毅机器学习笔记】 12、Unsupervised Learning - Linear Methods

【李宏毅机器学习笔记】 13、Unsupervised Learning - Word Embedding(待填坑)

【李宏毅机器学习笔记】 14、Unsupervised Learning - Neighbor Embedding(待填坑)

【李宏毅机器学习笔记】 15、Unsupervised Learning - Auto-encoder(待填坑)

【李宏毅机器学习笔记】 16、Unsupervised Learning - Deep Generative Model(待填坑)

【李宏毅机器学习笔记】 17、迁移学习(Transfer Learning)

【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)

【李宏毅机器学习笔记】 19、Structured Learning - Introduction(待填坑)

【李宏毅机器学习笔记】 20、Structured Learning - Linear Model(待填坑)

【李宏毅机器学习笔记】 21、Structured Learning - Structured SVM(待填坑)

【李宏毅机器学习笔记】 22、Structured Learning - Sequence Labeling(待填坑)

【李宏毅机器学习笔记】 23、循环神经网络(Recurrent Neural Network,RNN)

【李宏毅机器学习笔记】 24、集成学习(Ensemble)

------------------------------------------------------------------------------------------------------

【李宏毅深度强化学习】视频地址:https://www.bilibili.com/video/av10590361?p=36

课件地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.html

-------------------------------------------------------------------------------------------------------

Example Application

先以一个智能机器人的例子开始。

理解一段文字的一种方法是标记那些对句子有意义的单词或记号。在自然语言处理领域,这个问题被称为槽填充(Slot Filling)。

所以此时机器人要找出input句子的有用的信息(destination,time of arrival),然后输出要回答的答案。

 这件事情可以先尝试用一个普通的network做一下,看看会遇到什么问题。

把词语转成vector作为input,其它步骤和普通的network一样。

但,怎么把词语转成vector呢?如下。

1-of-N encoding

这个方法很简单,将物品在对应的列上置1 。 

缺点:如果出现lexicon没有记录的物品,没办法在所属的列上置1 。

所以,可以用以下方法改进。

Beyond 1-of-N encoding

  • Dimension for “Other” : 把没记录过的物品归到 other 类里。
  • Word hashing : 用词汇的字母的n-gram来表示这个vector 。

刚才讲了几种把word转成vector的方法,现在能进行输入以后,就能获得输出。

这个输出是一个分布,这个分布是输入的词汇(比如Taipei)属于哪个slot(destination,time of arrival)的几率。 

这样做看起来好像很合理,但其实是有问题的,如下。

如果network的input是一样的,那output应该也是一样的,但现在面临个问题:

 现在有两个句子:

  • 11月2号到达台北(台北是目的地)
  • 11月2号离开台北(台北是出发地)

对于刚才的network来说,input只有台北,它要么就一直认定台北是目的地,要么就一直认定台北市出发地。

所以,我们就希望这个network是有记忆力的,能记住联系台北之前的词汇,来判断台北市目的地还是出发地。

这种有记忆力的network就是循环神经网络(Recurrent Neural Network,RNN)。

Recurrent Neural Network (RNN)

### 李宏机器学习课程中关于RNN笔记内容概述 李宏机器学习课程中,RNN循环神经网络)的相关内容涵盖了基础理论、实际应用以及解决梯度消失问题的方法。以下是相关内容的详细总结: #### 一、RNN的基本概念与结构 循环神经网络Recurrent Neural Network, RNN)是一种用于处理序列数据的神经网络模型[^1]。其核心特点是能够保存先前计算的状态信息,并将其作为当前输入的一部分参与计算。这种机制使得RNN可以捕捉时间序列中的依赖关系。例如,在自然语言处理任务中,RNN可以通过记住前面的词来预测下一个词。 ```python import torch import torch.nn as nn class SimpleRNN(nn.Module): def __init__(self, input_size, hidden_size, output_size): super(SimpleRNN, self).__init__() self.hidden_size = hidden_size self.rnn = nn.RNN(input_size, hidden_size, batch_first=True) self.fc = nn.Linear(hidden_size, output_size) def forward(self, x): h0 = torch.zeros(1, x.size(0), self.hidden_size).to(x.device) out, _ = self.rnn(x, h0) out = self.fc(out[:, -1, :]) return out ``` #### 二、双向RNN(Bidirectional RNN) 为了同时考虑前文和后文的信息,提出了双向RNN(Bidirectional RNN)。该模型通过两个独立的隐藏层分别从前向后和从后向前处理输入序列,最终将两者的结果合并以获得更丰富的上下文信息[^3]。 #### 三、长短时记忆网络(LSTM) 尽管RNN在理论上可以捕捉长距离依赖关系,但在实践中由于梯度消失或爆炸问题,通常难以有效建模长序列。为此,提出了长短时记忆网络(Long Short-Term Memory, LSTM),它通过引入门控机制(输入门、遗忘门、输出门)解决了这一问题[^2]。 #### 四、梯度消失问题及其解决方案 RNN在训练过程中容易遇到梯度消失问题,这会导致模型无法学习到长距离依赖关系。为了解决这一问题,除了使用LSTM外,还可以通过以下方法进行改进: - 使用残差连接(Residual Connections)。 - 应用正则化技术,如Dropout。 - 初始化权重矩阵以改善梯度传播[^4]。 #### 五、RNN的应用场景 RNN广泛应用于自然语言处理领域,包括但不限于: - 机器翻译:将一种语言的句子转换为另一种语言。 - 情感分析:判断文本的情感倾向。 - 文本生成:根据给定的前缀自动生成后续内容。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值